TODO 657 B

1234567891011
  1. Randomize the source port for each query in plain-UDP mode. Currently we
  2. create a socket with net.ListenUDP and use it for all queries, which
  3. means all queries have the same source address. ValdikSS reports that in
  4. regions of Turkmenistan, UDP associations that use the same 4-tuple are
  5. blocked after a few seconds.
  6. https://ntc.party/t/topic/475
  7. My idea for this is to create a new PacketConn abstraction that creates
  8. a bunch (≈100) of goroutines that each do a single query at a time,
  9. creating a new socket for each one and waiting for a response on the
  10. same socket up to a timeout. Similar to HTTPPacketConn and its multiple
  11. instantiations of sendLoop.