SDN 技術指南(四):Open vSwitch
摘要: - Open vSwitch 安裝 - Open vSwitch 命令行 - Open vSwitch 運行原理 - Open vSwitch 性能監控
前言
由之前發布的文章知道 Open vSwitch(Open Source Virtual Switch) 是一款基於軟體實現的開源虛擬交換機。
- SDN 技術指南(一): 架構概覽
- SDN 技術指南(二): OpenFlow
Open Source Virtual Switch:Community-Based, Open Source,. Full-Featured Network Operating System.
一、Open vSwitch 安裝
二、Open vSwitch 命令行
2.1 核心概念
- Bridge :網橋,對應一個乙太網交換機(Switch),一個主機中可以創建一個或者多個 Bridge 設備。
- Port :Port 與物理交換機的埠概念類似, 每個 Port 都屬於一個特定的 Bridge 。埠類型:Normal、Internal、Patch、Tunnel。
- Interface:介面,對應網卡,即可以是 ovs 生成的虛擬網卡,也可能是掛載在 ovs 的物理網卡。在通常情況下,Port 和 Interface 是一對一的關係, 只有在配置 Port 為 bond 模式後,Port 和 Interface 是一對多的關係。
2.2 基本操作
- ovs-vsctl : 查詢和更新 ovs-vswitchd 的配置;
- ovs-appctl :發送命令消息,運行相關 daemon;
- ovsdbmonitor : GUI工具,可以遠程獲取 OVS 資料庫和 OpenFlow 的流表。
3.1 Open vSwitch 內部結構
Open vSwitch 內部分為用戶態和內核態。用戶層(態)為守護程序實現了交換機和流表,是 Open vSwitch 的核心,提供了一些組件去管理交換機,實現資料庫,對內核進行直接管理。主要包含三個守護進程:
- ovs-vswitched : 主要模塊,守護進程,包括一個 Linux 內核模塊。
- ovsdb-server : 資料庫服務,保存相關配置信息
- ovs-brcompatd
數據流(flow) 通過 Open vSwitch 轉發的流程。每收到一個包之後,OVS Kernel Module 將檢查它是否能能命中內核模塊的緩存(flow cache) ,如果命中緩存則交由 kernel 處理;如果不能命中緩存則先發送到用戶空間(ovs-vswitchd process )進行轉發決策 ——— 基於一系列已經安裝配置的規則庫(OpenFlow rulues);如果沒有命中任何一條規則,則將包發送給 OpenFlow 控制器處理。一旦做出轉發決策,這個包和轉發動作將傳回 OVS Kernel Module 緩存起來。這條 flow 接下來的包就將命中緩存並直接由 kernel 轉發處理。
- openvswitch_mod.ko 是內核態(kernel)的主要模塊 完成數據包的查找、轉發、修改等操作,一條 flow 的後續數據包到達 OVS 後將直接交由內核態,使用 openvswitch_mod.ko 中的處理函數對數據包進行處理。
3.2 Open vSwitch 的協議支持情況
- GRE-tunneled mirrors: 遠程監控
- LACP、VLAN、IGMP、LLDP、BFD、STP、RSTP、QoS、HFSC
- Complete IPv6 (Internet Protocol version 6) support
- Support for multiple tunneling protocols, including GRE、VXLAN 、STT、IPsec
- Multi-table forwarding pipeline with a flow-caching engine
3.3 Open vSwitch 的 OpenFlow 支持情況
- ovs-openflowd:一個簡單的 OpenFlow 交換機;
- ovs-controller:一個簡單的 OpenFlow 控制器;
- ovs-ofctl 查詢和控制 OpenFlow 交換機和控制器;
- ovs-pki :OpenFlow 交換機創建和管理公鑰框架;
- ovs-tcpundump:tcpdump 的補丁,解析 OpenFlow 的消息;
Open vSwitch support for OpenFlow 1.1 and beyond is a work in progress.>>> OpenFlow Support in Open vSwitch
四、Open vSwitch 性能監控
「If you can』t measure it, you can』t improve it」 —— Lord Kelvin
4.1 sFlow 監控示例
- 啟動分析器 sFlow Analyzer (以 sFlow-RT 為例)
- Connect Normal Switch to sFlow Analyzer
- Connect Open vSwitch to sFlow Analyzer
4.2 Connect Open vSwitch to OpenFlow controller
4.3 Traffic analytics : sFlow vs NetFlow
- sFlow does not use flow cache, so realtime charts more accurately reflect traffic trend
- NetFlow spikes caused by flow cache active-timeout for long running connections
專題合輯:Network Engineering
- SDN 技術指南(一): 架構概覽
- SDN 技術指南(二):OpenFlow
- Preview SDN 技術指南(三):OpenDaylight or Floodlight ?
- SDN 技術指南(四):Open vSwitch
- Preview SDN 技術指南(五):NFV
- Preview SDN 技術指南(六):OpenStack or Kubernetes ?
- 淺談基於數據分析的網路態勢感知
- 網路數據包的捕獲與分析(libpcap、BPF及gopacket)
- 新一代Ntopng網路流量監控—可視化和架構分析
- Cyber-Security: IPv6 & Security
- AWS or Azure : 雲計算平台的趨勢分析|Stack Overflow,2017
- Cyber-Security|香港擬增設網路安全與科技罪案總警司
更多精彩內容掃碼關注公眾號:RiboseYims Blog:https://riboseyim.github.io/2017/10/13/SDN-OpenvSwitch/
http://weixin.qq.com/r/q3VkfFfEZwoYrRMf9yC5 (二維碼自動識別)
推薦閱讀:
※什麼是開源?
※如何管理開源產品的安全漏洞
※一個開源軟體許可證合規的經濟高效模式
※在標準建立之前,軟體所存在的問題
※你為什麼使用 Linux 和開源軟體?