dadv: (chuck)

Оказалось, что немецкий хостер-лоукостер Hetzner в порядке защиты своей инфраструктуры от атак режет, в частности, входящие фрагментированные пакеты UDP, что в современном интернете частично ломает DNS-сервис. Проблема актуальна только тем, кто держит собственные DNS-серверы на физических или виртуальных серверах в Hetzner.

Детально проблема расписана в базе знаний ISC (наш случай - пункт 4. DNS queries/responses using EDNS are allowed, but UDP fragmentation and reassembly is broken), но решение достаточно простое - настроить свой DNS-сервер сообщать другим серверам не посылать требующие фрагментации ответы. Этакий аналог TCP adjust mss, но для DNS через UDP. Более крупные ответы будут доставляться сразу по TCP вместо UDP.

Для сервера BIND достаточно прописать в секции options:

options {
  edns-udp-size 1432;
}

dadv: (Default)

Заметки на манжетах: оверхед в сети Ethernet.

При отправке одного пакета с 64 байтами данных протоколом UDP (оверхеда меньше, чем в TCP) по сети Ethernet имеем в линии:


  • 8 байтов преамбулы и маркера "начало фрейма"
  • 14 байт заголовка Ethernet (без тегов)
  • 20 байт заголовка IP
  • 8 байт заголовка UDP
  • 64 байта данных
  • 4 байта FCS
  • 12 байт межпакетного промежутка


Итого, 130 байт. При использовании VLAN - 134 байта, при Q-in-Q - 138 байт.
Источник: http://download.intel.com/design/network/applnots/ap450.pdf, с. 14.

Оверхед более 100%. При стандартном MTU=1500 для IP-пакета полезных данных внутри нефрагментированного UDP может быть не более 1472 байт, оверхед от 4.5% до 5.3%. Для TCP добавляется ещё 12-52 байта оверхеда на каждый пакет, но там скорость дополнительно ограничивается задержками в линии.

Даже если отвлечься от задержек: для передачи данных по TCP через Ethernet с MTU=1500 максимальный размер сегмента будет 1460 байт (за вычетом 20 байт заголовка IP и минимум 20 байт заголовка TCP), целиком такой фрейм в линии с учётом всех заголовков займёт минимум 1538 байт. Оверхед более 5%. Это значит, что при копировании файла по сети со скоростью, скажем, 8 мегабайт в секунду в Ethernet будет занята полоса не в 8*8=64 мегабита, а 8*1024*1024*8*1.05, что более 70 миллионов бит из 100 миллионов номинальной скорости FastEthernet.

Profile

dadv: (Default)
Choose your future

June 2017

M T W T F S S
   1234
56 7891011
12131415161718
19202122232425
2627282930  

Syndicate

RSS Atom

Tags

Style Credit

Powered by Dreamwidth Studios