OVS筆記

一.OpenVSwitch是什麼

OVS是一個高質量的,多層虛擬交換機(網絡分層的層),其目的是讓大規模網絡自動化可以通過編程擴展,同事仍然支持標準的管理藉口和協議:NetFlowSFlow等,並且它還支持多個物理機的分佈式環境。

什麼是虛擬交換?就是利用軟件的方式形成交換部件,所以也叫軟件交換機,跟傳統的物理交換機相比,虛擬交換機同要具備很多優點:1配置靈活,因爲是軟件實現的,一臺物理服務器上可以配置書十臺或者數百臺虛擬交換機,而且端口數目可以靈活選擇。2成本低,通過軟件的方式可輕易達到10Gbps的交換速度。  所以OVS是一個虛擬交換機,可以用來組成虛擬網絡,虛擬機還有其他類型的不同的架構。

二.虛擬網絡

淺顯的理解就是使用虛擬交換機組成的網絡,就是虛擬網絡(和物理網絡相比),如圖所示:



三.OVS組件

OVS的內部組件,簡單來看,OVS由着三大不封構成:



1.OVSDB-server:OVS的數據庫服務器,用來存儲虛擬交換機的配置信息。它與managerovs-vswitch交換信息使用了OVSDBjson-rpc)的方式。

2.Ovs-vswitchdOVS的核心部件,它和上層controller通信遵從OPENFLOW協議,它與ovsdb-sever通信使用OVSDB協議,它和內核模塊通過netlink通信,它支持多個獨立的datapath(網橋),它通過更改flowtable實現了綁定,和VLAN等功能。

3.ovs kernel module: OVS的內核模塊,處理包交換和隧道,緩存flow,如果在內核的緩存中找到轉發規則則轉發,否則發向用戶空間去處理。

四、OVS結構詳解

      OVS到底由哪些模塊組成,以及個模塊的作用。如圖:

    

ovs-vswitchd 主要模塊,實現switchdaemon,包括一個支持流交換的Linux內核模塊;

ovsdb-server 輕量級數據庫服務器,提供ovs-vswitchd獲取配置信息;

ovs-brcompatd ovs-vswitch替換Linuxbridge,包括獲取bridge ioctlsLinux內核模塊;

ovs-dpctl 用來配置switch內核模塊;一些Scripts and specs 輔助OVS安裝在Citrix XenServer上,作爲默認switch

ovs-vsctl 查詢和更新ovs-vswitchd的配置;

ovs-appctl 發送命令消息,運行相關daemon

ovsdbmonitorGUI工具,可以遠程獲取OVS數據庫和OpenFlow的流表。

此外,OVS也提供了支持OpenFlow的特性實現,包括

ovs-openflowd:一個簡單的OpenFlow交換機;

ovs-controller:一個簡單的OpenFlow控制器;

ovs-ofctl 查詢和控制OpenFlow交換機和控制器;

ovs-pki OpenFlow交換機創建和管理公鑰框架;

ovs-tcpundumptcpdump的補丁,解析OpenFlow的消息;

運行原理:

內核模塊實現了多個“數據路徑”(類似於網橋),每個都可以有多個“vports”(類似於橋內的端口)。每個數據路徑也通過關聯一下流表(flow table)來設置操作,而這些流表中的流都是用戶空間在報文頭和元數據的基礎上映射的關鍵信息,一般的操作都是將數據包轉發

到另一個vport。當一個數據包到達一個vport,內核模塊所做的處理是提取其流的關鍵信息並在流表中查找這些關鍵信息。當有一個匹配的流時它執行對應的操作。如果沒有匹配,它會將數據包送到用戶空間的處理隊列中(作爲處理的一部分,用戶空間可能會設置一個流

用於以後碰到相同類型的數據包可以在內核中執行操作)。

五、示例

1. 物理機器之間通過虛擬交換機


可以看到虛擬機的兩個網卡是虛擬交換機虛擬出來的兩個端口。

2. 一臺物理機上的虛擬機之間的虛擬交換機


發佈了61 篇原創文章 · 獲贊 26 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章