Open VSwitch

本文主要介紹Open VSwitch - 虛擬交換機的概述內容,閱讀本文能夠對OVS(Open VSwitch)有一個大體的瞭解。那麼本文主要回答了這樣幾個問題:數據庫

1. 虛擬交換機是什麼,幹什麼?編程

2. 虛擬網絡和OVS緩存

3. OVS的組件有哪些?服務器

4. 使用OVS建立一個網絡拓撲網絡

5. 示例架構

 

1、 Open VSwitch是什麼

        OVS是一個高質量的,多層虛擬交換機(網絡分層的層),其目的是讓大規模網絡自動化能夠經過編程擴展,同時仍然支持標準的管理接口和協議:NetFlow. SFlow ... 等,而且它還支持多個物理機的分佈式環境。詳情請見http://openvswitch.org  /  http://lamoop.com/post/2013-11-18/40060149263app

        那什麼又是虛擬交換呢?就是,利用軟件的方式造成交換部件,因此也叫軟件交換機,跟傳統的物理交換機相比,虛擬交換機同要具有不少有點:1.配置靈活,由於是軟件實現的,一臺物理服務器上能夠配置數十太或者數百臺虛擬交換機,並且端口數目能夠靈活選擇  2. 成本低廉,經過軟件的方式可輕易達到10Gbps的交換速度。框架

因此OVS是一個虛擬交換機,能夠用來組成虛擬網絡,虛擬機還有其餘的類型不一樣的架構。tcp

 

2、虛擬網絡 

淺顯的理解就是 使用虛擬交換機組成的網絡,就是虛擬網絡(和物理網絡相比) ,如圖所示: 綠色虛線內組成的就是一個虛擬網絡了。其虛擬機之間的信息交換都經過虛擬交換機。分佈式


3、 OVS組件

有了全局的概念後,咱們來詳細瞭解OVS的內部組件。簡單來看,OVS由這三大部分構成:

1. ovsdb-sever:  OVS的數據庫服務器,用來存儲虛擬交換機的配置信息。它於manager和ovs-vswitchd交換信息使用了OVSDB(JSON-RPC)的方式。

2. ovs-vswitchd: OVS的核心部件,它和上層controller通訊聽從OPENFLOW協議,它與ovsdb-server通訊使用OVSDB協議,它和內核模塊經過netlink通訊,它支持多個獨立的datapath(網橋),它經過更改flow table實現了綁定,和VLAN等功能。

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

4、OVS結構詳解

有個OVS大概的瞭解,咱們看看OVS到底由哪些模塊組成,以及個模塊的做用。如圖:
 

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

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

ovs-brcompatd 讓ovs-vswitch替換Linuxbridge,包括獲取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」(相似於橋內的端口)。每一個數據路徑也經過關聯一下流表

(flow table)來設置操做,而這些流表中的流都是用戶空間在報文頭和元數據的基礎上映射的關鍵信息,通常的操做都是將數據包轉發

到另外一個vport。當一個數據包到達一個vport,內核模塊所作的處理是提取其流的關鍵信息並在流表中查找這些關鍵信息。當有一個匹配

的流時它執行對應的操做。若是沒有匹配,它會將數據包送到用戶空間的處理隊列中(做爲處理的一部分,用戶空間可能會設置一個流

用於之後碰到相同類型的數據包能夠在內核中執行操做)。

5、示例

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

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

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

 

轉載http://blog.csdn.net/sqx2011/article/details/39344869

相關文章
相關標籤/搜索