Open vSwitch
Open vSwitch, někdy též zkráceně OVS, nebo openvswitch, je open-source implementace distribuovaného virtuálního vícevrstvého switche, umožňujující efektivně automatizovat obsluhu virtuálních portů prostřednictvím software, s podporou standardního rozhraní pro správu sítě a síťových protokolů, jako je NetFlow, sFlow, SPAN, RSPAN, CLI, LACP a 802.1ag.
Jeho zdrojový kód, licencovaný pod licencí Apache 2.0, je většinou v jazyce C což umožňuje snadnou přenositelnost, proto se používá se nejen jako alternativa fyzického switche pro virtuálního stroje (VM) běžící v rámci hypervizoru[1], ale i jako řídicí software k obsluze fyzických portů hardwarových switchů.
Do linuxového jádra byl začleněn od verze 3.3, která byla vydána 18. března 2012 a od léta téhož roku s ním pracuje i naše disklessová infrastruktura.
Nástroje
- ovs-vsctl
- OVS má širokou paletu funkcí a nástrojů, ovšem potřebám disklessové infrastruktury stačí tenhle konzolový nástroj, kterým se obsluhuje démon ovs-vswitchd, který odesílá prostřednictvím soketu
/var/run/openvswitch/db.soc
konfigurační změny na server ovs-server, který je ukládá do databázového souboruovs-db
.
- ovs-ofctl
- Je konzolový nástroj který umožňuje sledovat a měnit nastavení jimiž lze kontrolovat OpenFlow.
- ovs-dpctl
- Nástroj, který se používá ke správě datových cest v rámci OVS.
- ovs-appctl
- Je nástroj, kterým lze řídit a odesílat dotazy na jednotlivé démony, s nimiž pracuje Open vSwitch.
Manuál užitečných konfigurací pro využití Open vSwitche. Většina příkladů je pro verzi 2.x.
Základní využití nástrojů OVS
Jak zjistit, jaké tagované VLAN tečou portem
K tomu lze využít příkazu tcpdump, jehož výstup přesměrujeme do souboru a po nasbírání dostatečného množství dat, z něj vytáhneme pomocí utility awk s odělovacím řetězcem vlan
čísla VLAN, která se objevují v hlavičkách paketů. Bude-li na rozhraní netagovaná VLAN, nebude výstup žádný.
# tcpdump -i enp24s0f1 -e > vystup_komunikace.txt # awk -Fvlan '{print $2}' vystup_komunikace.txt | awk '{print $1}' | sort -u 1, 17, 4, 5, 65,
Podobným způsobem lze využít také příkaz OVS ovs-dpctl', který můžeme pomocí roury poslat ke zpracování přes awk rovnou, ale v takovém případě se nemusí objevit všechny VLAN, protože buffer, se kterým se pracuje, nemusí být dost velký.
# ovs-dpctl dump-flows | awk -F\, '{print $6}' | sort -u packets:0 ipv4(frag=no) vlan(vid=1) vlan(vid=17) vlan(vid=4 vlan(vid=4) vlan(vid=5) vlan(vid=65)
Uzavírací kulatá závorka chybí proto, že na VLAN č. 4 již visí nějaký port. |
Jednoduchý bridge pro připojení VPS
Bridge "ovsbr0"
Port "eno4"
trunks: [1, 4, 5, 6, 32, 71]
Interface "eno4"
Port "dce0"
tag: 1
Interface "dce0"
- ↑ Má podporu pro Xen, Linux KVM, Proxmox VE, VirtualBox, a existuje i port na Hyper-V. A je integrován do nejrůznějších virtualizačních systémů jako je OpenStack, openQRM, OpenNebula či oVirt.