Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Try this then:</p> <ul> <li>Start with packets of 1KB size (for example).</li> <li>For them, calculate how many packets per second will be OK to send - for example - 1GB ethernet = 100MBytes of raw bandwidth -> 100000 packets</li> <li>create a packed so first 4 bytes would be the serial number, rest could be anything - if you are testing here, fill it with zeroes or noise (random data)</li> <li>on sending side, create a packets and push them at the speed of RATE (previously calculated) for one second. calculate time spent, and <code>Sleep()</code> the rest of the time, waiting for new time slot.</li> <li>on receiving end, gather packets and look into their serial numbers. if packets are missing, send (another connection) some info to the sender about it.</li> <li>sender, on info about lost packets, should do something like <code>RATE = RATE * .9</code> - reduce sending rate to 90% of a previous one</li> <li>sender should gradually increase rate (say 1%) every few seconds if it doesn't get any 'lost packets' message</li> <li>after some time you RATE will converge to something that you wanted in the first place</li> </ul> <p>Some considerations: - if back connection is TCP, you'll have some overhead there - if back connection is UDP, you can also have dropped packets here (because you are flooding the channel) and sender could never know that packets are dropped - algorithm above won't solve missing data issue or out-of-order data issue, it will just measure the throughput.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload