Пользовательские параметры TCP для нескольких интерфейсов в Linux - PullRequest
2 голосов
/ 15 февраля 2011

Мой вопрос касается параметров TCP в Linux.Сейчас я хочу изменить значения по умолчанию:

Начальное время ожидания Задержка ACK Время ожидания простоя

У меня есть Linux Box с ядром2.6.x и 2 Ethernet-интерфейса.Я знаю, что TCP - это стек, который не имеет ничего общего с сетевыми устройствами.Сказал, что вопрос: есть ли способ установить пользовательские значения для каждого интерфейса?Например, сервер, прослушивающий соединения в eth0 , будет использовать одно значение для Время ожидания простоя , а другой сервер, прослушивающий соединения в eth1 , может использовать другое значениеэтот параметр.

Любые соображения будут оценены.
С наилучшими пожеланиями,
Tiago

Ответы [ 2 ]

1 голос
/ 14 июня 2012

Похоже, что задержанный ACK жестко запрограммирован здесь :

#define TCP_DELACK_MAX  ((unsigned)(HZ/5))      /* maximal time to delay before sending an ACK */
#if HZ >= 100
#define TCP_DELACK_MIN  ((unsigned)(HZ/25))     /* minimal time to delay before sending an ACK */

Время ожидания простоя соединения, вероятно, означает, что TCP поддерживает работу.Это вы также не можете установить для каждого интерфейса. Здесь это объяснили.Значения, которые управляют поведением поддержания активности TCP, настраиваются следующими файлами:

/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes

По умолчанию для TCP-соединения отключено сохранение активности TCP.Приложение, желающее использовать эту функцию, должно активировать ее, позвонив по номеру setsockoption(2) с SO_KEEPALIVE.

0 голосов
/ 24 февраля 2011

Насколько я могу судить, вы не можете.

Вы можете установить параметры ядра для стека tcp (попробуйте выполнить sysctl -a | grep tcp) или установить параметры для сокета TCP (см. man tcp), но ни один из них не даст вам контроль над задержкой ACK. Это кодируется в /usr/src/<kernels>/include/net/tcp.h, если у вас есть источник ядра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...