51学通信论坛2017新版

标题: OpenStack网络基础 [打印本页]

作者: admin    时间: 2017-9-17 14:21
标题: OpenStack网络基础
OpenStack在这几年风生水起。随着核心模块稳定性的提高,OpenStack已经有了很多大规模商用的案例,所有与云相关的,无论是商用软件还是开源平台都在积极地寻求着与OpenStack的对接,OpenStack正在成为云计算业界事实上的IaaS标准。
在网络这一口,OpenStack经历了由nova-network到Quantum再到Neutron的演进过程。我们首先来简要地看看各个版本网络的特征:

从应用场景来看,Nova-network组网模式过于简单,一些复杂的网络需求无法实现(比如两个公司合并,有大量IP重合的VM要迁移到一个平台,而且要求迁移后都要用原来的IP)。不过由于其简单稳定的特点,仍适合于中小型企业的生产环境;Quantum的实际部署目前基本都跟进到了Neutron;Neutron的大二层组网,适合于云计算规模的生产环境,但是由于分布式和HA机制仍不够成熟,因此目前多见于私有云和小规模共有云的部署,大规模的公有云仍然难以使用Neutron实现。
Nova-network、Quantum、Neutron的对比分析。

出现
版本

支持组
网模式

优点

缺点

适用场景
Nova-network早期
以实现HA
对性能和稳定性要求比较高;中小规模网络;网络运维成本有限;私有云环境
QuantumFolsom
共同运行
基本上已经都跟进到了Neutron
NeutronHavana
    继承了Quantum的优点功能上更为丰富网络兼容性强开始引入SDN的思想
对功能要求比较多或希望向SDN演进;大规模网络或对可扩展性要求高;有专业的网络运维团队;公有云环境

说完了基本特征与应用场景,下面开始对上述提到的一些网络问题进行详细的描述。我们抛开技术,结合图例来抽象地看看不同的组网模型。当然,以下模型的实现不仅仅局限于三张图中的方式。

[attach]1240[/attach]

看过抽象的组网模型,下面我们来介绍组网具体的实现技术。由于本章的重点是SDN与云,因此下面的介绍都是针对Neutron的,对nova-network和Quantum将不做讨论。
首先,我们需要对Neutron的3类节点和3种网络有所认识。

[attach]1241[/attach]

有了以上知识作为基础,就可以来分析虚拟机的通信过程了。由于OpenStack中容器的通信机制目前尚不成熟,并且有专门的项目Kuryr去实现容器相关网络技术,以下内容将不涉及OpenStack中的容器通信。
以下将通过三张图来分析Neutron中的VLAN组网模型,HyperVisor中的网络设备以OpenvSwitch为例。这三张图中每一个信息都是有用的,把这些信息完全弄懂了,Neutron的组网也就能基本掌握了,Overlay模型与VLAN模型的区别只在于将图中的br-eth1替换成br-tun即可,具体隧道如何进行封装,后面的文章中我们会详细介绍。

[attach]1242[/attach]

第一张图是计算节点上的网络实现。以虚拟机发出流量方向为例,从虚拟机处开始分析:
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工作在三层。

[attach]1243[/attach]

第二张图和第三张图是网络节点上的网络实现,需要结合在一起来看。以流量流入网络节点方向为例,从底层物理网络流量通过eth1进入ovs br-eth1(Overlay模型中为ovs br-tun)开始分析:
1)ovs br-eth1将网络节点与计算节点连接起来,根据neutron-server中OVS Plugin的指导,完成流量送入网络节点前的处理:根据底层物理网络租户VLAN与本地租户VLAN间的映射关系进行VLAN ID的转换(Overlay模型中此处进行解封装,并进行VNI与本地租户VLAN ID间的映射)。注意,虽然同一租户在底层物理网络上的VLAN ID(Overlay模型中为VNI)唯一,但是在网络节点与计算节点,不同计算节点中同一租户对应的本地VLAN ID可能有所不同。另外由于网络节点也要在ovs br-int上使用本地VLAN,而租户跨网段流量与公网流量都要经过网络节点,因此使用单个网络节点时,Neutron最多能支持4K租户,可采用部署多个网络节点的方式来解决这一问题。
2)送入网络节点的流量,由ovs br-eth1(ovs br-tun)通过veth-pair送给ovs br-int,ovs br-int连接了本地不同的namespace,包括实现dhcp功能的dhcp-agent——dnsmasq,以及实现路由功能的l3-agent——router。Dnsmasq负责给对应租户的虚拟机分配IP地址,而router负责处理租户内跨网段流量以及公网流量。不同的租户有不同的dnsmasq和router实例,因此不同租户间可以实现IP地址的复用。
3)Router namesapce通过qr接口(Quantum Router)接收到租户内跨网段流量以及公网流量,在ns的IP内核中对跨网段流量进行路由,改写MAC地址并通过相应的qr接口向ovs br-int送出数据包。在ns的IP内核中对公网流量进行NAT,并通过qg接口(Quantum Gateway)发送给ovs br-ex。
4)Ovs br-ex通过关物理联宿主机的硬件网卡eth1将流量送至Internet路由器。
5)上述两幅图中,ovs br-int与ovs br-ex间有直连,据说主要是防止l3-agent出现问题时能够保证流量不中断,但实际上看来很少出现此问题。

[attach]1244[/attach]

上图是在网上看过的更加细致,更为全面的一张图,图中清晰地展示了Neutron对多种L2技术(VLAN、VxLAN、GRE)共同运行的支持。图中的mellonax是intel等硬件厂商搞出的具备转发功能的网卡,能够避免虚拟交换机带来的资源消耗,并能够加快转发速率。一块这样的网卡能虚拟出63个VF,每个VF就好像一个独立的物理网卡一样,通过将VF直接挂到虚拟机上,能够实现转发性能的大幅度提高。
以上介绍了OpenStack中网络组件的演进,以及Neutron组网的基本原理。下一节我们将对Neutron的软件实现进行简单的介绍。
声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。




欢迎光临 51学通信论坛2017新版 (http://bbs.51xuetongxin.com/) Powered by Discuz! X3