谈谈我所了解的网卡技术

谈谈我所了解的网卡技术

普通网卡

虽然在上中学时候就接触到了计算机,而且也很早就使用了互联网,但是意识到网卡的存在还是在上了大学之后,印象中应该是计算机组成原理的课程学习中。

之所以很多时候我们感受不到网卡的存在,是因为几乎所有电脑都集成了网卡或者叫做网口,后来随着网络的发展,主板上支持多个网卡同时使用,这个时候人们才会意识到网卡其实是可以插拔的。另外当人们遇到上网问题的时候,也才会想起来去查看一下网卡连接是否正常。

其实网卡的功能说起来也比较简单,就是作为计算机和网络设备之间连接的中继,CPU 把网络特有的功能交给网卡处理,这样可以释放出计算能力处理通用的计算任务。其实在嵌入式系统中 CPU 也会集成类似于网卡的功能,因为嵌入式系统大部分都要求在有限的尺寸上集成尽可能多的功能,比如手机上就不能要求加个网卡来上网了。

普通网卡的功能主要有如下一些:

  1. 速率,双工状态的配置或者自协商
  2. 以太网 MAC 地址固化和收发包处理
  3. IP/TCP/UDP 等检验和计算卸载

下面是笔者电脑上无线网卡Intel WiFi 5100 AGN的高级属性列表:

下面是笔者电脑上有线网卡Intel 82567LM的高级属性列表:

服务器网卡

上面说的普通网卡主要指的是家用电脑或者办公电脑,其实服务器上的网卡和普通网卡存在一些功能上的不同,除了上述普通网卡的功能外,服务器网卡还有一些特有的功能。

服务器网卡特有的功能有:

  1. 高速速率端口模式支持
  2. 支持光纤接入可插拔光模块
  3. 多种软件功能卸载支持
  4. DPDK 转发功能支持

这里有一篇《阿里云服务器网卡类型选择指南》,可以参考一下。其中提到:

阿里云服务器的网卡类型主要包括:Intel i350系列、Intel X520系列、Intel i219系列、Intel I211系列、QLogicQLE2500系列、QLogic QLE2520系列、QLogic QLogic QLE2540系列、BroadcomNetXtreme系列、Broadcom NetXtreme 5系列、Broadcom NetXtreme 2系列、NetXtreme 1系列等。

阿里云其实只是网卡的用户,服务器设备商会集成网卡,下面分别是联想个戴尔的服务器网卡信息

List Network adapter options – Lenovo

上面每种服务器网卡点进去都可以查看外观形态,具体信息链接需要员工或者合作者权限登录查看。涉及的网卡厂商有Emulex(2015 年被 Broadcom 收购), Flex System, Intel, Mellanox(2020 年被 Nvidia 收购), Qlogic, Broadcom, Nvidia。注意其中除了以太网适配器,还有 IB (InfiniBand)适配器,FC (Fibre Channel)适配器。

PowerEdge R650 机架式服务器 – Dell

上面是Dell一款高端服务器规格及报价,其中“附加网络卡”部分可以查看支持的网卡类型,只有名称介绍没有具体形态及规格描述。涉及的网卡厂商有Intel, Mellanox, Qlogic, Broadcom, Nvidia。除此之外,还单独列出了支持的 OCP 3.0 标准的网络适配器。Dell 还单独列出了支持的光纤通道适配器,主要有 Emulex,Marvell/Qlogic,。

可以看到,其中的Intel E810-CQDA2网卡,已经可以支持到2 x 100GE的高速接口了,这对服务器的处理能力是很大的挑战。另外,因为服务器网卡的形态各异,给最终用户的采购和使用都带来了很多不便,Facebook联合其他厂商提出了OCP 3.0规范,对于服务器网卡的形态做出了规范,为以后的标准化做出了总要的贡献,正像这篇文章所说,对于服务器市场:OCP3.0网卡即将一统天下。另外,opencompute.org的这个Wiki页面介绍了不少NIC的现状,可以了解一下。其中OCP 3.0相关文档状态如下:

SR-IOV

虚拟化技术,SR-IOV 全称是Single Root I/O Virtualization,翻译过来是单根 IO 虚拟化,简单点说就是允许在单个网卡上虚拟出多个网卡资源,在主机上的虚拟机看来就是都具有自己的独立网卡,在云服务环境中被广泛使用。

SR-IOV Architecture 中详细介绍了 SR-IOV 架构。其中下面是NDIS 6.30 in Windows Server 2012上的SR-IOV架构实现图,可以看到在单个NIC上实现了PF(Physical Function)和VF(Virtual Function)两种类型的功能。看到这里我想起了路由器设备上的物理口和物理子接口,其实那也可以看成是一种网络功能虚拟化。


智能网卡

对于服务器来说,特别是云服务中的服务器,CPU 资源是可售卖的,如果用来做网络数据处理则减少了可售卖的资源,另外随着服务器网口从 25G 迈向更高速率的 100G, CPU 对于网络数据包的处理已经出现性能瓶颈了。 因此近年来的趋势是将 CPU 处理网络的功能转移到网卡上,也就是所谓的智能网卡。智能网卡上有单独的计算和处理单元,从价格算下来性价比要比使用主 CPU 要具有优势。智能网卡的另一种说法是软硬件融合,也就是通过软件和硬件的功能融合,提升整机网络处理性能。


网卡与交换机

网卡与交换机是网络中两种不同的设备实体,但是从某些角度看他们又是相似的。在计算机整体硬件结构中,网卡是辅助 CPU 做网络处理的,或者说是 CPU 处理网络功能的扩展,主角是 CPU;在交换机或者路由器中,负责转发功能的交换芯片或者网络处理器是主角,CPU 做的是控制层面相关工作。在网卡和交换机中,CPU 的角色不同,导致了呈现出的形态不同,其实从历史演进角度看,交换机或者路由器的转发模型,就是一步步从计算机结构演化而来的,具体可以看看 Cisco 的这篇文档Router Architecture And IOS Internals – Cisco,其中重点讲述了交换转发功能的不同方案,虽然是 2001 年的文档,但其中的思想还是值得学习研究。

现在网卡技术向着交换技术在演进,速率提升了,功能也在增强,服务器上的网卡技术和交换技术在融合,DPU 现在也是很热门的技术。Intel,Broadcom 和 Nvidia 这几家在这两方面都有拿得出手的技术,Cisco 还是偏重于网络设备,对于服务器上的网卡涉猎较少。我有个预测,这两个方向的技术以后会逐渐融合,形成新的网络体系结构。

Comments are closed.