On Friday night, I attended a seminar in which Director of Market Data from InterContinental Exchange (ICE), David Chen gave an introduction on how the Stock and Future Contract Exchange works. It’s the first time I was exposed to such technology and it is pretty interesting.
During his talk, he mentioned that Multicast is used to distribute data from the Exchange to multiple client applications.
Multicast addressing is a network technology for the delivery of information to a group of destinations simultaneously using the most efficient strategy to deliver the messages over each link of the network only once, creating copies only when the links to the multiple destinations split.
The word “multicast” is typically used to refer to IP multicast, which is often employed for media streaming applications. In IP multicast the implementation of the multicast concept occurs at the IP routing level, where routers create optimal distribution paths for datagrams sent to a multicast destination address spanning tree in real-time.
The most common protocol used in an IP network is TCP – Transmission Control Protocol, which is one of the main protocols in TCP/IP networks. Whereas the IP protocol deals only with packets, TCP enables two hosts to establish a connection and exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent.
Since TCP requires a dedicated connection between two IPs, which creates a lot of overhead in network traffic, it is not good for Multicast. Mr. Chen did not say what protocol is used, but I believe it must be UDP.
UDP stands for User Datagram Protocol. It provides a connectionless host-to-host communication path. UDP has minimal overhead; each packet on the network is composed of a small header and user data. It is called a UDP datagram.
UDP preserves datagram boundaries between the sender and the receiver. It means that the receiver socket will receive an OnDataAvailable event for each datagram sent and the Receive method will return a complete datagram for each call. If the buffer is too small, the datagram will be truncated. If the buffer is too large, only one datagram is returned, the remaining buffer space is not touched.
UDP is connectionless. It means that a datagram can be sent at any moment without prior advertising, negotiation or preparation. Just send the datagram and hope the receiver is able to handle it.
The biggest disadvantage of UDP is that it is an unreliable protocol. There is absolutely no guarantee that the datagram will be delivered to the destination host. Although the failure rate is very low on the Internet and nearly null on a LAN unless the bandwidth is full, packet loss prevention if crucial in transmitting data from Exchange to client applications. Unfortunately, Mr. Chen did not disclose what method is used in their Exchange, which must be a core technology all Exchange companies spend money to improve and protect.