Параметр масштаба окна TCP

редактировать
Параметр настройки протокола управления передачей

Параметр Масштаб окна TCP является параметром для увеличения размер окна приема, разрешенный в протоколе управления передачей, превышает его прежнее максимальное значение 65 535 байт. Этот параметр TCP, наряду с некоторыми другими, определен в IETF RFC 1323, который имеет дело с длинными толстыми сетями (LFN).

Содержание
  • 1 Окна TCP
  • 2 Теория
  • 3 Возможные побочные эффекты
  • 4 Конфигурация операционных систем
    • 4.1 Windows
    • 4.2 Linux
    • 4.3 FreeBSD, OpenBSD, NetBSD и Mac OS X
  • 5 Источники
TCP-окна

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

Теория

Параметр масштабирования окна TCP необходим для эффективной передачи данных, когда произведение задержки полосы пропускания (BDP) превышает 64 КБ. Например, если линия передачи T1 со скоростью 1,5 Мбит / с использовалась по спутниковому каналу с временем передачи 513 миллисекунд туда и обратно (RTT), произведение полосы пропускания и задержки будет 1 500 000 × 0,513 = 769, 500 {\ displaystyle \ scriptstyle 1 500 000 \ times 0,513 = 769 500}{\ displaystyle \ scriptstyle 1 500 000 \ times 0,513 = 769 500} бит или около 96 187 байт. Использование максимального размера буфера 64 КиБ позволяет заполнить буфер только до (65 535/96 187) = 68% теоретической максимальной скорости 1,5 Мбит / с или 1,02 Мбит / с.

Используя опцию масштабирования окна, размер окна приема может быть увеличен до максимального значения 1, 073, 725, 440 (= (2 16 - 1) × (2 14) = 65, 535 × 16, 384)) {\ displaystyle 1,073,725,440 \ \ scriptstyle \ left (= (2 ^ {16} -1) \ times (2 ^ {14}) = 65,535 \ times 16,384) \ right)}{\ displaystyle 1,073,725,440 \ \ scriptstyle \ left (= (2 ^ {16} -1) \ times (2 ^ {14}) = 65,535 \ раз 16 384) \ вправо)} байт. Это делается путем указания двухбайтового счетчика сдвига в поле параметров заголовка. Истинный размер окна приема сдвигается влево на значение счетчика сдвигов. Максимальное значение 14 может использоваться для значения счетчика сдвигов. Это позволит одному TCP-соединению передавать данные по примерному спутниковому каналу со скоростью 1,5 Мбит / с, используя всю доступную пропускную способность.

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

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

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

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

Windows

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

Linux

Ядра 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).

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

$ 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'
Источники
  1. ^«Сетевое соединение может не работать при попытке использовать Windows Vista за устройством брандмауэра». Support.microsoft.com. Получено 11 июля 2019 г.
  2. ^«Описание функций TCP в Windows 2000 и Windows Server 2003». Support.microsoft.com. Проверено 11 июля 2019 г.
  3. ^«Размер окна приема TCP и масштабирование окна». Архивировано из оригинального 1 января 2008 года.
  4. ^«Сбой сетевого подключения при попытке использовать Windows Vista за брандмауэром». Microsoft. 8 июля 2009 г.
  5. ^«MS Windows». Fasterdata.es.net. Получено 11 июля 2019 г.
  6. ^"/ proc / sys / net / ipv4 / * Variables".
Последняя правка сделана 2021-06-09 05:40:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте