Neutron学习笔记2-- Neutron的网络实现模型

Neutron学习笔记2-- Neutron的网络实现模型

Neutron的三类节点

  1. 计算节点
  2. 网络节点
  3. 控制节点

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存在一个真正的物理网卡。

详细参考Neutron学习笔记1--基本概念

VLAN ID 转换

出报文的转换过程
  1. 虚拟机(VM)发出后为Untag报文
  2. 经过qbr-xxx后,还是Untag报文
  3. 在进入br-int时,被打上标签,VLANID=10,且离开br-int时依然是VLANID=10
  4. 在进入br-ethx时,打上VLANID=100的标签
  5. 离开br-ethx时,即离开主机Host时,VLANID=100。

即在br-int时打上标签变为tag,在br-ethx上打上标签进行报文的ID转换。

入报文的转换过程
  1. 从Host进入到br-ethx,为tag报文,VLANID=100;
  2. 离开br-ethx时,VLANID=10;
  3. 进入br-int时,VLANID=10;
  4. 出br-int时,变为Untag;
  5. 通过qbr-xxx进入虚拟机(VM)

1.2 VXLAN实现模型

与VLAN实现模型基本相同,只不过将br-ethx变为br-tun。

出报文的转换过程
  1. 虚拟机(VM)发出Untag报文
  2. 经过qbr-xxx后,依然是Untag报文
  3. 进入br-int时,打上VLANID=50的标签
  4. 离开br-int时,VLANID=50
  5. 进入br-tun,VLANID=50
  6. 离开时,VLAN封装为VXLAN,且VNI=100

注:出br-tun时,VLAN变为VXLAN,并转为VNI=100。

入报文的转换过程
  1. 报文从host到br-tun之前,是VXLAN报文,VNI=100;
  2. 进入到br-tun时,被转换为VLAN报文,VID=50;
  3. 从br-tun离开到进入br-int后,都是tag报文,VID=50;
  4. 出br-int时,变为Untag;
  5. 通过qbr-xxx进入到虚拟机(VM)

1.3 GRE实现模型

转换过程与VXLAN相同,不同的是GRE是通过br-tun构建GRE Tunnel

2.网络节点实现模型

计算节点实现模型构建了各种类型的二层网络,但若要一个虚拟机VM访问一个外部网络,则要通过网络节点实现。

Neutron是这样假设这个组网模型的:

  1. VM访问Internet,必须经过网络节点,网络节点作为第一层网关
  2. 网络节点会连接到DC物理网络中的一个设备,这个设备可以作为第二层网关

Neutron在网络节点部署Router以外,还有dhcp server等服务。

网络节点可以划分为4层:

  1. 用户网络层
  2. 本地网络层
  3. 网络服务层
  4. 外部网络层

其中用户网络层和本地网络层与计算节点相同

网络服务层

典型服务:DHCP Service和Router Service

  1. Neutron的DHCP Service,采用的是dnsmasq进程(轻量级服务进程,可以提供dns、dhcp、tftp等服务)
  2. 一个网络一个DHCP Service。
  3. 由于存在多个DHCP Service,Neutron采用的是namespace方法做隔离,即一个DHCP Service运行在一个namespace中。
外部服务层

外部服务层只包含br-ex,严格来说还应包括Router,因为Router是与外部网络连接的主体。

3.控制节点的实现模型

计算节点和网络节点承担着网络构建任务。通过两个节点中的Bridge,DHCP Service Router等,控制节点并没有实现具体的网络功能,它只是对各种虚拟网元做管理配合。

但Neutron的所谓控制功能不仅仅是体现在一个控制节点,计算和网络节点也存在Agent。

参考:深入理解OpenStack Neutron

说明:本文为学习笔记,详细请查阅参考文献

你可能感兴趣的:(OpenStack)