sinalizador de redefinição TCP (RST)

0

Eu estou tentando transmitir um vídeo entre 2 hosts também estou tentando simular a mudança do cenário IP, o cliente começou a ouvir o servidor, em seguida, mudei o cliente para o novo switch e ele é 192.168.2.5, estou usando Controlador Mininet e Ryu. minha topologia é a seguinte:

ha-eth0<->s1-eth1 (OK OK)
hb-eth0<->s2-eth12 (OK OK)
hc-eth0<->s1-eth3 (OK OK)
s2-eth1<->s1-eth4 (OK OK)
s2-eth2<->s3-eth1 (OK OK)

Estou usando o vlc-wraper e o protocolo HTTP para streaminh. Além disso, instalei os fluxos de folwing para modificar o IP do clint no switch 1 e 2:

 cookie=0x0, duration=1012.669s, table=0, n_packets=2, n_bytes=1894, idle_age=1004, priority=3,ip,nw_src=192.168.2.2,nw_dst=192.168.2.3 actions=output:4

 cookie=0x0, duration=1012.668s, table=0, n_packets=1, n_bytes=54, idle_age=1004, priority=3,ip,nw_src=192.168.2.3,nw_dst=192.168.2.2 actions=output:1

 cookie=0x0, duration=1059.340s, table=0, n_packets=1, n_bytes=947, idle_age=1051, priority=3,ip,nw_src=192.168.2.2,nw_dst=192.168.2.3 actions=mod_nw_dst:192.168.2.5,output:12

 cookie=0x0, duration=1059.340s, table=0, n_packets=1, n_bytes=54, idle_age=1051, priority=3,ip,nw_src=192.168.2.5,nw_dst=192.168.2.2 actions=mod_nw_src:192.168.2.3,output:1

ha (Host A) IP é 192.168.2.2 (o host do cliente)
hb (Host B) IP antigo é 192.168.2.3 e novo IP é 192.168.2.5 (o host do servidor)

quando o fluxo parou, eu verifiquei o Wireshark e notei que havia TCP RST, mas eu não sei por quê? alguém poderia dar uma olhada nos arquivos do Wireshark e me dizer as razões.

Anexei a saída do Wireshark para ambos os hosts link

    
por Salem Masoud 12.07.2018 / 01:44

1 resposta

1

De acordo com as especificações TCP, a identidade de uma conexão TCP é determinada pela combinação dessas quatro coisas:

  • endereço IP do terminal A
  • Número da porta TCP do terminal A
  • endereço IP do ponto final B
  • Número da porta TCP do terminal B

Se qualquer uma dessas quatro coisas mudar, então pela definição básica do protocolo TCP não é mais a mesma conexão .

Quando seu Host B mudou de seu IP antigo para o novo, todas as conexões existentes e o estado associado a elas foram vinculados ao endereço IP antigo. O sistema operacional é inteligente o suficiente para saber que, depois que o endereço IP de uma interface é alterado, nenhuma conexão TCP existente pode ser continuada, pois o endereço IP antigo não pode mais ser usado.

Aparentemente, a mudança de endereço IP foi bastante abrupta no que diz respeito ao Host B: não há DHCPRELEASE nem qualquer tentativa de terminação ordenada de conexões existentes antes de derrubar o endereço IP antigo.

Como resultado, na interface de rede do host B, como o endereço IP antigo é derrubado, também existem conexões TCP que estavam associadas ao IP antigo.

Seu Networking Definido por Software aparentemente cuida da tradução dos endereços de destino dos pacotes vindos do host A para o novo endereço IP - mas o sistema operacional do host B não o conhece, e por isso não tem idéia de que Caso específico, teria sido possível manter o estado da conexão e continuar a usá-lo, mesmo com o novo endereço IP.

Assim, uma vez que o host B recebe um dos pacotes retransmitidos do host A, ele é endereçado de 192.168.2.2, porta 1234 para 192.168.2.5, porta 37186. Não há registro de uma conexão TCP existente com esses parâmetros exatos - assim, o sistema operacional só pode enviar um TCP RST como resposta.

(Mesmo se a informação da conexão antiga foi mantida, ela tinha o lado do host B no endereço IP como 192.168.2.3, então, na medida em que o host B saiba, este novo pacote para 192.168.2.5 não tem absolutamente nada a ver com aquela conexão antiga .)

Quando a resposta RST viaja de volta ao host A, o SDN irá traduzir seu endereço de origem para 192.168.2.3, então o host A irá reconhecê-lo como pertencente à sua conexão existente. E assim o host A receberá a mensagem de que o fluxo está morto.

    
por 13.07.2018 / 08:40