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:riboseyim.github.io/201

weixin.qq.com/r/q3VkfFf (二維碼自動識別)


推薦閱讀:

什麼是開源?
如何管理開源產品的安全漏洞
一個開源軟體許可證合規的經濟高效模式
在標準建立之前,軟體所存在的問題
你為什麼使用 Linux 和開源軟體?

TAG:SDN | OpenFlow | 开源软件 |