
Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
BIRD 被设计为尽可能可移植,但不同操作系统的网络栈接口确实存在差异。为应对这一挑战,BIRD 将所有 OS 特定代码隔离在一小部分模块中:
| 模块 | 粒度 | 职责 |
|---|---|---|
config.h | 全局 | 配置信息、标准类型定义等头文件 |
| 启动模块 (Startup) | 按 OS 家族 | BIRD 启动流程控制,Unix 家族共享 |
| 日志模块 (Logging) | 按 OS 家族 | 系统日志管理 |
| IO 模块 | 按 OS 家族 | 套接字、定时器、全局事件队列 |
| KRT 模块 | 按 OS 甚至版本 | 内核路由表同步——最深奥的系统依赖 |
💡 译者注
BIRD 的端口层设计遵循一个关键原则——与核心代码的接口统一。无论底层是 Linux netlink、FreeBSD routing socket 还是 OpenBSD 的特定接口,上层协议代码调用的都是相同的抽象接口。这个抽象层的"薄厚"程度是 BIRD 可移植性的关键——太薄则无法隐藏 OS 差异,太厚则引入不必要的性能开销。BIRD 选择了"足够薄"的方案,在可移植性和性能之间取得了良好平衡。

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