
Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 摘要 (Powered by OpenAI)
本文是 BIRD 用户指南的第六章第三节,介绍了 BIRD 的路由信息协议 (RIP),包括其距离向量算法、多版本支持、全面的接口配置选项和示例配置,以便您更好地理解相关内容。
路由信息协议 (Routing Information Protocol, RIP) 是一种简单的路由协议。每台路由器向其所有邻居广播其可到达的所有网络的距离。当路由器收到某个网络的距离信息后,会递增该距离并广播回去。广播以固定间隔周期执行。
当某个网络变得不可达时,路由器之间会不断互相告知其距离为 "原距离 + 1"(实际上是加上接口度量值,通常为 1)。经过一段时间后,距离达到无穷大(在 RIP 中为 15),所有路由器便得知该网络不可达。
RIP 尽力减少需要"计数到无穷大"的场景,因为此过程较为缓慢。由于无穷大值为 16,RIP 无法用于最大跳数超过 15 台主机的网络。
BIRD 支持以下 RIP 标准:
RIP 是一个非常简单的协议,但也有诸多不足:收敛缓慢、网络负载较大、无法处理大型网络,因此基本上已经过时。不过,在非常小型的网络中它仍然可以使用。
RIP 配置主要由通用协议选项和接口定义组成,大多数 RIP 选项都是接口级别的。RIPng(IPv6 版 RIP)协议实例可通过使用 rip ng 代替 rip 作为协议类型来配置。
RIP 需要一条 IPv4 通道,RIPng 需要一条 IPv6 通道。如果未配置通道,将使用默认参数定义相应的通道。
protocol rip [ng] [<名称>] {
infinity <数值>;
ecmp <开关> [limit <数值>];
interface <接口模式> {
metric <数值>;
mode multicast|broadcast;
passive <开关>;
address <IP>;
port <数值>;
version 1|2;
split horizon <开关>;
poison reverse <开关>;
demand circuit <开关>;
check zero <开关>;
update time <数值>;
timeout time <数值>;
garbage time <数值>;
ecmp weight <数值>;
ttl security <开关>; | tx only;
tx class|dscp <数值>;
tx priority <数值>;
rx buffer <数值>;
tx length <数值>;
check link <开关>;
authentication none|plaintext|cryptographic;
password "<文本>";
password "<文本>" {
id <数值>;
generate from "<日期>";
generate to "<日期>";
accept from "<日期>";
accept to "<日期>";
from "<日期>";
to "<日期>";
algorithm ( keyed md5 | keyed sha1 | hmac sha1 |
hmac sha256 | hmac sha384 | hmac sha512 );
};
};
}infinity 数值
指定无穷大的距离值。值越大,协议收敛越慢。默认值:16
ecmp 开关 [limit 数值]
指定 RIP 是否允许生成 ECMP(等价多路径) 路由。当存在前往目的地的多条路径且各自具有相同(计算出的)开销时,使用此类路由。此选项还允许指定每条路由中最大下一跳数的限制。默认情况下,若内核支持则启用 ECMP。限制默认值:16
interface 模式 [, ...] { 选项 }
接口定义指定协议激活的接口集合,并包含接口级别的特定选项。参见 接口 通用选项的详细说明。
metric 数值
指定接口的度量值。从该接口收到的路由,其度量值在进一步处理前会增加此值。有效值:1-255,但大于无穷大的值无实际意义。默认值:1
mode multicast|broadcast
选择 RIP 在该接口上使用的发送模式。RIPv2 默认为 multicast 模式,RIPv1 默认为 broadcast 模式。RIPng 始终使用 multicast 模式。
passive 开关
被动接口只接收路由更新,但不发送任何消息。默认值:no
address IP
指定用于组播或广播消息的目标地址。默认值:RIP 官方组播地址 (224.0.0.9)、RIPng 官方组播地址 (ff02::9) 或广播模式下的相应广播地址。
port 数值
选择要使用的 UDP 端口。默认值:RIP 官方端口 (520) 或 RIPng 官方端口 (521)。
version 1|2
选择接口上使用的 RIP 版本。对于 RIPv1,不支持自动子网聚合,仅传播有类网络路由和主机路由。注意:BIRD 允许 RIPv1 配置 RIPv2 独有的功能(如认证或使用组播套接字)。IPv4 RIP 默认值为 RIPv2。RIPng 不支持此选项,因为未定义更多版本。
version only 开关
无论接口配置的 RIP 版本为何,BIRD 默认接受任何 RIP 版本的传入数据包。此选项将可接受的数据包限制为仅配置的版本。默认值:no
split horizon 开关
水平分割 是一种防止路由环路的机制。水平分割激活时,路由不会定期传播回最初接收它们的接口。要么完全不传回(普通水平分割),要么以无穷大度量值传回(带毒性反转的水平分割)。这样,接口上的其他路由器就不会将该路由器视为前往路由目的地的独立路径的一部分。默认值:yes
poison reverse 开关
当水平分割激活时,此选项指定是否使用毒性反转变体(即以无穷大度量值传回路由)。毒性反转在更快收敛方面有一定优势,但会消耗更多网络流量。默认值:yes
demand circuit 开关
常规 RIP 在接口上定期发送完整更新。RFC 2091 定义了用于按需电路的触发式 RIP 扩展,取消了定期更新并引入了更新确认。启用后,在稳态网络中不存在 RIP 通信。
注意:此功能需要双方同时启用才能正常工作。由于没有 Hello 数据包,需依赖硬件链路状态来检测邻居故障。此外,它专为点对点链路设计,在接口上有多个 RIP 邻居时不能正常工作。默认值:no
check zero 开关
应丢弃在保留字段中含有非零值的 RIPv1 数据包。此选项指定是执行检查还是正常处理这些数据包。默认值:yes
update time 数值
指定两次定期更新之间的秒数。值越小,收敛越快但网络负载越大。默认值:30
timeout time 数值
指定从最后一次收到路由通告到路由过期的时间间隔(秒)。在此之后,网络被视为不可达,但仍以无穷大距离传播。默认值:180
garbage time 数值
指定从路由过期到移除不可达网络条目之间的时间间隔(秒)。此垃圾回收间隔(其间以无穷大度量值传播路由)同时适用于内部(过期后)和外部(撤销后)路由。默认值:120
ecmp weight 数值
当允许多路径路由时,此值指定通过该接口的下一跳的相对权重。有效值:1-256。默认值:1
authentication none|plaintext|cryptographic
选择使用的认证方式。none 表示完全不对数据包进行认证;plaintext 表示每个数据包中嵌入明文密码;cryptographic 表示使用由每个密钥的 algorithm 选项选择的加密哈希函数进行认证。RIP 密钥的默认加密算法为 Keyed-MD5。若设置认证为非 none,强烈建议添加 password 段。默认值:none
password "文本"
指定用于认证的密码。详见 password 通用选项。
ttl security [开关 | tx only]
TTL 安全特性通过使用 TTL 255 代替 TTL 1 发送目标为邻居的协议数据包,来保护路由协议免受远程伪造数据包的攻击。由于数据包在转发时 TTL 会递减,从远程位置伪造 TTL 255 的数据包非常困难。
若启用此选项,路由器以 TTL 255 发送 RIP 数据包并丢弃 TTL 小于 255 的接收数据包。若设为 tx only,发送时使用 TTL 255 但不检查接收数据包的 TTL——此设置不提供保护,但可确保与邻居的兼容性(无论对方是否使用 TTL 安全)。
对于 RIPng,TTL 安全是标准行为(RFC 2080 要求),因此默认值为 yes。对于 IPv4 RIP,默认值为 no。
tx class|dscp|priority 数值
指定出站 RIP 数据包的 ToS/DiffServ/流量类别/优先级。详见 tx class 通用选项。
rx buffer 数值
指定用于数据包处理的缓冲区大小。缓冲区大小应大于接收数据包的最大尺寸。默认值:IPv4 RIP 为 532,RIPng 为接口 MTU 值。
tx length 数值
指定生成的 RIP 数据包的最大长度。为避免 IP 分片,不应超过接口 MTU 值。默认值:IPv4 RIP 为 532,RIPng 为接口 MTU 值。
check link 开关
若启用,硬件链路状态(由操作系统报告)将被纳入考量。当链路消失(例如以太网电缆被拔下)时,邻居立即被视为不可达,其所有路由被撤销。部分硬件驱动或平台可能未实现此功能。默认值:yes
RIP 定义了两个路由属性:
int rip_metric
路由的 RIP 度量值(范围从 0 到 infinity)。当来自不同 RIP 实例的路由均可用且具有相同偏好值时,BIRD 优先选择 rip_metric 最低的路由。当非 RIP 路由导出到 RIP 时,默认度量值为 1。
int rip_tag
RIP 路由标签:一个 16 位数字,可携带路由的附加信息(例如,外部路由的源 AS 号)。当非 RIP 路由导出到 RIP 时,默认标签为 0。
protocol rip {
ipv4 {
import all;
export all;
};
interface "eth*" {
metric 2;
port 1520;
mode multicast;
update time 12;
timeout time 60;
authentication cryptographic;
password "secret" { algorithm hmac sha256; };
};
}
译者
原文作者: <Ondrej Filip>, <Martin Mares>, <Maria Matejka>, <Ondrej Zajicek>
原文链接: https://bird.network.cz/?get_doc&v=20&f=bird-6.html#ss6.3
原文标题: 6.3 RIP
遵循协议: CC BY-NC-SA 4.0
译者: hat
翻译时间: 2026-05-01
更新时间: 2026-05-01
本文链接: https://bird.xmsl.dev/docs/user-guide/6-3-rip.html