华为云计算——网络虚拟化
Posted IT小组
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为云计算——网络虚拟化相关的知识,希望对你有一定的参考价值。
在介绍网络虚拟化之前,需要考虑一个问题——为什么需要网络虚拟化呢?
之所以要对网络进行虚拟化,是因为在没有进行虚拟化之前,每个服务器都有自己独立的网卡,服务器上的OS独占物理网卡的使用。而现在通过虚拟化技术在一台物理服务器需要运行多个VM,而多个VM都要有自己的网卡,VM之间的网卡彼此之间是独立的,但一台服务器物理网卡是有限的,为了解决VM之间的通信、VM与外网通信等问题,所以有了网络虚拟化。
隔离性:
不同租户的流量,相互之间不能访问。
不同租户的IP/MA
C地址可以独立规划,甚至可以相互重叠。
可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网进行迁移。逻辑网络和物理网络解耦,不受物理网络限制,逻辑网络可以跨越二层/三层物理网络,可扩展性、逻辑网络规模可扩展、逻辑网络数量可扩展等。
在Xen架构中,直接是Domain 0(所谓的Domain 0是Xen架构中的一台特殊的VM,它有后端驱动和设备驱动,后端驱动用于和其他的VM进行通信,而设备驱动则是对设备进行管理)来完成网络虚拟化,由Domian 0负责网桥队列,属于一次数据拷贝(一次数据拷贝是指:VM发送的流量只通过CPU复制,完成一次转换即可),利用Domain 0来实现网络虚拟化的优点是方便和快捷,缺点是对物理主机的CPU开销较大。
在服务器的网卡硬件中使用“
智能的网卡
”
(INIC)
,由此智能网卡来完成数据交换等操作。在使用了智能网卡的物理主机上,在此物理主机中的VM侧装Tools
(华为自研驱动软件)
,利用Tools的驱动来使用INIC网卡,完成网络的虚拟化。不过VM发送数据包的路由需要经过VMM做少量的运算,运算的目的是让数据包找到对应的INIC网卡
(有可能不同的VM对应不同的INIC网卡)
,数据包到达对应的INIC网卡后还需在队列中排队,这是INIC网卡直通技术。
(也叫VMDq直通技术)
。
(VMM利用二层Flag的标识来识别数据包要分配到哪个网卡所在的队列中,Flag标识有:MAC和Vlan等)
SR—IOV
(Single Root-Input/OutputVirtualization)
直通技术:
通过服务器物理层的特殊网卡INIC(支持SR—IOV技术的),虚拟出来PF。
所谓的
PF是指
有完
整功能的
PCI
功能的网卡,利用这个
PF再次
虚拟的
VF
,
VF
具有
独立
、
完整
轻量级
功能的
PCI
功能的网卡
来承载VM的数据转发
。
在VM侧有VF的驱动,利用驱动绑定底层INIC网卡虚拟出来的VF。PF虚拟出来的VF是相互独立的,多个VM可以共享一个VF。
华为云计算平台中VM侧的Tools驱动里包含的VF驱动。
(
SR—IOV是半虚拟化
)
以上三种网络虚拟化的实现方式的区别,如下图:
Domain 0 网络虚拟化方式使用的是普通网卡,所以网络虚拟化是服务器的CPU的性能决定的。
INIC和SR—IOV网络虚拟化方式是用智能网卡实现的,普通网卡和INIC智能网卡两者的在流量上也是不同的,如图:
从APP下发数据包—>OS接送—>虚拟网卡驱动—>VMM管理平台—>物理网卡驱动。数据包到VMM时会进行一次复制,VMM将VM下发的数据包复制下来,发送到物理网卡。一次数据拷贝会浪费主机CPU资源并且会造成数据流量的延迟。
INIC智能网卡的数据流:智能INIC网卡是数据“零拷贝”。
从APP—>Buffer(缓存器)—>DMA(直接内存读取技术)将Buffer与底层网卡之间建立连接。不需要利用VMM来对数据包的复制和计算等。不浪费主机资源,零拷贝技术数据延迟低,不浪费主机计算资源等。
第一部分为服务器内部的IO虚拟化,这就是前面Domian 0、智能网卡(INIC)、SR—IOV三种网络虚拟化技术所在的区域。
第二部分是服务器内部的虚拟接入,此部分主要是虚拟机交换机(DVS)所在的区域,用于接入不同网络的VM。
第三部分是网络连接,此部分主要是物理服务器使用网卡连接到真实的网络设备,如交换机等,前面两个部分都是要通过此真实的链路将数据包发送出去。
第四部分是网络交换,此部分主要是用来将VM发送的数据包通过路由器或防火墙等物理设备转发到对应的目的端。
前面网络虚拟化的三种实现方式都是从VM侧到物理服务器网卡侧,VM数据包一般还会经过交换机、路由器设备等等。在云计算里面VM使用的交换机也是虚拟化的,具体虚拟交换机的实现方式如下:
基于服务器CPU的解决方案来说,如下图,VM1访问VM2,将数据包发送给OVS。
(OVS:Open virtual switch,OVS是开源的虚拟机实现技术对应华为的EVS)
OVS根据MAC地址转发到VM2,性能较优,如果VM1访问VM3,VM1将数据包发给OVS,OVS转发到网卡,这个网卡的链路类型是Turk类型的,而且PVID为0,意味着不打PVID。再由网卡发送给交换机TOR
(云接入交换机)
,TOR在转发到VM3。如果是VM1与VM2流量过大的话,此方式是性能较好,但是如果VM1访问VM3流量过大,则此性能不佳。此实现方式而且对于流量包的监控不利。
第二种利用INIC网卡来实现虚拟交换,如下图,VM1访问VM2时,数据包经过OVS,OVS不进行计算,将数据透传到INIC,由INIC网卡来计算,发现目的是VM2,则将数据包发送到OVS,再由OVS透传到VM2。如果VM1访问不在同Host上的VM时,则是由OVS将数据透传到INIC,由INIC将数据发送到TOR,由TOR发送给其VM,性能较优。
第三种是利用TOR交换机实现网络虚拟化(此TOR支持虚拟化功能),如下图,VM间访问流量走向是OVS—>INIC—>TOR—>INIC—>OVS。因为是使用TOR来实现网络虚拟化,对于主机侧来说降低了主机的开销,所以性能优。
华为云计算的虚拟交换机的概念,在CNA01上,有OVS,在OVS上创建端口组,将虚拟机加入端口组,CNA02上有OVS,VM加入端口组。这里的OVS只有二层功能,但是也可以有三层交换功能。通过VRM,接入多个OVS,形成一个逻辑的DVS,如果在DVS上创建Vlan,则DVS则将创建Vlan的信息发送给OVS,由OVS来具体实现。(补充:OVS是上面的一次拷贝的实现。OVS是开源的虚拟交换实现方式之一。EVS是华为特有的,是在OVS基础之上实现的零次拷贝技术,在虚拟交换实现时OVS与EVS只能使用一种。)
华为的分布式虚拟交换支持基于开源Open vSwitch的纯软件的虚拟交换的功能,同时提供支持完整虚拟交换卸载的智能网卡的虚拟交换。
开源Open vSwitch与智能网卡的虚拟交换提供的功能完全一致,虚拟交换管理通过不同的插件管理Open vSwitch和智能网卡,DVSM在VRM中,而OVS在CNA中。如下图:
Vxlan是一种进行大二层虚拟网络扩展的隧道封装技术。解决了VM因为Vlan标识不够用的问题,在VLan网络下,VM在迁移后为了正常的提供业务所以只能在二层网络下迁移。Vxlan引入了UDP格式的外层隧道,作为数据的链路层,而原有的数据报文内容作为隧道净荷来传输。端口号为4789。Vxlan支持16M个网络标识,而vlan只支持4096个标识。
Vxlan
通常被认为是overlay,所谓的overlay是指
在三层路由网络上面跑二层数据,将二层物理网络扩宽了范围。
如图:
正常的VM1与VM2通信,先将数据封装到二层帧中,后发送到VTEP,VTEP将二层帧封装到Vxlan的包中,Vxlan的包有(mac,IP(对端VTEP的IP),UDP,Tag(帧)),两个VTEP之间建立Vxlan隧道关系。VTEP在CE设备(华为核心高端路由器)上实现。如果对端没有VTEP,则用VTEP网关。(可以在公有云上申请一个VM做VTEP的网关)VTEP到VTEP的通信与VTEP与非VTEP的通信。
在打通了Vxlan隧道的情况下,数据包一般经过两端的VTEP交换机,如果是Vxlan和非Vxlan间的数据通信则需要Vxlan网关。如下图:
以上是关于华为云计算——网络虚拟化的主要内容,如果未能解决你的问题,请参考以下文章
小非大人说?华为云——第六期?虚拟私有云VPC
华为云计算HCNA--虚拟化
云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品
云计算奇妙学习之旅第四期:华为计算虚拟化精讲
华为云计算FC创建虚拟机
华为云计算之FusionStorage虚拟机部署FSM