第一章
1. 克服解決傳統網絡
兩大根本原因
- 傳統網絡、設備的只可配置,不可編程性
- 網絡分佈式架構與管理帶來的制約
- 管理平面
- 控制平面
- 數據平面
新方案兩種解決辦法
- 彈性響應上層的網絡可編程
- 集中統一的控制與管理層
SDN三層網絡架構
1. 應用層:用戶業務系統
2. 控制層:SDN控制器,往上與上層應用交互,往下下發流表、指導轉發行爲
3. 基礎設施層:僅保存數據層的基礎設備
4. 北向接口:提供應用系統(控制層)與SDN控制器(控制層)的各種API接口
5. 南向接口:提供控制層與基礎設施層的控制數據平面接口
SDN三大態勢
- 應用範圍擴大
- 市場規模擴大
- SDN技術融合擴大、加速
2. SDN標準化
四大組織
-
ONF
-
IETF
-
ITU-T
-
ETSI
第二章
1. 主流SDN架構
-
ONF基於OpenFlow的三層架構
-
IETF技術架構
-
NICIRA的Overlay架構
-
ETSI的NFV技術
2. ONF基於OpenFlow的三層架構
四大平面,兩大接口:
- 應用平面、控制平面、數據平面、管理平面
- 北向接口、南向接口
數據平面
- 關鍵技術:SDN Datapath
- 控制數據平面接口 CDPI
- 代理轉發引擎 Forwarding Engineer
- 表和處理功能 Process Function
- 主要作用:對數據面進行抽象建模
控制平面
-
組成部分:
- 北向接口代理 NBI
- SDN控制邏輯
- 控制數據平面接口驅動 CDPI Driver
-
主要任務:
- 將SDN應用層請求轉換到Datapath
- 爲SDN應用層提供底層網絡抽象模型
-
關鍵技術:
- 控制器(NOS)[NOX,POX,FloodLight,RYU,OpenDayLight,ONOS]
應用平面
- 關鍵技術:
- SDN應用邏輯:改造傳統應用交付能力(負載均衡、訪問控制、應用加速)
- 北向接口驅動 NBI
控制平面
- 主要任務(靜態工作):
- 網元初始化配置
- 制定Datapath控制器
- 定義控制器及控制範圍
南向接口(CDPI)
-
功能:轉發行爲控制、設備性能查詢、統計報告、事件通知
-
關鍵技術:
-
轉發面開放協議(南向接口協議)
允許控制器控制交換機的配置及相關轉發行爲。
-
-
舉例:南向接口協議 Openflow
北向接口(NBI)
-
功能:嚮應用層提供抽象的網絡視圖,使應用能直接控制網絡的行爲
-
關鍵技術:
-
SDN北向接口設計
控制器將網絡能力封裝後開放接口,供上層業務調用。
-
-
舉例:REST API (是北向接口的主流設計)
其他
- 在現有網絡設備基礎上提供開放的API 屬於IETF提出的I2RS架構的特點
3. 核心思想
三個核心思想:
- 解耦:將控制平面和數據平面分類
- 控制平面負責上層控制決策,數據屏幕負責下層數據交換轉發。
- 控制平面可進行軟件實現、靈活,可滿足多元化需求
- 數據平面有硬件設備實現,可專注於轉發,簡單通用
- 抽象
- 轉發抽象:將各種如MAC表、ACL表、MPLS等抽象成統一的流表
- 狀態抽象:通過NOS實現下發控制命令、收集設備鏈路狀態,爲上層應用提供全局網絡視圖
- 配置抽象:網絡行爲表達通過編程語言實現
- 可編程
- 北向接口:REST API,JAVA API
- 南向接口:Openflow,OF-Config,NETCONF,OVSDB
- 東西向接口
- 數據平面:DPDK(Intel網絡數據處理框架),P4(斯坦
- 福)
4. MININET 實驗
mininet創建
-
圖形化界面創建:sudo python minideit.py
-
命令行創建:
- sudo mn
- py net.addhost(‘h3’)
- nodes
-
編寫腳本:
- gedit
-
mininet基本命令:
第三章
1. SDN數據平面架構
傳統數據轉發特點
- 協議相關,只能轉發特定幾種協議數據包
- 功能模塊固定,僅支持有限的用戶配置
SDN數據平面架構
- 包處理流程中的所有模塊實現可編程性
2. SDN數據平面轉發模型
- Openflow交換機轉發模型
缺點:未實現協議無關;不支持對數據包解析邏輯進行編程
-
可編程協議無關交換機架構 (PISA 架構)
特點:
- 設計了可編程解析器,實現了協議無關的數據包解析處理
- 在入口、出口分別設計了“匹配-動作”邏輯
2. Openflow
Openflow架構 三個組成部分
- 流表:只是交換機如何進行流的處理
- 安全通道:控制器與交換機之間的交互,通過安全通道與遠端控制器連接
- Openflow協議:定義南向接口標準
主要版本和特性
單流表到多流表的變化
3. 流表
流表:針對特定流的策略表項的集合,負責數據包的查找與轉發。
Openflow1.0流表組成
-
包頭域:12個字段,4-7層的大部分標識
- 4層
-
計數器:統計數據流量相關信息
- 流表:表項數、數據包查詢次數、數據包匹配次數
- 數據流:數據包數、字節數、數據流持續時間
- 設備端口:收到的數據包數、發送數據包數、接收字節數、發送字節數、錯誤發送的次數
- 隊列:發送的數據包數、字節數、溢出錯誤次數
-
動作表:應該執行的下一步操作
- 每個流表項對應零到多個動作,如果沒有定義轉發動作,數據包丟棄
- 多個動作可以具有不同優先級
- 出現Openflow不支持的參數值,則返回錯誤信息
-
動作:
- 必備動作:
- 轉發(ALL、CONNTROLLER、TABLE、IN_PORT、ANY、LOCAL)
- 丟棄
- 可選動作:
- 轉發 (NOMAL、FLOOD)
- 排隊
- 修改域
- 必備動作:
-
端口:
-
物理端口、邏輯端口
-
保留端口:指定通用的轉發動作
ALL、CONNTROLLER、TABLE、IN_PORT、ANY、LOCAL、NOMAL、FLOOD
-
數據包處理流程
流表項結構變化
組表:由多個組表項組成,提供更高級的數據包轉發特性,可實現負載均衡、容災備份、組播和聚合
計量表:由多個計量表項組成,實現簡單的QoS功能
4. SDN交換機
交換芯片
- 通用CPU、專用集成電路芯片(ASIC)、現場可編程門陣列(FPGA)、網絡處理器(NP)
Openflow交換芯片-NDM
SDN交換機
-
SDN物理交換機
-
基於ASIC的SDN品牌交換機
CISCO Nexus 9500、NEC IP8800、ARISTA、JUNIPER等
-
基於ASIC的SDN白盒交換機
big switch、盛科 V30等
-
基於NP的SDN交換機
-
基於FPGA的SDN交換機
斯坦福 NetFPGA
-
-
SDN虛擬交換機/軟件交換機
- Open vSwitch (OVS)
- Cisco Netxus 1000V
交換機選型參數
-
背板帶寬(機架式交換機):背板帶寬越高,所能處理數據能力越強
計算方法:端口數×相應端口速率×2(全雙工)
-
端口密度、端口速率、支持模塊類型、帶寬類型
-
時延、功耗、支持Openflow版本、機架單元、網管功能
3. Open vSwitch
Open vSwitch是一個產品級質量的多層虛擬交換機
重要概念:
- Bridge代表一個以太網交換機
- 交換機包含端口:Normal、Internal、Patch、Tunnel
- 一個端口可以有一個或多個接口
- 包通過流轉發的
特性*
總體結構
三個重要組件:
- ovsdb-server:OVS數據庫服務進程
- ovs-vswitchd:OVS核心組件,負責保存和管理控制器下的所有流表
- Forwarding Path:OVS的內核模塊,緩存某些常用流表,並負責數據包轉發