dadv: (chuck)

Открыл для себя мир разнообразных алгоритмов управления контролем потока TCP в FreeBSD'шном стеке TCP/IP. По умолчанию используется sysctl net.inet.tcp.cc.algorithm=newreno, он же единственный в списке sysctl net.inet.tcp.cc.available.

Но достаточно было сделать kldload cc_chd и sysctl net.inet.tcp.cc.algorithm=chd, как скорость загрузки файла через ssh с удаленного сервера, до которого 11 хопов, 128ms rtt (и иногда бывают потери пакетов в незначительном количестве) стала разгоняться не до 55-60Kbyte/s, а до 75-80, а иногда и до 90Kbyte/s. Плюс первоначальный разгон скорости быстрее (видно невооруженным взглядом) и после притормаживаний сети шустрее возвращается на прежнюю скорость.

Эффект воспроизводимый. Оставлю так, пожалуй. Пробовал ещё cc_hd, cc_cubic, cc_htcp и cc_vegas, но в данных условиях они такого впечатляющего результата не дали. Все алгоритмы пробовал на дефолтных настройках.

Возможность тасовать эти алгоритмы появилась в FreeBSD, начиная с версий 8.3-RELEASE и 9.0-RELEASE.

Update: удалённый сервер - тоже FreeBSD, тоже под моим контролем и настройки менял синхронно на сервере и на клиенте.

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

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Tags

Style Credit

Powered by Dreamwidth Studios