1. 等价路由让网络流量“多条腿走路”刚入行那会儿我最头疼的就是网络卡顿。明明设备配置没问题带宽也够可一到业务高峰期核心链路就亮红灯用户投诉电话能被打爆。后来我师傅一句话点醒了我“一根水管不够用你不会多铺几根吗”他说的就是等价路由。这可不是什么高深莫测的技术你可以把它理解成给数据包修“并行高速公路”。简单来说我们路由器里的路由表平时只认一条去往某个目的地的最优路径。选最优的标准就那老三样子网掩码长度最长优先、路由协议优先级最高优先、度量值开销最小优先。但你想过没有如果去往同一个目标网络有两条甚至多条链路它们的这三项数值完全一样呢路由器这时候就犯难了它发现无法区分谁更“优”。于是一个聪明的机制启动了它会把这几条物理链路逻辑上合并成一条“大路”。数据包要前往这个目的地时路由器就会把流量相对平均地分配到这几条物理链路上。这就是等价路由专业点叫ECMP。我最早是在一个园区网的核心-汇聚层之间部署的。当时两条万兆光纤互联如果只用一条另一条就白白闲置浪费资源还单点故障。配置了等价路由后效果立竿见影。原来跑满的链路利用率立刻降到了50%左右而且当其中一条光纤因为施工被意外挖断时所有流量瞬间切换到另一条用户几乎无感知。这种负载分担的能力是花小钱办大事的典型。配置起来其实很简单关键在于让路由器“看到”多条去往同一目的地的、开销相等的路径。以静态路由为例你只需要针对同一个目的网段配置多条下一跳不同的路由条目并且确保它们的优先级和度量值一致。在华为设备上默认静态路由优先级是60你配两条优先级都是60、但下一跳指向不同对端接口IP的路由等价路由就形成了。# 华为设备示例去往10.1.1.0/24网段有两条等价路径 ip route-static 10.1.1.0 255.255.255.0 192.168.1.2 ip route-static 10.1.1.0 255.255.255.0 192.168.2.2对于OSPF、IS-IS这类动态路由协议就更省心了只要到达同一个目的网络的开销Cost值相同协议会自动发现并形成等价路由。比如在OSPF里默认开销是基于接口带宽计算的如果你两条互联链路的带宽相同且路径上其他开销一致等价路由自然就生效了。不过这里有个坑我得提醒你流量分配未必是严格的1:1。很多设备的负载分担是基于流的比如根据源IP、目的IP的五元组信息做哈希把同一个会话的流量始终固定在同一条链路上避免数据包乱序。这可能导致两条链路负载不完全均衡但保证了TCP等协议的正常工作。在实际调优时你可能需要根据设备型号和流量模型调整负载分担的哈希算法。2. 浮动路由网络里的“备胎”策略如果说等价路由是让网络“多腿走路”跑得更快那浮动路由就是给网络买的一份“保险”。它的核心思想就一句话主路畅通时备胎默默待命主路一断备胎立刻顶上。这个“备胎”就是备份路由。我遇到过最惊险的一次故障是一家医院的放射科影像传输系统突然中断。一查主用专线光缆被市政施工挖断了。幸好我们提前配置了浮动路由用4G无线作为备份链路。中断后几十秒所有路由自动切换到4G链路上虽然带宽小了点但关键的诊断影像传输没停给抢修赢得了宝贵时间。这就是浮动路由的价值——用极低的成本实现关键业务的高可用性。它的实现原理巧妙地利用了路由选优的规则。还记得路由表里那条最优路径是怎么选出来的吗当掩码长度相同时比较协议优先级数值越小优先级越高。浮动路由就是在这个“优先级”上做文章。我们手动配置一条主用静态路由比如优先级用默认值60。然后再配置一条去往同一目的地的备份路由但把它的优先级设置得比60大比如70。这样一来在路由表选举时优先级60的主路由胜出被放入路由表用于转发。而优先级70的备份路由因为“不够优”只会静静地躺在路由数据库里不会出现在活跃的路由表中。一旦主路由失效比如接口Down掉这条优先级70的备份路由立刻就成了“最优”选择自动进入路由表接管流量转发。# 华为设备浮动路由配置示例 # 主路由优先级默认60 ip route-static 172.16.1.0 255.255.255.0 10.1.1.2 # 浮动路由备份优先级设置为70 ip route-static 172.16.1.0 255.255.255.0 10.2.2.2 preference 70注意这里容易混淆。preference值越大优先级反而越低。所以preference 70的路由是备份路由。浮动路由的配置虽然简单但规划上有讲究。备份链路的选择要权衡成本和可靠性。常见的组合有主用专线备用ADSL宽带、主用MPLS VPN备用IPSec VPN、有线链路无线蜂窝网络。备份链路的带宽通常可以比主用小只要能保障最关键的业务不中断就行毕竟它的出场机会不多。这里我踩过一个坑只配置了路由优先级忘了考虑路由的激活条件。有一次主用链路物理层其实已经闪断了但接口协议状态还是UP的导致备份路由无法浮上来。后来学乖了配合使用NQA或者BFD这种链路检测技术。让NQA去周期性地探测远端IP是否可达一旦发现主路不通就主动把主路由的接口关掉或者把开销调大强制触发路由切换这样比单纯依赖接口状态要可靠得多。3. 路由汇总给路由表做“减法”的艺术当你管理的网络从一个办公室扩展到一座园区再到全国几十个分支机构时路由器里的路由表会像吹气球一样膨胀起来。我维护过一台核心路由器里面塞了近十万条路由每次路由收敛慢得像蜗牛CPU利用率常年高位徘徊。解决这个问题的“瘦身”神器就是路由汇总也叫路由聚合。你可以把路由汇总想象成快递分拣。如果没有汇总上海浦东新区、徐汇区、黄浦区……每个区的快递都要单独占一个格子路由条目。而做了汇总后我们只需要一个“上海市”的格子汇总路由所有寄往上海不同区的快递明细路由都先扔进这个大盘子里到了上海的分拣中心再去细分。这样全国其他分拣中心路由器的路由表就清爽多了。它的底层技术支撑是CIDR。这玩意打破了传统的A、B、C类地址划分允许我们使用任意长度的子网掩码。正是这种灵活性才让把多个连续的网络地址块合并成一个更大的地址块成为可能。比如192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24这四个网段就可以汇总成192.168.0.0/22。路由汇总的计算是基本功但新手容易算错。口诀是找共同前缀数相同比特位。我们把要汇总的多个网段的IP地址写成二进制从左向右比对找到最后一个所有地址比特都相同的位置这个位置之前的比特位数就是汇总后的掩码长度。举个例子要把192.168.1.0/24、192.168.2.0/24、192.168.3.0/24汇总。转二进制192.168.1.0 - 11000000.10101000.00000001.00000000192.168.2.0 - 11000000.10101000.00000010.00000000192.168.3.0 - 11000000.10101000.00000011.00000000从左往右比对前22位加粗部分完全相同。所以汇总路由是192.168.0.0/22。等等这里为什么是192.168.0.0而不是192.168.1.0因为第23、24位有0有1在汇总网段里被“覆盖”了所以主机位全置0得到的就是192.168.0.0。在实际的动态路由协议里配置汇总非常方便。在OSPF中你可以在ABR上做区域间路由汇总在ASBR上做外部路由汇总。在BGP中可以在发布或接收路由时进行聚合。这能极大地减少路由表大小和路由更新报文的数量让网络更稳定。# OSPF在ABR上汇总Area 1内的路由 ospf 1 area 1 network 192.168.0.0 0.0.3.255 abr-summary 192.168.0.0 255.255.252.04. 三大技能的综合实战与避坑指南纸上谈兵终觉浅绝知此事要躬行。这三大技能单独用不难但真正考验功力的是如何把它们组合起来应对复杂的真实网络场景。我结合一个常见的“双上行企业网络”架构来给你串讲一下。场景一个公司总部通过两条ISP链路电信和联通接入互联网内部有多个业务VLAN网段。第一步利用路由汇总精简内部路由。我们规划内部网络时就采用连续的IP地址块比如10.1.0.0/24到10.1.15.0/24用于办公10.2.0.0/24到10.2.7.0/24用于服务器。在核心交换机上我们可以轻松地将办公网段汇总为10.1.0.0/20服务器网段汇总为10.2.0.0/21发布给出口路由器。这样路由器上关于内部网段的路由条目就从几十条缩减为两三条。第二步配置浮动路由实现出口主备。假设电信线路质量好作为主出口联通线路作为备份。我们在出口路由器上配置默认路由。# 主用默认路由指向电信网关优先级默认60 ip route-static 0.0.0.0 0.0.0.0 100.1.1.1 # 备用默认路由指向联通网关优先级设为70 ip route-static 0.0.0.0 0.0.0.0 200.1.1.1 preference 70这样平时所有互联网流量走电信。一旦检测到电信线路故障流量自动切换至联通。第三步引入等价路由优化内网核心。在总部核心交换机与接入交换机之间或者两台核心交换机之间部署双链路并配置等价路由。这样不仅增加了带宽还提供了链路冗余。这里要注意生成树协议和等价路由的配合通常需要将两条链路做成一个Eth-Trunk捆绑或者在路由协议中确保开销一致。一个必须警惕的大坑路由汇总引发的黑洞路由和环路。 这是路由汇总最经典的副作用。想象一下RTB有一个指向RTA的默认路由而RTA将192.168.0.0/22这个汇总路由发给了RTB。此时如果有一个目的地址是192.168.1.100属于汇总网段但RTA实际没有明细路由的数据包到达RTBRTB查表发现默认路由指向RTA就发过去了。RTA收到后查自己的路由表发现只有一条192.168.0.0/22的汇总路由而下一跳可能就是RTB于是数据包又被发回给RTB形成环路直到TTL耗尽。解决方案就是配置黑洞路由。在RTA上除了发布192.168.0.0/22的汇总路由还需要添加一条指向Null0接口的、同样网段的静态路由并赋予一个较高的优先级比如130。ip route-static 192.168.0.0 255.255.252.0 NULL 0 preference 130这条路由的作用是“兜底”。当RTA收到一个目的IP在汇总范围内、但又没有精确匹配的明细路由的数据包时它会匹配上这条优先级较低的黑洞路由然后将数据包丢弃扔进Null0接口。这就避免了环路。在动态路由协议中配置汇总时很多设备会自动生成一条指向Null0的防环路由。最后我想分享的是网络技术的魅力在于平衡与取舍。等价路由提升了性能但可能增加故障排查的复杂度浮动路由保障了可靠性但备份链路存在成本路由汇总简化了管理但设计不当会引入环路风险。没有最好的技术只有最适合当前业务场景和网络架构的组合方案。多动手在实验环境里搭一搭、断一断链路、抓一抓包你对这些“基础”的理解会深刻得多。我至今还记得第一次成功用浮动路由实现自动切换时的那种成就感就像给网络装上了自动导航心里特别踏实。