- Note
- It is highly recommended to get acquainted with "ICE Binary Order and Utility Service API Technical Specification" and "ICE Binary Order and Utility Service API Message Specification" available at the ICE portal.
OnixS ultra-low latency C++ ICE Binary Order Entry Handler is a C++ class library that encapsulates the ICE BOE protocol.
Main Features
- Ultra-low latency access to Binary Order Gateway (BGW).
- Easy-to-use API.
- Multiple Threading Models.
- Message Gap Detection and Retransmission Handling.
- Session Scheduling.
- Automated Downloading of GTC and GTD Orders.
- Flexible Logging.
- Pre-Certified.
Services
The Handler provides the following services:
- Manages network connections.
- Implements Session Security/Authentication.
- Supports Simple Binary Encoding (SBE), delivering faster encoding/decoding.
- Supports the session management point-to-point session layer protocol.
- Manages the application layer (defines business-related data content).
- Creates (outgoing) SBE messages.
- Parses (incoming) SBE messages.
- Persists messages and session state.
- Recovers the Session state after restarting.
- Detects the telecommunication link failures and reconnects automatically.
- Supports Solarflare TCPDirect APIs to ensure the lowest possible latency and minimal jitter.
Architecture
The ICE Derivatives Trading Platform is organized into regional exchange silos (ICE Chicago, LIFFE Basildon, ENDEX Chicago). Each silo is an independent, stand-alone environment. Inside a silo, the Binary Gateway application consists of multiple independent Binary Order Gateways (BGW) running on separate hardware; clients talk to these gateways over TCP/IP using Simple Binary Encoding (SBE) for low-latency, bandwidth-efficient messaging.
At a high level there are two roles: the Binary Utility Service (BUS) and the Binary Order Gateway (BGW). The user contacts BUS first to obtain the IP address, port, and a per-session token for your Gateway ID; those assignments are dynamic and are used to load-balance client sessions across a pool of BGWs within the silo.
Connecting is a two-step workflow:
- Connect to BUS and send an IPRequest to receive the IP/port/token;
- Open a TCP/IP connection to the assigned BGW and log on using those details. Once established, the BGW session is identified by the Gateway ID.