MDP stands for Market Data Protocol, and CME is on their third revision of it. In this latest revision, they decomissioned FAST encoding and replaced it with SBE, which stands for Simple Binary Encoding. Real Logic, a firm based in the UK, has developed an example SBE implementation that generates code in both Java and C++ from a SBE template file. CME’s confluence wiki page has a good primer on SBE and is a must-read for anybody serious in connecting with CME’s market data feed.

Once you are familiar with SBE you can jump right in to see the different types of messages by perusing their template file.

Note, Real Logic’s tool requires that you have Java JDK installed, so if you don’t, then run:

su -c "yum install java-1.8.0-openjdk-devel"

Next, use git to download and install Real Logic’s simple binary encoding example implementation. The following linux commands will walk you through getting the latet snapshot from their github repository, building the software, downloading the CME SBE template file, and generating C++ code that implements SBE to the CME’s spec.

$ git clone https://github.com/real-logic/simple-binary-encoding.git
$ ./gradlew
$ cd ./sbe-tool/build/libs
$ wget ftp://ftp.cmegroup.com/SBEFix/NRCert/Templates/templates_FixBinary.xml
$ java -jar -Dsbe.target.language=cpp -Dsbe.keyword.append.token=_ sbe-tool-1.5.2-SNAPSHOT-all.jar templates_FixBinary.xml

Once these commands are completed, you will have a new folder called 'mktdata' with classes (using the namespace 'mktdata') created for you by the Real Logic SBE tool using the CME-provided template file.

A huge plus is that it supports and utilizes C++11 features.