SYN-пакеты иногда сбрасываются в Linux - PullRequest
0 голосов
/ 19 октября 2008

Мы запускаем Debian с ядром 2.6.16 с включенным iptables. В системе работает специальный HTTP-прокси, который подвергается небольшой нагрузке (он отлично работает при той же нагрузке на других сайтах). Система состоит из 4 серверов, которым предшествует балансировщик нагрузки с виртуальным IP-адресом, которому предшествует массив из 4 машин ISA 2004, поэтому базовая топология:

Клиент -> ISA [1-4] -> Балансировщик нагрузки -> Наш прокси [1-4] -> Интернет

Иногда ISA отправляет нам пакет SYN, на который не отправляется SYN-ACK. Он попытается снова через 3 секунды и в третий раз через еще 6 секунд, после чего он сообщит о прокси-сервере и переключится на прямое соединение. В течение этого времени, то есть до, между и после этих 3 SYN, приходят другие SYN из того же ISA и на них успешно получен ответ.

Другие пользователи сообщают об очень похожей проблеме (однако решения не найдено):

Все это происходит от разновидности Linux под названием CentOS. Особенность заключается в том, что iptables включен по умолчанию.

http://www.linuxhelpforum.com/showthread.php?t=931912&mode=linear http://www.centos.org/modules/newbb/viewtopic.php?topic_id=16147

Почти то же самое, но немного другое: http://www.linuxquestions.org/questions/linux-networking-3/tcp-handshake-fails-synack-ignored-by-system.-637171/

Также представляется актуальным: http://groups.google.com/group/comp.os.linux.networking/browse_thread/thread/b1c000e2d65e0034

Я подозреваю, что iptables является виновником, но любые дополнительные отзывы будут приветствоваться.

Ответы [ 2 ]

2 голосов
/ 19 октября 2008

Посмотрите на второй параметр вызова прослушивания, как упомянуто в первой ссылке, которую вы разместили. Это максимальное количество ожидающих (еще не принятых) соединений. Согласно справочной странице listen (2), если протокол поддерживает повторную передачу (TCP поддерживает), запрос соединения будет отброшен, когда очередь заполнена (ожидается более поздняя повторная передача, которая создаст соединение, если в очереди снова будет достаточно места). ).

0 голосов
/ 23 октября 2008

Действительно, iptables оказался виновником, с правилом, которое отбрасывало пакеты INVALID. Мы до сих пор не знаем наверняка, что заставило iptables считать эти SYN недействительными (точно нет TIME_WAIT, поскольку у нас не было трафика с такими же портами источника в течение как минимум 30 минут до отбрасывания).

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