neutron 基本概念

什么是neutron

neutron是一个 OpenStack 项目,旨在提供由其他 Openstack 服务(例如 nova)管理的接口设备(例如 vNIC)之间的"网络服务"。通过强大的 API,您可以定义云中的网络连接和 IP 寻址。API 具有虚拟网络、子网和端口抽象来描述网络资源。同样,计算 API 可让您控制实例和网络,它具有虚拟服务器抽象来描述计算资源。

Neutron网络基本概念

1.network
network 是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。
local
local 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。

 flat
flat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通信,并且可以跨多个节点。

 vlan
vlan 网络是具有 802.1q tagging 的网络。vlan 是一个二层的广播域,同一 vlan 中的 instance 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可跨节点,是应用最广泛的网络类型。

vxlan
vxlan 是基于隧道技术的 overlay 网络。vxlan 网络通过唯一的 segmentation ID(也叫 VNI)与其他 vxlan 网络区分。vxlan 中数据包会通过 VNI 封装成 UDP 包进行传输。因为二层的包通过封装在三层传输,能够克服 vlan 和物理网络基础设施的限制。


gre
gre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。
network 必须属于某个 Project( Tenant 租户),Project 中可以创建多个 network。 network 与 Project 之间是 1对多 关系。


2.subnet
subnet 是一个 IPv4 或者 IPv6 地址段。instance 的 IP 从 subnet 中分配。每个 subnet 需要定义 IP 地址的范围和掩码。
3.port
port 可以看做虚拟交换机上的一个端口。port 上定义了 MAC 地址和 IP 地址,当 instance 的虚拟网卡 VIF(Virtual Interface) 绑定到 port 时,port 会将 MAC 和 IP 分配给 VIF。

虚机的VLAN网络流量路径

在Neutron中的,通过OVS实现的VLAN组网模型中,虚机如何进行网络通信的如下图所示。

Open vSwitch 中的网络设备:
br-ethx:连接外部(external)网络的网桥,通过配置br-int和br-ethx上的流规则(flow rule)来进行vlanID转换,进而实现vlan之间的隔离,
br-int:集成(integration)网桥,所有 instance 的虚拟网卡和其他虚拟网络设备都将连接到该网桥。

linux bridge:命名为 qbrXXXX。

ovs patch端口:两端分别命名为int-br-ethx和phy-br-ethx (ethx为物理网卡名)

veth pair:命名为 qvbXXXX, qvoXXXX
tap interface:命名为 tapXXXX。
 

1)流量经由虚拟机IP内核交给虚拟网卡处理,虚拟网卡由TAP软件实现,TAP允许用户态程序向内核协议栈注入数据,它可以运行于虚拟机操作系统之上,能够提供与硬件以太网卡完全相同的功能。

2)TAP设备并不是直接连接到OVS上的,而是通过linux bridge中继到ovs br-int上,其原因在于ovs无法实现linux bridge中一些带状态的iptables规则,而这些规则往往用于以虚拟机为单位的安全组(security group)功能的实现。qbr是quantum bridge的缩写,Neutron中沿用了Quantum的叫法。

3)linux bridge与ovs br int间的连接通过veth-pair技术实现,qvb代表quantum veth bridge,qvo代表quantum veth ovs。veth-pair用于连接两个虚拟网络设备,总是成对出现以模拟虚拟设备间的数据收发,其原理是反转通讯数据的方向,需要发送的数据会被转换成需要收到的数据重新送入内核网络层进行处理。veth-pair与tap的区别可以简单理解为veth-pair是软件模拟的网线,而tap是软件模拟的网卡。

4)ovs br-int是计算节点本地的虚拟交换设备,根据neutron-server中OVS Plugin的指导,完成流量在本地的处理:本地虚拟机送入的流量被标记本地VLAN tag,送到本地虚拟机的流量被去掉本地VLAN tag,本地虚拟机间的2层流量直接在本地转发,本地虚拟机到远端虚拟机、网关的流量由int-br-eth1送到ovs br-eth1上(在Overlay模型中送到ovs br-tun上)。注意,无论是VLAN模型还是Overlay模型,由于br-int上VLAN数量的限制,计算节点本地最多支持4K的租户。

5)ovs br-int与ovs br-eth1间的连接通过veth-pair技术实现。

6)ovs br-eth1将该计算节点与其他计算节点、网络节点连接起来,根据neutron-server中OVS Plugin的指导,完成流量送出、送入本地前的处理:根据底层物理网络租户VLAN与本地租户VLAN间的映射关系进行VLAN ID的转换(Overlay模型中此处进行隧道封装,并进行VNI与本地租户VLAN ID间的映射)。由于底层物理网络中VLAN数量的限制,VLAN模型最多支持4K的租户,而Overlay模型中,24位的VNI最多支持16million的租户。

7)ovs br-eth1直接关联物理宿主机的硬件网卡eth1,通过eth1将数据包送到物理网络中。Overlay模型中ovs br-tun通过TUN设备对数据包进行外层隧道封装并送到HyperVisor内核中,内核根据外层IP地址进行选路,从硬件网卡eth1将数据包送到物理网络中。TUN与TAP的实现机制类似,区别在于TAP工作在二层,而TUN工作在三层。

refer to:

https://wiki.openstack.org/wiki/Neutron 

https://www.sdnlab.com/16364.html

https://www.jianshu.com/p/35c7ef26a153

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值