• Welcome to Advance DreamBox Forum. Please login or sign up.
 

Virtualiseer je netwerk met Open vSwitch

Started by arjanhs, December 08, 2009, 12:20:46 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

arjanhs

Met het open source project Open vSwitch biedt Citrix een virtuele netwerkswitch aan voor op Linux gebaseerde hypervisors. VLAN's, virtuele bridges, aggregatie van interfaces, bandbreedtebeperkingen, ... het is allemaal aanwezig.



Het Open vSwitch-project gebruikt de Apache 2 licentie. Tot de huidige features behoren onder andere policies per virtuele machine, 802.1Q VLAN tagging, visibiliteit in de inter-VM communicatie, ondersteuning voor de OpenFlow-standaard en (last but not least) compatibiliteit met Linux bridging. Dit laatste heeft als gevolg dat je Open vSwitch eenvoudig als drop-in replacement voor de Linux bridge-utilities kunt gebruiken.

Naast KVM ondersteunt het project Xen, Citrix XenServer en VirtualBox als hypervisor. Het project is ontwikkeld door Citrix en wil concurreren met de Cisco Nexus 1000V, de virtuele netwerkswitch die onder andere in VMware vSphere werkt. Op dit moment draagt het project versienummer 0.90.7. Open vSwitch bestaat uit een kernelmodule voor Linux, die versie 2.6.15 en hoger ondersteunt en vooral getest is met kernel 2.6.18 op CentOS met Xen-patches, evenals met de upstream kernel 2.6.26. Er is speciale ondersteuning voor Citrix XenServer hosts. Je kunt Open vSwitch ook in userspace gebruiken, zonder kernelmodule dus, maar dit is nog experimenteel.
Installatie

Installatie-instructies voor Linux en voor Citrix XenServer 5.5 zijn online te vinden. We doen dit hier onder Ubuntu. Aangezien het project nog vrij recent is, moeten we het nog zelf compileren. Download daarom de recentste release van Open vSwitch en zorg ervoor dat je Linux-distributie de broncode van de Linux-kernel geïnstalleerd heeft in /usr/src/. Onder Ubuntu kan dat door het pakket linux-headers voor de geschikte kernelversie te installeren. Daarna compileer en installeer je Open vSwitch met de volgende opdrachten:


~$ sudo rmmod bridge

~$ wget http://openvswitch.org/releases/openvswitch-0.90.7.tar.gz
~$ tar xf openvswitch-0.90.7.tar.gz

~$ cd openvswitch-0.90.7

~/openvswitch-0.90.7$ ./configure --with-l26=/lib/modules/`uname -r`/build
~/openvswitch-0.90.7$ make

~/openvswitch-0.90.7$ sudo make install


We verwijderen de module bridge (indien geladen) eerst, omdat die kan interfereren met de drop-in module die Open vSwitch aanbiedt. Laad na de installatie de module openvswitch_mod in en start de daemon voor de virtuele switch:


~/openvswitch-0.90.7$ sudo insmod datapath/linux-2.6/openvswitch_mod.ko
~/openvswitch-0.90.7$ sudo mkdir /etc/vswitch

~/openvswitch-0.90.7$ sudo touch /etc/vswitch/ovs-vswitchd.conf

~/openvswitch-0.90.7$ sudo ovs-vswitchd --detach /etc/vswitch

Virtuele bridge

We kunnen Open vSwitch zoals gezegd gebruiken als drop-in replacement voor de normale bridging-module in Linux. Zorg er eerst voor dat deze module niet is geladen en laad in de plaats daarvan de module van Open vSwitch. Start ook de daemon voor de virtuele bridge:


~/openvswitch-0.90.7$ sudo rmmod bridge

~/openvswitch-0.90.7$ sudo insmod datapath/linux-2.6/brcompat_mod.ko

~/openvswitch-0.90.7$ sudo ovs-brcompatd --detach /etc/vswitch/ovs-vswitchd.conf


Nu kun je de vertrouwde brctl-commando's (in het pakket bridge-utils) gebruiken om een bridge aan te maken. We maken bijvoorbeeld een bridge br0 aan met eth0 en et1:


~$ sudo brctl addbr br0

~$ sudo brctl addif br0 eth0

~$ sudo brctl addif br0 eth1

~$ sudo brctl show


Open vSwitch voegt nu automatisch de volgende regels toe aan zijn configuratiebestand, /etc/vswitch/ovs-vswitchd.conf:


bridge.br0.port=br0

bridge.br0.port=eth0

bridge.br0.port=eth1


De configuratie van de virtuele switch gebeurt met eenvoudige paren van de vorm sleutel = waarde. Het MAC-adres van de bridge kun je nu zelf in het configuratiebestand aanpassen, bijvoorbeeld:


bridge.br0.mac=00:dd:aa:bb:cc:dd


Na het aanpassen van de configuratie moeten we de Open vSwitch daemon nog instrueren om het configuratiebestand opnieuw in te lezen:


~$ sudo ovs-appctl -t /usr/local/var/run/ovs-vswitchd.`pidof ovs-vswitchd`.ctl -e vswitchd/reload


Dit doet eigenlijk hetzelfde als een SIGHUP signaal naar de daemon sturen:


~$ sudo killall -HUP ovs-switchd


VLAN-configuratie

We kunnen ook een eenvoudige configuratie opzetten voor een 802.1Q VLAN, waarbij meerdere gebridgede netwerken op een transparante wijze dezelfde fysieke netwerkaansluiting gebruiken zonder dat er informatie tussen deze netwerken lekt:


vlan.eth0.tag=1

vlan.eth0.trunks=2

vlan.eth0.trunks=3

vlan.eth1.tag=2


De eerste regel zorgt ervoor dat frames zonder tag op eth0 VLAN ID 1 krijgen. Verder definiëren we nog VLAN's met ID 2 en 3. Frames zonder tag op eth1 krijgen daarentegen VLAN ID 2. Hierdoor kan ongetagd netwerkverkeer dat via eth1 binnenkomt via de virtuele switch toegang krijgen tot apparaten met VLAN 2.
Aggregatie van interfaces

We kunnen ook meerdere interfaces aggregeren, zodat we ze parallel kunnen gebruiken. Dat kan bijvoorbeeld door een apparaat bond0 toe te voegen, dat eth0 en eth1 aggregeert:


bonding.bond0.slave=eth0

bonding.bond0.slave=eth1


Limiteer de snelheid

Het is in het configuratiebestand mogelijk om de snelheid van een fysieke interface of een VLAN te limiteren ("traffic shaping"), uitgedrukt in kbps. Voor een fysieke interface limiteert dit de snelheid waarmee verkeer van buitenaf mag binnenkomen, terwijl dit bij een virtuele interface die met een virtuele machine verbonden is de snelheid limiteert waarmee de gast netwerkverkeer naar buiten kan verzenden. Een voorbeeld voor een fysieke interface is:


port.eth1.ingress.policing-rate=500

port.eth1.ingress.policing-burst=20


Hiermee kan de interface eth1 netwerkverkeer met een maximumsnelheid van 500 kbps ontvangen met een burst van 20 kbps.


En verder

Open vSwitch biedt nog heel wat meer mogelijkheden. Bekijk bijvoorbeeld eens de instructies om de virtuele switch te gebruiken als een OpenFlow switch en de instructies om de verbinding met een OpenFlow controller via SSL te beveiligen, of de instructies om Open vSwitch zonder kernelmodule te gebruiken. Er zijn ook man-pagina's voor alle commando's.