论文阅读:Smart-NICs: Power Proxying

2019-11-25  本文已影响0人  阿明DunDunDun

摘要:

连接到Internet的边缘设备的数量正在迅速增加,为了维持网络连接性,这些设备中的大多数设备在空闲时仍保持完全开机状态,浪费了不必要的能量。

在保持网络连接性的同时节省能源的一种新想法是将计算机在空闲期间置于待机模式,并将数据包处理功能委派给其网络接口卡(NIC)。 NIC充当主机的联络员,可以代理各种网络协议,从而在不影响主机活动连接的情况下增加了主机的待机时间。

在本文中,我们分析了此类数据包分类器的需求,并设计了一种基于硬件的低功耗数据包分类技术,与基于软件的数据包分类技术相比,该技术可将能耗降低59%,且速度提高9倍。

背景/问题:

随着连接到Internet的边缘设备数量的迅速增加,这些设备的总功耗将在不久的将来成为主要问题。

这些边缘设备中最普遍的是台式计算机系统,其平均功耗为60 – 95瓦,而在高端系统中则高达195瓦。研究估计,这些系统在开机时平均闲置75%的时间,在这些空闲时间段内,系统其实可以进入待机模式以将功耗降低80%,但是待机模式当前会中断系统的网络连接

解决此问题的一种新颖方法是增强网络接口卡(NIC)以在待机模式下充当系统的代理,并通过处理某些应用程序网络协议语义的子集来维护网络连接性。

已经有成果证明了NIC可以成功代理P2P应用协议语义的某些部分,从而使系统处于待机模式的时间增加了85%。类似地,其他一些应用程序(例如即时通讯程序,Internet电话的启动会话以及电子邮件客户端的新邮件通知)也适用于电源代理。

为了使NIC提供电源代理功能,需要使用电源代理规则以使NIC能够识别可以使用代理协议适当响应的数据包,即将进入待机模式之前,系统会将这些规则提供给NIC。这样的“智能” NIC(SNIC)在接收到数据包后,便会识别该数据包并做出适当的响应或唤醒系统。

为了提供此功能,SNIC必须具有数据包分类器,这是一种检查传入数据包以确定适当操作的方法,因此分组分类是确定入站分组满足哪个规则的过程。

这种数据包分类方法类似于传统路由器中执行的方法。然而由于诸如功率,能量和计算强度之类的高资源要求,用于分组分类的路由器技术不能直接应用于台式机NIC。

尽管具有内置嵌入式RISC处理器的现代NIC上存在实现分组分类的资源,但这些处理器的功能远不如路由器上可用的处理器,并且无法满足必要的分类速度。

另外,路由器处理器的成本太高,要求在NIC上实施需要低功率,小面积和有效的分组分类方案。

解决办法:

提出了第一个基于硬件的低功耗数据包分类方案,以降低NIC的功耗。分析功率代理规则的特征,开发适合代理要求的数据包分类器。

我们最初使用旨在在现有NIC处理器上运行的软件对数据包分类器进行原型制作,结果表明这些处理器缺乏足够快地对数据包进行分类的能力,无法跟上100 Mbps以上的链接速度。为了跟上快速发展的技术的步伐,我们开发和分析了基于硬件的数据包分类器,以实现几乎达到10 Gbps链路速度所需的数据包分类吞吐量。

实现细节:

NIC上的电源代理需要三个关键要素:

第一个关键:状态切换

我们将系统划分为两个负责在特定时间响应网络流量的组件:操作系统(OS)和SNI​​C,当系统处于全功率模式时,操作系统会响应网络流量,而当系统处于待机模式时,SNIC会响应。

我们定义了SNIC和OS之间的网络控制委托,在由于系统闲置而导致系统过渡到待机状态之前,PC将所有活动网络应用程序的电源代理规则卸载到SNIC,并将网络控制委托给SNIC。因此,PC进入低功耗状态,而不会中断网络连接。

NIC上的数据包分类器将功率代理规则应用于传入数据包,如果数据包分类器识别出可以由SNIC处理的数据包,则代理模块使用电源代理规则中的应用程序ID字段识别目标应用程序,代理模块调用相应的应用程序处理程序以响应数据包。对于系统中运行的每个可代理应用程序,在SNIC内的嵌入式处理器上运行一个对应的应用程序处理程序以处理协议语义,应用程序处理程序通过检查数据包的有效负载来确定适当的响应,如果数据包分类器将数据包识别为不适合系统的网络震颤,则该数据包将被丢弃。

在两种情况下,SNIC无法代理对传入数据包的响应,要求使用LAN唤醒(WOL)中断将PC从待机模式中唤醒。第一种是当SNIC收到与任何电源代理规则不匹配并且不是网络震颤的数据包时,第二种是当某些代理应用程序(例如Internet电话)在接收到某些类型的数据包时要求唤醒PC时

第二个关键:协议

应用程序主要分为以下四个协议类别之一:

ARP请求数据包不需要打开PC,并且可以轻松地委派给SNIC。例如,当PC处于待机模式时,可以通过允许SNIC响应免费ARP数据包来避免IP冲突。

Ping是流行的网络诊断应用程序,它使用ICMP请求和响应消息以检测特定系统的存在,并且可以代理。

许多流行的应用程序(例如P2P文件共享程序和Internet电话应用程序的会话启动)都使用TCP进行网络通信。另外,一些使用TCP类的即时消息传递实现会不断发出用户状态数据包(或状态数据包),并且可以增强代理功能。在待机模式下,SNIC可以以固定的时间间隔发送这些数据包。

第四个协议类是UDP,此类别的一个合适的应用示例是作为UDP数据包发送到相应电子邮件客户端的新电子邮件通知。收到此数据包后,SNIC可以唤醒PC以下载新消息。

第三个关键:计算资源

现代NIC包含的嵌入式处理器利用率很低,目前许多研究都集中在利用这些资源上,例子包括iNIC、融合网卡(C-NIC)等。

分组分类器:

电源代理规则可以根据标头字段(例如端口和/或源地址)唯一地标识应用程序网络流量。这意味着用于功率代理的数据包分类是一个6维问题,维数是链路层协议,网络层源和目标地址,网络层协议以及传输层源和目标端口号。

在将数据包与规则进行匹配后,应用程序处理程序将利用数据包分类器提供的信息来选择性地响应传入的流,在某些情况下应用程序处理程序可能选择不响应,或者唤醒PC。

SNIC数据包分类器类似于基于路由器的数据包分类器,但是操作环境和目标不同。例如,与路由器必须处理发往许多目的地的数据包不同,SNIC数据包分类器仅在系统不活动期间运行,并且仅处理发往特定目标PC的数据包。此外,SNIC数据包分类器在有限的处理资源下运行。

设计了一种基于软件的数据包分类方法,以量化现有未扩展的NIC上可用的数据包分类功能,并与基于硬件的分类方法进行比较。

最简单的软件分类算法利用二进制搜索算法,而最简单的硬件分类实现利用内容可寻址存储器(CAM)。

软件分类器:

使用商业NIC上可用的现有嵌入式处理器来实现软件数据包分类器,使用二进制搜索算法实现了软件数据包分类器,该算法的复杂度为O(log N),以找到匹配规则。

接收器FIFO缓冲传入的数据包,直到它们被传输到NIC的内存中为止。 数据包移动后,MAC控制单元通知嵌入式处理器,数据包分类开始。该软件从每个数据包中提取所需的标头字段,并将这些字段传递给以固件实现的数据包分类器。 最后,嵌入式处理器对这些规则执行二进制搜索,并确定适当的操作。

硬件分类器:

使用CAM实现了硬件数据包分类器,其实传统上路由器使用三元CAM(TCAM)进行数据包分类,但是由于我们的数据包分类器不需要最长的前缀匹配,因此我们可以使用基本CAM来实现分类,而基本CAM的功耗要低于TCAM。


标头处理单元充当主要控制模块,并负责从数据包的标头中提取必要的数据,并为CAM提供源IP,源端口和目标端口。另外,头处理器维护分类器状态,数据包分类器从MAC核心接收输入数据包。

MAC内核连接到两个FIFO,一个用于发送(Tx FIFO),另一个用于接收(Rx FIFO)

当一个新的数据包到达时,MAC内核以每个时钟周期一个字节的速率在Rx FIFO中缓存该数据包。数据包描述符FIFO是一种数据结构,数据包分类器在其中写入有关数据包分类的所有信息,包括数据包的类别及其匹配地址(如果有),在SNIC处理器上运行的应用程序处理程序使用此信息来确定适当的操作。

数据包的关键路径在MAC内核和接收器FIFO之间,因为数据包分类器位于此路径之外,所以它不会增加数据包的关键路径延迟。

我们将报头处理单元实现为有限状态机,当数据包从MAC核心到达时触发该状态机,以太网协议字段指定数据包是ARP还是IP数据包。

ARP数据包的分类时间最快,因为它只需要对以太网协议字段进行一次比较。对于IP数据包,标头处理器检查它是ICMP,TCP还是UDP数据包。对于每个数据包,请检查三层目标地址字段,以查看其是否与PC地址匹配,因为我们仅对发往主机的数据包感兴趣。

接下来,数据包分类器将TCP和UDP数据包与CAM中存储的电源代理规则进行比较和匹配,我们对源地址,源端口和目标端口进行了划分,并将它们存储在单独的CAM中。

对于TCP数据包:

数据包分类器从传入的数据包数据中提取第三层源地址信息,并搜索源地址CAM。

如果数据包分类器在源地址CAM中找不到匹配项,则数据包分类器将中断NIC上的处理元素以唤醒PC。仅在匹配时,分组分类器才继续分组分类,如果在源地址CAM中发生匹配,则分组分类器从报头中提取源端口并搜索源端口CAM。如果在源端口CAM中发生匹配,则数据包分类器将检查目标端口CAM

因此,如果报头处理单元在较早的阶段检测到不匹配,就可以避免不必要的切换活动,与单个CAM实现方案相比,可以节省功耗——仅当所有三个CAM返回相同的匹配地址时,TCP规则才会匹配。

在UDP数据包的情况下:

目标端口CAM需要匹配,并且由于目标地址是单个值,因此该地址可以存储在寄存器中,并且数据包分类器执行相等比较。

对于TCP通信::

由于多个TCP流将映射到单个TCP应用程序,会导致多个匹配项,因此匹配地址单元使用多个匹配标志并以位向量格式表示CAM地址来解决此问题。

在这种情况下,未编码的CAM地址形成一个位向量,其中每个位表示一个匹配的地址,通过将所有三个CAM的位向量相交,为TCP应用程序发生匹配。

上一篇下一篇

猜你喜欢

热点阅读