(以下内容已经整合进《SONiC入门指南》的 BGP路由变更下发 一节中。)
在上一篇中,我们介绍了BGP路由变更的工作流中从bgpd
到fpmsync
的部分,本篇我们将继续介绍剩下的BGP路由变更的下发流程。
1. SONiC路由变更工作流
当FRR变更内核路由配置后,SONiC便会收到来自Netlink和FPM的通知,然后进行一系列操作将其下发给ASIC,其主要流程如下:
sequenceDiagram
autonumber
participant K as Linux Kernel
box lightyellow bgp容器
participant Z as zebra
participant FPM as fpmsyncd
end
box pink database容器
participant R as Redis
end
box lightblue swss容器
participant OA as orchagent
end
box lightgreen syncd容器
participant SD as syncd
end
participant A as ASIC
K->>FPM: 内核路由变更时通过Netlink发送通知
Z->>FPM: 通过FPM接口和Netlink<br/>消息格式发送路由变更通知
FPM->>R: 通过ProducerStateTable<br/>将路由变更信息写入<br/>APPL_DB
R->>OA: 通过ConsumerStateTable<br/>接收路由变更信息
OA->>OA: 处理路由变更信息<br/>生成SAI路由对象
OA->>SD: 通过ProducerTable<br/>或者ZMQ将SAI路由对象<br/>发给syncd
SD->>R: 接收SAI路由对象,写入ASIC_DB
SD->>A: 通过SAI接口<br/>配置ASIC