TCP-Reset (RST) -Flag

777
Salem Masoud

Ich versuche, ein Video zwischen zwei Hosts zu streamen. Außerdem versuche ich, ein sich änderndes IP-Szenario zu simulieren. Der Client hat mit dem Hören des Servers begonnen. Dann habe ich den Client auf den neuen Switch verschoben. Er hat 192.168.2.5. Ich verwende Mininet und Ryu Regler. Meine Topologie ist wie folgt:

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) 

Ich verwende vlc-wraper und das HTTP-Protokoll für streaminh. Außerdem habe ich die folgenden Flows installiert, um die IP des Clint auf Switch 1 und 2 zu ändern:

 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 ist 192.168.2.2 (der Client-Host).
hb (Host B) alte IP ist 192.168.2.3 und die neue IP ist 192.168.2.5 (Server-Host).

Als der Stream aufhörte, überprüfte ich Wireshark und bemerkte, dass TCP RST vorhanden war, aber ich weiß nicht warum. könnte jemand einen Blick in die Wireshark-Dateien werfen und mir die Gründe nennen.

Ich habe die Wireshark-Ausgabe für beide Hosts angehängt: https://drive.google.com/open?id=1rcVlNT2cwnvNL4-4j061xGpKJohSdU9z

0
Was genau ist "192.168.2.3"? Was machst du genau mit "Mininet und Ryu Controller"? Sie geben an, dass Sie versuchen, sich ändernde IP-Adressen zu simulieren. Klären Sie also ein wenig, was genau Sie bedeuten und wie Sie dies auch tun. Pimp Juice IT vor 5 Jahren 0
@PimpJuiceIT 192.168.2.3 ist die alte IP von hb. Ich habe ein Mininet-Skript, das Host B von Switch 1 zu Switch 2 verschiebt, wenn es verschoben wird. Es hat eine neue IP erhalten, die 192.168.2.5 ist. Auch wenn der Controller feststellt, dass Hot B verschoben wurde, werden die genannten Flows installiert. Salem Masoud vor 5 Jahren 0

1 Antwort auf die Frage

1
telcoM

Gemäß den TCP-Spezifikationen wird die Identität einer TCP-Verbindung durch die Kombination dieser vier Dinge bestimmt:

  • IP-Adresse des Endpunkts A
  • TCP-Portnummer des Endpunkts A
  • IP-Adresse von Endpunkt B
  • TCP-Portnummer von Endpunkt B

Wenn sich eines dieser vier Dinge ändert, ist es gemäß der grundlegenden TCP-Protokolldefinition nicht mehr dieselbe Verbindung .

Wenn Ihr Host B von der alten IP-Adresse zur neuen IP-Adresse gewechselt hat, waren alle vorhandenen Verbindungen und der damit verbundene Zustand an die alte IP-Adresse gebunden. Das Betriebssystem ist intelligent genug, um zu wissen, dass nach einer Änderung der IP-Adresse einer Schnittstelle vorhandene TCP-Verbindungen nicht fortgesetzt werden können, da die alte IP-Adresse nicht mehr verwendet werden kann.

Offensichtlich war die Änderung der IP-Adresse für Host B ziemlich abrupt: Es gibt weder DHCPRELEASE noch einen Versuch, bestehende Verbindungen ordnungsgemäß zu beenden, bevor die alte IP-Adresse abgebrochen wird.

Infolgedessen werden auf der Netzwerkschnittstelle von Host B die alten IP-Adressen abgebrochen. Dies gilt auch für alle TCP-Verbindungen, die der alten IP-Adresse zugeordnet waren.

Ihr Software-Defined Networking sorgt anscheinend dafür, dass die Zieladressen der Pakete, die von Host A kommen, in die neue IP-Adresse übersetzt werden. Das Betriebssystem von Host B kennt es jedoch nicht und hat daher in diesem speziellen Fall keine Ahnung Es wäre möglich gewesen, den Verbindungsstatus beizubehalten und auch mit der neuen IP-Adresse weiterzuverwenden.

Sobald Host B eines der erneut übertragenen Pakete von Host A erhält, sieht es also an, dass es von 192.168.2.2, Port 1234 bis 192.168.2.5, Port 37186 ​​adressiert ist. Es gibt keine Aufzeichnung einer vorhandenen TCP-Verbindung mit diesen genauen Parametern - Das Betriebssystem kann also nur eine TCP-RST als Antwort senden.

(Selbst wenn die alte Verbindungsinformation beibehalten wurde, hatte sie die Adresse von Host B in der IP-Adresse 192.168.2.3. Wenn Host B weiß, hat dieses neue Paket nach 192.168.2.5 absolut nichts mit dieser alten Verbindung zu tun.)

Wenn die RST-Antwort zu Host A zurückkehrt, übersetzt der SDN seine Quelladresse in 192.168.2.3. Host A erkennt sie als zu seiner bestehenden Verbindung gehörend. Host A bekommt also die Nachricht, dass der Stream tot ist.