本書主要分為五個部分。首先介紹了SONiC的起源、技術(shù)特點、功能發(fā)展以及廠商實踐。接著,梳理了SONiC的系統(tǒng)架構(gòu)、SAI接口、Docker技術(shù)、Redis數(shù)據(jù)庫以及其他關(guān)鍵模塊。然后,探討了代碼倉庫結(jié)構(gòu)、編譯流程、部署方法和常用命令,使讀者能夠?qū)嶋H操作SONiC系統(tǒng)。此外,通過實例介紹了SONiC中的二層和三層網(wǎng)絡(luò)功能,剖析其核心網(wǎng)絡(luò)協(xié)議。最后,通過典型網(wǎng)絡(luò)功能測試,幫助讀者能夠掌握各種常見路由功能的配置方法。
第 一章 初識SONiC 9
1.1 SONiC概述 9
1.2 技術(shù)特點 9
1.3 功能發(fā)展 11
1.4 技術(shù)優(yōu)勢 12
1.5 廠商實踐 14
1.6 SONiC標(biāo)準(zhǔn)化 16
1.7 本章小結(jié) 17
參考文獻(xiàn) 18
第二章 SONiC核心組件 19
2.1 SONiC系統(tǒng)架構(gòu) 19
2.1.1 系統(tǒng)概述 19
2.1.2 Docker容器 21
2.1.3 子系統(tǒng)交互 25
2.1.4 消息通信機制 30
2.2 硬件解耦合:SAI 51
2.2.1 SAI概述 51
2.2.2 接口定義 52
2.2.3 數(shù)據(jù)結(jié)構(gòu)說明及初始化 53
2.2.4 關(guān)鍵組件 56
2.2.5 SAI-ACL模塊 57
2.2.6 SAI實現(xiàn) 58
2.2.7 PIPELINE定義 59
2.2.8 SAI使用 60
2.3 軟件解耦合:Docker技術(shù) 60
2.3.1 Docker概述 60
2.3.2 基礎(chǔ)命令 61
2.3.3 構(gòu)建鏡像 62
2.3.4 網(wǎng)絡(luò)模型 62
2.3.5 Docker原理 63
2.4 SwSS模塊 64
2.4.1 SwSS概述 64
2.4.2 SwSS啟動 64
2.4.3 *syncd進(jìn)程 67
2.4.4 *mgrd進(jìn)程 69
2.4.5 Orchagent概述 70
2.5 Syncd模塊 71
2.5.1 Syncd概述 71
2.5.2 Syncd啟動 71
2.5.3 Syncd進(jìn)程 73
2.6 數(shù)據(jù)庫驅(qū)動:Redis數(shù)據(jù)庫 75
2.6.1 Redis概述及功能解析 75
2.6.2 以數(shù)據(jù)庫為中心的模型 78
2.6.3 與內(nèi)核的通信方式 82
2.7 路由套件FRR 86
2.8 可編程芯片 89
2.9 服務(wù)和工作流 90
2.9.1 服務(wù)分類 91
2.9.2 服務(wù)間控制流分類 92
2.10 核心容器 94
2.10.1 數(shù)據(jù)庫容器:database 94
2.10.2 交換機狀態(tài)管理容器:SwSS 95
2.10.3 ASIC管理容器:Syncd 95
2.10.4 各種實現(xiàn)特定功能的容器 96
2.10.5 管理服務(wù)容器:mgmt-framework 97
2.10.6 平臺監(jiān)控容器:Pmon 97
2.11 本章小結(jié) 98
參考文獻(xiàn) 99
第三章 SONiC系統(tǒng)實踐 100
3.1 代碼倉庫 100
3.1.1 核心倉庫 100
3.1.2 功能實現(xiàn)倉庫 101
3.1.3 工具倉庫:sonic-utilities 105
3.1.4 內(nèi)核補。簊onic-linux-kernel 106
3.2 編譯SONiC鏡像 106
3.2.1 編譯環(huán)境搭建 106
3.2.2 編譯過程 113
3.3 通過ONIE安裝SONiC系統(tǒng) 120
3.3.1 安裝ONIE 122
3.3.2 安裝SONiC 125
3.3.3 SONiC鏡像升級 127
3.4 GNS3部署SONiC 131
3.4.1 安裝GNS3 132
3.4.2 創(chuàng)建網(wǎng)絡(luò) 138
3.4.3 配置網(wǎng)絡(luò) 139
3.5 常用命令 142
3.6 本章小結(jié) 144
第四章 典型網(wǎng)絡(luò)協(xié)議分析 146
4.1 概述 146
4.2 二層網(wǎng)絡(luò)功能 146
4.2.1 VLAN 146
4.2.2 MAC 168
4.3 三層網(wǎng)絡(luò)功能 172
4.3.1 靜態(tài)路由 172
4.3.2 OSPF 179
4.4 網(wǎng)絡(luò)監(jiān)控 191
4.4.1 Telemetry概述 191
4.4.2 Telemetry相關(guān)協(xié)議 192
4.4.3 數(shù)據(jù)源 193
4.4.4 訂閱模式 197
4.5 SONiC無損網(wǎng)絡(luò)實現(xiàn) 200
4.5.1 RDMA概述 200
4.5.2 支持RDMA的協(xié)議 201
4.5.3 無損網(wǎng)絡(luò)概述 203
4.5.4 DCB概述 203
4.5.5 ECN的實現(xiàn)原理 204
4.5.6 PFC的實現(xiàn)原理 210
4.5.7 PFC WatchDog 213
4.5.8 PFC死鎖 216
4.5.9 DCB在芯片中的實現(xiàn) 220
4.6 本章小結(jié) 230
參考文獻(xiàn) 231
第五章 典型功能測試 232
5.1 VLAN 232
5.1.1 VLAN概述 232
5.1.2 網(wǎng)絡(luò)拓?fù)?233
5.1.3 網(wǎng)絡(luò)配置 234
5.1.4 連通性測試 237
5.2 VLAN間路由 237
5.2.1 VLAN間路由概述 237
5.2.2 網(wǎng)絡(luò)拓?fù)?238
5.2.3 網(wǎng)絡(luò)配置 238
5.2.4 連通性測試 240
5.3 靜態(tài)路由 241
5.3.1 靜態(tài)路由概述 241
5.3.2 網(wǎng)絡(luò)拓?fù)?241
5.3.3 網(wǎng)絡(luò)配置 242
5.3.4 連通性測試 245
5.4 RIP 246
5.4.1 RIP概述 246
5.4.2 網(wǎng)絡(luò)拓?fù)?246
5.4.3 網(wǎng)絡(luò)配置 247
5.4.4 測試 250
5.5 EIGRP 250
5.5.1 EIGRP概述 250
5.5.2 網(wǎng)絡(luò)拓?fù)?250
5.5.3 網(wǎng)絡(luò)配置 251
5.5.4 連通性測試 253
5.6 OSPF 253
5.6.1 OSPF概述 253
5.6.2 網(wǎng)絡(luò)拓?fù)?254
5.6.3 網(wǎng)絡(luò)配置 254
5.6.4 連通性測試 257
5.7 BGP 258
5.7.1 BGP概述 258
5.7.2 網(wǎng)絡(luò)拓?fù)?258
5.7.3 網(wǎng)絡(luò)配置 259
5.7.4 連通性測試 261
5.8 RIPng 261
5.8.1 RIPng概述 261
5.8.2 網(wǎng)絡(luò)拓?fù)?261
5.8.3 網(wǎng)絡(luò)配置 262
5.8.4 連通性測試 265
5.9 本章小結(jié) 265
參考文獻(xiàn) 266