Jak sprawdzić limit czasu TCP w systemie Linux / Macos?

11

Mam problem z siecią MacOS, który muszę rozwiązać. Wiem, że gniazdo TCP ma wewnętrzny limit czasu, który zamyka połączenie, jeśli strona zdalna nie odpowiada (ale nie ma też wdzięcznego rozłączenia). Czy jest to dowolne polecenie / narzędzie, którego mogę użyć do sprawdzenia dokładnej wartości tego limitu czasu?

grigoryvp
źródło

Odpowiedzi:

15

Możesz zobaczyć wszystkie ustawione przez system wartości tcp za pomocą

$ sysctl net.inet.tcp

Interpretowane z tcp_var.h, tcp_subr.c i tcp_timer.c:

  • net.inet.tcp.keepidle = utrzymuj licznik czasu bezczynności
  • net.inet.tcp.keepintvl = interwał wysyłania keepalives
  • net.inet.tcp.keepinit = limit czasu na ustanowienie syn
  • net.inet.tcp.mssdflt = Domyślny maksymalny rozmiar segmentu TCP
  • net.inet.tcp.v6mssdflt = Domyślny maksymalny rozmiar segmentu TCP dla IPv6
  • net.inet.tcp.minmss = Minimalna maksymalna wielkość segmentu TCP
  • net.inet.tcp.minmssoverload = Liczba segmentów TCP na sekundę może znajdować się poniżej rozmiaru MINMSS
  • net.inet.tcp.rfc1323 = Włącz rozszerzenia rfc1323 (wysokiej wydajności TCP)
  • net.inet.tcp.rfc1644 = Włącz rozszerzenia rfc1644 (TTCP)
  • net.inet.tcp.do_tcpdrain = Włącz procedurę tcp_drain, aby uzyskać dodatkową pomoc przy niskim poziomie mbufs
  • net.inet.tcp.pcbcount = Liczba aktywnych PCB
  • net.inet.tcp.icmp_may_rst = Niektóre nieosiągalne komunikaty ICMP mogą przerywać połączenia w SYN_SENT
  • net.inet.tcp.strict_rfc1948 = Określa, czy dokładnie przestrzegane jest RFC1948
  • net.inet.tcp.isn_reseed_interval = Sekundy między ponownym usunięciem tajnego numeru ISN
  • net.inet.tcp.background_io_enabled = Włączone IO w tle
  • net.inet.tcp.rtt_min = dozwolona minimalna wartość rtt
  • net.inet.tcp.randomize_ports = Randomize numery portów TCP
  • net.inet.tcp.tcbhashsize = Rozmiar tablicy kontrolnej bloku kontrolnego TCP
  • net.inet.tcp.msl = Maksymalny czas życia segmentu
  • net.inet.tcp.always_keepalive = Załóż SO_KEEPALIVE na wszystkich połączeniach TCP
  • net.inet.tcp.broken_peer_syn_rxmit_thres = Liczba retransmitowanych SYN zanim TCP wyłączy rfc1323 i rfc1644 podczas pozostałych prób
  • net.inet.tcp.pmtud_blackhole_detection = Wykrywanie MTU ścieżki Wykrywanie czarnych dziur
  • net.inet.tcp.pmtud_blackhole_mss = Ścieżka MTU Discovery Discovery Black Hole Detection obniżył MSS

Wierzę, że domyślnie 8 keepalives zostanie wysłanych przed zamknięciem połączenia, jeśli ustawiony jest SO_KEEPALIVE. Czasy są w milisekundach.

fuzzyTew
źródło
4

W systemie Linux możesz użyć:

$ sysctl -a | grep net.ipv4
NMaslarski
źródło
3

Nie jestem pewien, czy tego właśnie szukasz, ale możesz sprawdzić wartość utrzymania przy pomocy:

$ netstat -o
atx
źródło
3
netstat nie akceptuje dla mnie opcji „-o” w Mac OS X 10.6.6
fuzzyTew
1

Może niepowiązany, ale działa dla mnie:

Próbuję ustalić limit czasu interaktywnego ssh / tcp na jednym z naszych serwerów, więc po prostu:

date; ssh host.domain 'sleep 10000'; date

przykładowe dane wyjściowe:

Thu May 24 12:22:39 CEST 2018
packet_write_wait: Connection to 172.29.1.27 port 22: Broken pipe
Thu May 24 14:22:40 CEST 2018
huch
źródło