Задать вопрос

Каков временной интервал между фрагментами udp-пакета?

Всем привет. Пытаюсь разобраться с логикой передачи данных по udp. Все твердят что если нужно передавать малые, в приделе (mtu минус заголовок пакета), данные то он подойдет идеально по скорости и по плотности трафика, но а как же поступит ос если он придет не полностью: отбросит пакет?, поставит "таймер" и будет ждать остаток пакета? Дак вот, как, если второе утверждение верно можно в настройках ос`и выставить значение "таймера"? Ведь получается что если время таймера велико относительно количества пакетов в очереди то это уже получится хорошая dos-атака? В настройках ос`и нашел только вот такие пунктики: net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
Это я так понимаю, входной-выходной буферы, а как же время? Помогиде разобраться!
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
ValdikSS
@ValdikSS
https://gilbertasm.github.io/2018/09/13/tunning-ud... — про UDP-буферы
Ниже по стеку идёт алгоритм управления очередью, еще ниже — буфер сетевой карты (txqueuelen).
Интервал между отправкой может быть любой, ОС не даст вам выйти за собственные буферы (блокирующий сокет заблокируется на отправке, неблокирующий вернёт EAGAIN).
То, что вы спрашиваете, называется pacing — оптимальный интервал между отправками двух пакетов. На современных ядрах Linux (вернее, при использовании современных протоколов управления очередью fq/fq_codel) pacing есть по умолчанию. Управлять им можно с помощью SO_MAX_PACING_RATE setsockopt.
Ну и конечно, для протокола поверх UDP вам необходимо реализовать собственный алгоритм управления потоком (Congestion Control Algorithm), чтобы учитывать скорость передачи от вас и приёма ваших пакетов другой стороной.

Материал по теме:
https://blog.cloudflare.com/accelerating-udp-packe...
vger.kernel.org/lpc_net2018_talks/willemdebruijn-l...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы