Потеря пакетов UDP может увеличиться на условиях?
Может ли процент потерь пакетов UDP увеличиться с учетом размера пакета? Например, если я отправляю 100'000 пакетов, то при первой попытке byte[] размер равен 30, а второй 300. Может ли размер пакета играть роль в его способности отбрасывать или процент потери пакетов не зависит от его размера?
3 ответа
Потеря пакета зависит от размера пакета. Это имеет несколько причин.
IP-пакеты могут достигать примерно 64 Кбайт, но они фрагментированы до MTU Ethernet, и если один из этих пакетов теряется, весь IP-пакет отбрасывается. Для больших пакетов, если трафик высок, вероятность того, что больший пакет будет отброшен, выше. MTU составляет около 1500 байтов.
Это больше, чем просто. Внутренне стек протоколов реализован с использованием внутренних буферов, которые намного меньше, чем mtu, это может варьироваться от 300 байт и более. Но дело в том, что эти буферы также являются ограниченным ресурсом. Если в сетевом устройстве закончились буферы, пакет также будет отброшен.
Поскольку вы отправляете большие пакеты, да, это может увеличить вероятность того, что пакеты будут отброшены.
Теперь, если вы сравните отправку 100000 пакетов по 30 байтов или 10000 пакетов по 300 байтов, даже если пользовательские данные одинаковы, общий размер пакетов будет больше из-за заголовков.
Если вы не знаете MTU в рассматриваемой сети по ссылке ниже 512-байтовой полезной нагрузки UDP, считается разумным разрешить запас для другой информации заголовка, которую вы, возможно, не ожидали.
Какой самый большой размер безопасного UDP-пакета в Интернете