Software Defined Networking (SDN) - OpenFlow og OVSDB-forbindelse
Embed docs direkte på din hjemmeside med et par linjer kode
Denne artikel er baseret på OpenFlow- og OVSDB-forbindelse mellem SDN-controller og Openflow-baserede switche og indeholder oplysninger om forbindelseslivscyklus. Vi vil bruge open source SDN controller, dvs. Opendaylight (ODL) Carbon release og Openflow virtual switch, dvs. OpenVswitch (OVS) version 2.6.0 for at beskrive om OVSDB og Openflow-forbindelse.
SDN controller styrer underliggende Openflow-switche via to typer af tilslutninger:
- OVSDB
- Openflow
OVSDB og Openflow-forbindelse
OVSDB er OVS database management protocol, der definerer skema for OVS database og specifikation for kommunikation mellem controller og switch. SDN-controller bruger denne protokol til at styre OVS-switch ved at udfylde sin database med den påtænkte konfiguration.
Typisk kører SDN-controller i passiv tilstand for at lytte til OVSDB og Openflow-forbindelser fra henholdsvis OVS på portene 6640 og 6653.
Så først, lad os starte ODL controller, du kan downloade den fra her. Det er en forudsætning for at indstille JAVA_HOME miljøvariabel i dit system til den nyeste Java-version. At køre ODL er så let, bare lav under trin:
- Download ODL distribution fra her.
- Udpak ODL-distributionen.
- Indtast underkataloget "bin", der er placeret under toppakken for den downloadede pakke.
- Kør følgende kommando for at få din controller op: karaf
Nedenfor ses billedet for ovenstående trin:
Da vi har brug for at styre OVS-switche, til hvilke OVSDB og Openflow-forbindelser skal laves, skal Openflow og OVSDB plugins installeres i ODL. som skal gøres Dette kan gøres som vist nedenfor:
Når Openflow og OVSDB plugins er installeret, begynder ODL at lytte til henholdsvis Openflow og OVSDB-forbindelser på henholdsvis 6653 og 6640. Dette kan kontrolleres på controller ved at køre følgende kommandoer:
netstat -a | grep 6653
netstat -a | grep 6640
Det bemærkes, at OVS-omskifter allerede skal køre, inden der udføres nogen OVS-kommando. Hvis du vil køre OVS på Ubuntu, skal du køre følgende kommando med root-tilladelser:
sudo /etc/init.d/openvswitch-switch start
Den er tilgængelig som service, så du kan også tjekke sin status.
sudo /etc/init.d/openvswitch-switch status
Når OVS kører, kan du også udføre sine CLI-kommandoer. For eksempel,
sudo ovs-vsctl show
Nedenfor ses billedet til kommandoen for udførelse af kommandoen:
På OVS-siden køres under kommando for at starte OVSDB-forbindelse med controller:
ovs-vsctl set-manager tcp: <controller-IP>: 6640
For at bekræfte, at forbindelsen er etableret, kan kommandoen underkøres, som viser 'is_connected' flag er sat til sand i udgangen.
sudo ovs-vsctl show
Openflow-forbindelse er lavet på broen, så du kan enten oprette bro på OVS eller ODL kan også oprette bro på OVS ved at sende konfiguration til OVS via OVSDB-forbindelse. Over broen i OVS kan kommandoen nedenfor køres for at forbinde bro til ODL, som etablerer etableringen af Openflow-forbindelse mellem ODL og OVS.
ovs-vsctl set-controller <bronavn> tcp: <controller-IP>: 6653
Se nedenfor for deres forbindelsesoplysninger.
Som vi har set fra OVS side, har OVSDB og Openflow forbindelser været lavet, og det samme kan verificeres på ODL side ved at køre følgende kommandoer.
netstat -a | grep 6653
netstat -a | grep 6640
Se nedenstående billede for udgangen af kommandoerne, som bekræfter forbindelsen ESTABLISHED state:
Da OVSDB og Openflow-forbindelse er baseret på TCP, kan meddelelser, der udveksles mellem ODL og OVS, nemt indfanges via Wireshark-software. Se nedenfor pakkepakningsbillede, der viser meddelelser, der udveksles under tilslutningsopsætningen.
I Wireshark-pakkeopsamlingslogfiler kan du se forskellige Openflow-meddelelser, som udveksles mellem controller og OVS under forbindelsesopsætningen.
Som du ser under forbindelsesopsætningen, sendte ODL FEATURES_REQUEST Openflow-meddelelser, og ODL modtog FEATURES_REPLY fra OVS. Inde i FEATURES_REPLY meddelelser får ODL datapat ID (dvs. unik identifikation) af OVS-broen, der tager sig af videresendelse (baseret på Openflow-regler konfigureret af OFL), trafikken mellem de virtuelle maskiner, der er forbundet til OVS-portene.
På OVS side kan følgende kommando køres for at vise detaljer om broen.
sudo ovs-ofctl viser br-int -OOpenFlow13
Tjek nedenfor billedet for udgangen af kommandoen:
Her kan du se FEATURE_REPLY viser datapath-id'et (i hex-format) af broen på OVS.
Selv ODL har dashboard DLUX funktion, som giver GUI web interface til ODL controller på url http://localhost:8181/index.html på hvilken ODL-bruger kan logge ind (som standard brugernavn og adgangskode er 'admin') og tjek netværkstopologi på browseren i det system, hvor ODL kører. Tjek under billeder for samme.
I ovenstående billede kan du se, at OVS-kontakten vises i netværkstopologien, der styres af ODL-controlleren. Siden har vi kun tilsluttet en switch, derfor vises kun en Openflow node. Her vises OVS-omskifter med datapat-id i decimaltal.
For at slette Openflow-forbindelse med ODL kan kommandoen nedenfor køres på OVS:
ovs-vsctl del-controller <bronavn>
For at slette OVSDB-forbindelse med ODL kan kommandoen nedenfor køres på OVS:
ovs-vsctl del-manager
Når forbindelsen er slettet, er 'is_conncted' flag, der var 'true', da forbindelsen blev oprettet, forsvinder fra output af 'ovs-vsctl show' CLI kommando af OVS.
Se nedenstående billede for OpenFlow- og OVSDB-forbindelse slettet initieret fra OVS-siden:
Til fejlfinding og fejlfinding kan du tjekke logfiler, der opretholdes i ODL og OVS.
ODL logging sti
Når ODL distribution (som du har downloadet) er udpakket og du kører 'karaf' binær eksekverbar, så bliver 'log'-underkatalog oprettet, som indeholder karaf.log-filer, og deres generiske sti er: ~ / distribution-karaf- <version-nummer> - <udgivelsesnavn> / data / log.
Tjek nedenfor billedet for ODL side logfiler.
OVS logging sti
Når OVS kører, genererer den en OVSDB logfil med navnet 'ovsdb-server.log' og Openflow logfil med navnet 'ovs-vswitchd.log' på sti:
/ Var / log / openvswitch
Se nedenstående billede for OVS-side logfiler til OVSDB (ovsdb-server.log) og Openflow-moduler (ovs-vswitchd.log) af OVS.
+ === +
Referencer: