Como verificar o tempo limite do TCP no linux / macos?

11

Eu tenho um problema de rede no meu MacOS que preciso solucionar. Eu sei que o soquete TCP tem tempo limite interno que fechará a conexão se a parte remota não estiver respondendo (mas nenhuma desconexão normal). Existe algum comando / ferramenta que eu possa usar para verificar o valor exato desse tempo limite?

grigoryvp
fonte

Respostas:

15

Você pode ver todos os valores tcp definidos pelo sistema com

$ sysctl net.inet.tcp

Interpretado de tcp_var.h, tcp_subr.c e tcp_timer.c:

  • net.inet.tcp.keepidle = cronômetro de inatividade keepalive
  • net.inet.tcp.keepintvl = intervalo para enviar keepalives
  • net.inet.tcp.keepinit = tempo limite para estabelecer syn
  • net.inet.tcp.mssdflt = Tamanho máximo padrão do segmento TCP
  • net.inet.tcp.v6mssdflt = Tamanho máximo padrão do segmento TCP para IPv6
  • net.inet.tcp.minmss = Tamanho máximo mínimo do segmento TCP
  • net.inet.tcp.minmssoverload = Número de segmentos TCP por segundo que podem estar abaixo do tamanho do MINMSS
  • net.inet.tcp.rfc1323 = Ativar extensões rfc1323 (TCP de alto desempenho)
  • net.inet.tcp.rfc1644 = Ativar extensões rfc1644 (TTCP)
  • net.inet.tcp.do_tcpdrain = Ative a rotina tcp_drain para obter ajuda extra quando houver pouco mbufs
  • net.inet.tcp.pcbcount = Número de PCBs ativos
  • net.inet.tcp.icmp_may_rst = Certas mensagens inacessíveis do ICMP podem interromper conexões no SYN_SENT
  • net.inet.tcp.strict_rfc1948 = Determina se o RFC1948 é seguido exatamente
  • net.inet.tcp.isn_reseed_interval = Segundos entre a propagação do segredo ISN
  • net.inet.tcp.background_io_enabled = IO em segundo plano ativado
  • net.inet.tcp.rtt_min = valor mínimo de rtt permitido
  • net.inet.tcp.randomize_ports = Aleatorizar números de porta TCP
  • net.inet.tcp.tcbhashsize = Tamanho da hashtable do bloco de controle TCP
  • net.inet.tcp.msl = Duração máxima do segmento
  • net.inet.tcp.always_keepalive = Suponha SO_KEEPALIVE em todas as conexões TCP
  • net.inet.tcp.broken_peer_syn_rxmit_thres = Número de SYNs retransmitidos antes que o TCP desative rfc1323 e rfc1644 durante o restante das tentativas
  • net.inet.tcp.pmtud_blackhole_detection = Detecção de buraco negro de detecção de caminho MTU
  • net.inet.tcp.pmtud_blackhole_mss = Detecção de buraco negro de detecção de caminho MTU reduzida MSS

Acredito que, por padrão, 8 keepalives serão enviados antes que a conexão seja fechada se SO_KEEPALIVE estiver definido. Os tempos estão em milissegundos.

fuzzyTew
fonte
4

Para linux, você pode usar:

$ sysctl -a | grep net.ipv4
NMaslarski
fonte
3

Não tenho certeza se é isso que você está procurando, mas você pode verificar o valor de manutenção com:

$ netstat -o
atx
fonte
3
não netstat não aceitar a opção '-o' para mim no Mac OS X 10.6.6
fuzzyTew
1

Talvez não relacionado, mas funciona para mim:

Estou tentando determinar o tempo limite interativo ssh / tcp para um de nossos servidores, então eu apenas:

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

saída de exemplo:

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
fonte