Neutron的网络实现模型
Neutron的三类节点
- 计算节点
- 网络节点
- 控制节点
Neutron将在这三类节点中进行部署,Neutron在各个计算节点,网络节点中运行各种各样的Agent,在控制节点中,与在网络节点中相同,一个控制节点意味着一个Host/VM
OpenStack的三大组件
- 计算
- 存储
- 网络
1.计算节点的网络实现模型
计算节点内的虚拟机或计算节点之间的通信,分为二层通信和三层通信,其中二层通信需要Bridge,三层通信需要Router。其中Router位于网络节点。Neutron当前支持的二层网络类型有local、Flat、Vlan、GRE、Vxlan、Geneve 6种。
若将计算节点的网络实现模型在网络层面进行考虑的话,计算节点可以分为两层:用户网络层和本地网络层。
- 用户网络层:由用户创建,属于外部网络,用户网络层对应的Bridge是br-ethx或者br-tun,实现载体一般为OVS,作用主要是进行用户网络与本地网络的转换,如:内外VID转换,VXLAN封装与解封装等。
- 本地网络层:指Host内部的本地网络,由于用户网络层的屏蔽作用,本地网络层只能感知到一种技术VLAN。且本地网络由负责安全的qbr(Linux Bridge)的安全层和负责内部交换的br-int(OVS)的bridge层两层来实现。
1.1 VLAN实现模型
qbr与br-int
qbr与br-int都是Bridge,qbr的实现载体是Linux Bridge,br-int的实现载体是OVS,qbr与br-int之间通过veth pair连接,虚拟机(VM)与qbr之间通过tap连接,且只有一个tap。
br-ethx
br-ethx也是一个Bridge,实现载体是OVS,负责与外部通信,外部指的是Host外部。
br-int与br-ethx通过veth pair连接,br-ethx存在一个真正的物理网卡。
VLAN ID 转换
出报文的转换过程
- 虚拟机(VM)发出后为Untag报文
- 经过qbr-xxx后,还是Untag报文
- 在进入br-int时,被打上标签,VLANID=10,且离开br-int时依然是VLANID=10
- 在进入br-ethx时,打上VLANID=100的标签
- 离开br-ethx时,即离开主机Host时,VLANID=100。
即在br-int时打上标签变为tag,在br-ethx上打上标签进行报文的ID转换。
入报文的转换过程
- 从Host进入到br-ethx,为tag报文,VLANID=100;
- 离开br-ethx时,VLANID=10;
- 进入br-int时,VLANID=10;
- 出br-int时,变为Untag;
- 通过qbr-xxx进入虚拟机(VM)
1.2 VXLAN实现模型
与VLAN实现模型基本相同,只不过将br-ethx变为br-tun。
出报文的转换过程
- 虚拟机(VM)发出Untag报文
- 经过qbr-xxx后,依然是Untag报文
- 进入br-int时,打上VLANID=50的标签
- 离开br-int时,VLANID=50
- 进入br-tun,VLANID=50
- 离开时,VLAN封装为VXLAN,且VNI=100
注:出br-tun时,VLAN变为VXLAN,并转为VNI=100。
入报文的转换过程
- 报文从host到br-tun之前,是VXLAN报文,VNI=100;
- 进入到br-tun时,被转换为VLAN报文,VID=50;
- 从br-tun离开到进入br-int后,都是tag报文,VID=50;
- 出br-int时,变为Untag;
- 通过qbr-xxx进入到虚拟机(VM)
1.3 GRE实现模型
转换过程与VXLAN相同,不同的是GRE是通过br-tun构建GRE Tunnel
2.网络节点实现模型
计算节点实现模型构建了各种类型的二层网络,但若要一个虚拟机VM访问一个外部网络,则要通过网络节点实现。
Neutron是这样假设这个组网模型的:
- VM访问Internet,必须经过网络节点,网络节点作为第一层网关
- 网络节点会连接到DC物理网络中的一个设备,这个设备可以作为第二层网关
Neutron在网络节点部署Router以外,还有dhcp server等服务。
网络节点可以划分为4层:
- 用户网络层
- 本地网络层
- 网络服务层
- 外部网络层
其中用户网络层和本地网络层与计算节点相同
网络服务层
典型服务:DHCP Service和Router Service
- Neutron的DHCP Service,采用的是dnsmasq进程(轻量级服务进程,可以提供dns、dhcp、tftp等服务)
- 一个网络一个DHCP Service。
- 由于存在多个DHCP Service,Neutron采用的是namespace方法做隔离,即一个DHCP Service运行在一个namespace中。
外部服务层
外部服务层只包含br-ex,严格来说还应包括Router,因为Router是与外部网络连接的主体。
3.控制节点的实现模型
计算节点和网络节点承担着网络构建任务。通过两个节点中的Bridge,DHCP Service Router等,控制节点并没有实现具体的网络功能,它只是对各种虚拟网元做管理配合。
但Neutron的所谓控制功能不仅仅是体现在一个控制节点,计算和网络节点也存在Agent。
说明:本文为学习笔记,详细请查阅参考文献