概述linux
Open vSwitch 是一個高質量的、多層虛擬交換機,使用開源 Apache 2.0 許可協議,由
Nicira Networks 開發,主要實現代碼爲可移植的 C 代碼。
它的目的是讓大規模網絡自動化能夠經過編程擴展,同時仍然支持標準的管理接口和協
議(例如 NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。此 外,它被設計位支持跨越多個物
理服務器的分佈式環境,相似於 VMware 的 vNetwork 分佈式 vswitch 或 Cisco Nexus 1000 V。
Open vSwitch 支持多種 linux 虛擬化技術,包括 Xen/XenServer, KVM,和 VirtualBox。數據庫
模塊介紹編程
當前最新代碼包主要包括如下模塊和特性:
ovs-vswitchd 主要模塊,實現 switch 的 daemon,包括一個支持流交換的 Linux 內核模塊;
ovsdb-server 輕量級數據庫服務器,提供 ovs-vswitchd 獲取配置信息;
ovs-brcompatd 讓 ovs-vswitch 替換 Linux bridge,包括獲取 bridge ioctls 的 Linux 內核模塊;
ovs-dpctl 用來配置 switch 內核模塊;
一些 Scripts and specs 輔助 OVS 安裝在 Citrix XenServer 上,做爲默認 switch;
ovs-vsctl 查詢和更新 ovs-vswitchd 的配置;
ovs-appctl 發送命令消息,運行相關 daemon;
ovsdbmonitor GUI 工具,能夠遠程獲取 OVS 數據庫和 OpenFlow 的流表。
此外, OVS 也提供了支持 OpenFlow 的特性實現,包括
ovs-openflowd: 一個簡單的 OpenFlow 交換機;
ovs-controller: 一個簡單的 OpenFlow 控制器;
ovs-ofctl 查詢和控制 OpenFlow 交換機和控制器;
ovs-pki : OpenFlow 交換機建立和管理公鑰框架;
ovs-tcpundump: tcpdump 的補丁,解析 OpenFlow 服務器
運行原理網絡
內核模塊實現了多個「數據路徑」(相似於網橋),每一個均可以有多個「vports」(相似於橋內的app
端口)。每一個數據路徑也經過關聯一下流表( flow table)來設置操做,而這些流表中的流都框架
是用戶空間在報文頭和元數據的基礎上映射的關鍵信息,通常的操做都是將數據包轉發到另tcp
一個 vport。 當一個數據包到達一個 vport,內核模塊所作的處理是提取其流的關鍵信息並在分佈式
流表中查找這些關鍵信息。當有一個匹配的流時它執行對應的操做。若是沒有匹配,它會將工具
數據包送到用戶空間的處理隊列中(做爲處理的一部分,用戶空間可能會設置一個流用於以後
碰到相同類型的數據包能夠在內核中執行操做)