本書對開源網絡項目進行了闡述,包括DPDK、OpenDaylight、TungstenFabric、OpenStackNeutron、容器網絡、ONAP、OPNFV等,主要圍繞各個項目的起源與發展、實現原理與框架、要解決的網絡問題等方面展開了討論。
郭瑞景:從事網絡與存儲開發工作,活躍于OpenStack、OpenDaylight、OPNFV等開源項目。
陸連浩:ONAP項目積極貢獻者,此前長期從事Linux驅動、嵌入式系統開發工作。
秦凱倫:OpenStack Neutron項目的活躍貢獻者。
徐琛杰:從事邊緣計算項目StarlingX網絡方面的開發。
應若愚:從事網絡相關軟件開發和優化工作,目前主要負責ONAP平臺開發。
丁亮:從事云ONAP相關的開發和集成工作。
朱禮波:活躍于OPNFV、ONAP等開源項目,此前從事虛擬化技術與GPU底層的開發與維護。
黃海濱:ONAP項目積極貢獻者,Multi-Cloud 和 VFC的Committer,在虛擬化和智能監控領域發表6篇專利。
任橋偉:從事Linux內核、OpenStack、Ceph等開源項目的開發,著有《Linux內核修煉之道》 《 Linux那些事兒》系列。
梁存銘:軟件架構師,網絡數據面專家。主要從事研究數據面優化、網絡設備虛擬化及系統架構優化。
胡雪焜:專注于虛擬化技術和基于IA架構的數據面性能優化,具有豐富的SDN/NFV商業實踐。
胡嘉瑜:主要從事網絡I/O虛擬化方面的工作。
王瀟:主要從事網絡虛擬化、云網絡硬件加速等技術的開發。
何少鵬:專注于網卡和I/O虛擬化,之前在云服務和網絡設備行業有十多年的從業經驗。
姚磊:主要從事DPDK虛擬化以及OVS的性能評估和分析工作。
倪紅軍:VPP Maintainer,Sweetcomb和NSH_SFC項目負責人。
吳菁菁:主要從事Intel平臺上網絡包處理加速工作。
陳兆彥:主要從事基于IA架構的DPDK網絡系統的性能測試和分析,以及研究SDN/NFV方案,如對TungstenFabric vRouter的性能分析。
目錄
第1章 Linux開源網絡 1
1.1 開源網絡組織 1
1.1.1 云計算與三大基金會 1
1.1.2 LFN 3
1.2 網絡標準及架構 4
1.2.1 OpenFlow 4
1.2.2 SDN 10
1.2.3 P4 14
1.2.4 ETSI的NFV參考架構 17
1.3 Linux開源網絡生態 19
1.3.1 開源硬件 20
1.3.2 虛擬交換 21
1.3.3 Linux操作系統 22
1.3.4 網絡控制 23
1.3.5 云平臺 24
1.3.6 網絡編排 27
1.3.7 網絡數據分析 27
1.3.8 網絡集成 28
第2章 Linux虛擬網絡 29
2.1 TAP/TUN設備 30
2.2 Linux Bridge 32
2.3 MACVTAP 33
2.4 Open vSwitch 35
2.5 Linux Network Namespace 37
2.6 iptables/NAT 42
2.7 虛擬網絡隔離技術 45
2.7.1 虛擬局域網(VLAN) 45
2.7.2 虛擬局域網擴展(VxLAN) 47
2.7.3 通用路由封裝GRE 49
2.7.4 通用網絡虛擬化封裝(Geneve) 50
第3章 高性能數據平面 52
3.1 高性能數據面基礎 54
3.1.1 內核旁路 54
3.1.2 平臺增強 59
3.1.3 DPDK 65
3.2 NFV和NFC基礎設施 72
3.2.1 網絡功能虛擬化 72
3.2.2 從虛擬機到容器的網絡I/O虛擬化 78
3.2.3 NFVi平臺設備抽象 81
3.3 OVS-DPDK 86
3.3.1 OVS-DPDK 概述 86
3.3.2 OVS-DPDK性能優化 93
3.4 FD.IO:用于報文處理的用戶面網絡協議棧 98
3.4.1 VPP 98
3.4.2 FD.IO子項目 101
3.4.3 與OpenDaylight 和OpenStack集成 107
3.4.4 vBRAS 109
第4章 網絡控制 112
4.1 OpenDaylight 114
4.1.1 ODL社區 114
4.1.2 ODL體系結構 115
4.1.3 YANG 120
4.1.4 ODL子項目 122
4.1.5 ODL應用實例 125
4.2 Tungsten Fabric 126
4.2.1 Tungsten Fabric體系結構 126
4.2.2 Tungsten Fabric 轉發平面 134
4.2.3 Tungsten Fabric實踐 138
4.2.4 Tungsten Fabric應用實例 145
4.2.5 Tungsten Fabric與OpenStack集成 146
第5章 OpenStack網絡 147
5.1 OpenStack網絡演進 150
5.2 Neutron體系結構 152
5.2.1 網絡資源模型 152
5.2.2 網絡實現模型 159
5.2.3 Neutron軟件架構 164
5.3 Neutron Plugin 165
5.3.1 ML2 Plugin 165
5.3.2 Service Plugin 170
5.4 Neutron Agent 174
第6章 容器網絡 177
6.1 容器 177
6.1.1 容器技術框架 180
6.1.2 Docker 184
6.1.3 Kubernetes 188
6.2 Kubernetes網絡 196
6.2.1 Pod內部的容器間通信 196
6.2.2 Pod間通信 197
6.2.3 Pod與Service之間的網絡通信 199
6.2.4 Kubernetes外界與Service之間的網絡通信 202
6.3 Kubernetes CNI 202
6.4 Service Mesh 209
6.4.1 Sidecar模式 211
6.4.2 開源Service Mesh方案 213
6.5 OpenStack容器網絡項目Kuryr 217
6.5.1 Kuryr起源 217
6.5.2 Kuryr架構 217
第7章 網絡編排與集成 221
7.1 ETSI NFV MANO 221
7.1.1 ETSI標準化進展 221
7.1.2 OASIS TOSCA 223
7.1.3 開源編排器 224
7.2 ONAP 228
7.2.1 ONAP基本框架 230
7.2.2 ONAP應用場景 234
7.3 OPNFV 237
7.3.1 OPNFV上游 238
7.3.2 OPNFV項目 245
7.3.3 OPNFV CI 251
7.3.4 OPNFV典型用例 252