### 背景
SONiC使用配置文件进行系统初始化与日常变更。仅就BGP部分来讲,由于1)模板文件不完善,2)bgpcfgd功能不完善。所以目前BGP部分对系统初始化、日常变更的支持不够。
各家的业务场景不同,所以需要的功能也不尽相同,需要扩展BGP的配置功能,例如下面这个proposal就是一个例子:https://github.com/MichelMoriniaux/SONiC/blob/BGP-policy-schema/doc/bgp-schema-addition.md
应用场景:某业务场景。
运维需求:
- 配置文件方式配置;
- 需要初始配置、日常变更;
- 重启配置不丢失。
功能需求:
- 基本需求
- 需要(可配置)发布静态路由
- 该场景只需要暴露vlan、loopback interface
### config_db.json设计
1. 以201803版本数据库为基础:
"BGP_NEIGHBOR": {
"1.1.1.20": {
"admin_status": "up",
"asn": "5001",
"name": "test",
"local_addr": "10.1.0.32"
}
},
"VLAN_INTERFACE": {
"Vlan3999|100.1.1.2/24": {
"op": "add"
}
},
"LOOPBACK_INTERFACE": {
"Loopback0|10.1.0.32/32": {
"op": "add"
}
},
2. 增加STATIC_ROUTE table,包含静态路由,格式如下
STATIC_ROUTE: {
"10.1.1.1/24": {
"nexthop": "100.1.1.1"
"metric": "200"
}
}
3. 增加BGP_METADATA table,包含BGP metadata配置,格式如下,其中VALUE=["static", "connected"]中一个。
BGP_METADATA: {
"localhost": {
"redistribute": "VALUE"
}
}
### 运维配置方式设计
1. reload方式:支持,测试通过,运维配置步骤:
- 修改config_db.json文件
- config reload
2. warm reboot load方式:支持,测试通过,运维配置步骤:
- 修改config_db.json文件
- config load
3. load方式:支持,测试中:
- 修改config_db.json文件
- config load