开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情
前言
今天新开一个主题,Opentack-Neutron则采用阅读《深入理解Openstack neutron》一书的方式实现,流程图使用processon进行绘制。
Nuetron的三类节点
蓝色区域,计算节点是OpenStack三大节点之一,所谓的计算就是虚机,每一个计算节点就是一个Host,计算节点内部还需要Bride,用来维护虚机之间的二层通信,VM如果需要访问Internet,就需要通过Router先到达数据中心的网关,在通过网关出去,这个Router是Linux虚拟出来的,所在的就是网络节点,网络节点还部署着DHCP等各种服务,Neutron服务可以部署在多个Host中,也可以部署在一个里面。
计算节点的实现模型
本节将从VLAN模型、VXLAN模型和GRE模型三个方面展开。
-
br-int、br-ethx、qbr-xxx、qbr-yyy都是Brigde,其中br-int,br-ethx是通过OVS实现,而后两者是通过Linux-Bridge。
-
qbr (Quantum Bridge) qbr的实现载体是Linux Bridge, br-int (Integration Bridge)实现载体是OVS,qbr与br-int之间通信通过veth pair实现,VM与qbr之间通过tap连接。Openstack通过引入qbr来实现安全组的功能。
-
br-ethx 也是一个Bridge,同样以OVS作为载体,Bridge-Ethernet-External,负责外部通信,这个外部是指Host外部
-
br-ethx 与 br-int之间采用veth pair实现通信。但是br-ethx是一个真正的Host的网络接口,NIC,网卡接口是物理网卡口上面的一个Interface
Vlan模型内外部的Vlan ID转换
- 报文从VM1的A端口发出,是Untag的报文
- 在qbr期间报文也是Untag的
- 在进入br-int报文被打上vlan10的标签
- 从br-int离开的时候,报文vlan id 还是10
- 报文进入br-int出的时候,vlan id 为 10
- 进入br-ethx的时候进行vlan标签转换
- 出br-ethx的时候 vlanid 变成100
而入报文的时候过程相反,在br-ethx进行标签转换,而在br-int的时候进行标签的剥离,从而进入虚机内部。
VXLAN 内外部的Vlan ID转换
与Vlan模型类似,不同的是在br-tun的出端口报文被封装为VXLAN,并且VNI赋值为100。同样入报文在br-tun的入端口将VXLAN报文转为VLAN封装,并且赋值VLAN id,同样在br-int进行剥离VLAN标签,变成Untag报文
GRE模型的实现
GRE模型的实现与VXLAN的实现是一模一样的,所不同的是,VXLAN的br-tun构建的是VXLAN Tunnel,而GRE的br-tun构建的GRE Tunnel
总结
- 用户网络层是指Openstack用户自己构建的网,也就是用户创建的网络,实现载体一般来说是OVS,用户网络层将用户网络与本地网络进行互换,目的在于对本地网络透明,本地网络对用户网络不做感知,只知道是一个VLAN。
- 本地网络是指Host内部的本地网络,qbr的实现载体是Linux Bridge,负责安全组,br-int负责内部网络交换.
- 如果两个虚机子在一个host,他们之间的通信将不再通过br-ethx,而是直接通过br-int进行通信