Sådan overvåger OpenFlow-meddelelser med pakkesniffer

OpenFlow blev som en vigtig forudsætning for softwaredefineret netværk (SDN) oprindeligt introduceret i akademiet som en måde at muliggøre innovation på produktionsnetværk, der traditionelt var bygget med lukket og proprietær netværkshardware. OpenFlow offloader fjernstyringsdirektivet (styringsplan) fra netværksenheder som omskiftere og flytter kontrolplanet til en separat controller. Netværksenhederne sender så simpelthen trafik, som programmeret af den eksterne OpenFlow-controller. Det er OpenFlow-protokollen, der bruges af OpenFlow-controlleren til at programmere netværksenhederne.

Antag at du har en OpenFlow testbed running, som består af en OpenFlow controller og et sæt af OpenFlow-kompatible switche. Til fejlfindingsformål ønsker du at indfange og undersøge OpenFlow-meddelelser, der udveksles mellem controlleren og afbryderne. Til dette kunne du overvåge udvekslede OpenFlow-meddelelser enten på controlleren eller switch-siden, men hvad hvis det ikke er praktisk at gøre det? En anden måde er at "snuse" netværkspakker på OpenFlow kontrolkanalen og fortolke pakkerne.

I denne vejledning skal jeg vise, hvordan man sniffer live OpenFlow-kontrolpakker og afkod OpenFlow-meddelelser indeholdt i pakkerne.

Bemærk, at for sådan pakke, der sniffer til arbejde, skal SSL være deaktiveret i eksisterende OpenFlow-kontrolkanaler mellem controlleren og switcherne. Lad os antage, at vi ikke taler om noget produktionsmiljø her, så SSL er slukket for nu.

Metode One: Sniff OpenFlow Beskeder via Wireshark GUI

Hvis du vil overvåge OpenFlow-meddelelser ved hjælp af pakkesnuffning, er den mest brugervenlige måde via Wireshark, en GUI-baseret pakkesniffer. En god ting om Wireshark er dens omfattende liste over indbyggede og brugerdefinerede dissektorer. Hver dissektor dekoder en del af pakkedata baseret på en specifik netværksprotokol. For stort set alle eksisterende netværksprotokoller findes der en tilsvarende Wireshark-dissektor (enten indbygget eller bidraget af en tredjepart). OpenFlow-protokollen er ikke en undtagelse.

Selvom der er en officiel OpenFlow-dissektor, skal jeg bruge en OpenFlow-disses tredjepartsdivision udviklet af Big Switch Networks, da den førstnævnte synes at have patchy / ufuldstændig support til forskellige OpenFlow-versioner.

Sådan installeres OpenFlow-dissektoren til Wireshark.

$ mkdir -p ~ / .wireshark / plugins
$ cd ~ / .wireshark / plugins
$ wget http://www.projectfloodlight.org/openflow.lua

Nu gå videre og start Wireshark.

For at kontrollere, at OpenFlow-dissektoren er installeret, skal du gå til "Hjælp" -> "Om Wireshark".

Under fanen "Plugin", hvis du ser openflow.lua opført, betyder det, at Openflow dissectoren er indlæst på Wireshark.

Gå nu videre og begynde at fange trafik på netværksgrænsefladen, som skal se OpenFlow-kontroltrafik.

Hvis Wireshark fanger en OpenFlow-protokollapakke, vil den automatisk vise "of_XXXX" i feltet "Info". Hvis du vil se indholdet af OpenFlow-meddelelsen, skal du kontrollere pakkedetaljerens rude. Hver OpenFlow-besked er typisk meget lille, der passer ind i en enkelt pakke.

For eksempel viser følgende skærmbillede "Packet-In" -type OpenFlow-beskeden.

Og "Port Status" -type OpenFlow-besked:

Metode To: Sniff OpenFlow Beskeder fra kommandolinjen

Hvis du er på en hovedløs server uden GUI, kan du stadig snyde OpenFlow-kontroltrafik fra kommandolinjen. Til dette kan du bruge tshark, en kommandoliniepakke sniffer, der følger med Wireshark-pakken.

Først skal du kontrollere, hvilke OpenFlow versioner der understøttes til sniffing:

$ tshark -G protokoller | grep -i åbent flow

OpenFlow	openflow	openflow
OpenFlow 1.0	openflow_v1	openflow_v1
OpenFlow 1.3	openflow_v4	openflow_v4
OpenFlow 1.4	openflow_v5	openflow_v5

Ifølge udgangen understøtter den OpenFlow-versionen 1.0, 1.3 og 1.4. Kolonnen 2nd / 3rd angiver protokollidentifikatoren, som skal angives i kommandolinjen tshark.

For at snyde OpenFlow-protokollen trafik, brug følgende kommandolinje.

$ sudo tshark -i <interface> -d tcp.port == <port-nummer>, openflow -O <protocol-id>

Hvis du f.eks. Vil snuse OpenFlow v1.3-trafik i port 6633, skal du køre følgende kommando.

$ sudo tshark -i eth0 -d tcp.port == 6633, openflow -O openflow_v4

Her er nogle eksempler på skærmbilleder af tshark, der fanger OpenFlow-version 1.0-meddelelser.

OpenFlow-funktioner Svarbesked:

OpenFlow Packet-In besked:

OpenFlow Flow-Mod besked:

Xmodulo

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.