云计算与虚拟化硬核技术内幕 (18) —— 《凉州词》的故事

2022-09-08 17:04:55 浏览数 (1)

上期我们说到,秦少游因为发送的数据包乱序,在杨笠的蛊惑下,被苏小妹删了微信……

因此,秦少游在宿主机上引入了DPDK的同时,还增加了一块可编程的SmartNic。

SmartNic比起普通的网卡,增加了数据包分析功能,可以自动识别不同的数据包并提取所需要的字段,加入hash计算,并作为流分类的依据。如对于IP数据包而言,SmartNic可以分析其中的Protocol字段,如发现该字段为6(TCP)或17(UDP),再提取源端口和目的端口参与hash计算。如该字段为1(ICMP),则不提取内部字段,而是按照源IP和目的IP进行流分类。

SmartNic除了可编程分类数据包外,更重要的功能是可以支持网络Overlay隧道的封装和解封装。

我们在《局域网SDN技术硬核内幕 9 从软件Overlay到硬件Overlay》中讲到过,在云数据中心网络中,将不同VPC(Virtual Private Cloud)的数据包封装到不同的隧道实例中进行区分,这种方式叫做Overlay。Overlay隧道的封装和解封装可以在宿主机上的vSwitch上进行,但对于裸金属服务器,由于没有vSwitch的存在,就只能利用接入交换机进行Overlay隧道封装了。这会造成两个问题:

  1. 物理交换机的表项规格是受到交换芯片限制的。以基于Broadcom Trident-3 交换芯片开发的交换机为例,如整网有10万个以上的容器和虚拟机,在开启IPv6时,会导致交换机FIB表不够用。
  2. 物理交换机对隧道的封装方式是相对固化的。以基于Broadcom Trident-3 交换芯片开发的交换机为例,它只支持标准的NVGRE,VXLAN和GENEVE隧道。在大型公有云等对Overlay隧道的封装方式做了特殊优化的场景,基于ASIC的物理交换机就难以满足需求了。

SmartNic的出现改变了这一切。

由于SmartNic内置了可编程芯片,工程师们可以让SmartNic实现一系列自定义的处理数据包的功能,Overlay的隧道封装和解封装只是它的功能之一。

SmartNic还可以实现OVS卸载。

什么是OVS卸载呢?

让我们回顾这张老图:

图中,各VM可以通过vNIC和VETH Pair,连接到宿主机上的OVS,而OVS完成VM与宿主机外部的数据交换,以及各VM之间的数据交换。

在引入OVS-DPDK后,宿主机上的一部分CPU核会被专门用于运行OVS-DPDK。如期望达到50Gbps的吞吐量时,整机至少需要消耗16个HT,也就是8个物理核。如宿主机为安装了双路Intel 5218R处理器的服务器,40个物理核中,有8个要被OVS-DPDK所占用,也就是整机20%的算力要用于网络的处理。实际上,随着容器/微服务逐渐代替虚拟机成为数据中心中运行业务的主力,这种用于网络通信的算力开销,在数据中心中的比例也会越来越大。这被称为“Datacenter Tax”。

引入了SmartNic后,我们可以将上图中,OVS的功能集成到SmartNic中,如下图所示:

如图,在基于SmartNic实现的虚拟化网络中,不再有veth pair了,VM上的vNIC实质上是SmartNic以SR-IOV方式,为各个VM提供的VF。VM从各个vNIC发送的数据包会直通到SmartNic内建的微型交换模块。

实际上是这个样子的:

SmartNic通过SR-IOV虚拟化出多个VF,直通到VM,内置一个智能可编程交换模块替代vSwitch的功能,同时,其物理网口作为内置交换模块的上行口。

我们发现,SmartNic的这种设计,在两个方面降低了虚拟化的开销:

  1. SR-IOV直通避免了VirtIO下队列发送接收的开销;
  2. OVS卸载节约了OVS占用的CPU资源;

此外,由于裸金属服务器操作系统是未知的,无法保证可以安装,裸金属服务器也无法像虚拟机那样利用HostOS上的后端驱动挂载云硬盘,甚至从云硬盘启动。在有了SmartNic后,裸金属服务器就可以使用云硬盘,而无需安装本地盘了。

本期段子:

方老师被拉进了一个微信群,群里著名才子索尔仁察琴通过UDP,给当朝皇帝戈尔巴谢夫发了一首《凉州词》:

黄河远上白云间,一片孤城万仞山。

羌笛何须怨杨柳,春风不度玉门关。

由于UDP无法避免丢包,而且没有重传机制,戈尔巴谢夫收到的是:

黄河远上白云 一片孤城万仞山 羌笛何须怨杨柳 春风不度玉门关

朝中著名佞臣叶栗钦看见,大喊:这可是故意丢数据,也就是欺君之罪,应该交给契卡处理啊!

索尔仁察琴急中生智,说:《凉州词》本是七言绝句,并不是词。我这才是一首真正的词:

黄河远上,

白云一片。

孤城万仞山,

羌笛何须怨?

杨柳春风,

不度玉门关。

戈尔巴谢夫摸了摸自己头上的地图,对叶栗钦说:撤回你说的吧!

索尔仁察琴汗流浃背地退下朝堂。

方老师醒了,原来是个梦。

0 人点赞