title: Handling of multiple UDP streams
body: <p>Let's assume I have <code>m</code> UDP streams uniquely identified by some id (e.g. RTP SSRC). I need to process them in <code>n</code> associated threads and association is <code>1-N</code>, i.e. one UDP stream is processed by one or many threads.</p>
  
  <p>What is the difference in kernel's networking stack performance if I:</p>
  
  <ol>
  <li><p>Start <code>m</code> UDP servers each on different port. Each server processes one stream and pushes it's data to one or more associated threads.</p></li>
  <li><p>Start just one server. All streams are handled by it's single port and this thread pushes each stream data next to one or more associated threads.</p></li>
  </ol>
  
  <p>I think it comes down to the question: is it better to open one single port or many of them, where each will receive proportionally less data?</p>
  
  <p>Is there possibility that single socket may be overwhelmed by the amount of incoming data? Or maybe socket, which is more logical thing in linux kernel than a physical thing, has not so much to do that the data itself, so there is no real difference?</p>
  
  <p>What is the maximum bitrate the single UDP socket (with enlarged buffer) can handle?</p>
  
  <p>I am sure I will best find the answer by browsing of kernel's networking code but maybe someone could give the answer straight away please. Thank you.</p>