1.3 解读数据包处理能力
不管什么样的硬件平台,对于包处理都有最基本的性能诉求。一般常被提到的有吞吐、延迟、丢包率、抖动等。对于转发,常会以包转发率(pps,每秒包转发率)而不是比特率(bit/s,每秒比特转发率)来衡量转发能力,这跟包在网络中传输的方式有关。不同大小的包对存储转发的能力要求不尽相同。让我们先来温习一下有效带宽和包转发率概念。
线速(Wire Speed)是线缆中流过的帧理论上支持的最大帧数。
我们用以太网(Ethernet)为例,一般所说的接口带宽,1Gbit/s、10Gbit/s、25Gbit/s、40Gbit/s、100Gbit/s,代表以太接口线路上所能承载的最高传输比特率,其单位是bit/s(bit per second,位/秒)。实际上,不可能每个比特都传输有效数据。以太网每个帧之间会有帧间距(Inter-Packet Gap,IPG),默认帧间距大小为12字节。每个帧还有7个字节的前导(Preamble),和1个字节的帧首定界符(Start Frame Delimiter,SFD)。具体帧格式如图1-7所示,有效内容主要是以太网的目的地址、源地址、以太网类型、负载。报文尾部是校验码。
所以,通常意义上的满速带宽能跑有效数据的吞吐可以由如下公式得到理论帧转发率:
而这个最大理论帧转发率的倒数表示了线速情况下先后两个包到达的时间间隔。
按照这个公式,将不同包长按照特定的速率计算可得到一个以太帧转发率,如表1-1所示。如果仔细观察,可以发现在相同带宽速率下,包长越小的包,转发率越高,帧间延迟也越小。
满足什么条件才能达到无阻塞转发的理论上限呢?如果我们把处理一个数据包的整个生命周期看做是工厂的生产流水线,那么就要保证在这个流水线上,不能有任何一级流水处理的延迟超过此时间间隔。理解了这一点,对照表1-1,就很容易发现,对任何一个数据包处理流水线来说,越小的数据包,挑战总是越大。这样的红线对任何一个硬件平台,对任何一个在硬件平台上设计整体流水线的设计师来说都是无法逃避并需要积极面对的。