
Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 摘要 (Powered by OpenAI)
本文深入介绍了 Babel 协议在 BIRD 中的内部实现,包括四层核心数据结构(neighbor/entry/route/source)和基于可行性距离的路由选择算法。
Babel 是一种防环的距离向量路由协议 (RFC 8966),在有线网络和无线 mesh 网络中均表现出良好的鲁棒性和效率。
Babel 使用四层数据结构维护路由状态:
| 结构 | 粒度 | 追踪内容 |
|---|---|---|
babel_neighbor | 每邻居 | 接收到的 Hello 和 IHU (I Heard You) 消息 |
babel_interface | 每接口 | Hello/Update 间隔时间、独立 Hello 序列号 |
babel_entry | 每前缀 | 前缀本身的路由条目 |
babel_route | 每前缀·每邻居 | 可能的路由(含下一跳和路由器 ID) |
babel_source | 每前缀·每路由器 | 可行性距离 (Feasibility Distance) |
💡 译者注
可行性距离是 Babel 协议中防环的核心概念。与 RIP 简单的"距离递增"不同,Babel 要求路由器在通告路由时记录"曾经被宣告过的最短距离"。如果收到的距离大于等于可行性距离,说明可能存在环路,该路由会被标记为不可行。这个机制是 Babel 区别于传统距离向量协议(如 RIP)最重要的算法创新之一。
主路由选择由 babel_select_route() 完成,调用时机:
算法流程:
babel_route 中筛选babel_announce_rte() 通告给 BIRD 核心| 函数 | 说明 |
|---|---|
babel_select_route(p, e, mod) | 为给定路由条目选择最佳路由 |
babel_announce_rte(p, e) | 向 BIRD 核心通告选中的路由(或撤回) |

译者
原文作者: <Ondrej Filip>, <Martin Mares>, <Maria Matejka>, <Ondrej Zajicek> 原文链接: https://bird.network.cz/?get_doc&v=20&f=prog-5.html#ss5.1 原文标题: 5.1 The Babel protocol
遵循协议: CC BY-NC-SA 4.0 译者: hat 翻译时间: 2026-05-01 更新时间: 2026-05-01 本文链接: https://bird.xmsl.dev/docs/developer-guide/5-1-babel.html