记录一些SDN时出现的概念,你只需要耐心的查阅就能明白:
VETH设备:
对现实网络和Linux网络设备之间的关系做了分析,很不错。
http://www.ibm.com/developerworks/cn/linux/1312_xiawc_linuxvirtnet/
VETH设备总是成对出现,送到一端请求发送的数据总是从另一端以请求接受的形式出现。该设备不能被用户程序直接操作,但使用起来比较简单。
VETH 设备相当于连接 Bridge 的网线。
TUN/TAP设备:
TUN/TAP虚拟网络设备为用户空间程序提供了网络数据包的发送和接收能力。他既可以当做点对点设备(TUN),也可以当做以太网设备(TAP),可以理解为
虚机的一块网卡
qbrxxx:
linux bridge设备,由linux内核产生
qvbxxx - qvoxxx
连接qbr设备和openvswitch产生的br-int(ovs虚拟网桥),可以理解为qbr网桥和br-int网桥之间的一根网线
patch-tun -- patch-int
连接br-int 和 br-tun两个网桥之间的设备,也是成对出现,同样的可以理解成网线
br-tun上的是patch-int(peer是patch-tun)(可以用ovs-vsctl命令查看,有点儿绕,你可能不需要理解具体的含义)
br-ex
br-ex和前面的设备是不一样的,它也是openvswitch虚拟出来的网桥,这一点没有什么不同,但是它的地位是不一样的,它是外部网络访问内部云虚机的关口,
记得在配置openstack的时候,需要专门找一块网卡,将其与br-ex绑定,为什么呢?
首先我们将openstack中的网络分为provider网络和tenant网络(tenant网络我们才分flat,vlan等等),
provider网络不是openvswitch控制的,它是物理机在数据中心的实际网络结构
tenant网络是每个tenant(project)自己创建的网络,不同的tenant创建的网络可以通过router(l3 router)相连
需要指出的是在tenant网络中:
每个租户都可以创建自己的dhcp和l3 router,地址也可以相同,是还用linux的命名空间做到隔离的,对于同一个ip192.168.1.2实际上应该有个前置定语:
namespace A : 192.168.1.2
namespace B: 192.168.1.2
当某台虚机需要和external的网络连接时(访问provider网络), 会在br-int上创建qrxxx的端口,用来和l3 router相连, l3 router的另一端连接br-ex的qg-xxx端口,
同时l3的默认网关设置为qg-xxx的ip,这样虚机就可以通过l3 router和br-ex访问external 网络,而external 网络通过floating ip(和某个具体虚机绑定),经过NAT转换,
发到对应的tenant网络中,从虚机到external网络过程看起来是这样的:
虚机tap设备---->
qbr(linux bridge) ->
通过qvb/qvo --->
br-int -->
通过qrxxxx端口 ---->
l3 router ---->
通过br-ex上的qg-xxx端口(gateway端口) --->
br-ex -->
eth(某个物理网口)
反过来通过floating ip,经过nat,是这个的逆过程,具体的网络细节不再赘述。
经过前面讲述neutron,配置neutron不再是问题,而在horizon上操作创建自己的网络也变得清晰明了,当然了在真正实施大规模部署时,provider网络的
拓扑结构,实际物理的交换机和路由器设置,甚至到根路由的设置,都需要真正的网络经验,毕竟实际的物理网络比openvswitch 虚拟的网络更加复杂,
不同的协议和配置需要也更头疼一些。