开头我先说一个路上经常被问到的话:RIP都2025年了,还有必要学吗?每次带网络工程师培训,讲到动态路由时总有学员觉得RIP是“淘汰货”,看一眼跳数、30秒更新就翻过去了。我的回答通常是:RIP也许不会出现在你未来的核心网里,但它是理解动态路由协议最好的“解剖标本”。只要你还在学路由交换,早晚要和距离矢量、路由环路、水平分割这些概念正面相遇,而把这些概念讲得最直白的就是RIP。
RIP的全称是Routing Information Protocol,路由信息协议,工作在UDP 520端口上,以跳数作为度量,最大有效跳数是15,跳数达到16就被视为不可达。从参数上看它确实很简单,但简单不代表没有深度。恰恰因为RIP把选路逻辑压缩到了极致,我们才能一眼看穿动态路由最底层的脾气:路由器间如何交换信息、如何避免被错误信息带偏、如何收敛、又有哪些先天短板。这篇文章我打算把RIP从原理到实战完整拆一遍,适合正在备考路由交换方向认证的初学者,也适合工作里要跟老设备打交道、需要快速回忆RIP细节的工程师。咱们先别急着敲命令,把RIP的骨架看明白,后面所有配置都是顺理成章的事。
1. RIP不是过时玩具:距离矢量协议到底怎么“算计”路由
1.1 没有全局地图的路由器:只信邻居的“听说”
你可以把RIP的工作模式理解成小区里互相打听路况。路由器从不去下载一张全网实时地图,它只做两件事:把自己知道的路由信息告诉直连邻居,同时从直连邻居那里收集它不知道的信息。每个邻居再把自己听到的消息继续往下一站传,最后所有路由器都靠这种“口口相传”拼出一张转发表。OSPF那类链路状态协议是每台路由器都画地图、自己算路,RIP这种模式则被叫作距离矢量,因为它传递的是“我距离某个网络有多远、往哪个方向走”的矢量信息,不是全网的拓扑细节。
RIP刚开始运行时,每台路由器只知道自己直连接口所在网段,跳数记为0。随后它把这份短小的路由表用UDP报文封装,从520端口发出去。邻居收到后,把每条路由的跳数加1,再对照自己的路由表:如果目标网络自己还没有,就新鲜地加进去;如果目标网络已有但新来的跳数更小,就更新成更优路径;如果发现跳数更大,那就不予理会。这个过程每隔30秒来一轮,RIP网络里的路由表就是这样被慢慢“喂”大的。
有一件事容易被忽略:RIP的路由表更新报文中没有携带路径上的路由器列表,只有目的网络、下一跳和跳数。也就是说,路由器根本不知道这条路径中间到底经过谁,它只知道自己应该把包交给谁。这带来一个明显后果:一旦中间某台设备出了状况,路由器很难立刻判断某个邻居口中的“好消息”是不是过时信息。正是这个特性,为后面无数防环机制埋下了伏笔。
1.2 跳数越高路越远?RIP的度量方式和15跳上限
RIP计算路径好坏只用一把尺子,就是跳数。直连网络跳数是0,收到一个邻居通告,跳数就加1;经过多少个路由器转发,跳数就累加到多少。这里有个面试里经常被单独拎出来的点:RIP只看跳数,不看带宽、延迟、负载、可靠性这些更“现实”的指标。两条去往同一个目的地的路径,一条是百兆光纤但要经过3台路由器,另一条是千兆专线但要经过4台路由器,RIP坚定地选择前者,只因为它跳数更少。
这种度量方式在一张十几台设备的小网里没什么大问题,因为拓扑简单,跳数少通常也确实意味着路径更靠谱。但网络一复杂,RIP就容易给出“反直觉”的答案。千兆专线明明更宽,可它就是绕不过跳数这个唯一标准。这也是为什么RIP最多只敢支持15跳。跳数到16,RIP直接宣布网络不可达。可以反过来想:如果允许几十跳的路径继续在网络上传播,那丢包、延迟已经到了一般业务无法忍受的程度,再继续通告没有意义。RIP用15跳限制给自己划了一道安全边界,顺便也让路由环路里的报文不会无限循环下去,后面讲防环时还要回到这个16跳。
1.3 30秒一通告:周期发送不是简单定时器
RIP默认每隔30秒向邻居发送一次完整的路由更新,这是它最基本的生命周期。需要注意,这不是一个可有可无的“心跳探测”,它关系着整张路由表的保鲜。如果一台路由器连续180秒没有从某个邻居那里收到任何更新,它就会把从这个邻居学到的路由标记为不可用;等到240秒还没有新消息,就直接把对应路由从路由表中删除。我曾经在实验环境里把R1和R2之间的链路shutdown掉,然后一直观察R2的路由表,那段时间里R2始终保留着“去往某个网段下一跳是R1”的表项,既不立刻删除也不立刻走备用路径,直到Invalid计时器触发才发生变化。这给你一个直观印象:RIP的收敛速度相当不理想,至少需要几十秒甚至更久,而BGP、OSPF在工程上的快速收敛能力就是从这里拉开差距的。
30秒的周期意味着RIP整个网络里充满了周期性的路由更新报文,设备越多、路由条目越多,带宽和CPU浪费越明显。很多人批评RIP“不适合大网”,主要就是因为这个固定间隔的全量更新机制。想一下,一台路由器有2000条路由,它每30秒就得把这2000条RIP条目向直连邻居完整地喊一遍,邻居越多重复就越多。这在老旧窄带链路上几乎是一场灾难。RIP在真实环境中始终停留在小规模网络里,不是没有原因的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RIP最怕路由环路:四道防线从哪来,又靠什么兜底
2.1 环路是怎么出现的:先看一个没有防环措施的孤儿例子
路由环路是所有距离矢量协议天生的敌人,RIP尤其容易成为它的靶子。我先把防环机制全部拿掉,给你看一个最原始的错误循环模型。假设路由器A和B直连,A原来有一个直连网段X。某一天,A连接X网段的线路断了,A已经在路由表中把X标记为不可达。但在A还没来得及或者没能力把这个坏消息传给B之前,B还保留着“去往X要走A”的陈旧表项。到了B的周期更新时间,B把这个旧消息原封不动发给了A:“去往X,下一跳A,跳数1”。A接收到这条消息时,本地已经没有了可用路由,它就会误以为B那边存在一条新的去往X的路径,于是更新自己的路由表:去往X,下一跳B。从此A把去往X的报文丢给B,B又按照自己的表项丢给A,两个设备互相指路,报文在链路里来回空转。
实际环境里这条环路不会永远转下去,因为每个路由器转发时TTL会递减,报文会因TTL耗尽被丢弃,但用户侧的症状已经出现:访问X网络的业务中断、时延诡异、链路流量异常。更要命的是,这种错误路径信息还会继续被下一台路由器听到并向外扩散,像一个越传越邪乎的谣言。要打断这种谣言,RIP需要好几层机制同时工作。下面这几道防线,本质上都是在跟“脏数据被误当真数据”这件事作斗争。
2.2 水平分割与毒性逆转:同一件事的两种狠法
水平分割的意思很好记:从哪个接口学到的路由信息,就不再从这个接口原样通告回去。在上面那个模型里,B的“去往X,下一跳A”这一条,本来就是从A那里学到的。水平分割打开以后,B在向A发送路由更新时,会自觉地把这条
