ICE iMpact MD Handler Multicast Feed Configuration

Configuration Files

The latest version of the connectivity configuration files is available on the ICE site.

Getting Started

Specify the network configuration file with IceImpact::ApplicationOptions::xmlConfig

The network configuration details can be found here: ICE_Multicast_Connectivity_Guide.pdf. Before starting the work with ICE iMpact Handler, make sure that the tunnel application from ICE_iMpactMulticastFeed_GettingStarted is configured to the required feed and running.

The configuration consists of three sections: TCP connection information, multicast groups, and market types definitions.

An application can work with multiple environments, (for example, UAT and Production). Each one has its own destination and source addresses.

ICE may change the endpoint address or port. For the most recent data related to connections, the user should reach out to ICE.

A list of downloadable instrument definitions is defined by ICE permissions. A user should notify ICE if they want to get data from different multicast feeds (e.g. from ICE OTC).

Multicast Configuration Structure


Legend:

Structure breakdown:

StructureDescriptionExample
<multicastClientConfig>


<environment>

An entry with the name of the deployment environment.
The environment defines all of the required connections/data channels, including UDP for Market Data and TCP for recovery.




name 

Name of the environment

APITest


<tcp>

TCP connection attributes



ip

The IP address of the TCP Recovery connection

63.247.113.77



port

The port of TCP Recovery connection

3000



userName

Username 





password

Password




<multicast>Multicast groups information containing the list of group definitions



<group>Individual group entry




name

Name of the multicast group

ICE Endex Spot




<fullOrderDepth>Full Order Depth





<live>







ip

The IP address for live connections for the Full Order Depth feed

233.156.208.157






port

Port for live connections for the Full Order Depth feed

20157





<snapshot>







ip

The IP address for snapshot connections for the Full Order Depth feed

233.156.208.156






port

Port for snapshot connections for the Full Order Depth feed

20156




<priceLevel>Top 5 Price Level





<live>







ip

The IP address for live connections for the Top 5 Price Level feed

233.156.208.155






port

Port for live connections for the Top 5 Price Level feed

20155





<snapshot







ip

The IP address for snapshot connections in the Price Level feed

233.156.208.154






port

Port for snapshot connections in the Price Level feed

20154


includeEnvironment




envionment






name

<multicastGroups>List of all the enabled multicast groups

<multicastGroupEntry in the list


name

Name of the multicast group

name="Digital Assets"


isOptions

Indicates whether a group is an Options group. Options only support price level books.

There is no Full Order Depth for predefined options markets.

isOptions="false"


isFullyImplied
A MulticastGroup can't be Options and Fully Implied at the same time.

<allMarketTypes>

List of all the market types with their corresponding multicast groups. 
The multicast group name must match what has been specified in the multicast tag
More than one market type may be mapped to a multicast group channel.



<marketType>An entry of a market type with market type definition according to ICE


codeThe value in the ID column from the ICE supported market type speccode="0"


nameMarket type namename="Financial Gas"


<multicastGroup>Reference to the multicast group used for getting data



nameMulticast group name from <multicastGroups> definitionname="ICE OTC"

TCP Connection Information

The TCP connection information section:

  • Defines attributes (IP and port) whose values allow the server to connect to a remote system
  • Defines logon information (username and password) that the handler uses within its requests

The example below shows a TCP connection information section:

<tcp ip="63.247.112.185" port="80"
            userName="Username"
            password="Password"/>

The ICE iMpact MD Handler retrieves static instrument data from this connection.

Clients connect to the TCP server to make requests for product definitions and historical replays. Once a connection is successfully established, the client must send a login request. If the server does not receive a login request within 10 seconds, it will automatically close the connection.

All TCP messages including requests and responses are defined in ICE iMpact Multicast Feed Message Specification.

The static data can be received from ICE or loaded from a file configured with IceImpact::InstrumentLoadParams::filename. Acquiring static data occurs before processing multicast Market Data messages.

Multicast Groups

Multicast groups are for defining multicast feed channels for different markets.

In the configuration, our application expects that each group should have two entries: fullOrderDepth and priceLevel. Each group defines feed IP addresses for live and snapshot channels.

The example below shows a single entry in the multicast groups section:

<multicast>
			<group name="ICE Futures Europe Non Oil">
				<fullOrderDepth>
					<live ip="233.156.208.12" port="20012"/>
					<snapshot ip="233.156.208.13" port="20013"/>
				</fullOrderDepth>
				<priceLevel>
					<live ip="233.156.208.14" port="20014"/>
					<snapshot ip="233.156.208.15" port="20015"/>
				</priceLevel>
			</group>
</multicast>

Market Types Definitions

The ICE iMpact MD Handler gets a list of available instruments from the static data received from ICE and links it with configured data feeds.

Typically, a market type belongs to a single multicast group. In the case of options, a market type can belong to both a futures group and an options group.

The example below shows a market type reference:

<allMarketTypes>
		<marketType code="0" name="Financial Gas">
			<multicastGroup name="ICE OTC"/>
			<multicastGroup name="ICE OTC FI"/>
			<multicastGroup name="ICE OTC Options"/>
		</marketType>
</allMarketTypes>


Market types that ICE currently supports can be found at the URL below. They can be used in Product Definition and Market Data Requests.
https://www.theice.com/publicdocs/technology/Supported_Market_Types_on_ICE_API.pdf

Configuration Example

Sample.xml

Troubleshooting

ICE is dropping non-secure TCP connections / ICE iMpact Market Data handler doesn't receive data from port 3000

Root Cause

ICE requires TLS connections to their market data feeds and drops non-secure connections.

By default, port 443 is used for secure TLS connections and port 3000 is used for non-secure connections.

Solution

Encrypt connection with other proxy applications (e.g. STunnel) and forward a non-secure connection from localhost:3000 to <ice TCP feed>:443.

For example, the first configuration should be changed to the second one, also using the given STunnel configuration.

Old configuration:

<tcp ip="63.247.112.185" port="3000"
            userName="Username"
            password="Password"/>

New configuration:

<tcp ip="localhost" port="3000"
            userName="Username"
            password="Password"/>

STunnel configuration:

stunnel.conf
[ICE_MD]
protocol = proxy
client = yes
accept  = 127.0.0.1:3000
connect = 63.247.112.185:443