华为云之网络虚拟化

网络虚拟化有三种实现方式:

1.直接是Domain0来完成网络虚拟化。

2.底层硬件层是一个智能的网卡(INIC),在VM侧装Tools,利用Tools的驱动来使用INIC,不过这里需要经过VMM做少量的运算,运算的目的是找到INIC网卡,消息到达网卡后还需队列中排队。这种是INIC网卡直通技术。(利用二层的标识来直接上网络流量到达要排列的网卡上。根据MAC和Vlan)

4.SR—IOV技术直通技术:通过物理层的特殊网卡INIC,支持SR—IOV的。虚拟出来PF,PF有完整功能的PCI功能的网卡,利用这个PF管理虚拟的VF,VF具有独立、完整轻量级功能的PCI功能的网卡。在VM侧有VF的驱动,利用驱动绑定底层INIC网卡虚拟出来的VF。多个VF是独立的,一个VM可以共享一个VF。华为中的Tools里面就有VF驱动,是半虚拟化。

网络虚拟化架构分析 网络虚拟化的三种实现_数据


第一种使用的是普通网卡,因为虚拟化是服务器的CPU决定的。第二和第三是用智能网卡实现的,两者的流量是不同的:

网络虚拟化架构分析 网络虚拟化的三种实现_数据_02


普通网卡:一次数据拷贝,从APP—OS—驱动—VMM—驱动。数据包到VMM时会进行一次复制,会浪费主机资源与延迟。

智能网卡:零拷贝技术,从APP—Buffer(缓存器)—DMA(直接内存读取技术)将Buffer与底层网卡之间建立连接,不需要利用VMM来计算。网络虚拟化的层次:

网络虚拟化架构分析 网络虚拟化的三种实现_服务器_03


分布式虚拟交换的实现方式:1.基于服务器CPU,2.基于物理网卡,3.基于物理交换机。

网络虚拟化架构分析 网络虚拟化的三种实现_网络虚拟化架构分析_04


第一种基于服务器CPU的解决方案来说,VM1访问VM2,将数据包发送给OVS,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访问VM3,则是由OVS将数据透传到INIC,由INIC将数据发送到TOR,由TOR发送给VM3,性能较优。

第三种是利用TOR交换机实现网络虚拟化(此TOR支持虚拟化功能),VM1访问VM2的流程是OVS—INIC—TOR—INIC—OVS。如果是VM1访问VM3,则只需要TOR做一次计算,所以性能优。

华为的虚拟交换机的概念,在CNA01上,有OVS,在OVS上创建端口组,将虚拟机加入端口组,CNA02上有OVS,VM加入端口组。这里的OVS只有二层功能,但是也可以有三层交换功能。通过VRM,接入多个OVS,形成一个逻辑的DVS,如果在DVS上创建Vlan,则DVS则将创建Vlan的信息发送给OVS,由OVS来具体实现。(补充:OVS是上面的一次拷贝的实现。OVS是开源的。也有EVS,EVS是华为特有的,是在OVS基础之上实现的零次拷贝技术,OVS与EVS只能使用一种。)上面华为的实现:如图

网络虚拟化架构分析 网络虚拟化的三种实现_网络虚拟化架构分析_05

Vxlan:(虚拟扩招局域网)在三层网络上面跑二层。overlay类型。 是一种进行大二层虚拟网络扩展的隧道封装技术。解决了Vlan标识不够用。与在VLan网络下,VM只能在二层网络下迁移。Vxlan引入了UDP格式的外层隧道,作为数据的链路层,而原有的数据报文内容作为隧道净荷来传输。端口号为4789。vxlan支持16M个网络标识,而vlan4096个标识。

网络虚拟化架构分析 网络虚拟化的三种实现_数据_06


vxlan具体实现的细节:

网络虚拟化架构分析 网络虚拟化的三种实现_网络虚拟化架构分析_07


正常的VM1与VM2通信,先将数据封装到二层帧中,后发送到VTEP,VTEP将二层帧封装到Vxlan的包中,vxlan的包有(mac,IP(对端VTEP的IP),UDP,(二层帧)),两个VTEP之间建立vxlan隧道关系。VTEP在CE设备上实现。如果对端没有VTEP,则用VTEP网关。(可以在公有云上申请一个VM做VTEP的网关。)VTEP到VTEP的通信与VTEP与非VTEP的通信。

VPN:通过公网可以访问内部网络。