# FRR 最小化 RTR 客户端配置 本目录提供一个 FRR 最小配置,用于和本仓库 RTR Server 做黑盒互通测试。 本仓库默认 RTR 监听地址: - TCP:`0.0.0.0:323` - TLS:`0.0.0.0:324` 参考实现: - `src/main.rs` ## 文件说明 - `daemons.example`:示例 `/etc/frr/daemons` - `frr.conf.example`:静态示例 `/etc/frr/frr.conf` - `frr.conf.template`:Docker 启动时生成 `/etc/frr/frr.conf` 的模板 - `entrypoint.sh`:启动 FRR 前根据环境变量渲染 `frr.conf.template` - `.env`:Docker 示例使用的默认环境变量 ## 在 FRR 主机上应用 1. 复制 `daemons.example` 到 `/etc/frr/daemons` 2. 复制 `frr.conf.example` 到 `/etc/frr/frr.conf` 3. 重启 FRR: ```bash sudo systemctl restart frr ``` ## 验证命令 ```bash vtysh -c "show rpki configuration" vtysh -c "show rpki cache-server" vtysh -c "show rpki cache-connection" vtysh -c "show rpki prefix-table" ``` 当 `show rpki cache-connection` 显示已连接,且 `show rpki prefix-table` 出现 VRP 时,说明 RTR 客户端链路工作正常。 ## Docker 快速启动 在仓库根目录执行: ```bash docker compose --env-file deploy/frr/.env -f deploy/frr/docker-compose.yml up -d docker exec -it frr-rpki-client vtysh -c "show rpki cache-connection" docker exec -it frr-rpki-client vtysh -c "show rpki prefix-table" ``` Docker 示例默认连接 `127.0.0.1:323`。如果 RTR Server 在其他地址,可以通过环境变量覆盖: ```bash RPKI_FRR_RPKI_HOST=10.0.0.12 \ RPKI_FRR_RPKI_PORT=323 \ docker compose --env-file deploy/frr/.env -f deploy/frr/docker-compose.yml up -d ``` 停止: ```bash docker compose --env-file deploy/frr/.env -f deploy/frr/docker-compose.yml down ``` ## 可测试范围 - FRR 作为 RTR Client 与本仓库 Server 的 TCP 建链能力 - FRR 侧基础会话状态可见性(`cache-server` / `cache-connection`) - VRP 下发与导入是否成功(`prefix-table` 是否有条目) - 基于服务端数据变化触发的前缀表更新(可通过替换 `data` 后观察) - 黑盒互通回归:用于确认“路由器客户端视角”功能可用 ## 不覆盖范围 - 不替代协议级单元测试/集成测试(PDU 细节、异常路径、边界条件) - 不替代 `src/bin/rtr_debug_client` 的逐报文调试能力 - 默认示例以 TCP 为主,TLS/mTLS 需按你的证书与 FRR 配置单独扩展 ## 说明 - 当前示例主要针对 RTR over TCP(`rpki cache tcp`) - Docker 模式会在启动时把 `frr.conf.template` 渲染为 `/etc/frr/frr.conf` - `network_mode: host` 仍用于最小化 FRR 容器示例,但 RTR Server 地址由 `RPKI_FRR_RPKI_HOST` 和 `RPKI_FRR_RPKI_PORT` 控制