前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软硬件融合技术内幕 进阶篇 (8)

软硬件融合技术内幕 进阶篇 (8)

作者头像
用户8289326
发布2022-12-13 08:57:03
4750
发布2022-12-13 08:57:03
举报

在上期《软硬件融合技术内幕 进阶篇 (7) —— 恶魔导演的战争》中,我们认识到了,正如第二代高空高速战斗机难以胜任现代信息化战争那样,如果智能网卡的核心芯片只具备较高的数据包收发能力,而在可编程方面有所不足,是难以满足智能网卡“智能”的需求的。

有些工程师们则想到另一条路径:

我们在《网络设备硬核技术内幕 路由器篇 16 DPDK及其前传(一)》中提到过,早在2006年前后,国内就已经在基于一种特殊的通用处理器——SoC上,进行网络及安全设备的开发。

上图是早期的一款SoC的内部框图。

这款SoC包括8个MIPS核,并通过超线程技术向操作系统提供32个vCPU。我们注意一个细节,MIPS的超线程和x86不同,每个物理核(也就是一个ALU)可以带4个超线程(4个寄存器组)。这32个vCPU共用2MB的L2 Cache。

在MIPS核外,它还具备一些网络功能加速组件,如内置的10G接口 (SPI 4.2),可外挂10G以太网MAC,以及内置的4个千兆以太网MAC。这些网络接口都连接到一个叫PDE (Packet Distribution Engine)的部件。

PDE是一个可编程的部件。它可以根据初始化的配置,自动提取数据包中指定的字段,如源MAC/目的MAC/VLAN ID/以太包类型的四元组,或源IP/目的IP/源端口/目的端口/四层协议号的五元组,并计算hash值。

这一步的作用是什么呢?

我们知道,对于万兆以太网,在最坏情况下,网络线路上每秒钟将传输10,000,000,000/672 = 14,880,952个数据包。那么,如果处理器不能在67.2ns内将一个数据包处理完毕并转而处理下一个数据包,就无法实现万兆网络小包的线速收发。因此,这款SoC处理器中设计了32个vCPU分担网络数据包的处理,大大提升了转发能力。

但是,我们还需要将以太网MAC收到的数据包分发到各个vCPU。对方老师此前文章熟悉的同学可能会敏锐地洞察到,这个部件实质上是一个负载均衡器,需要分析网流的特征,将网络进行流分类,并为每条流分配对应的处理器进行处理。在SoC里面,PDE能够自动提取标识一条流的网络诸元 (network tuples),对其进行hash运算,根据hash值将其分配到各个核。

显然,PDE是典型的硬件加速部件,通过专用硬件电路帮助CPU处理相对固定的运算逻辑,(也就是所谓的offload)来提升整体性能。

在这款SoC中,还具备多种其他硬件加速部件,如能够实现网络密钥及加解密算法硬件加速的SAE (Security Acceleration Engine)等。

这款SoC是RMI公司的经典款:XLR732,可以用于实现计算机网络、3G RAN、防火墙等多种网元。

由于SoC实质上是将多个组件集成在了一个芯片上,形成了一个系统,因此,被称为System on Chip。基于SoC实现的网络路由器和防火墙等设备,事实上成为了软硬件融合的典范,这些产品的研发过程也培养出了一大批方老师这样对系统底层技术精通的人才。

浮云朝露,乌飞兔走。

哲学家们指出,时代的车轮并非直线前进,而是波浪式螺旋式上升的。由于Intel Xeon处理器和DPDK的成熟,SoC实现的网络设备市场迅速萎缩,并被Intel主导的NFV所取代。RMI、Cavium等多核SoC厂商也被Broadcom和Marvell等列强收购。

然而,SmartNIC的需求,使得SoC这个古老的产品,又得以换羽新生。

上图是Marvell的一款SoC产品——Octeon CN98xx。

这个家伙集成了36个Arm 8.2核(可以支持AES指令),DDR4 内存控制器(北桥),并嵌入了100GE MAC。100GE MAC支持4路28Gbps的Serdes,通过QSFP28光模块与对端的100G以太网接口互通。

我们发现,由于SoC实质上是一个迷你的服务器,它可以支持Linux操作系统和C语言编程,学习曲线较为平缓。同时,由于Intel为Linux提供了DPDK和SPDK套件,开发者可以利用DPDK实现virtio-net和vswitch的卸载,用SPDK实现virtio-blk的卸载。

特别地,CN98xx还集成了正则表达式引擎和压缩引擎,对于virtio-blk卸载的场景,还可以实现存储的透明压缩。

这样看来,SoC的优势是显而易见的。

但是,风起于青萍之末……

早在工程师们使用RMI开发路由器和防火墙时,就发现:

如果用SoC处理器开发SSL VPN和IPSec VPN设备,如果需要支持国密算法,SAE无法提供密钥算法的硬件加速,也无法提供符合客户要求的性能。这是因为,SoC中的硬件加速单元,其功能是相对固化的。

如果使用这些SoC处理器开发SmartNIC,对于一些较新的隧道封装方式 (如腾讯云使用的T-GRE隧道,或其他云平台采用的Geneve等隧道)无法硬件加速处理。如果期望在SmartNIC中实现virtio-blk和spdk,存储处理常见的CRC校验也无法通过硬件加速实现。

这是因为,SoC中,各硬件加速单元的底层设计,是相对固化的,如果出现了一些数据平面需要的新的算法,SoC是难以适应的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档