Skip to end of banner
Go to start of banner

MDP 3.0 - Conflated TCP SBE Encoding Example

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

This topic provides an example of a fully encoded client-to-CME Globex SBE negotiate message for conflated TCP.  For more information regarding conflated TCP functionality consult Conflated TCP Market Data Group Processing page.  

SBE Schema 

The following SBE Schema will be used for the SBE encoding example in the next section.

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

<ns2:messageSchema xsi:schemaLocation="http://www.fixtradingcommunity.org/pg/file/fplpo/read/1196759/simple-binary-encoding-rc2xsd SimpleBinary-RC2.xsd" byteOrder="littleEndian" description="20190620" semanticVersion="FIX5SP2" version="0" id="2" package="mdpsessionmgmt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://www.fixprotocol.org/ns/simple/1.0">

<types>

<type description="HMACVersion" semanticType="String" primitiveType="char" length="13" presence="constant" name="HMACVersion">CME-1-SHA-256</type>

<type description="int32" primitiveType="int32" name="Int32"/>

<type description="String length 20" semanticType="String" primitiveType="char" length="20" name="String20Req"/>

<type description="String length 32 " semanticType="String" primitiveType="char" length="32" name="String32Req"/>

<type description="String length 5" semanticType="String" primitiveType="char" length="5" name="String5"/>

<type description="Unsigned Int16 with NULL" primitiveType="uint16" presence="optional" name="uInt16NULL" nullValue="65535"/>

<type description="uInt32" primitiveType="uint32" name="uInt32"/>

<type description="uInt32NULL" primitiveType="uint32" presence="optional" name="uInt32NULL" nullValue="4294967295"/>

<type description="uInt64" primitiveType="uint64" name="uInt64"/>

<types>

<ns2:message description="Negotiate" id="200" semanticType="MsgTypeNeg" name="Negotiate200" blockLength="78">

<field description="Constant value representing CME HMAC version" id="39003" semanticType="String" name="HMACVersion" type="HMACVersion"/>

<field description="Contains the HMAC signature" id="39005" semanticType="String" name="HMACSignature" type="String32Req" offset="0"/>

<field description="Contains the AccessKeyID assigned to this session on this port" id="39004" semanticType="String" name="AccessKeyID" type="String20Req" offset="32"/>

<field description="Session Identifier defined as type long uInt64, recommended to use timestamp as number of microseconds since Unix epoch" id="39001" semanticType="int" name="UUID" type="uInt64" offset="52"/>

<field description="Time of request, recommended to use timestamp as number of nanoseconds since Unix epoch" id="39002" semanticType="UTCTimestamp" name="RequestTimestamp" type="uInt64" offset="60"/>

<field description="Session ID" id="39006" semanticType="String" name="Session" type="String5" offset="68"/>

<field description="Firm ID" id="39007" semanticType="String" name="Firm" type="String5" offset="73"/>

</ns2:message>

</ns2:messageSchema>

Encoding Example

The table below shows the elements of a client-to-CME Globex Negotiate message.  The following SBE hexadecimal message will be encoded:

FE CA 01 00 00 00 bf 32 c2 5b ff 5f 15 16 58 00 4e 00 c8 00 02 00 00 00 fa b6 46 9e c9 87 5c d5 5c 3d 59 fb b5 56 b9 d8 89 1c 62 eb 88 7a 3f d1 b0 af 3f 7d 2e 56 38 f7 45 4a 4d 59 54 69 44 68 68 43 47 4e 51 76 6a 71 47 77 56 6e 1e e4 56 95 43 a7 05 00 f8 15 6b 5b ff 5f 15 16 4d 44 34 31 48 4c 49 53 54 32

CME Globex MDP uses little-endian byte ordering. Therefore, in the example below a hexadecimal value of FE CA is inputted as FE CA in most conversion calculators.

HEXADECIMALTAGNAMETYPEVALUEDESCRIPTION
Technical Header
FE CA-encodingTypeString 2CAFEThis example uses a TCP technical header within the packet structure.
01 00 00 00-MsgSeqNumString 401 
bf 32 c2 5b ff 5f 15 16-SendingTimeString 81591283593706091199The epoch Sending Time value of 1633099253939247451 converts to June 4, 2020 15:13:13.706 UTC
Message Header
58 00-MsgSizeuInt1688MsgSize is the first field in the the SBE message header.
4e 00-BlockLengthuInt1678
c8 00-TemplateIDuInt16200
02 00-SchemaIDuInt162
00-VersionuInt160
SBE Encoded FIX Message
-39003HMACVersionHMACVersionCME-1-SHA-256This value is defined as a constant in the SBE schema and should not be sent on the wire.
00 fa b6 46 9e c9 87 5c d5 5c 3d 59 fb b5 56 b9 d8 89 1c 62 eb 88 7a 3f d1 b0 af 3f 7d 2e 56 38 f739005HMACSignatureString32Req�ú¶FžÉ‡\Õ\=YûµV¹Ø‰bëˆz?Ñ°¯?}.V8÷
45 4a 4d 59 54 69 44 68 68 43 47 4e 51 76 6a 71 47 77 56 6e39004AccessKeyIDString20ReqEJMYTiDhhCGNQvjqGwVn
1e e4 56 95 43 a7 05 0039001UUIDuInt641591283593700382
f8 15 6b 5b ff 5f 15 1639002RequestTimestampuInt641591283593700382200

The epoch Sending Time value of 1591283593700382200 converts to June 4, 2020 15:13:13.700 UTC

4d 44 34 31 4839006SessionString5MD41H
4c 49 53 54 3239007FirmString5LIST2


  • No labels