stringtranslate.com

Опция масштабирования окна TCP

Опция масштабирования окна TCP — это опция для увеличения размера окна приема , разрешенного в протоколе управления передачей, сверх его прежнего максимального значения в 65 535 байт. Эта опция TCP, наряду с несколькими другими, определена в RFC  7323, который касается длинных толстых сетей (LFN).

TCP-окна

Пропускная способность TCP-связи ограничена двумя окнами: окном перегрузки и окном приема. Окно перегрузки пытается не превышать пропускную способность сети ( управление перегрузкой ); окно приема пытается не превышать пропускную способность получателя по обработке данных ( управление потоком ). Получатель может быть перегружен данными, если, например, он очень занят (например, веб-сервер). Каждый сегмент TCP содержит текущее значение окна приема. Если, например, отправитель получает подтверждение, которое подтверждает байт 4000 и указывает окно приема 10000 (байт), отправитель не будет отправлять пакеты после байта 14000, даже если окно перегрузки это позволяет.

Теория

Опция масштабирования окна TCP необходима для эффективной передачи данных, когда произведение полосы пропускания на задержку (BDP) больше 64 КБ [1] . Например, если линия передачи T1 1,5 Мбит/с использовалась по спутниковой связи с временем приема-передачи (RTT) 513 миллисекунд, произведение полосы пропускания на задержку составляет  бит или около 96 187 байт. Использование максимального размера буфера 64 КБ [1] позволяет заполнить буфер только до (65 535 / 96 187) = 68% от теоретической максимальной скорости 1,5 Мбит/с, или 1,02 Мбит/с.

Используя опцию масштабирования окна, размер окна приема может быть увеличен до максимального значения  байт или около 1 ГиБ. [2] Это делается путем указания двухбайтового счетчика сдвига в поле параметров заголовка. Истинный размер окна приема сдвигается влево на значение счетчика сдвига. Для значения счетчика сдвига может использоваться максимальное значение 14. Это позволит одному TCP-соединению передавать данные по примеру спутникового канала со скоростью 1,5 Мбит/с, используя всю доступную полосу пропускания.

По сути, в течение одного периода времени кругового обхода может быть передано не более одного полного окна передачи. Опция масштабирования окна позволяет одному TCP-соединению полностью использовать LFN с BDP до 1 ГБ, например, соединение 10 Гбит/с со временем кругового обхода 800 мс.

Возможные побочные эффекты

Поскольку некоторые брандмауэры не реализуют TCP Window Scaling должным образом, это может привести к тому, что интернет-соединение пользователя будет периодически давать сбои в течение нескольких минут, а затем снова начнет работать без причины. Также существует проблема, если брандмауэр не поддерживает расширения TCP. [3]

Конфигурация операционных систем

Окна

Масштабирование окна TCP реализовано в Windows , начиная с Windows 2000. [4] [5] Оно включено по умолчанию в Windows Vista / Server 2008 и более поздних версиях, но может быть отключено вручную при необходимости. [6] Windows Vista и Windows 7 имеют фиксированный буфер приема TCP по умолчанию в 64 КБ, масштабируемый до 16 МБ с помощью «автонастройки», что ограничивает ручную настройку TCP в длинных толстых сетях . [7]

Линукс

Ядра Linux (начиная с 2.6.8, август 2004) по умолчанию включают TCP Window Scaling. Параметры конфигурации находятся в файловой системе /proc , см. псевдофайл /proc/sys/net/ipv4/tcp_window_scaling и его компаньоны /proc/sys/net/ipv4/tcp_rmem и /proc/sys/net/ipv4/tcp_wmem (подробнее: , раздел sysctl). [8]man tcp

Масштабирование можно отключить, выполнив следующую команду.

$ sudo  sysctl  -w "net.ipv4.tcp_window_scaling=0" 

Чтобы сохранить изменения после перезапуска, включите строку «net.ipv4.tcp_window_scaling=0» в /etc/sysctl.conf (или /etc/sysctl.d/99-sysctl.conf для systemd 207).

FreeBSD, OpenBSD, NetBSD и Mac OS X

По умолчанию для FreeBSD , OpenBSD , NetBSD и Mac OS X включено масштабирование окна (и другие функции, связанные с RFC 1323).
Чтобы проверить их статус, пользователь может проверить значение переменной " net.inet.tcp.rfc1323 " с помощью команды sysctl :

$ sysctl  net.inet.tcp.rfc1323

Значение 1 (вывод "net.inet.tcp.rfc1323=1") означает, что масштабирование включено, 0 означает «отключено». Если включено, его можно отключить, выполнив команду:

$ sudo  sysctl  -w  net.inet.tcp.rfc1323 = 0

Эта настройка теряется при перезапуске системы. Чтобы убедиться, что она установлена ​​во время загрузки, добавьте следующую строку в /etc/sysctl.conf :net.inet.tcp.rfc1323=0

Однако в macOS 10.14 эта команда выдает ошибку

sysctl: неизвестный oid 'net.inet.tcp.rfc1323'

Источники

  1. ^ ab Здесь K , M , G или T относятся к двоичным префиксам, основанным на степенях числа 1024.
  2. ^ Борман, Д., Брейден, Б., Якобсон, В. и Шеффенеггер, Р. (2014). Расширения TCP для высокой производительности (№ rfc7323).
  3. ^ «Сетевое подключение может быть прервано при попытке использования Windows Vista за брандмауэром». Support.microsoft.com . Получено 11 июля 2019 г. .
  4. ^ «Описание функций TCP в Windows 2000 и Windows Server 2003». Support.microsoft.com . Получено 11 июля 2019 г. .
  5. ^ "Размер окна приема TCP и масштабирование окна". Архивировано из оригинала 1 января 2008 г.
  6. ^ «Сетевое подключение прерывается при попытке использовать Windows Vista за брандмауэром». Microsoft . 8 июля 2009 г.
  7. ^ "MS Windows". Fasterdata.es.net . Получено 11 июля 2019 г. .
  8. ^ "/proc/sys/net/ipv4/* Переменные".