古墓奇遇记——使用NetStream功能定位SR66系列路由器等价路由负载不均问题
(一)
话说杨过、小龙女助大宋击退元兵后,从此隐居古墓,不问世事,过着神仙一般的生活。转眼数年匆匆而过,杨龙二人决定重出古墓,去襄阳拜访多年不见的郭靖、黄蓉两位武林前辈,顺便购买一些生活用品带回古墓。
此时古墓连接外面的通道早在数年前被二人封死。杨过本欲使用玄铁重剑强行破开山壁,但人力终究有限,且存在山体崩塌的危险,两人只得在古墓中另寻出路。功夫不负有心人,二人终于在古墓的一间密室中找到了IP江湖前辈“天机子”、“神器子”临终时留下的书信以及图谱:
图1 书信
注:SR66系列路由器在形成等价路由时,存在两种负载分担方式:
1、 基于报文逐流进行负载分担。对于不同的报文流,通过Hash算法,转发至不同的下一跳。包括:基于源IP地址的逐流负载分担、基于目的IP地址的逐流负载分担。
2、 基于报文逐包进行负载分担。
默认情况下,采用基于报文逐流进行负载分担。
(二)
终于有离开古墓的希望了!杨龙二人大喜,携手凝神观看图谱,只见图谱上有淡淡荧光流动,数十万条报文流在图谱中的交换机、路由器中转发。果然,去往RT1的流量约比去往RT2的流量少400M左右(见下图4,BR-AG1聚合口出方向的实时流量为129545892*8=1.04G,BR-AG2聚合口出方向的实时流量为175206842*8=1.4G)。
图2 图谱之组网
图3 图谱之SR6602-X路由器部分路由表
图4 图谱之SW上BR-AG1、BR-AG2聚合口的实时流量
杨、龙二人凝神思考。此时二人对玉女心经、九阴真经早已融会贯通,杨过更是以黯然销魂掌独步天下,一身阳刚内力当世无匹。这些年在古墓中,二人也未将武学搁下,反因心无杂念,得以百尺竿头更进一步。
如何破解此问题?如果能统计SR6602-X路由器T0/0.1和T0/0.2两个子接口出方向转发报文流的数量,那就好了。此时,二人同时想起了一门奇学:NetStream!不由得相视一笑!
(三)
杨过潜运内力,在SR6602-X路由器上T0/0.1接口配置了ip netstream outbound命令,并使用以下命令查看流缓冲区的详细信息:
[H3C]display ip netstream cache
IP netstream cache information:
Stream active timeout (in minutes) : 30
Stream inactive timeout (in seconds): 30
Stream max entry number : 5242000
IP active stream entry number : 146573 //当前活跃IP流的数量
……
随后,取消T0/0.1接口出方向NetStream的配置,在T0/0.2接口配置了ip netstream outbound命令,同样查看流缓冲区的详细信息:
[H3C]display ip netstream cache
IP netstream cache information:
Stream active timeout (in minutes) : 30
Stream inactive timeout (in seconds): 30
Stream max entry number : 5242000
IP active stream entry number : 145662 //当前活跃IP流的数量
……
重复多次,统计记录如下。可见,T0/0.1接口和T0/0.2接口出方向活跃IP流的数量基本一致!
图5 T0/0.1和T0/0.2接口出方向活跃IP流数量统计结果
这就证明了SR6602-X路由器在形成等价路由、且基于报文的逐流转发的处理上是没有问题的,可以将多条流均匀的Hash,转发至不同的下一跳。至于去往RT1的流量比去往RT2的流量少400M的原因,应该与报文流模型有关。
既然使用基于报文逐流转发的方式,无法保证去往不同下一跳的流量大小一致。那么要如何做到这一点呢?此时,小龙女微微一笑,运转内息,在SR6602-X上配置了基于报文逐包转发的方式:
[H3C]ip load-sharing mode slot 0 per-packet
配置完毕后,T0/0.1接口和T0/0.2接口出方向的流量大小渐渐恢复一致!
(四)
问题得到解决,此时图谱上突然闪出一道强烈的白光,石壁上一扇通往古墓外的大门缓缓开启。后来,杨、龙二人在武学一道更是出神入化,终成一代宗师,啸傲江湖数十载,人称“神雕侠侣”。