【OpenVswitch源碼分析之一】背景

什麼是OpenVswitch

OpenVswitch Overview
Open vSwitch是基於開源Apache 2 license的多層軟件交換機,其目的是實現一個產品級質量的交換平臺,其支持標準的管理接口,並開放轉發功能接口供編程擴展和控制。
Open vSwitch適於VM環境中的虛擬交換,除了開放標準的控制和可視化接口給虛擬網絡層,它還支持跨多個物理服務器的分佈式部署,另外OpenVswitch還兼容多個基於Linux的虛擬化技術包括Xen,KVM,VirtualBox。
代碼塊使用與平臺無關的C寫成,易於安裝在其他環境。當前的Release支持如下特性:

  • 標準802.1Q VLAN,端口模式有trunk和access。
  • 有鏈路聚合和無鏈路聚合的網卡綁定
  • NetFlow, sFlow(R), 和鏡像功能用以增加可視化
  • QoS (Quality of Service) 配置, 流量整形
  • Geneve, GRE, VXLAN, STT, 和 LISP 隧道支持
  • 支持BFD和802.1ag連通性故障管理。
  • OpenFlow 1.0 以上版本及相關擴展的支持
  • 使用C和Python綁定的事務配置數據庫
  • 使用Linux內核模塊的高性能轉發
  • 支持IPV6

爲什麼需要OpenVswitch

虛擬機管理程序(Hypervisor)需要橋接宿主內的虛擬機以及其與外部世界通信的能力。這意味着需要一個Linux內置的L2交換機(Linux網橋),而且這個交換機需要是快速和可靠的。這是Open vSwitch產生的最大需求
OpenVswitch瞄準的是多服務器的虛擬化部署,這種場景下傳統的技術棧並不好處理,這些環境通常是高度動態的,需要邏輯抽象網絡的維護,並且有大量和專用交換硬件集成或者把以前CPU的工作Offload到專用硬件上的工作。
對於上述需求,OpenVswitch通過如下的設計理念以及特徵來達到目標:

狀態的移動

所有和網絡實體相關(比如虛擬機)的網絡狀態都應易於識別並且可以在不同主機之間遷移。這可能包括傳統的“軟狀態”(如在L2學習表項),L3轉發狀態、策略路由、ACL、QoS,監控配置(如NetFlow、sFlow IPFIX,),等。
Open vSwitch爲已經支持不同實例配置和遷移Slow(配置)和Fast網絡的網絡狀態。例如,如果一個VM在不同的服務器上遷移,不僅可以遷移相關的配置(跨規則,ACL,QoS)也可以遷移任何運行時的網絡狀態。

網絡動態變化的響應

虛擬環境通常以高變化率爲特徵。VMS來回運行,改變邏輯網絡環境,等等。
Open vSwitch有許多特性來實現網絡控制系統響應和適應網絡環境的變化。這包括簡單的統計和可視化支持如NetFlow和sFlow,IPFIX。更有用的是,Open vSwitch支持網絡狀態數據庫(OVSDB),支持遠程觸發。因此,一個編排層可以“監視”網絡的各個方面並在它們發生變化時作出響應。例如,這在今天被大量使用的響應和跟蹤VM遷移情況。
Open vSwitch也支持OpenFlow把遠程訪問導出到控制層的方法。比如可以用於導出鏈路狀態流量和鏈路發現流量(例如LLDP、CDP、OSPF等)。

邏輯標籤的維護

分佈式虛擬交換機(如VMware VDS和思科的Nexus 1000V)經常通過在網絡數據包中追加或者修改標籤來承載網絡的邏輯上下文。這種方式可以用來唯一地標識VM(以抵抗硬件欺騙的方式),或者持有隻在邏輯域中相關的其他上下文。構建分佈式虛擬交換機的大部分問題是如何高效而正確地管理這些標籤。
Open vSwitch有多個指定和維護標註的規則,這些都可以被遠程的協同層所訪問處理。此外,在許多情況下,這些標記規則存儲在優化的表單中,因此它們不必與重量級網絡設備耦合。這允許,例如,成千上萬的標籤或地址映射規則進行配置,更改,和遷移。
同理,Open vSwitch支持GRE的實現,可以同時處理成千上萬支持GRE隧道隧道創建,遠程配置,並推倒。例如,它可以用於連接不同數據中心的私有VM網絡。

硬件集成

Open vSwitch的轉發面(Linux Kernel datapath)的設計是可以做到把報文處理“委託”給硬件芯片來做的,無論這個硬件芯片是裝在一個經典的硬件交換機框中還是在終端主機的網卡里。這使得Open vSwitch控制面能夠控制一個純軟件實現同時也兼容硬件實現。
有許多公司正在進行努力把Open vSwitch移植到硬件芯片上運行。包括多個芯片商(Broadcom和Marvell),以及一些廠商定製的平臺。文檔中的“移植”部分討論瞭如何去做這樣一個移植。
硬件集成的優點不僅僅是在於虛擬環境中的性能。如果物理交換機也暴露Open vSwitch的控制抽象,那麼裸機和虛擬宿主環境可以使用相同的自動化網絡管控機制來管理。

總結

在許多方面,Open vSwitch不同於之前Hypervisor網絡棧的設計目標,其專注於滿足大規模的基於Linux的虛擬化環境的自動化與動態網絡控制需求。
Open vSwitch的目標是保持內核代碼量儘可能小(滿足必要的性能即可)和重用現有系統的可用部件(例如Open vSwitch使用現有的QoS協議棧)。在Linux 3.3版本,Open vSwitch作爲內核和用戶空間工具包裝的一部分在大部分的發行版中發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章