写在前面
承接上文SONiC路由协议简述,这边文章记录SONiC上使能OSPF的过程。
实验过程
拓扑说明
拓扑图如下:
实验预期:
- 三台设备上能建立ospf邻居,完成LSDB交换,建立ospf路由
192.168.1.2
能够ping
通192.168.2.2
启动OSPF
在bgp
容器中启动ospf
进程:
1 | /usr/lib/frr/ospfd -A 127.0.0.1 -d |
参照bgpd
的启动过程,将ospf添加到supervisor中,并指定配置文件,在/etc/supervisor/conf.d/supervisord.conf
中添加:
1 | [program:ospfd] |
在/usr/bin/start.sh
中添加:
1 | supervisorctl start ospfd |
创建ospf配置文件/etc/frr/ospfd.conf
, 根据具体业务添加配置内容:
1 | frr version 7.2.1-sonic |
配置接口IP
在SONiC命令行中可配置接口ip,命令如下:
1 | config interface ip add 192.168.2.1/24 |
zebra会通过netlink获取接口配置,反之在vty中配置接口ip不能同步到sonic。也可将配置写到配置文件中:
1 | "INTERFACE": { |
配置完成之后,在vty中可以看到使能了ospf的接口:
注意将接口的mtu配置成1500或者在ospf中关闭mtu check。
配置ASIC
SONiC中默认ospf报文不送CPU,这可能和各家的SDK初始化实现有关。在broadcom下我们需要做一些配置:
1 | fp qset add ipprotocol |
应当在ASIC中看到使能的配置:
sonic中提供了copp功能配置sdk下发这些报文上CPU等的控制操作,受当前实验版本限制暂不做这方面深入研究。
功能验证
查看邻居状态:
查看数据库信息:
查看路由表:
ping测试:
小结
当前SONiC上ospf功能使能需要做三方面的配置:
- ospf自身,包括功能启用以及协议参数配置
- 启用ospf协议的接口
- 配置ASIC,协议报文上CPU