路由器与交换机的性能口径不同:交换机靠 ASIC 直通,路由器要查表、改 TTL、做 NAT。 所以「标 10 G 却跑不到」是常态,「按什么包长测的」必须问清。
上一节的交换机看 pps 与交换容量,这一节的路由器还要多看一层:「小包走哪条路」。 IMIX 模型是理解这件事的钥匙:真实流量的 pps 只有最小包模型的五分之一。
一、IMIX:真实流量长什么样
真实网络里的包不是一样长的,业界常用 IMIX 模型近似:
帧长 字节 占比 典型内容
60 58% ACK、语音、游戏 590 33% 网页、API 1518 9% 文件、视频
加权平均帧长 366.1 字节。 这个数字很关键:它决定了「混合流量」的 pps 只有最小包模型的 21.8%。
换句话说:一台按 IMIX 测能跑到 10 G 的设备,不等于按 64 字节测也能跑 10 G。 而这两个数字在规格书上经常只写一个。
二、路由器比交换机多哪几道坎
交换机转发靠 ASIC:同一套逻辑对大小包都一样快。路由器要做的更多:
一、查路由表:最长前缀匹配,表越大越慢。二、改 TTL 并重算校验和:每个包都要动头部。 三、做 NAT:改地址与端口,还要查会话表。四、加解密:VPN 场景下多一轮运算。
这四件事里,前三件还能被硬件加速,第四件往往是瓶颈。 所以「路由器的吞吐」必须问清「开不开 NAT、开不开 VPN」。 同样一台机器,开与不开可能差三倍。
三、三条实用的核对方法
一、把厂商标称的 pps 除以「最小包线速 pps」,得到一个百分比。 低于 50% 的,说明它没打算跑小包全速。
二、看「IPsec 吞吐」是不是单独给的。 只写「吞吐 10 G」而没写 VPN 吞吐的,通常意味着 VPN 一开就掉到零头。
三、看「并发会话数」与「新建速率」是否分开给。 只给一个的,另一个多半是短板(下一节讲防火墙时会更细)。
这三条都不用看实物,翻规格书就能做:而它们能筛掉大部分「参数好看但不合用」的型号。
四、动手 Demo:路由器为什么「标着 10 G 却跑不到」
这段先用 IMIX 模型算加权平均帧长,再比较「全小包」与「混合流量」在 10 Gbps 下的 pps,看差多少。
mix = [(60, 0.58), (590, 0.33), (1518, 0.09)]
avg = sum(s * p for s, p in mix)
pps_min = link / 8 / 84
pps_mix = link / 8 / (avg + 20)
T([u"IMIX 混合", u"%.0f" % (pps_mix / 1e4),
u"%.1f%%" % (pps_mix / pps_min * 100)], [0, 0, 0])
实跑输出:
--------------------------------------------------------------------
路由器为什么「标着 10 G 却跑不到」
--------------------------------------------------------------------
**路由器与交换机的性能口径不同。**
**交换机看 pps 与交换容量,路由器还要看「小包走哪条路」。**
**先看一段混合流量的真实构成。**
**业界常用的 IMIX 模型是「大中小三种包各占一定比例」**:
帧长 字节 占比 加权 字节
------------------------------------
60 58% 34.8
590 33% 194.7
1518 9% 136.6
**加权平均帧长 366.1 字节。**
**同一个 10 Gbps 口,按全力打小包和按 IMIX 打,pps 差多少**:
流量模型 pps 万 相对最小包
----------------------------------------
全 64 字节 1488 100%
IMIX 混合 324 21.8%
**混合流量的 pps 只有最小包模型的 21.8%。**
所以「能跑 10 G」这句话,**必须问清「按什么包长测的」**。
按 1518 字节测能到 10 G,不代表按 64 字节也能。
**路由器比交换机多一道坎**:
交换机的转发靠 ASIC,同一套逻辑对大小包都一样快。
路由器要查路由表、改 TTL、重算校验和、做 NAT 与会话匹配。
这些动作很多落在「慢路径」上,pps 一高就顶不住。
**所以「路由器标 10 G」通常指「大包吞吐」,「pps」要单独看。**
**一条实用的核对方法**:
把厂商标称的 pps 除以「最小包线速 pps」,得到一个百分比。
这个百分比低于 50% 的,说明它根本没打算跑小包全速。
这种设备放在「大文件为主」的出口没问题,放在「大量小事务」的出口就会卡。
21.8% 这个数字的含义要说清:它不是「性能下降」,是「流量构成变了」。 同样的线速,包变大了,pps 自然变少。
所以「能跑 10 G」这句话本身没错,错的是不写条件: 按 1518 字节测当然能到 10 G,按 64 字节测就只能到 1.5 G 左右。
最后那段「核对方法」比数字更有用:它把「看不懂的规格书」变成「三个可以算的比值」。 而比值不需要专业知识就能算——这就是它的价值。
30 秒实验
- 用 ping 的 -l 参数发一个大包和一个小包,看时延差多少。
- 算一下你单位出口路由器的 pps 标称值除以最小包线速,是多少。
- 想一想:为什么开了 VPN 之后吞吐会掉一个数量级?
常见误区
- 以为标 10 G 就是 10 G。要问清包长、功能开启情况与测量条件。
- 以为路由器与交换机可以按同一套指标比。路由器多查表、NAT、加解密三道坎。
- 以为 IMIX 下 pps 变少是「性能差」。是包变大了,pps 自然变小。
自测三问(点开对答案)
1. IMIX 模型的三种包长与占比是什么? —— 60 字节占 58%、590 字节占 33%、1518 字节占 9%,加权平均 366.1 字节。 2. 路由器比交换机多哪几道处理? —— 查路由表、改 TTL 与重算校验和、NAT 会话匹配、VPN 加解密。 3. 核对路由器性能的三条实用方法是什么? —— 算 pps 比值、单独看 IPsec 吞吐、看并发会话与新建速率是否分开给。下一节:防火墙的性能——两个「连接数」不要搞混。
- ☐ (本节完,下一节 07.04.05 防火墙性能的考量方法)