sonic:如何处理新增的IP地址

下图展示新增 IP 地址的完整处理时序:10 个参与者共用一组生命线,17 个步骤从上向下连续排列。

打开独立 HTML 查看页(支持放大)

1. 完整时序图

SONiC 新增 IP 地址完整时序:配置下发、接口处理、路由分发与路由下发,共 10 个参与者和 17 个步骤。

打开完整 SVG 原图 · 打开 HTML 查看页并放大

2. 四张分图对照

展开四张分图,与完整时序图对照

2.1. 配置下发(步骤 1–3)

配置下发:User/CLI 写入 CONFIG_DB,intfmgrd 订阅后向 Linux Kernel 发送 RTM_NEWADDR。

打开 SVG 原图

2.2. 地址通知与接口处理(步骤 4–7)

地址通知经 fpmsyncd 写入 APP_DB 的 INTF_TABLE,再由 IntfOrch 处理 RIF、MyStation MAC 和 IP2ME Trap。

打开 SVG 原图

2.3. 路由通知与分发(步骤 8–12)

按原图保留 RTN_LOCAL 的 Drop 分支,RTN_UNICAST 经 APP_DB 的 ROUTE_TABLE 传递到 RouteOrch。

打开 SVG 原图

2.4. 接口状态与路由下发(步骤 13–17)

RouteOrch 查询 RIF 状态,调用 SAI,接收状态并按原图表示写入 ASIC_DB。

打开 SVG 原图

图中的 SAI/SDK/HW 和 ASIC_DB 采用简化表示。

3. 原始 ASCII 图

展开查看原始时序图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[User/CLI]    [CONFIG_DB]    [intfmgrd]     [Linux Kernel]    [fpmsyncd]       [APP_DB]       [IntfOrch]     [RouteOrch]     [SAI/SDK/HW]      [ASIC_DB]

| | | | | | | | | |
| | | | | | | | | |
|-- 1. SET --> | | | | | | | | |
| [INTERFACE] | | | | | | | | |
| |-- 2. SUB --> | | | | | | | |
| | [INTERFACE] | | | | | | | |
| | |-- 3. nl_send ->| | | | | | |
| | | (RTM_NEWADDR) | | | | | | |
| | | | | | | | | |
| | | |-- 4. NEWADDR >| | | | | |
| | | | | | | | | |
| | | | |-- 5. SET ---->| | | | |
| | | | | [INTF_TABLE] | | | | |
| | | | | | | | | |
| | | | | |-- 6. SUB --->| | | |
| | | | | | [INTF_TABLE] | | | |
| | | | | | |-- 7. HW Trap ────────────────>| |
| | | | | | | 1. Create RIF | |
| | | | | | | 2. Set MyStation MAC | |
| | | | | | | 3. Map IP2ME Trap | |
| | | | | | | | | |
| | | | | | | | | |
| | | |-- 8.NEWROUTE >|[*] 9. Drop | | | | |
| | | | (RTN_LOCAL) | | | | | |
| | | | | | | | | |
| | | |-- 10.NEWROUTE>| | | | | |
| | | | (RTN_UNICAST) | | | | | |
| | | | | | | | | |
| | | | |-- 11. SET --->| | | | |
| | | | | [ROUTE_TABLE] | | | | |
| | | | | | | | | |
| | | | | |-- 12. SUB ─────────────────>| | |
| | | | | | [ROUTE_TABLE] | | |
| | | | | | | | | |
| | | | | | |<-- 13. Query | | |
| | | | | | | RIF Status | | |
| | | | | | | | | |
| | | | | | |── 14.Ready ─>| | |
| | | | | | | | | |
| | | | | | | |-- 15. SAI Call | |
| | | | | | | | (Route/FIBs) | |
| | | | | | | | | |
| | | | | | | |<─ 16. status ──| |
| | | | | | | | (Hardware ACK) | |
| | | | | | | | | |
| | | | | | | |-- 17. Redis SET [ROUTE_TABLE] >|
| | | | | | | | | |

sonic:如何处理新增的IP地址
https://martinbj2008.github.io/2026/10/21/sonic-how-to-add-ip-address/
Author
Martinbj2008
Posted on
October 21, 2026
Licensed under