线速是反映网络设备转发性能的重要指标。很多数据中心在采购网络设备时,都会要求设备具备线速能力,或者部分线速能力。线速在RFC1242中定义:不丢帧的最大转发速率,以太网吞吐量的最大理论值称为线速,如果是千兆设备就达到千兆线速,如果是10G设备,必须达到10G线速。理论就是理论。在实践中,毕竟要考虑很多外界的干扰因素。因此,网络往往是“伪线速”,线速只有在特定情况下才能在实验室环境下进行测试。在选择设备时,不必强调满足各种情况下的线速度。实际上,除了广播风暴,设备的所有端口都不会进行线速转发。肯定是网络异常。一般端口速率超过80.%,数据中心就会开始扩容网络,不会等到端口以线速转发后再扩容。线速度是一个理想化的东西。选择设备时不要注意这一点,否则你会上当受骗。就像我们买的车,最高行驶速度可以达到每小时200多公里,很多人一辈子都不会把车开到这么高的速度。汽车设计的理论速度确实是可以达到的,但是会有各种条件。因此,在谈到网络设备的线速问题时,千万不要吹牛角。接下来,我们详细谈谈网络设备如何满足线速性能。有些网络设备只有1U高,有些则有20U高。外部端口包括千兆、10吉、40G、100G甚至更高。在盒子里,很难满足所有板子的线速度。因为低速端口板内部所需的低速连接器是足够的,而高速端口板的内存需要高速连接器,这很难在一个机箱中满足,或者在一些板卡组合中,一些端口无法达到线速。这种情况在早期的网络设备中更为明显。当时内部连接器速率比较低,信元内部不转发,而是根据消息HASH转发,内部拥塞容易造成业务丢包。在这种情况下,如果数据中心要验证所购设备的线速性能,设备厂商往往会展示线速部分,测试时尽量避免不能线速的小部分。另外,随着测试包数量的增加(或者数据帧变短),网络设备处理和验证的负担会变重,出口转发速度必然会下降,但关系更接近于线性关系.许多网络设备在处理大包数据时可以达到线速,而包长度越小,越难达到线速。如果数据包只有64字节,是对设备性能最好的考验。在这种情况下,网络设备可能无法达到线速。其实我们知道,在实际网络中,不可能只有一种64字节的数据包,必须将各种长度的数据包混在一起。这时候对设备的压力并不是绝对的。线速的概念主要是指交换机网络设备,通过硬件芯片转发,可以具备线速能力,但是这些设备的CPU处理能力比较弱,所以CPU处理的数据包远达不到线速速度。交换机的CPU不会处理转发的数据包,除非硬件芯片中没有转发表项,才会考虑通过CPU转发。很弱,没有线速度的概念。即使是硬件芯片也无法满足任何情况下所有端口的线速。部分芯片受制于工艺水平,芯片分选的转发带宽存在瓶颈。当所有外部端口都以线速转发时,芯片就会丢失。数据包,芯片只能保证部分端口线速下不丢包。我们知道,在很多选型测试中,经常会用到snake测试,即把面板的所有外接端口都接在最后,注入线速流量,看有没有丢包。很多设备在这种情况下无法通过测试,也就是芯片对端口线速的数量有限制。还有路由器,靠CPU转发数据。虽然路由器的CPU能力很强,但是要满足线速还是很难的。一般路由器会考虑使用NP芯片来完成数据转发,或者也植入硬件芯片来完成,依靠硬件的处理速度来满足线速转发。这种设计理念使得路由器和交换机之间的界限越来越模糊。很多时候,有人把路由器当作交换机,有人把交换机当作路由器,这样两种技术就可以不断融合。线速测试其实是有标准的,RFC2544就是线速测试的标准。RFC2544明确建议需要测试40、64、128、256、512、1024、1280、1500字节的数据帧。在线速流量情况下,测试网络设备的丢包、时延、抖动、吞吐量、背靠背等。这些概念网上都可以找到,这里不再赘述。这里需要注意的是,以太网数据包有可见部分和不可见部分。在以太网消息之前,有96位的空闲帧。空闲帧是基于以太网的CSMA/CD原理,用于检测链路是否空闲,空闲则可以发送报文。然后会有一个七字节的preambleAA(01010101)用来和接收端同步,因为电平有高有低,容易同步。***还有一个AB字节,作为帧定义,表示真正的以太网帧在后面开始。这20个字节在日常的网络抓包中是看不到的,被以太网物理层封装了。这部分的长度不一定是固定的,而是可以调整的。为什么有的设备为了提高转发效率,把这部分减少,这样单位时间内转发的包数就大了,转发效率就提高了。但是,这样做也会带来麻烦,就是在与其他设备连接时,其端口转发速率高于对方设备,可能会超过线速,影响其他设备。要求线速按照标准默认提供设备提供的framegap和preamble。当某些网络设备报文达不到线速时,往往会减少这部分的长度,同时提高线速能力,使其与线速保持一致。标准与谷物背道而驰。线速一般是网络产品在实验室的理论值,是一个理想化的东西。实际应用中线速很难达到,所以在购买网络设备时,不要过分依赖这个性能指标。还是要看网络设备的综合处理能力。
