Приложение E Конфигурируемые опции

В тексте встречаются характеристики TCP/IP, которые нам пришлось описывать следующим образом "это зависит от конфигурации". Например, рассчитывается или нет контрольная сумма UDP (глава 11, раздел "Контрольная сумма UDP"), является IP адрес назначения с одним и тем же идентификатором сети, но с различными идентификаторами подсети, локальным или нелокальным (глава 18, раздел "Максимальный размер сегмента"), и будет ли перенаправляться широковещательный запрос или нет (глава 12, раздел "Примеры широковещательных запросов"). И действительно, множество характеристик в реализациях TCP/IP могут быть модифицированы системным администратором. В этом приложении приводится список некоторых конфигурируемых опций для различных реализаций TCP/IP, которые использовались в тексте. Как Вы могли ожидать, продукт каждого поставщика программного обеспечения отличается от других. В этом приложении дается представление о том, какие типы параметров в различных реализациях могут быть модифицированы. Небольшое количество опций, которые принадлежат совсем уж конкретным реализациям, такие как, например, метка низкой воды для буфера памяти, не рассматриваются.

Эти переменные описываются только для информационных целей. Их имена, значения по умолчанию или интерпретации могут изменяться от одного релиза к другому. Обратитесь к документации, которая поставляется с программным обеспечением, для того чтобы составить для себя представление об этих переменных.

Здесь не приводится описания процесса установки опций, которая происходит каждый раз при загрузке системы: инициализация каждого сетевого интерфейса с использованием ifconfig (установка IP адреса, маски подсети), ввод статических маршрутов в таблицу маршрутизации и так далее. Вместо этого в приложении сфокусировано внимание на опциях конфигурации, которые влияют на функционирование TCP/IP.

BSD/386 Version 1.0

Эта система является примером "классической" BSD конфигурации, которая используется, начиная с 4.2BSD. Так как вместе с системой распространяются исходные тексты, администратор может указать опции конфигурации, после чего необходимо пересобрать ядро. Существует два типа опций: константы, которые определяются в конфигурационном файле ядра (см. страницы помощи config(8)), и переменные, которые инициализируются в различных файлах С текста. Смелые и квалифицированные администраторы могут изменить значение этих С переменных в работающем ядре или в дисковом имидже ядра с использованием отладчика, чтобы не пересобирать ядро. Ниже приведены константы, которые могут быть изменены в конфигурационном файле ядра.

IPFORWARDING

  Значение этой константы устанавливается в переменной ядра ipforwarding . Если равно 0 (по умолчанию), IP датаграммы не перенаправляются. Если равно 1, перенаправление включено.

GATEWAY

  Если эта константа определена, IPFORWARDING должна быть установлена в 1. Помимо того, определение этой константы вызывает увеличение определенных системных таблиц (ARP кэша и таблицы маршрутизации).

SUBNETSARELOCAL

  Значение этой константы устанавливает переменную ядра subnetsarelocal. Если равно 1 (по умолчанию), IP адрес назначения с тем же самым идентификатором сети, как и у посылающего хоста, но с другим идентификатором подсети, считается локальным. Если равно 0, только IP адреса назначения непосредственно подключенной подсети считаются локальными. Кратко это описано на рисунке Е.1.

Идентификатор сети | Идентификатор подсети | subnetsarelocal | Комментарий
1 | 0
одинаковый | одинаковый | локальный | локальный | всегда локальный
одинаковый | разный | локальный | нелокальный | зависит от конфигурации
разный |  | нелокальный | нелокальный | всегда нелокальный

Рисунок Е.1 Интерпретация переменной ядра subnetsarelocal.

Это влияет на MSS, который выбирается TCP. Когда происходит отправка на локальный пункт назначения, TCP выбирает MSS, основываясь на MTU исходящего интерфейса. Когда происходит отправка на нелокальный пункт назначения, TCP использует значение переменной tcp_mssdflt как MSS.

IPSENDREDIRECTS

  Значение этой константы инициализирует переменную ядра ipsendredirects. Если равно 1 (по умолчанию), хост будет отправлять ICMP перенаправления при перенаправлении IP датаграмм. Если установлено в 0, ICMP перенаправления не отправляются.

DIRECTED_BROADCAST

  Если равно 1 (по умолчанию), полученные датаграммы, адреса назначения которых это широковещательные адреса подключенных интерфейсов, перенаправляются как широковещательные запросы канального уровня. Если равно 0, эти датаграммы молча отбрасываются.

Следующие переменные также могут быть модифицированы. Эти переменные рассеяны в различных файлах в директории /usr/src/sys/netinet.

tcprexmtthresh

  Количество последовательно принятых подтверждений, которое включает алгоритм быстрой повторной передачи и быстрого восстановления. По умолчанию равно 3.

tcp_ttl

  Это значение устанавливается по умолчанию в поле TTL в TCP сегментах. Значение по умолчанию 60.

tcp_mssdflt

  Значение MSS TCP по умолчанию для нелокальных пунктов назначения. Значение по умолчанию 512.

tcp_keepidle

  Количество 500-миллисекундных тиков часов перед отправкой пробы "оставайся в живых". Значение по умолчанию 14400 (2 часа).

tcp_keepintvl

  Количество 500-миллисекундных тиков часов между последовательными пробами "оставайся в живых", когда не получен ответ. Значение по умолчанию 150 (75 секунд).

tcp_sendspace

  Размер по умолчанию отправляющего буфера TCP. Значение по умолчанию 4096.

tcp_recvspace

  Размер по умолчанию приемного буфера TCP. Он оказывает влияние на предлагаемый размер окна. Значение по умолчанию 4096.

udpcksum

  Если не равно 0, рассчитывается контрольная сумма UDP для исходящих UDP датаграмм, и если входящие UDP датаграммы содержат ненулевую контрольную сумму, эти контрольные суммы проверяются. Если равно 0, исходящие UDP датаграммы не содержат контрольную сумму, и не осуществляется проверка контрольных сумм для входящих UDP датаграмм, даже если отправитель рассчитал контрольную сумму. По умолчанию равно 1.

udp_ttl

  Значение по умолчанию для поля TTL в UDP датаграммах. По умолчанию равно 30.

udp_sendspace

  Размер по умолчанию для отправляющего буфера UDP. Определяет максимальный размер UDP датаграммы, которая может быть отправлена. По умолчанию 9216.

udp_recvspace

  Размер по умолчанию приемного буфера UDP. По умолчанию равно 41600, что означает 40 датаграмм размером 1024 байта.

SunOS 4.1.3

Метод, используемый с SunOS 4.1.3, напоминает тот, что мы видели в случае BSD/386. Так как большинство кодов ядра не распространяются, все установки С переменных содержатся в одном файле С кода, который поставляется в системе. Из файла конфигурации ядра администратора (см. страницы помощи config(8)) можно определить следующие переменные. После модификации конфигурационного файла должно быть создано новое ядро, и система должна быть перезагружена.

IPFORWARDING

  Значение этой константы инициализирует переменную ядра ip_forwarding. Если равно -1, IP датаграммы никогда не перенаправляются. Более того, переменная не может быть изменена. Если равно 0 (по умолчанию), IP датаграммы не перенаправляются, однако значение переменной изменяется в 1, если "поднято" несколько интерфейсов. Если равно 1, перенаправление всегда включено.

SUBNETSARELOCAL

  Эта константа инициализирует переменную ядра ip_subnetsarelocal. Если равно 1 (по умолчанию), IP адрес назначения с тем же самым идентификатором сети, как и у отправляющего хоста, однако с другим идентификатором подсети, считается локальным. Если равно 0, только IP адреса назначения, подключенные непосредственно к этой подсети, считаются локальными. Подобный подход кратко описан на рисунке Е.1. Когда осуществляется отправка на локальные пункты назначения, TCP выбирает MSS на основе MTU исходящего интерфейса. Когда происходит отправка на нелокальный пункт назначения, TCP использует для этой цели переменную tcp_default_mss.

IPSENDREDIRECTS

  Значение этой константы инициализирует переменную ядра ip_sendredirects. Если равно 1 (по умолчанию), хост будет отправлять ICMP перенаправления при перенаправлении IP датаграмм. Если равно 0, ICMP перенаправления не отправляются.

DIRECTED_BROADCAST

  Значение этой константы инициализирует переменную ядра ip_dirbroadcast . Если равно 1 (по умолчанию), принятые датаграммы, адрес назначения которых это широковещательный адрес непосредственно подключенного интерфейса, перенаправляются как широковещательные запросы канального уровня. Если равно 0, эти датаграммы молча отбрасываются.

Файл /usr/kvm/sys/netinet/in_proto.c определяет следующие переменные, которые могут быть изменены. Если переменные изменены, должно быть собрано новое ядро и система перезагружена.

tcp_default_mss

  Значение по умолчанию MSS TCP для нелокальных пунктов назначения. Значение по умолчанию 512.

tcp_sendspace

  Размер по умолчанию отправляющего буфера TCP. Значение по умолчанию 4096.

tcp_recvspace

  Размер по умолчанию приемного буфера TCP. Оказывает влияние на предлагаемый размер окна. Значение по умолчанию 4096.

tcp_keeplen

  Проба "оставайся в живых" на хост 4.2BSD должна содержать один байт данных, для того чтобы получить отклик. Установка переменной в 1 осуществляет совместимость с этими более старыми реализациями. Значение по умолчанию 1.

tcp_ttl

  Значение по умолчанию для поля TTL TCP сегментов. По умолчанию 60.

tcp_nodelack

  Если не равно 0, подтверждения не задерживаются. Значение по умолчанию 0.

tcp_keepidle

  Количество 500-миллисекундных тиков часов перед отправкой пробы "оставайся в живых". Значение по умолчанию 14400 (2 часа).

tcp_keepintvl

  Количество 500-миллисекундных тиков часов между последовательными пробами "оставайся в живых", если не получен отклик. Значение по умолчанию 150 (75 секунд).

udp_cksum

  Если не равно 0, UDP контрольные суммы рассчитываются для исходящих UDP датаграмм, а для входящих UDP датаграмм, содержащих ненулевую контрольную сумму, контрольная сумма проверяется. Если равно 0, исходящие UDP датаграммы не содержат контрольную сумму, и не осуществляется проверка контрольной суммы для входящих UDP датаграмм, даже если отправитель рассчитал контрольную сумму. По умолчанию 0.

udp_ttl

  Значение по умолчанию для поля TTL в UDP датаграммах. По умолчанию 60.

udp_sendspace

  Размер по умолчанию для отправляющего буфера UDP. Определяет максимальный размер UDP датаграммы, которая может быть отправлена. По умолчанию 9000.

udp_recvspace

  Размер по умолчанию приемного буфера UDP. Значение по умолчанию 18000, что означает две датаграммы размером 9000 байт.

System V Release 4

Конфигурация TCP/IP в SVR4 напоминают две предыдущие системы, однако доступно значительно меньше опций. В файле /etc/conf/pack.d/ip/space.c определены две константы, которые могут быть изменены, после чего ядро должно быть перестроено, а система перезагружена.

IPFORWARDING

  Значение этой константы инициализирует переменную ядра ipforwarding . Если равно 0 (по умолчанию), IP датаграммы не перенаправляются. Если равно 1, перенаправление всегда включено.

IPSENDREDIRECTS

  Значение этой константы инициализирует переменную ядра ipsendredirects. Если равно 1 (по умолчанию), хост будет отправлять ICMP перенаправления при перенаправлении IP датаграмм. Если равно 0, ICMP перенаправления не отправляются.

Большинство из переменных, которые мы описали в двух предыдущих разделах, определены в ядре, однако необходимо иметь patch (patch (англ.) - заплата; исправления, поставляемые производителями к программному обеспечению), чтобы модифицировать их. В качестве примера можно привести переменную tcp_keepidle со значением 14400.

Solaris 2.2

Solaris 2.2 это типичная Unix система нового поколения. Она предоставляет программу, которая позволяет администратору изменить опции конфигурации для системы TCP/IP. Это позволяет осуществлять переконфигурацию без модификации файлов с исходными текстами и перестройки ядра. Конфигурационная программа называется ndd(1) . Мы можем запустить программу, чтобы посмотреть, какие параметры могут быть просмотрены или модифицированы в UDP модуле:

    solaris % ndd /dev/udp \?

    udp_wroff_extra                    (read and write-чтение и запись)

    udp_def_ttl                        (read and write-чтение и запись)

    udp_first_anon_port                (read and write-чтение и запись)

    udp_trust_optlen                   (read and write-чтение и запись)

    udp_do_checksum                    (read and write-чтение и запись)

    udp_status                         (read only-только чтение)

Мы можем указать пять модулей: /dev/ip, /dev/icmp, /dev/arp, /dev/udp и /dev/tcp. Знак вопроса в качестве аргумента (перед которым необходимо поставить обратный слэш, чтобы предотвратить интерпретацию вопросительного знака интерпретатором команд) сообщает программе о необходимости показать список всех параметров для этого модуля. В качестве примера, который запрашивает значение переменной, можно привести следующее:

solaris % ndd /dev/tcp tcp_mss_def
536

Чтобы изменить значение переменной, необходимо с привилегиями суперпользователя ввести следующее:

solaris # ndd -set /dev/ip ip_forwarding 0

Эти переменные могут быть поделены на три категории:

1. Переменные конфигурации, которые могут быть изменены системным администратором (например, ip_forwarding).
2. Переменные статуса, которые могут быть только просмотрены (например, ARP кэш). Обычно, эта информация предоставляется в формате, пригодном для чтения, командами ifconfig, netstat и arp.
3. Отладочные переменные, предназначенные для исходного кода ядра. Включение некоторых из них генерирует отладочный вывод ядра, что может значительно снизить производительность.

Сейчас мы опишем эти параметры для каждого модуля. Все параметры могут быть считаны и записаны, если они не помечены "только для чтения" (Read only). Эти параметры только для чтения являются переменными статуса (см. выше, пункт 2). Переменные, упомянутые в пункте 3, помечены как "отладочные" (Debug). Все временные характеристики приведены в миллисекундах, что отличается от других систем, которые обычно указывают время в некотором количестве 500-миллисекундных тиков часов.

/dev/ip

ip_cksum_choice

  (Отладочная) Осуществляет выбор между двумя независимыми реализациями алгоритма расчета контрольной суммы IP.

ip_debug

  (Отладочная) Включает печать отладочного вывода от ядра, если больше чем 0. Чем больше значение, тем больше генерируется вывода. По умолчанию 0.

ip_def_ttl

  Значение TTL по умолчанию для исходящих IP датаграмм (если не указано на транспортном уровне). По умолчанию 255.

ip_forward_directed_broadcasts

  Если равно 1 (по умолчанию), принятые датаграммы, адрес назначения которых является широковещательным адресом непосредственно подключенного интерфейса, перенаправляются как широковещательные запросы канального уровня. Если равно 0, эти датаграммы молча отбрасываются.

ip_forward_src_routed

  Если равно 1 (по умолчанию), принятые датаграммы, содержащие опцию маршрутизации от источника, перенаправляются. Если равно 0, эти датаграммы отбрасываются.

ip_forwarding

  Указывает, будет ли система перенаправлять входящие IP датаграммы: 0 означает нет перенаправления, 1 обозначает перенаправляет всегда и 2 (по умолчанию) означает, что перенаправление осуществляется только в том случае, если функционирует два или более интерфейсов.

ip_icmp_return_data_bytes

  Количество байт данных после IP заголовка, которые возвращаются в ICMP ошибке. По умолчанию 64.

ip_ignore_delete_time

  (Отладочная) Минимальное время жизни записи в таблице маршрутизации IP (IRE). По умолчанию 30 секунд. (Этот параметр приводится в секундах, а не в миллисекундах).

ip_ill_status

  (Только для чтения) Отображает статус для структуры данных уровня, находящегося ниже IP. Существует одна структура нижнего уровня для каждого интерфейса.

ip_ipif_status

  (Только для чтения) Отображает статус каждой структуры данных IP интерфейса (IP адрес, маска подсети и так далее). Существует только одна структура для каждого интерфейса.

ip_ire_cleanup_interval

  (Отладочная) Интервал, с которым просматриваются записи в таблице маршрутизации IP для возможного удаления. По умолчанию 30000 миллисекунд (30 секунд).

ip_ire_flush_interval

  Интервал, через который информация ARP безусловно удаляется из таблицы маршрутизации IP. По умолчанию 1200000 миллисекунд (20 минут).

ip_ire_pathmtu_interval

  Интервал, через который алгоритм определения транспортного MTU пытается увеличить MTU. По умолчанию 30000 миллисекунд (30 секунд).

ip_ire_redirect_interval

  Интервал, через который записи в таблице маршрутизации IP, которые получены с помощью ICMP перенаправления, удаляются. По умолчанию 60000 миллисекунд (60 секунд).

ip_ire_status

  (Только для чтения) Отображает все записи в таблице маршрутизации IP.

ip_local_cksum

  Если равно 0 (по умолчанию), IP не рассчитывает контрольную сумму IP или контрольную сумму верхних протоколов (TCP, UDP, ICMP или IGMP) для датаграмм, которые отправляются или принимаются через loopback интерфейс. Если равно 1, контрольные суммы рассчитываются.

ip_mrtdebug

  (Отладочная) Включает печать отладочного вывода, связанного с групповой маршрутизацией ядра, если равно 1. По умолчанию равно 0.

ip_path_mtu_discovery

  Если равно 1 (по умолчанию), определение транспортного MTU осуществляется уровнем IP. Если равно 0, IP никогда не установит бит "не фрагментировать" для исходящих датаграмм.

ip_respond_to_address_mask

  Если равно 0 (по умолчанию), хост не отвечает на ICMP запросы маски адреса. Если равно 1 - отвечает.

ip_respond_to_echo_broadcast

  Если равно 1 (по умолчанию), хост отвечает на ICMP эхо запросы, которые отправлены на широковещательный адрес. Если равно 0 - не отвечает.

ip_respond_to_timestamp

  Если равно 0 (по умолчанию), хост не отвечает на ICMP запросы временной марки. Если равно 1 - отвечает.

ip_respond_to_timestamp_broadcast

  Если равно 0 (по умолчанию), хост не отвечает на ICMP запросы временной марки, которые отправлены на широковещательный адрес. Если равно 1 - отвечает.

ip_rput_pullups

  (Отладочная) Счетчик количества буферов в драйвере сетевого интерфейса, который необходимо опросить, чтобы получить полный IP заголовок. Устанавливается в 0 во время загрузки и может быть сброшен в 0.

ip_send_redirects

  Если равно 1 (по умолчанию), хост отправляет ICMP перенаправления, когда функционирует как маршрутизатор. Если равно 0 - не отправляет.

ip_send_source_quench

  Если равно 1 (по умолчанию), хост генерирует ICMP ошибки подавления источника, когда входящие датаграммы отбрасываются. Если равно 0 - не генерирует.

ip_wroff_extra

  (Отладочная) Количество байт дополнительного пространства, необходимого в буфере, чтобы расположить IP заголовки. По умолчанию 32.

/dev/icmp

icmp_bsd_compat

  (Отладочная) Если равно 1 (по умолчанию), поле длины в IP заголовке принятой датаграммы настраивается так, чтобы исключить длину IP заголовка. Это совместимо с Berkeley реализациями и необходимо для приложений, которые читают символьные (raw) IP или символьные ICMP пакеты. Если равно 0, поле длины не изменяется.

icmp_def_ttl

  Значение TTL по умолчанию для исходящих ICMP сообщений. По умолчанию 255.

icmp_wroff_extra

  (Отладочная) Количество байт дополнительного пространства в буферах, необходимого, чтобы расположить IP опции и заголовки канального уровня. По умолчанию 32.

/dev/arp

arp_cache_report

  (Только для чтения) ARP кэш.

arp_cleanup_interval

  Интервал, после которого запись удаляется из ARP кэша. По умолчанию 300000 миллисекунд (5 минут). (IP поддерживает свой собственный кэш полной ARP трансляции; см. ip_ire_flush_interval.)

arp_debug

  (Отладочная) Если равно 1, включает печать отладочного вывода ARP драйвера. По умолчанию 0.

/dev/udp

udp_def_ttl

  TTL по умолчанию для исходящих UDP датаграмм. По умолчанию 255.

udp_do_checksum

  Если равно 1 (по умолчанию), рассчитывается контрольная сумма UDP для исходящих UDP датаграмм. Если равно 0, исходящие UDP датаграммы не содержат контрольной суммы. (В отличие от большинства других реализаций, этот флаг контрольной суммы UDP не влияет на входящие датаграммы. Если получена датаграмма, которая имеет ненулевую контрольную сумму, контрольная сумма всегда будет проверена.)

udp_largest_anon_port

  Самый большой номер порта, который может быть назначен как динамически назначаемый UDP порт. По умолчанию 65535.

udp_smallest_anon_port

  Начальный номер порта, с которого начинаются динамически назначаемые UDP порты. По умолчанию 32768.

udp_smallest_nonpriv_port

  Процессу требуются привилегии суперпользователя, чтобы назначить самому себе номер порта меньше чем этот. По умолчанию 1024.

udp_status

  (Только для чтения) Статус всех локальных конечных точек UDP: локальный IP адрес и порт, удаленный IP адрес и порт.

udp_trust_optlen

  (Отладочная) В настоящее время не используется.

udp_wroff_extra

  (Отладочная) Количество байт дополнительного пространства, необходимого, чтобы расположить в буфере IP опции и заголовки канального уровня. По умолчанию 32.

/dev/tcp

tcp_close_wait_interval

  Значение 2MSL: время, которое необходимо провести в состоянии TIME_WAIT. По умолчанию 240000 миллисекунд (4 минуты).

tcp_conn_grace_period

  (Отладочная) Время, добавляемое к значению таймера при отправке SYN. По умолчанию 500 миллисекунд.

tcp_conn_req_max

  Максимальное количество необслуженных запросов на соединение, которые могут быть поставлены в очередь для любой слушающей конечной точки. По умолчанию 5.

tcp_cwnd_max

  Максимальное значение окна переполнения. По умолчанию 32768.

tcp_debug

  (Отладочная) Если равно 1, включается печать отладочного вывода TCP. По умолчанию 0.

tcp_deferred_ack_interval

  Время, которое необходимо подождать перед отправкой задержанного ACK. По умолчанию 50 миллисекунд.

tcp_dupack_fast_retransmit

  Количество последовательно пришедших дублированных ACK, которые включают быструю повторную передачу и алгоритм быстрого восстановления. По умолчанию 3.

tcp_eager_listeners

  (Отладочная) Если равно 1 (по умолчанию), TCP завершает трехразовое рукопожатие перед передачей нового соединения приложению с ожидающим пассивным открытием. Это способ, которым пользуется большинство реализаций TCP. Если равно 0, TCP передает пришедший запрос на соединение (принятый SYN) приложению и не завершает трехразовое рукопожатие до тех пор, пока приложение не примет соединение. (Установка этого значения в 0 может сломать многие существующие приложения.)

tcp_ignore_path_mtu

  (Отладочная) Если равно 1, определение транспортного MTU игнорирует принятые ICMP сообщения о необходимости фрагментации. Если равно 0 (по умолчанию), для TCP включается алгоритм определения транспортного MTU.

tcp_ip_abort_cinterval

  Полное время тайм-аута повторной передачи, когда TCP осуществляет активное открытие. По умолчанию 240000 миллисекунд (4 минуты).

tcp_ip_abort_interval

  Полное время тайм-аута повторной передачи для TCP соединения, после того как оно установлено. По умолчанию 120000 миллисекунд (2 минуты).

tcp_ip_notify_cinterval

  Величина тайм-аута, когда TCP осуществляет активное открытие, после чего TCP уведомляет IP о необходимости найти новый маршрут. По умолчанию 10000 миллисекунд (10 секунд).

tcp_ip_notify_interval

  Величина тайм-аута для установленного соединения, после истечения которого TCP уведомляет IP о необходимости найти новый маршрут. По умолчанию 10000 миллисекунд (10 секунд).

tcp_ip_ttl

  TTL, используемый для исходящих TCP сегментов. По умолчанию 255.

tcp_keepalive_interval

  Время, в течение которого соединение не используется, по истечению которого будет отправлена проба "оставайся в живых". По умолчанию 7200000 миллисекунд (2 часа).

tcp_largest_anon_port

  Самый большой номер порта, который может быть использован как динамически назначаемый порт TCP. По умолчанию 65535.

tcp_maxpsz_multiplier

  (Отладочная) Указывает множитель MSS, на основании которого данные, которые выдает приложение, разбиваются на пакеты. По умолчанию 1.

tcp_mss_def

  Значение MSS по умолчанию для нелокальных пунктов назначения. По умолчанию 536.

tcp_mss_max

  Максимальный MSS. По умолчанию 65495.

tcp_mss_min

  Минимальный MSS. По умолчанию 1.

tcp_naglim_def

  (Отладочная) Максимальное значение порога алгоритма Нагла для каждого соединения. По умолчанию равно 65535. Значение для соединения начинается с минимального MSS или этого значения. Значение для соединения устанавливается в 1 опцией сокета TCP_NODELAY, которая выключает алгоритм Нагла.

tcp_old_urp_interpretation

  (Отладочная) Если равно 1 (по умолчанию), используется старая (но наиболее распространенная) BSD интерпретации указателя срочности: он указывает на 1 байт позади последнего байта срочных данных. Если равно 0, используется интерпретация, приведенная в требованиях к хостам RFC: указатель срочности указывает на последний байт срочных данных.

tcp_rcv_push_wait

  (Отладочная) Максимальное количество байт, полученных без установленного флага PUSH, перед тем как данные передаются приложению. По умолчанию 16384.

tcp_rexmit_interval_initial

  (Отладочная) Первоначальная величина тайм-аута повторной передачи. По умолчанию 500 миллисекунд.

tcp_rexmit_interval_max

  (Отладочная) Максимальная величина тайм-аута повторной передачи. По умолчанию 60000 миллисекунд (60 секунд).

tcp_rexmit_interval_min

  (Отладочная) Минимальная величина тайм-аута повторной передачи. По умолчанию 200 миллисекунд.

tcp_rwin_credit_pct

  (Отладочная) Часть приемного окна (в процентах), которая должна быть буферизирована, перед тем как управление потоком проверяет каждый принятый сегмент. По умолчанию 50%.

tcp_smallest_anon_port

  Начальный номер порта, с которого начинаются динамические назначаемые порты TCP. По умолчанию 32768.

tcp_smallest_nonpriv_port

  Процессу требуются привилегии суперпользователя, чтобы назначить самому себе номер порта меньше чем этот. По умолчанию 1024.

tcp_snd_lowat_fraction

  (Отладочная) Если не равно 0, метка "низкой воды" отправляющего буфера равна размеру отправляющего буфера поделенного на это значение. По умолчанию 0 (выключено).

tcp_status

  (Только для чтения) Информация о всех TCP соединениях.

tcp_sth_rcv_hiwat

  (Отладочная) Если не равно 0, значение устанавливается в метку "высокой воды" для потока. По умолчанию равно 0.

tcp_sth_rcv_lowat

  (Отладочная) Если не равно 0, значение устанавливается в метку "низкой воды" для потока. По умолчанию 0.

tcp_wroff_xtra

  (Отладочная) Количество байт дополнительного пространства, необходимого, чтобы расположить в буферах IP опции и заголовки канального уровня. По умолчанию 32.

AIX 3.2.2

AIX 3.2.2 позволяет установить сетевые опции с использованием команды no. Она может отобразить значения опций, установить значения опций или установить значения по умолчанию. Например, посмотреть опцию можно следующим образом:

aix % no -o udp_ttl
udp_ttl = 30

Модифицированы могут быть следующие опции.

arpt_killc

  Время (в минутах) перед тем, как неиспользуемая запись ARP полностью удаляется. По умолчанию 20.

ipforwarding

  Если равно 1 (по умолчанию), IP датаграммы всегда перенаправляются. Если равно 0, перенаправление выключено.

ipfragttl

  Время жизни (в секундах) для IP фрагментов, которые ожидают повторной сборки. По умолчанию 60.

ipsendredirects

  Если равно 1 (по умолчанию), хост будет отправлять ICMP перенаправления, когда перенаправляет IP датаграммы. Если равно 0, ICMP перенаправления не отправляются.

loop_check_sum

  Если равно 1 (по умолчанию), контрольная сумма IP рассчитывается для датаграмм, которые посылаются по loopback интерфейсу. Если равно 0, эта контрольная сумма не рассчитывается.

nonlocsrcroute

  Если равно 1 (по умолчанию), полученные датаграммы, содержащие опцию маршрутизации от источника, перенаправляются. Если равно 0, эти датаграммы отбрасываются.

subnetsarelocal

  Если равно 1 (по умолчанию), IP адрес назначения с тем же самым идентификатором сети, как и у отправляющего хоста, однако с другим идентификатором подсети, считается локальным. Если равно 0, только IP адреса назначения принадлежащие непосредственно подключенной подсети считаются локальными. Кратко это описано на рисунке Е.1. Когда происходит отправка на локальный пункт назначения, TCP выбирает MSS, основываясь на MTU исходящего интерфейса. Когда происходит отправка на нелокальные пункты назначения, TCP использует значение по умолчанию (536) в качестве MSS.

tcp_keepidle

  Количество 500-миллисекундных тиков часов перед отправкой пробы "оставайся в живых". Значение по умолчанию 14400 (2 часа).

tcp_keepintvl

  Количество 500-миллисекундных тиков часов перед отправкой последовательных проб "оставайся в живых", если не получен отклик. Значение по умолчанию 150 (75 секунд).

tcp_recvspace

  Размер по умолчанию приемного буфера TCP. Это оказывает влияние на предлагаемый размер окна. Значение по умолчанию 16384.

tcp_sendspace

  Размер по умолчанию отправляющего буфера TCP. Значение по умолчанию 16384.

tcp_ttl

  Значение TTL по умолчанию для TCP сегментов. Значение по умолчанию 60.

udp_recvspace

  Размер по умолчанию приемного буфера UDP. Значение по умолчанию 41600, что позволяет принять 40 датаграмм размером 1024 байта.

udp_sendspace

  Размер по умолчанию отправляющего буфера UDP. Определяет максимальный размер UDP датаграммы, которая может быть отправлена. По умолчанию 9216.

udp_ttl

  Значение TTL по умолчанию в UDP датаграммах. По умолчанию 30.

4.4BSD

4.4BSD это первый релиз Berkeley, который предоставлял динамическую конфигурацию большого количества параметров ядра. При этом использовалась команда sysctl(8) . Имена параметров были выбраны так, чтобы напоминать имена MIB из SNMP. Просмотреть параметры можно следующим образом:

vangogh % sysctl net.inet.ip.forwarding
net.inet.ip.forwarding = 1

Чтобы изменить параметр (обязательно с привилегиями суперпользователя), можно сделать следующее:

vangogh # sysctl -w net.inet.ip.ttl=128

Могут быть изменены следующие параметры.

net.inet.ip.forwarding

  Если равно 0 (по умолчанию), IP датаграммы не перенаправляются. Если равно 1, перенаправление включено.

net.inet.ip.redirect

  Если равно 1 (по умолчанию), хост будет отправлять ICMP перенаправления при перенаправлении IP датаграмм. Если равно 0, ICMP перенаправления не отправляются.

net.inet.ip.ttl

  Значение TTL по умолчанию для TCP и UDP. По умолчанию 64.

net.inet.icmp.maskrepl

  Если равно 0 (по умолчанию), хост не отвечает на ICMP запросы маски адреса. Если равно 1 - отвечает.

net.inet.udp.checksum

  Если равно 1 (по умолчанию), рассчитывается контрольная сумма UDP для исходящих UDP датаграмм, а для входящих UDP датаграмм, если контрольная сумма не равна нулю, она проверяется. Если равно 0, исходящие UDP датаграммы не содержат контрольной суммы, и не осуществляется проверка контрольной суммы для входящих UDP датаграмм, даже если отправитель рассчитал контрольную сумму.

Помимо этого, большое количество переменных, которые мы описали раньше в этом приложении, находятся в различных файлах исходных текстов (tcp_keepidle, subnetsarelocal и так далее) и могут быть модифицированы.