一、什么是 SmartNIC

1. 传统网卡

传统网卡仅实现数据链路层和物理层的功能,而端系统CPU负责处理网络协议栈中更高层的逻辑。CPU按照网络协议栈中传输层、路由层的逻辑,负责数据包的封装和解封;网卡则负责更底层的数据链路层帧的封装和解封,以及物理层电气信号的相应处理。

比如 Intel AX200 无线网卡

https://img13.360buyimg.com//n0/jfs/t1/85826/35/4591/97788/5de7914eE202b060e/df1aac851b27cd0f.jpg

https://www.intel.com/content/dam/www/central-libraries/us/en/images/ethernet-network-adapter-800-series-dual-port.png.rendition.intel.web.480.270.png

2. 网络处理带来的挑战

近年来公有云中虚拟化技术的发展以及SDN技术的兴起,对端系统协议栈提出了更高的要求,而传统的高性能网卡已经难以满足这些要求,可主要分为以下两个方面:

a. 性能

比如一个10 Gbps 网络接口,如果按照 MTU=1500 Byte 来算,大概需要 89 万 PPS( Packet Per Second) ,而在一个 8 核服务器上处理上限大约是 100 万 PPS。而且在现实网络环境中,包的平均大小会远小于 MTU,比如每个包 64 字节,这就需要 2000 万PPS。

而且近期存储的网络化,以前HDD的性能瓶颈是磁盘的物理转速上限,SSD没有这个限制,SSD拉高了存储带宽,因此数据中心通过网络共享存储资源这个需求,例如NVMe-oF,迅速把网络接口速率拉高。从1Gbps的网卡到10Gbps的网卡,业界走了近10年,但是25Gbps,似乎3年就成大趋势了,甚至100Gbps已经开始了应用

https://img.ccm.ink/image-20210605165341502.png

b. 可编程性

3. SmartNIC