【OpenStack】学习 -- Neutron 网络节点类型以及数据转发过程

397 阅读3分钟

image.png

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

前言

今天新开一个主题,Opentack-Neutron则采用阅读《深入理解Openstack neutron》一书的方式实现,流程图使用processon进行绘制。

Nuetron的三类节点

image.png

蓝色区域,计算节点是OpenStack三大节点之一,所谓的计算就是虚机,每一个计算节点就是一个Host,计算节点内部还需要Bride,用来维护虚机之间的二层通信,VM如果需要访问Internet,就需要通过Router先到达数据中心的网关,在通过网关出去,这个Router是Linux虚拟出来的,所在的就是网络节点,网络节点还部署着DHCP等各种服务,Neutron服务可以部署在多个Host中,也可以部署在一个里面。

计算节点的实现模型

本节将从VLAN模型、VXLAN模型和GRE模型三个方面展开。

image.png

  • 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转换

image.png

  1. 报文从VM1的A端口发出,是Untag的报文
  2. 在qbr期间报文也是Untag的
  3. 在进入br-int报文被打上vlan10的标签
  4. 从br-int离开的时候,报文vlan id 还是10
  5. 报文进入br-int出的时候,vlan id 为 10
  6. 进入br-ethx的时候进行vlan标签转换
  7. 出br-ethx的时候 vlanid 变成100

而入报文的时候过程相反,在br-ethx进行标签转换,而在br-int的时候进行标签的剥离,从而进入虚机内部。

VXLAN 内外部的Vlan ID转换

image.png

与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

总结

image.png

  • 用户网络层是指Openstack用户自己构建的网,也就是用户创建的网络,实现载体一般来说是OVS,用户网络层将用户网络与本地网络进行互换,目的在于对本地网络透明,本地网络对用户网络不做感知,只知道是一个VLAN。
  • 本地网络是指Host内部的本地网络,qbr的实现载体是Linux Bridge,负责安全组,br-int负责内部网络交换.
  • 如果两个虚机子在一个host,他们之间的通信将不再通过br-ethx,而是直接通过br-int进行通信