libvert 虚拟化网络配置详解
基本虚拟libvert虚拟化网络
![](http://pengjunjie.com/images/bolg2014/libvert_network_architecture.png)
bridge 和 tap/tun
桥是一个接口,桥由多个接口共同构成,在以太层把每一个接口收到的数据复制到其他接口。向桥写入数据时,桥内所有的接口都会收到
tap/tun简单的说时一块虚拟网卡。tap是以太层设备,tun是IP层设备。用户空间的程序向tap/tun写入数据,这些数据会传送到内核的网络模块;内核的网络模块写入数据,这些数据又可以被用户空间的程序读到。实现了宿主和Guest之间的共享接口。当guest机器的IP和宿主IP在同一个子网中时,连上这块虚拟网卡的虚拟机就可以和宿主通信。
bridge模式
Linux每启动一个VM,就会为这个VM创建一个tap设备,名字叫vnetx,然后将这块虚拟网卡加入桥设备brx,桥设备具体和那一块网卡绑定由用户自己决定。
...
<devices>
<interface type='bridge'>
<source bridge='br0'/>
<mac address='00:14:41:12:ac'/>
</interface>
...
其中整个操作如下:
1. 安装uml-utilities和bridge-utils这两个工具分别含有tunctl和brctl命令。
2. 生成一个新的TAP接口 tunctl -t tap1 -u
3. 生成一个叫做br0的bridge brctl addbr br0
4
. 把真实网卡加到bridge br0的一端 brctl addif br0 eth0
5. 把上面生成的TAP接口加到bridge br0的另一端 brctl addif br0 tap1
6. 激活TAP fconfig tap1 up
7. 设置/dev/net/tun的读写权限 chmod 0666 /dev/net/tun
quantum 四种虚拟网络设备
在配置openstack时,quantum选择使用openvswitch,当创建完VM后,ifconfig显示的各种虚拟接口未免让人凌乱,但主要包含以下四类网络接口: TAP devices、veth pairs、 Linux bridges、和 Open vSwitch bridges。
连接情况参照下图:
TAP devices:如图中的vnet0,是hypervisor实现的一块虚拟接口卡,发送到TAP接口上的数据都会被VM接收,hypervisor则把VM的数据通过TAP接口向外发送。
veth pairs:如图中的qvbXXX和qvoXXX,一对虚拟接口卡,连接openvswitch br-int和linux 桥接网卡。
Linux bridges:如图中qbrXXX,linux的网桥,用来了解openvswitch和hypervisor的TAP接口。
Opn vSwitch bridges:虚拟交换机,像物理交换机一样,具备Vlan隔离等特性,通过端口配置,可以隔离VM以及通过虚拟交换机实现将VM和真实网络的互通。
值得注意的是,上图为什么不直接将VM连接到openvswitch,而是经过Linux Bridge进行了中转。因为Openstack通过iptable执行虚拟机的安全策略,而openvswitch的接口并不支持iptable。