在私有云平台中使用OpenvSwitch网络的实现比较多,但核心普遍都是对OVS本身的设置,前端libvirt/QEMU的使用方法基本固定。接下来笔者分别就基本、VLAN和通道三种典型的组网方式进行介绍,并给出它们在libvirt/QEMU中定义方法。
1.基本组网
在libvirt/QEMU中使用OVS的方式比较简单,基本思路是设置好OVS后,定义libvirt桥接网络为OVS并指定虚拟端口类型“<virtualport type=openvswitch/>”,示例如下。
然后只需在虚拟中添加网络接口定义并启动即可,如下所示。
2.VLAN组网
在libvirt/QEMU中使用OVSVLAN网络最基本的方式是使用“假桥(fake bridge)”,以允许tagged VLAN封包在多个OVS中流通。又因为这个假桥是多个OVS间共享的,所以当一个OVS中添加了具有标签的端口时,其他网桥则不能再次添加相同标签的假桥。
□Access模式
我们继续使用之前的ovs-br0,并向其中添加VLAN标签为20的假桥:
然后给虚拟机添加一个指定到ovs-vlan20的网络接口定义:
虚拟机启动后不需要添加VLAN子接口,只要将eth0设置为192.168.20.2即可访问网络,此时其VIF(veth0)在OVS的状态如下,即虚拟机流量经过VIF时被打上VLAN标签从而到达ovs-vlan20:
□Trunk模式(www.xing528.com)
如果上一步的假桥建立后我们将虚拟机的网络接口定义为“<source network=ovs-net0/>”,那么我们就需要在虚拟机内添加VLAN子接口,操作示例如下:
我们可以定义多个假桥,然后将虚拟机的网络接口源定义到ovs-br0即可在虚拟机使得虚拟机访问全部网络。
如果只允许虚拟机访问部分VLAN,我们可以定义带端口组的libvirt网络,如下所示。
然后虚拟机选择对应的端口组定义其网络接口,启动后在内部添加VLAN子接口即可访问VLAN 20与VLAN 30网络。
此时查看OVS状态可发现虚拟机的VIF(vnet0)带有Trunks字段,即虚拟机需要在系统内给流量添加VLAN标签才能经过vnet0到达对应VLAN网络。
3.通道组网
OVS中的通道组网包括GRE、Geneve、VXLAN等,其流程基本相同,主要区别在于可选参数。接下来笔者以GRE为例,简单介绍如何在libvirt/QEMU中进行通道组网。
现有三台主机node1、node2、node3,其地址分别为192.168.0.140、192.168.0.141、192.168.0.142,然后我们选择node1为网络出口,与其他两台主机建立通道。
接下来便可参考第一小节OVS基本组网中的内容,分别在三台主机上定义ovs-net0网络,选择ovs-br0网桥作为虚拟机的网络接口来源,然后在node1上启动相应的DHCP服务并设置防火墙规则即可使得另外两台主机上的虚拟机能够获得IP地址并访问外网了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。