SONiC中BGP配置优化

### 背景

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

猜你喜欢

转载自blog.csdn.net/batmancn/article/details/82910420