如果互联网发生延迟过长的问题,需要通过 QoS 设备或者路由器的 QoS 功能对报文转发进行优先级控制,保障实时性高的应用程序优先转发,尽可能减少队列延迟。
性能测试网络设备的性能可以通过测试仪器进行统计测试。产品目录里,会有 bit/s 和 pps 等参数,有些厂商还会说明是在怎样的测试环境下得到的这个数值。
测试对象叫做 DUT( Device Under Test )。测试仪器在发送端口( Tx )逐步增加发送到路由器的报文数量,然后在接收端口( Rx )测试 DUT 返回的报文数量。当到达 DUT 的性能极限时,DUT 上就会发生丢包的现象,测试仪器接收的报文数就会减少。
DUT 不发生丢包而持续的传输能力指标叫做 NDR( non-drop rate ),产品目录中一般叫做最大吞吐率。
RFC2544 中定义了网络设备吞吐率的测试方法,推荐了测试时使用的数据帧大小。比如在以太网环境中,推荐使用 64 、128 、256 、512 、1024 、1280 、1518 字节大小的数据帧进行测试。
测试路由器时,测试仪器经常模拟互联网实际通信流量、叫做 IMIX( Internet Mix )的各种数据帧组合来进行测试。
测试仪器通过生成二层至七层的各种报文,能够模拟百万台客户端连接的网络环境。通过测试仪器的测试,能够明确网络设备的最大吞吐率、最大在线会话数等各项性能指标数据。
最大吞吐率最大吞吐率,单位 Mbit/s ,是指连续处理长度为 1518 字节的数据帧的吞吐率。1518 字节中,去掉 18 字节的帧头部,剩下 1500 字节的 IP 报文。再去掉 20 字节的 IP 头部,剩下 1480 字节是 IP 数据有效载荷,最终处理的就是这 1480 字节。
路由器处理不是以字节为单位,而是以报文(数据帧)为单位进行转发。因此,路由器 1 秒内能处理多少个报文的指标 pps 的最大值,加上 1518 字节数得到的数值,就是路由器的最大吞吐率。
产品性能会根据 IP 数据内容的不同而发生变化,对比 TCP ,使用 UDP 这种头部简单的报文进行测试时,能够得到更好的吞吐率数值。
交换机性能二层交换机和三层交换机的数据帧转发是通过 ASIC 完成,因此产品目录里的交换容量和交换能力,可以人为是这个设备的实际性能指标。
交换容量交换容量,又叫做背板容量,是交换机内部数据传输的带宽容量。当流量高于交换机容量时,交换机就会由于缓存不足或内部带宽不够而无法处理,导致数据帧丢失、丢包率上升等现象。
交换能力除了 bit/s 表示交换机的容量外,pps(包每秒)也能用来表示交换机的交换能力,即单位时间内能够处理的数据帧数目。
交换机通过查看数据帧头部,先确认目的 MAC 地址,并校验数据帧尾部是否异常,最后查看访问控制列表是否有匹配项,如果有匹配项,就对数据帧进行过滤或转发处理。随着数据帧数目增加,交换机处理的数量也随之增大,路由器也是这样。所以,处理流量的 bit/s 相同,数据帧越小,处理的工作量越大,系统负载也随之变大。
以太网数据帧最小是 64 字节,加上前导码和 SFD(帧头定界符)的 8 字节,数据帧之间的 IFG(数据帧间隔)12 字节,一共 84 字节,也就是说,交换机在转发一个数据帧时,需要处理 672 bit 的数据。
理论的最大线路速度,也叫做线速。对于 1000Mbit/s 的以太网而言,线速是 1000000000 bit/s ÷ 672 bit = 1488000 pps ,也就是 1.488 Mbit/s 。万兆以太网的线速是 14880000 pps( 14.88 Mbit/s )。
交换机是由多个接口组成。如果一台交换机有 24 个 10/100/1000BASE-T 的接口,那么就有 24 × 1.488Mbit/s = 35.712Mpps 的交换能力。如果交换容量小于这个值,就会发生阻塞,导致所有的接口无法达到理论的最大线速。
实际上,在交换机上传输的大多是 TCP 或 UDP 的应用程序数据。在 UDP 中,对实时性要求高的报文,一般长度在 100 ~ 300 字节之间才能进行通信。而在 TCP 中,有窗口尺寸等带宽控制,实际的速率往往达不到理论线速水平。
MAC 表容量二层交换机使用 MAC 表管理 MAC 地址,三层交换机还会使用三层表来管理 IP 地址。如果表项超出了容纳的数量,那么设备就无法正常转发处理,造成丢包的结果。在对设备性能进行测试时,要对报文的地址数量进行限制,限制在 MAC 表支持的范围内。
广播风暴广播风暴( broadcast storm )是多个交换机连接成回环,数据帧不停的来回转发的现象。这种现象会造成网络带宽、交换机资源的过度消耗,最终导致整个网络的瘫痪。使用生成树功能,可以避免这个问题。生成树通过 NDP 端口的关闭来解决网络的回环问题。另外,遇到 DoS 攻击、操作系统出现 bug 或 NIC 出现故障导致生成树无法正常工作时,同样也会产生广播风暴。