Open VSwitch簡介

OVS簡介數據庫

  OpenvSwitch,簡稱OVS是一個虛擬交換軟件,主要用於虛擬機VM環境,做爲一個虛擬交換機,支持Xen/XenServer, KVM, and VirtualBox多種虛擬化技術。雖然是虛擬交換機,可是其工做原理與物理交換機相似。在虛擬交換機的實現中,其兩端分別鏈接着物理網卡和多塊虛擬網卡,同時虛擬交換機內部會維護一張映射表,根據MAC地址尋找對應的虛擬機鏈路進而完成數據轉發。緩存

  OpenvSwitch是實現虛擬化網絡的重要基礎組件,在OpenStack中利用OpenvSwitch做爲底層部件來完成虛擬網絡提供和租戶網絡管理。OpenvSwitch能夠實現訪問控制功能,經過轉發規則,能夠實現簡單的安全行爲,包括經過、禁止等。安全

 

OVS組件服務器

 

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

ovs-vswitchd: OVS的核心部件,實現switchdaemon,包括一個支持流交換的Linux內核模塊;和上層controller通訊聽從OPENFLOW協議,與ovsdb-server通訊使用OVSDB協議,和內核模塊經過netlink通訊,支持多個獨立的datapath(網橋)。架構

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

ovs-vsctl: 查詢和更新ovs-vswitchd的配置(經過對ovsdb進行配置)框架

ovs-ofctl: 查詢和控制OpenFlow交換機tcp

ovs-appctl: 發送命令消息,對daemon進行控制、查詢ovs-dpctl 用來配置switch內核模塊,一些Scripts and specs 輔助OVS安裝在Citrix XenServer上,做爲默認switch工具

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

ovsdbmonitor GUI工具: 能夠遠程獲取OVS數據庫和OpenFlow的流表。

 

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

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

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

ovs-pkiOpenFlow交換機建立和管理公鑰框架。

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

 

 

工做流程

  支持OpenFlowOVS核心架構主要包括OpenFlow協議支持和數據轉發通路等兩個部分。OVS的數據轉發通路(datapath)主要用於執行數據交換工做,即負責從設備入端口接收數據包並依據流表信息對其進行管理,例如將其轉發至出端口、丟棄或者進行數據包修改。而OVSOpenFlow協議支持則用於實現交換策略,即經過增長、刪除、修改流表項的方式告訴數據轉發通路針對不一樣的數據流採用不一樣的動做。

  報文從端口上來(1),在datapatch中轉發,查詢Flow Table6),若是查到了直接轉出去(7

  若是未查詢到,送到用戶態(2),在vswitchd中查詢軟表,生成精確的flow table下發到kernel(4),而後報文被送回kernel繼續轉發(5),此時會再查詢flow table(6),而後轉發出去(7)

 

·Datapath是在kernel mode

·Datapath裏是精確匹配,計算報文頭的hash與流表進行匹配,匹配到了進行轉發

·Datapath裏未匹配時,送到userspace進行軟件查找轉發,並在datapath裏添加精確匹配流表

·Datapath裏的流會老化

相關文章
相關標籤/搜索