重识云原生系列四: 硬菜软嚼的云网络(下)
来源:《云原生》第7期
作者简介:招商证券云原生转型项目调研负责人 黄俊
在上一篇我们讲到伴生于云计算的云网络技术飞速发展,一方面是云网络基础技术发展迅猛,特别是SDN技术的发展与成熟,使得网络架构得到了极大简化,并使传统硬件网络设备开始变得更加开放灵活、软件可定义。同时,SDN技术在云计算领域的深度运用与发展,使得网络虚拟化可以不再基于物理网络设备实现,如此便大大扩展了网络虚拟化的“边界”,也由此孕育出了许多面向云租户的云上网络产品与服务,极大地丰富了企业用户上云体验、加速了企业上云进程。
SDN 催化的网络虚拟技术狂飙
接下来,我们分别从网络设备虚拟化、链路虚拟化和虚拟网络三个层面来看看网络虚拟化技术的高速发展。
1.1网络设备虚拟化
网络设备虚拟化技术是云网络技术发展最为迅猛且影响最大的领域,其 主要包括网卡虚拟化(NIC Virtualization)与常规网络设备虚拟化两大方向。
一、网卡虚拟化
网卡虚拟化技术演进路线与我们在《重识云原生第三篇:软饭硬吃的计算》一文中对于I/O虚拟化的演进路线基本一致,也是经历了纯软虚拟化(即Qemu、VMware Workstation虚拟网卡实现方案)、半虚拟化(Virtio、Vhost-net、Vhost-user系列方案),再到硬件直通方案(SR-IOV),最后到硬件卸载(vPDA、DPU等)。
网卡虚拟化的产品形态即是公有云常见的虚拟网卡,其主要通过软件控制各个虚拟机共享同一块物理网卡实现,虚拟网卡可以有单独的MAC地址、IP 地址,早期结构如下图所示。所有虚拟机的虚拟网卡通过虚拟交换机以及物理网卡连接至物理交换机。虚拟交换机负责将虚拟机上的数据报文从物理网口转发出去。根据需要,虚拟交换机还可以支持安全控制等功能。
虚拟网卡包括e1000、Virtio等实现技术。Virtio是目前最为通用的技术框架,其提供了虚拟机和物理服务器数据交换的通用方案,得到了大多数Hypervisor的支持,成为事实上的标准。
Virtio是一种半虚拟化的解决方案,在半虚拟化方案中,Guest OS知道自己是虚拟机,通过前端驱动和后端模拟设备互相配合实现IO虚拟化。这种方式与全虚拟化相比,可以大幅度提高虚拟机的IO性能。
最初的Virtio通信机制中,Guest与用户空间的Hypervisor通信,会有多次数据拷贝和CPU特权级的切换。Guest发包给外部网络,需要切换到内核态的KVM,然后KVM通知用户空间的QEMU处理Guest网络请求。很显然,这种通信方式效率并不高。很快,Virtio技术演进中便出现了内核态卸载的方案Vhost-net。
Vhost-net是Virtio的一种后端实现方案,与之相匹配的是一套新的Vhost协议。Vhost协议允许VMM将Virtio的数据面Offload到另一个组件上,而这个组件是Vhost-net。Vhost-net在OS内核中实现,其与Guest直接通信,旁路了KVM和QEMU。QEMU和Vhostnet使用ioctl来交换Vhost消息,并且用eventfd来实现前后端的事件通知。当Vhost-net内核驱动加载后,它会暴露一个字符设备标识在/dev/Vhost-net, 而QEMU会打开并初始化这个字符设备,并调用ioctl来与Vhost-net进行控制面通信,其内容包含Virtio的特性协商、将虚拟机内存映射传递给Vhost-net等。对比最原始的Virtio网络实现,控制平面在原有执行基础上转变为Vhost协议定义的ioctl操作(对于前端而言仍是通过PCI传输层协议暴露的接口),基于共享内存实现的Vring数据传递转变为Virtio-net与Vhost-net共享;数据平面的另一方转变则为Vhost-net,前后端通知方式也转为基于eventfd来实现。
在单次收发的过程中,数据通道减少了两次用户态与内核态的上下文切换过程,实现了数据通道在内核态的卸载,从而较大程度提升了数据传输效率。
但是,对于某些用户态进程间的通信,比如数据面的通信方案(例如Open vSwitch和与之类似的 SDN解决方案),Guest 仍需要和 Host用户态的vSwitch 进行数据交换,如果采用Vhost-net方案,Guest和Host之间还是存在多次上下文切换和数据拷贝,为了避免这种情况,业界就想出将Vhost-net从内核态移到用户态的方案,这就是Vhost-user方案的实现思路。
基于Vhost协议,DPDK设计了一套新的用户态协议——Vhost-user。该协议将网络包处理(数据平面)卸载到用户态的DPDK应用中,控制平面仍然由QEMU来配置Vhost-user。除此之外,DPDK优化实现了处理器亲和性管理、NUMA调度、使用大页内存代替普通内存、采用无锁技术解决资源竞争问题、轮询模式驱动等技术,由此,大名鼎鼎的DPDK网络卸载方案蔚然成型。
纵如此,技术迭代演进是永无止境的,虽然上述方案对网络性能的提升非常显著,但总体而言,Virtio网络虚拟化方案一直都聚焦在软件层实现,在Host上因软件虚拟化而产生的额外开销始终无法避免。为了进一步提升云端网络服务的性能,RedHat的技术专家们提出可以将Virtio功能Offload到专用硬件,将与业务无关的任务Bypass操作系统和CPU,转而直接交给专用硬件执行,从而进一步提升网络性能,这便是vDPA硬件卸载方案的设计初衷,也是Virtio半硬件虚拟化方案的早期硬件方案实现思路。
该框架由Redhat提出,实现了Virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备SmartNIC(即智能网卡)完成,Guest虚拟机与网卡之间直接通信。中断信息也由网卡直接发送至Guest而不需要Host主机的干预。这种方式在性能方面能够接近SR-IOV硬件直通方案,同时能够继续使用Virtio标准接口,保持云服务的兼容性与灵活性。但是其控制面处理逻辑比较复杂,通过OVS转发的流量首包依然需要由主机上的OVS转发平面处理,对应数据流的后续报文才能由硬件网卡直接转发,硬件实现难度较大。
不过,随着越来越多的硬件厂商开始原生支持Virtio协议,将网络虚拟化功能Offload到硬件上,把嵌入式CPU集成到SmartNIC(即智能网卡)中,网卡能处理所有网络数据,而嵌入式CPU负责控制路径的初始化并处理异常情况。这种具有硬件Offload能力的SmartNIC就是如今越来越火的DPU。二、网络设备虚拟化
硬件设备虚拟化主要有两个方向:在传统的基于x86 架构机器上安装特定操作系统来实现路由功能。
前者的早期典型产品是Mikrotik公司开发的RouterOS,其基于Linux 内核开发,可以安装在标准的x86 架构的机器上,从而使普通Linux服务器也可以当成路由器使用。此类设备以其低廉的价格和不受硬件平台约束等特性,占据了不少低端路由器市场。现如今,国内外主流云厂商对于SDN控制面的实现思路大抵都是如此。
而后者主要是应第一代云计算技术的市场需求催生,在计算虚拟化之后,数据中心通讯规模大幅增长,传统路由器中的单张路由表已经不能满足需求,因此催生了虚拟路由转发(Virtual Routing and Forwarding,VRF)技 术,即 是 将 路 由 信 息 库(Forwarding Information Base,FIB)虚拟化成多个路由转发表。此技术诞生背景主要为增加大型通讯设备的端口利用率,减少设备成本投入,将一台物理设备虚拟化成多台虚拟设备,每台虚拟设备仅维护自身的路由转发表即可,比如思科的N7K 系列交换机可以虚拟化成多台VDC。所有VDC共享物理机箱的计算资源,但又各自独立工作,互不影响。此外,为了便于维护、管理和控制,将多台物理设备虚拟化成一台虚拟设备的融合虚拟化技术也有一定市场,比如H3C公司的IRF技术。
1.2链路虚拟化
链路虚拟化是日常使用最多的网络虚拟化技术之一,增强了网络的可靠性与便利性。常见的链路虚拟化技术有链路聚合和隧道协议,此部分内容在《第四篇-硬菜软嚼的网络(上)》篇已有详细阐述,此处只简单提一下。
链路聚合(Port Channel)是最常见的二层虚拟化技术。链路聚合将多个物理端口捆绑在一起,虚拟成为一个逻辑端口。当交换机检测到其中一个物理端口链路发生故障时,就停止在此端口上发送报文,根据负载分担策略在余下的物理链路中选择报文发送的端口。链路聚合可以增加链路带宽、实现链路层的高可用性。
隧道协议(Tunneling Protocol)指一种技术/协议的两个或多个子网穿过另一种技术/协议的网络实现互联。隧道协议将其他协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过网络传递被封装的负载数据。隧道可以将数据流强制送到特定的地址,并隐藏中间节点的网络地址,还可根据需要,提供对数据加密的功能。当前典型的隧道的协议便是VXLAN、GRE和IPsec。当今各大云厂商的云平台的网络实现方案莫不基于此。
1.3虚拟网络
虚拟网络(Virtual Network)是由虚拟链路组成的网络。虚拟网络节点之间的连接并不使用物理线缆连接,而是依靠特定的虚拟化链路相连。典型的虚拟网络包括在数据中心使用较多的虚拟二层延伸网络、虚拟专用网络以及Overlay网络。
虚 拟 二 层 延伸网络(V i r t u a l L 2 Extended Network)其实也可以算是Overlay网络的早期解决方案。为满足虚拟机动态迁移需求,传统的VPL(MPLS L2VPN)技术,以及新兴的Cisco OTV、H3C EVI 技术,都借助隧道的方式,将二层数据报文封装在三层报文中,跨越中间的三层网络,来实现两地二层数据的互通。
而虚拟专用网(VPN,全称Virtual Private Network),是一种应用非常久远,常用于连接中、大型企业或团体与团体间的私人网络的通信方法。虚拟专用网通过公用的网络架构(比如互联网)来传送内联网的信息。利用已加密的隧道协议来达到保密、终端认证、信息准确性等安全效果。这种技术可以在不安全的网络上传送可靠的、安全的信息,总体而言早于云计算技术在企业中落地。
而Overlay网络也已在上篇有详细阐述,此处就不再复述了。
云网络产品的发展
云网络产品整体而言,主要经过了三次大的演进,从最初的经典云网络,到私有网络(Virtual Private Cloud),再到连接范围更大的云联网。云网络技术的发展也是企业数字化、全球化发展的一个缩影。
2.1经典(基础)云网络
从2006年AWS推出s3和ec2云服务,开始为公有云用户提供云上服务开始,到2010年,阿里云正式推出Classic经典云网络方案,实现了对云计算用户的网络支持,再后续腾讯云、华为云也提供过类似的基础网络产品。
这些都是公有云早期的云产品,当时用户对云网络的主要需求是提供公网接入能力。经典云网络的产品特点是云上所有用户共享公共网络资源池,所有云服务器的内网 IP 地址都由云厂商统一分配,无法自定义网段划分、IP 地址。
2.2私有网络VPC
而从2011年左右开始,随着移动互联网的发展,越来越多企业选择上云,企业对云上网络安全隔离能力、互访能力、企业自建数据中心与云上网络互联并构建混合云的能力,以及在云上实现多地域部署后的多地域网络互联能力都提出了很多需求。此时,经典网络方案已经无法满足这些需求,AWS适时推出云上VPC产品服务(即私有专用网络服务,全称Virtual Private Cloud),VPC是企业用户在云上建立的一块逻辑隔离的网络空间——在VPC内,用户可以自由定义网段划分、自由分配网段内IP 地址、自定义路由策略。而后又陆续推出NAT网关、VPN网关、对等连接等云网络产品,极大地丰富了云网络的连接能力,基本实现了私有网络方案最初的设计目标。
当前,以VPC为核心的云网络产品体系依然在不断发展壮大,又陆续诞生了负载均衡器、弹性网卡、弹性公网IP、云防火墙等配套类衍生网络产品。
2.3云联网
而近几年,随着经济全球化高速发展,大数据与AI类应用异军突起,需要云平台网络提供更广泛灵活的接入能力与分发能力,便催生了私网连接、云企业网、云连接器、云联网等各类场景的接入类云网产品,以此来满足企业全球化场景下的各类复杂互联互通需求。
与此同时,传统的CDN分发服务,经过与云联网的深度融合,也焕发了第二春,如今各大云厂商均有推出CDN全球内容分发服务与应用加速服务。同时SD-WAN接入服务的不断完善,也使得企业信息架构一体化的物理边际向着全球大踏步迈进。云网络技术后续演进展望
云网络从基础核心技术的演进来看,是对网络编址灵活性和网络传输性能提升的持续优化过程:经典云网络和VPC网络在编址方案上,都使用了Overlay技术,在物理网络之上叠加了一个支持多租户的虚拟网络层,从而有效支持了云上租户间的网络隔离安全性、租户内应用的互联互通灵活性诉求;而在网络性能提升方面,
通过重构网络设备形态,在不丧失转发控制灵活性基础上,来持续持续提升数据转发性能是为当今主流技术演进方向,以虚拟交换机为例,伴随着硬件服务器网络带宽从10G升级到25G,乃至到100G,vSwitch技术经历了经典网络的Linux内核态数据交换、DPDK用户态数据交换、硬件直通、再到智能网卡硬件卸载(vPDA、DPU等)等演进历程。
而从产品层面看,云网产品经过经典网络,VPC网络,云联网三代产品的发展,云网络产品的能力范围得到了极大延展——从聚焦数据中心内部网络虚拟化,到聚焦数据中心之间的互联互通,再进一步通过sd-wan接入能力把企业的网络接入能力进行虚拟化从而支持各类场景接入。云网络产品已不仅仅用于连接云内的计算与存储资源,云下接入范围也逐渐扩展到连接企业的总部/分支网络以及云外各类终端,以期最终使企业能在云上构建完整的IT信息服务生态体系。
而在云计算技术发展到第三代云原生时代的当下,随着各类虚拟化技术的成熟,各类软件定义硬件的云能力得以落地运用,伴随着容器技术的大规模商用,终会使业务研发与基础运维一体化协作的技术隔阂会彻底破除,业务应用的全栈可观测性述求必将使业务服务监控下钻到基础网络层,让网络流量监测带上业务属性,从而使业务全链路监控真正具备生产力价值。而这又都将取决于容器网络与云网络技术的融合深度与应用广度,这一领域也必将成为今后各大云厂商决胜云原生时代的战略制高点!
参考资料
- 点赞
- 收藏
- 关注作者
评论(0)