stringtranslate.com

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

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

TCP-окна

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

Теория

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

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

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

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

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

Настройка операционных систем

Окна

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

Линукс

Ядра Linux (начиная с версии 2.6.8, август 2004 г.) по умолчанию включили масштабирование окна TCP. Параметры конфигурации находятся в файловой системе /proc , см. псевдофайл /proc/sys/net/ipv4/tcp_window_scaling и сопутствующие ему файлы /proc/sys/net/ipv4/tcp_rmem и /proc/sys/net/ipv4/tcp_wmem ( дополнительная информация: , раздел sysctl). [7]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. ^ «Может произойти сбой сетевого подключения при попытке использовать Windows Vista за брандмауэром» . Support.microsoft.com . Проверено 11 июля 2019 г.
  3. ^ «Описание функций TCP Windows 2000 и Windows Server 2003» . Support.microsoft.com . Проверено 11 июля 2019 г.
  4. ^ «Размер окна приема TCP и масштабирование окна» . Архивировано из оригинала 1 января 2008 года.
  5. ^ «Сбой подключения к сети при попытке использовать Windows Vista за брандмауэром» . Майкрософт . 8 июля 2009 г.
  6. ^ "MS Windows". Fasterdata.es.net . Проверено 11 июля 2019 г.
  7. ^ "/proc/sys/net/ipv4/* Переменные" .