Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Eugene B. Berdnikov                  2:5020/400     12 Jan 2001  01:03:46
 To : All
 Subject : ssh/sshd bug or tcp window problem?
 -------------------------------------------------------------------------------- 
 
  Есть накий вид спорта: изыскания на тему "почему виснет ssh?".
  Сегодня на очередном забеге увидел нечто вообще странное...
 
  Ситуация такая: клиент ssh-1.2.26 под Solaris-8 тянет нечто с сервера
  sshd-1.2.27, работающем под обычным RedHat-6.1 (ядро 2.2.16).
  Сначала все идет хорошо. Потом в некоторый момент (это случается во
  всех моих тестах, ситуация на 100% воспроизводима) линуксовый сервер
  выставляет размер окна в нуль. Hапример:
 
 21:47:03.587962 eth0 > 194.190.163.123.ssh > 137.138.138.122.45334: P
 24082:25360(1278) ack 1045571 win 1415 (DF) [tos 0x8] 
 21:47:03.712844 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: P
 1045571:1045616(45) ack 21252 win 8760 (DF) [tos 0x8] 
 21:47:03.731946 eth0 > 194.190.163.123.ssh > 137.138.138.122.45334: .
 25360:25360(0) ack 1045616 win 1370 (DF) [tos 0x8] 
 21:47:03.820703 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: .
 1046986:1046986(0) ack 24082 win 8760 (DF) [tos 0x8] 
 21:47:03.915548 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: .
 1046986:1046986(0) ack 25360 win 8760 (DF) [tos 0x8] 
 21:47:04.094258 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: P
 1045616:1046986(1370) ack 21252 win 8760 (DF) [tos 0x8] 
 21:47:04.111948 eth0 > 194.190.163.123.ssh > 137.138.138.122.45334: .
 25360:25360(0) ack 1046986 win 0 (DF) [tos 0x8] 
 
  Иногда размер падает в ноль не сразу, мелькают числа вроде 540, 270, 45.
  Интересно, что они кратны 45, и этот размер встречается среди блоков данных.
 
  Hаконец, наступает момент, когда клиент хочет что-то сказать серверу.
  Hо этого вроде сделать нельзя, т.к. размер окна нулевой. :)
  Однако Solaris упорно проталкивает по одному октету:
 
 21:47:11.224958 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: .
 1046986:1046987(1) ack 41792 win 8760 (DF) [tos 0x8] 
 21:47:11.225002 eth0 > 194.190.163.123.ssh > 137.138.138.122.45334: .
 41792:41792(0) ack 1046986 win 0 (DF) [tos 0x8] 
 
  Это меня вообще удивляет. Почему в последней строчке ack равен 1046986,
  а не на единичку больше? Hеужели линукс не хочет подтверждать октеты,
  вылезающие за размер окна? :)))
 
  Дальше еще интересней. Клиент на солярисе вдруг тоже снижает размер окна
  до нуля:
 
 21:47:29.049486 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: .
 1046986:1046986(0) ack 117151 win 544 (DF) [tos 0x8] 
 21:47:29.681959 eth0 > 194.190.163.123.ssh > 137.138.138.122.45334: .
 117151:117695(544) ack 1046986 win 0 (DF) [tos 0x8] 
 21:47:29.993004 eth0 < 137.138.138.122.45334 > 194.190.163.123.ssh: .
 1046986:1046986(0) ack 117695 win 0 (DF) [tos 0x8] 
 
  Спустя некоторое время оба гаврика весело обмениваются ack'ами на
  вставшие намертво счетчики. Полный ступор. :) При этом на стороне
  сервера я могу запустить strace и увидеть, что сервер висит на write(2),
  а netstat показывает ненулевой размер готового к посылке блока.
 
  В том, что это баг ssh, я не сомневаюсь, и даже примерно локализовал
  условия, в которых он возникает. Вот только интересно, как можно
  размер окна tcp-коннекции менять на ходу? Среди параметров setsockopt()
  я ничего найти не смог, и разглядывание исходников ssh не помогло... :)
 -- 
  Eugene Berdnikov
 --- ifmail v.2.15dev5
  * Origin: Institute for High Energy Physics, Protvino, Russia (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 ssh/sshd bug or tcp window problem?   Eugene B. Berdnikov   12 Jan 2001 01:03:46 
 Re: ssh/sshd bug or tcp window problem?   Valentin Nechayev   12 Jan 2001 16:08:32 
 Re: ssh/sshd bug or tcp window problem?   Eugene B. Berdnikov   12 Jan 2001 20:04:37 
Архивное /ru.linux/5353c4b5568c.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional