TCP keepalive отправляет пакет для предотвращения устаревания и закрытия соединения с брандмауэром? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть настройка, где у нас есть межсетевой экран между клиентом и сервером.Я подключаюсь к 2 различным серверам, скажем, A и B, и данные могут передаваться в любой момент времени из A или из B, но только по одному за раз. Кажется, что мое подключение к серверу прерывается через каждые 2 часа 11 минут 15 секунд,Я установил tcp keepAlive в своем приложении и использую библиотеку poco.

Я вижу, что ниже приведены параметры уровня ядра tcp keepalive на моем компьютере}

  [XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_time 
  7200
  [XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_intvl 
  75
  [XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_probes 
  9

7200 (2 часа) + 9* 75 = (11 минут 15 секунд), некоторые параметры, указанные выше, и время отключения указывают на то, что это происходит из-за указанных выше настроек на моем устройстве.Большинство соединений между Сервером и Клиентом идеальны в большинстве периодов (часов), но тогда ожидается, что данные будут поступать в любое время (не зафиксировано).Скажем, если идеальное время на брандмауэре установлено на (30 минут), тогда я должен на самом деле сократить время tcp_keepalive_time до менее чем 20 минут, чтобы между клиентом и сервером был зонд, и, следовательно, не позволяет брандмауэру рассматривать это как идеальное соединение и фактически завершать его.связь ?

Насколько я понимаю, даже если соединение является идеальным, параметр tcp_keepalive_time будет препятствовать тому, чтобы брандмауэр закрывал соединение до этого периода времени, или в идеальном случае он должен быть меньше идеального времени ожидания брандмауэра, чтобы брандмауэр видел передачу пакетов между двумя серверами.(проверка активности, выполненная клиентом, и подтверждение, полученное с сервера) и не пытается закрыть соединение?

Спасибо

1 Ответ

0 голосов
/ 11 мая 2018

Я попытался уменьшить время tcp_keepalive_time с 7200 до 900 секунд (15 минут). Это гарантировало, что tcp keep alive пробники были отправлены через 900 секунд. Из-за этого идеального тайм-аута соединения в 30 минут, установленного на брандмауэре, было предотвращено закрытие соединения. Это решило мою проблему. Я читал об этом в ссылке ниже в разделе «Решение».

https://www.veritas.com/support/en_US/article.100028680

  [XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_time 
  900
...