Опция масштабирования окна TCP
Опция масштабирования окна TCP — это опция, позволяющая увеличить размер окна приема , разрешенный в протоколе управления передачей, выше прежнего максимального значения в 65 535 байт. Этот параметр TCP, наряду с несколькими другими, определен в RFC 7323 , посвященный длинным толстым сетям (LFN).
TCP-окна
[ редактировать ]Пропускная способность TCP-соединения ограничена двумя окнами: окном перегрузки и окном приема. Окно перегрузки старается не превышать пропускную способность сети ( контроль перегрузки ); окно приема старается не превышать возможности получателя по обработке данных ( управление потоком ). Получатель может быть перегружен данными, если, например, он очень занят (например, веб-сервер). Каждый сегмент TCP содержит текущее значение окна приема. Если, например, отправитель получает подтверждение, подтверждающее байт 4000 и указывающее окно приема 10 000 (байт), отправитель не будет отправлять пакеты после байта 14 000, даже если окно перегрузки позволяет это.
Теория
[ редактировать ]Опция масштабирования окна TCP необходима для эффективной передачи данных, когда произведение задержки полосы пропускания (BDP) превышает 64 КБ. [1] . Например, если линия передачи T1 со скоростью 1,5 Мбит/с использовалась по спутниковому каналу со временем прохождения туда и обратно 513 миллисекунд (RTT), произведение задержки полосы пропускания будет равно бит или около 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, это может привести к периодическим сбоям подключения пользователя к Интернету в течение нескольких минут, а затем без причины снова начать работать. Также существует проблема, если брандмауэр не поддерживает расширения TCP. [3]
Настройка операционных систем
[ редактировать ]Окна
[ редактировать ]Масштабирование TCP-окна реализовано в Windows начиная с Windows 2000 . [4] [5] Он включен по умолчанию в Windows Vista/Server 2008 и более поздних версиях, но при необходимости его можно отключить вручную. [6] Windows Vista и Windows 7 имеют фиксированный буфер приема TCP по умолчанию размером 64 КБ, масштабируемый до 16 МБ посредством «автонастройки», что ограничивает ручную настройку TCP в длинных сетях с большой плотностью данных . [7]
Линукс
[ редактировать ]Этот раздел содержит инструкции, советы и инструкции . ( февраль 2016 г. ) |
Ядра 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 (дополнительная информация: man tcp
, раздел sysctl). [8]
Масштабирование можно отключить, введя следующую команду.
$ 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: unknown oid 'net.inet.tcp.rfc1323'
Источники
[ редактировать ]- ^ Перейти обратно: а б Здесь K , M , G или T относятся к двоичным префиксам, основанным на степени 1024.
- ^ Борман Д., Брейден Б., Джейкобсон В. и Шеффенеггер Р. (2014). Расширения TCP для высокой производительности (№ rfc7323).
- ^ «При попытке использовать Windows Vista за брандмауэром может произойти сбой при подключении к сети» . Support.microsoft.com . Проверено 11 июля 2019 г.
- ^ «Описание функций TCP Windows 2000 и Windows Server 2003» . Support.microsoft.com . Проверено 11 июля 2019 г.
- ^ «Размер окна приема TCP и масштабирование окна» . Архивировано из оригинала 1 января 2008 года.
- ^ «Сбой подключения к сети при попытке использовать Windows Vista за брандмауэром» . Майкрософт . 8 июля 2009 г.
- ^ «МС Винда» . Fasterdata.es.net . Проверено 11 июля 2019 г.
- ^ "/proc/sys/net/ipv4/* Переменные" .