Вручную вызывающее соединение TCP для повторения

  1. У меня есть соединение TCP (сессия SSH к некоторому компьютеру, например)
  2. Сеть внезапно понижается и отбрасывает все пакеты (отсоединенный кабель из диапазона).
  3. TCP снова посылает пакеты снова и снова, повторяя с увеличением задержек.
  4. Я вижу проблему и включаю кабель назад (или сеть восстановления так или иначе).
  5. Соединение TCP наконец успешно снова посылает некоторый пакет и продолжается.

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

Как вынудить все соединения TCP снова послать данные без задержек GNU/Linux?

2
задан 09.06.2010, 16:43

2 ответа

Вы знаете, что IP-соединение было установлено во время (4)? С DHCP / WiFi / WPA / ARP / Zeroconf там является пересмотром канала передачи данных, который мог легко занять 5 секунд между поставщиком услуг на и способностью передать даже один пакет IP.

Если бы это так, сессия SSH не может быть ограничением, и принуждение TCP снова посылает, не помог бы вообще.

Обновление:

Не знайте, я не могу воспроизвести его. У меня было открытое соединение SSH между машиной.2 и.3 с.3 печатью времени к stdout каждую секунду. Эти две машины запускают ванильную Ubuntu, Ясную и связанную через скучный WAP/переключатель/маршрутизатор. Машинами является настроенный DHCP. Я вытянул кабель от машины.3 и ожидал с научной точки зрения точный (посмотрел на часы), интервал 60 секунд. Вот трассировка пакетов:

No.  Time        Source                Destination           Protocol Info
  18 8.479990    192.168.2.3           192.168.2.2           SSH      Encrypted response packet len=48
  19 8.480024    192.168.2.2           192.168.2.3           TCP      56670 > ssh [ACK] Seq=1 Ack=433 Win=1002 Len=0 TSV=2804876 TSER=44100246
  20 87.619215   AsustekC_f1:59:70     Broadcast             ARP      Who has 192.168.2.2?  Tell 192.168.2.3
  21 87.619221   AsustekC_24:9c:85     AsustekC_f1:59:70     ARP      192.168.2.2 is at 00:1a:92:24:9c:85
  22 87.619527   192.168.2.3           192.168.2.2           SSH      Encrypted response packet len=48
  23 87.619545   192.168.2.2           192.168.2.3           TCP      56670 > ssh [ACK] Seq=1 Ack=481 Win=1002 Len=0 TSV=2824661 TSER=44120031

Потребовалось приблизительно 200 микросекунд для сессии для возобновления. Я использовал стандартный Wireshark для пакетного сниффинга.

1
ответ дан 12.12.2019, 00:27

Смотрите на следующие proc записи

/proc/sys/net/ipv4/

tcp_keepalive

tcp_retries

tcp_keepalive:

Число секунд, соединение должно быть неактивным перед TCP, начинает отсылать активные датчики. Это может быть изменено путем выполнения следующей команды

отзовитесь эхом 20>/proc/sys/net/ipv4/tcp_keepalive_time.

Значение по умолчанию составляет 7 200 секунд (2 часа).

tcp_retries:

Количество повторений прежде, чем закрыть соединение TCP

отзовитесь эхом 45>/proc/sys/net/ipv4/tcp_retries2

Не уверенный, если это действительно поможет когда дело доходит до соединения SSH, поскольку это может действительно зависеть от скорости канала и конфигурации тайм-аута SSH.

Аплодисменты Chris

0
ответ дан 12.12.2019, 00:27

Теги

Похожие вопросы