84 lines
2.6 KiB
Markdown
84 lines
2.6 KiB
Markdown
# 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` 控制
|