OpenVswitch原始碼分析之一 背景

2021-12-30 03:46:30 字數 2362 閱讀 5036

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虛擬機器管理程式(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作為核心和使用者空間工具包裝的一部分在大部分的發行版中發布

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

AbstractListView原始碼分析3

normal list that does not indicate choices public static final int choice mode none 0 the list allows up to one choice public static final int choice ...

Android AsyncTask原始碼分析

android中只能在主線程中進行ui操作,如果是其它子執行緒,需要借助非同步訊息處理機制handler。除此之外,還有個非常方便的asynctask類,這個類內部封裝了handler和執行緒池。本文先簡要介紹asynctask的用法,然後分析具體實現。asynctask是乙個抽象類,我們需要建立子...