paritytrading/nassau

Use separate MoldUDP64 request channel

Closed this issue · 1 comments

The MoldUDP64 client uses the same channel for receiving downstream packets and sending request packets. While this works fine, it means that no more than one client instance listening to a particular session can be running on a host at a time. (This is because the source UDP port in request packets from all client instances equals the multicast UDP port. All downstream packets sent as unicast datagrams in response to request packets are always forwarded by the operating system to one of the many sockets bound to the multicast UDP port.)

The MoldUDP64 client should use a separate channel for sending request packets.

It might make sense to implement an alternative MoldUDP64 client that uses a separate channel for sending request packets. Then the latency-critical applications can keep using the single channel implementation while non-latency-critical applications can use the multiple channel implementation. (Multiple channels imply the use of synchronous I/O multiplexing or locking.)