Come controllare il timeout TCP in linux / macos?


11

Ho un problema di rete sul mio MacOS che devo risolvere. So che il socket TCP ha un timeout interno che chiuderà la connessione se la parte remota non risponde (ma nessuna disconnessione graziosa). È possibile utilizzare qualsiasi comando / strumento per verificare il valore esatto di questo timeout?

Risposte:


15

Puoi vedere tutti i valori di tcp impostati dal sistema con

$ sysctl net.inet.tcp

Interpretato da tcp_var.h, tcp_subr.c e tcp_timer.c:

  • net.inet.tcp.keepidle = timer di inattività keepalive
  • net.inet.tcp.keepintvl = intervallo per inviare keepalive
  • net.inet.tcp.keepinit = timeout per stabilire syn
  • net.inet.tcp.mssdflt = Dimensione massima del segmento TCP predefinita
  • net.inet.tcp.v6mssdflt = Dimensione massima del segmento TCP predefinita per IPv6
  • net.inet.tcp.minmss = Dimensione minima del segmento TCP minimo
  • net.inet.tcp.minmssoverload = Numero di segmenti TCP al secondo ammessi al di sotto della dimensione MINMSS
  • net.inet.tcp.rfc1323 = Abilita estensioni rfc1323 (TCP ad alte prestazioni)
  • net.inet.tcp.rfc1644 = Abilita le estensioni rfc1644 (TTCP)
  • net.inet.tcp.do_tcpdrain = Abilita la routine tcp_drain per ulteriore aiuto quando sei a corto di mbufs
  • net.inet.tcp.pcbcount = Numero di PCB attivi
  • net.inet.tcp.icmp_may_rst = Alcuni messaggi non raggiungibili ICMP possono interrompere le connessioni in SYN_SENT
  • net.inet.tcp.strict_rfc1948 = Determina se RFC1948 è seguito esattamente
  • net.inet.tcp.isn_reseed_interval = Secondi tra il reseeding del segreto ISN
  • net.inet.tcp.background_io_enabled = IO in background abilitato
  • net.inet.tcp.rtt_min = valore min rtt consentito
  • net.inet.tcp.randomize_ports = Randomizza i numeri di porta TCP
  • net.inet.tcp.tcbhashsize = Dimensione della tabella hash del blocco di controllo TCP
  • net.inet.tcp.msl = Durata massima del segmento
  • net.inet.tcp.always_keepalive = Assumi SO_KEEPALIVE su tutte le connessioni TCP
  • net.inet.tcp.broken_peer_syn_rxmit_thres = Numero di SYN ritrasmessi prima che TCP disabiliti rfc1323 e rfc1644 durante il resto dei tentativi
  • net.inet.tcp.pmtud_blackhole_detection = Rilevamento del buco nero di rilevamento MTU percorso
  • net.inet.tcp.pmtud_blackhole_mss = Rilevamento buco nero di rilevamento MTU percorso abbassato MSS

Credo che per impostazione predefinita 8 keepalive verranno inviati prima della chiusura della connessione se è impostato SO_KEEPALIVE. I tempi sono in millisecondi.



3

Non sono sicuro se questo è quello che stai cercando, ma puoi controllare il valore keep-alive con:

$ netstat -o

3
netstat non accetta l'opzione '-o' per me in Mac OS X 10.6.6
fuzzyPiù

1

Forse non correlato, ma funziona per me:

Sto cercando di determinare il timeout interattivo ssh / tcp su uno dei nostri server, quindi ho solo:

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

esempio di output:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.