Openstack Juno版本中的网络可以使用GRE+VXLAN模式。下面分析下一个云主机的网络连接情况。在一个云主机里面,网卡的默认名称是eth0。
1.source openrc
2.export PYTHONIOENCODING=utf-8
3.nova list --all-tenants|grep $vm_name
查到云主机对应的VM_UUID。
4.nova show $vm_uuid
查看到云主机对应的计算节点名称和instance_name
5.连接到云主机所在的计算节点,查看云主机的instance_name对应的xml文件。
virsh list --all|grep instance-0000XXXX
查看到云主机对应的实例状态是running状态的。
6.virsh dumpxml instance-0000XXXX可以查看到<interface></interface>里面的内容是关于云主机网络接口的。
mac address是云主机内部的网口eth0的MAC地址。
source bridge是网桥的名字,一般是qbr开头的网桥。qbrXXXXXXXX-XX网桥是因为不能在TAP设备上配置network acl rules而增加的设备。
target device是tap设备,表示云主机的网卡连接到TAP设备上面。云主机的网口eth0和TAPXXXXXXXX-XX都是TAP设备。TAPXXXXXXXX-XX设备连接到网桥qbrXXXXXXXX-XX上。
7.通过brctl可以查看到linux bridge网桥的接口。
brctl show qbrXXXXXXXX-XX
查询的结果至少包括2个端口,一个是tapXXXXXXXX-XX,另外一个是qvbXXXXXXXX-XX。
qvbXXXXXXXX-XX和qvoXXXXXXXX-XX是一对veth pair devices,是一对虚拟的网络设备,用来连接linux bridge和linux open vswitch。名字涵义是Q--Quantum,V--Veth,B--bridge,O--Open vswitch。
8.ethtool -i qvbXXXXXXXX-XX查看qvb设备的驱动是否是veth的类型。
9.ethtool -S qvbXXXXXXXX-XX查看qvb设备的对端peer_ifindex。
10.ip link找到qvb设备的对端peer_ifindex数字所对应的接口qvoXXXXXXXX-XX。
qvbXXXXXXXX-XX和qvoXXXXXXXX-XX是一对veth设备,是成对出现的。可以通过ethtool -S查看对端的端口数字,并根据ip link|more查看到对应的veth设备名称。
qvb是quantum veth bridge
qvo是quantum veth open vswitch
qvo设备连接到了Open vswtich设备br-int。
11.通过Open vswtich中的命令ovs-vsctl port-to-br qvoXXXXXXXX-XX查看qvoXXXXXXXX-XX设备所属的bridge。
ovs-vsctl port-to-br qvoXXXXXXXX-XX列出所有挂载qvoXXXXXXXX-XX的网桥。
12.查看虚拟网桥上的端口。
ovs-vsctl list-ports br-int
可以查看到除了qvo开头的N多网口,还有int-br-prv端口。
13.