目标:
掌握neutron在计算节点,网络节点,控制节点的网络实现模型。
目录:
1 Neutron的三类节点
2 计算节点的网络实现模型
3 网络节点的网络实现模型
4 控制节点的实现模型
5 总结
1 Neutron的三类节点
三类节点:
控制节点,网络节点,计算节点,
不同Host的虚机的二层通信: 通过计算节点的Bridge实现
虚机访问Internet: 通过Router先到达数据中心网关,再出去。Router在网络节点。
2 计算节点的网络实现模型
出发点: 计算节点的虚机需要能跨Host通信。
通信: 二层通信需要Bridge,三层通信需要Router(位于网络节点)。
ToR: Top of Rack,位于机架顶端的交换机。
计算节点的抽象模型:
DC TOR
物理网络
Integration Layer Integration Layer
| |
Security Layer Security Layer
| |
VM VM
计算节点 计算节点
解释:
Security Layer: 实现Firewall防火墙功能
Integration Layer: 实现综合网络(交换/路由)功能
DC物理网络: 由厂商的物理设备组成
Neutron支持的二层网络类型:
Local, Flat, VLAN, VXLAN, GRE, Geneve
2.1 VALN实现模型
br-ethx G------H br-ethx
F F
| |
E E
br-int br-int
D T D T
| | | |
C S C S
qbr-xxx qbr-yyy qbr-xxx qbr-yyy
B R B R
| | | |
A Q A Q
VM1-1 VM1-2 VM2-1 VM2-2
VLAN100 VLAN200 VLAN100 VLAN200
计算节点1 计算节点2
解释:
1)存在内外VLAN ID
2)内外VLAN ID的转换通过Host内的Bridge实现
3)qbr
含义: Quantum Bridge
实现载体: Linux Bridge
4)br-int
含义: Integration Bridge,综合网桥
实现载体: OVS(Open vSwitch)
5)qbr与br-int
qbr与br-int: 通过veth pair连接
VM与qbr: 通过tap连接,只有一个tap,分别挂接到VM和qbr之上。
引入qbr的目的: OVS不支持iptables规则的安全组功能,所以需要qbr(安全网桥)
6)br-ethx
含义: Bridge-Ethernet-External, 是一个Bridge, 也是一个OVS。
作用: 与Host外部通信
br-ethx与br-int: 接口是veth pair
br-ethx上的接口(例如上图的G端口): 是真正的Host的网卡接口。
7)内外VLAN ID的转换
7.1) 出报文VLAN ID的转换过程
VLAN ID = 100
br-ethx G------>
F-----> 标签转换 VLAN ID = 100
^
| VLAN ID = 10
E
br-int
打标签<-- D T
VLAN ID=10 | |
C S
qbr-xxx qbr-yyy
B R
| |
A Q
VM1-1 VM1-2
VLAN100 VLAN200
计算节点1
整体流程:
Untag报文->Tag报文(VID=内层VID)->Tag报文(VID=外层VID)
VID:
对于VLAN网络,指的是VLAN ID
对于VXLAN网络,指的是VNI
对于GRE网络,指的是GRE Key
7.2)
br-ethx G<------
F
|
E
br-int
D T
| |
C S
qbr-xxx qbr-yyy
B R
| |
A Q
VM1-1 VM1-2
VLAN100 VLAN200
计算节点1
总结:
1)都是在br-ethx连接br-int的靠近br-ethx的端口上进行标签转换
出报文: 内层VLAN ID转换为外层VLAN ID
入报文: 外层VLAN ID转换为内层VLAN ID
2)都是在br-int连接qbr的靠近br-int的端口上进行打标签或者剥夺标签的操作
出报文: 打上内层VLAN ID标签
入报文: 剥夺标签
2.2 VXLAN实现模型
VLAN中是br-ethx,而VXLAN中是br-tun(bridge tunnel)
br-ethx和br-tun都是OVS。
VLAN和VXLAN的区别:
br-ethx功能是二层交换机的功能。
br-tun所执行的是VXLAN中VTEP(VXLAN Tunneling End Point, VXLAN隧道
终结点)的功能。
VXLAN模型:
10.0.100.88 10.0.100.77
^ ^
| |
br-tun G---------------H br-tun
F F
| |
E E
br-int br-int
D T D T
| | | |
C S C S
qbr-xxx qbr-yyy qbr-xxx qbr-yyy
B R B R
| | | |
A Q A Q
VM1-3 VM1-4 VM2-3 VM2-4
VLAN50 VLAN60 VLAN70 VLAN80
计算节点1 计算节点2
解释:
两个br=tun对应接口IP分别为10.0.100.88和10.0.100.77,这两个IP就是
VXLAN的隧道终结点IP
G,H: NIC Interface
C,D,T,H: veth pair
A,B,R,Q: tap
之所以要做内外VID的转换:
1)是因为包含网络类型的转变
2)避免内部VLAN ID冲突(最根本原因)
3)内部VLAN ID是体现在bt-int上的,一个HOST包含一个br-int。
2.2.1 进/出报文的VID转换过程
1)都是在br-tun网卡接口上进行标签转换和报文封装/拆封
出报文: 内层VLAN ID转换为VNI,报文被从VLAN封装为VXLAN
入报文: VNI转换为内层VLAN ID,报文从VXLAN拆封为VLAN
2)都是在br-int连接qbr的靠近br-int的端口上进行打标签或者剥夺标签的操作
出报文: 打上内层VLAN ID标签
入报文: 剥夺标签
2.3 GRE实现模型
GRE实现模型与VXLAN一样,但VXLAN的br-tun构建的是
VXLAN Tunnel,而GRE的br-tun构建的是GRE Tunnel。
GRE网络,内部是有Tunnel ID。
存在: 内部VLAN ID与Tunnel ID的转换。
2.4 计算节点网络实现模型总结
计算节点分为两层: 用户网络层 + 本地网络层
用户网络层:
含义: 指OpenStack用户创建的网络,即外部网络,对应的Bridge是br-ethx
(对应Flat, VLAN等非隧道型二层网络),或者br-tun(对应VXLAN, GRE等
隧道型二层网络)。
实现载体: 一般是OVS。
功能: 将用户网络与本地网络(Host内部的本地网络)等进行互相转换。
例如内外VID转换,VXLAN封装与解封装。
本质: 用户网络是对本地网络的屏蔽,本地网络感知的都是VLAN。
本地网络层:
含义: 指Host内部的本地网络。又包含qbr和br-int。
qbr: 实现是Linux Bridge,负责安全,称为安全层
br-int: 实现是OVS,负责内部交换,称为Bridge层。
本质: Bridge层是对VM层的屏蔽。VM发出的Untag报文,被Bridge层转换为Tag报文转发到
br-ethx/br-tun。从br-ethx/br-tun转发到br-tun的Tag报文,被br-int剥去Tag,
变成Untag报文,然后再转发给VM。
同一个host中不同VM如何通信?
经过本地网络层(br-int)即可完成。
3 网络节点的网络实现模型
组网模型: 计算节点中的虚机要访问Internet,需要经过网络节点,网络节点
会连接到DC物理网络中的一个设备(交换机或路由器),通过该设备,
到达DC的网关。DC网关再连接到Internet上。
在网络节点中部署了路由器,此路由器是虚拟路由器,利用Linux内核功能。
网络节点4层:
用户网络层,本地网络层,网络服务层,外部网络层。
网络服务层: 为计算节点的虚机提供网络服务,例如DHCP和rRouter
dhcp: 采用dnsmasq进程(提供dns,dhcp等服务),一个网络一个DHCP服务,
多个dhcp服务通过namespace进行隔离。
外部网络层: 只包括br-ex,还应该包括Router,br-ex将Router对接到网络节点的物理网口。
Router
br-ex Router
Router
用户网络层 br-ethx/br-tun
I
------------------------|-------------------------
J
本地网络层(VLAN) br-int
| |
O M
------------------------|---|---------------------
P N
网络服务层 DHCP Router
K
----------------------------|----------------------
L
外部网络层 br-ex Q
---------------------------------------------------
计算节点
解释:
Router仅仅是示意,实际是Linux内核模块。Router做路由转发,提供SNAT/DNAT。
每一个Router运行在一个namespace中,Neutron创建namespace,在namespace中开启路由转发功能。
4 控制节点的实现模型
作用: 管理虚拟网元,部署neutron-server。
5 总结
1)Neutron分为控制节点,网络节点,计算节点。
网络节点和计算节点为虚机构建具体网络。
控制节点对网络进行管理。
计算节点中各个Bridge构建了Local,Flat,VLAN,VXLAN,GRE,Geneve6种2层网络。
2)整体架构如下
|--------------------------管理网-------------------
| --------数据网------ |
| | | |
br-ethx/br-tun br-ethx/br-tun Neutron
| | Nova
br-int br-int .....
| | | |
Router DHCP qbr qbr
| | |
外部网络---br-ex VM VM
网络节点 计算节点 控制节点
解释:
br-ethx与br-tun构建用户网络,为br-int屏蔽用户网络差异,将不同类型用户网络转换为VLAN网脱落。
br-int在Host内部为各个VM构建了一个本地网络。
qbr为br-int提供安全功能。
参考:
深入理解OpenStack Neutron