As my day job, I work on a certain exchange. Below is my own opinion on the software solutions that we provide specifically for such data transmission with low bandwidth and high bandwidth. It should in no way be taken as a marketing step (please, I Dev). This is just to give what are the main components of the software stack in this solution for such fast data (data can be stocks / data of the trading market or any data in general): -
1] Physical layer โ a network interface card for an Ethernet network based on TCP-UDP / IP or a very high speed / high bandwidth interface called the Infiniband host channel adapter. In the case of a software stack, IP / Ethernet is part of the OS. For Infiniband, the card manufacturer (Intel, Mellanox) provides its drivers, firmware, and API library against which it is necessary to implement a socket code (Even infiniband uses its own "socket" protocol for network communication between two nodes.
2] The next layer above the physical layer is Middleware , which basically abstracts the lower network protocols nittigritties, provides some interface for input / output of data from the physical layer to the application layer. This layer also provides some assurance of network data quality (using tCP)
3] The last layer is the application that we provide on top of middleware. Anyone who receives 1] and 2] from us can develop an application with low latency / high bandwidth network data for stock trading, algorithmic trading types of applications using a choice of programming language interfaces - C, C ++, Java, C # .
Basically, the client is how you can develop your own application in C, C ++ using the APIs that we provide, which will take care of interacting with NIC or HCA (that is, with a real physical network interface) for fast and fast data transfer quickly.
We have a comprehensive solution that meets the various profiles of quality and waiting time required by our customers. Some require Microseconds latency, but they require high quality data / very small errors; Some may suffer several errors, but they need an avalanche of nano seconds, some need a delay in microseconds, there are no permissible errors, ...
If you need or any interest in this kind of solution, ping me offline in my contacts mentioned here in SO.