On Wed, Oct 31, 2018 at 7:30 PM Christoph Paasch <cpaa...@apple.com> wrote: > > Implementations of Quic might want to create a separate socket for each > Quic-connection by creating a connected UDP-socket. > > To achieve that on the server-side, a "master-socket" needs to wait for > incoming new connections and then creates a new socket that will be a > connected UDP-socket. To create that latter one, the server needs to > first bind() and then connect(). However, after the bind() the server > might already receive traffic on that new socket that is unrelated to the > Quic-connection at hand.
This can also be achieved with SO_REUSEPORT_BPF and a filter that only selects the listener socket(s) in the group. The connect call should call udp_lib_rehash and take the connected socket out of the reuseport listener group. Though admittedly that is more elaborate than setting a boolean socket option. > The ideas for the implementation came up after a discussion with Ian > and Jana re: their implementation of a QUIC server. That might have preceded SO_TXTIME? AFAIK traffic shaping was the only real reason to prefer connected sockets.