前言OVS是一種開源的軟體交換機,可安裝於通用的虛擬伺服器環境中,在虛擬環境中單個、多個物理機上的不同虛擬主機都需要通過OVS實現數據交換。
OVS包含三個重要的組件:ovsdb-server、ovs-vswitchd、以及OVS內核模塊,
ovsdb-server:OVS的資料庫服務進程,用於存儲虛擬交換機的配置信息(比如網橋、埠等),為控制器和ovs-vswitchd提供OVSDB操作介面。
ovs-vswitchd:OVS的核心組件,負責保存和管理控制器下發的所有流表,為OVS的內核模塊提供流表查詢功能,並為控制器提供OpenFlow協議的操作介面。
OVS內核模塊:緩存某些常用流表,並負責數據包轉發,當遇到無法匹配的報文,該模塊將向ovs-vswitchd發送pack-in請求,獲取報文處理指令。
其架構為:
OVS提供的命令:
ovs-dpctl 管理OVS內核模塊,提供緩存流表的操作方法
ovs-vsctl 管理ovsdb-server的配置,提供OVSDB的配置方法,包括創建和刪除網橋、埠等
ovs-appctl 管理ovs-vswitchd的日誌輸出
ovs-ofctl 管理ovs-vswitchd的流表配置方法
ovs-pki 創建和管理公鑰
ovs-tcpundump 抓取並解析OpenFlow消息
ovsdb-tool 創建和管理ovsdb
一、OVSDB介紹開放虛擬交換機資料庫(OpenvSwitch Database,OVSDB)是開放虛擬交換機中保存的各種配置信息(如網橋、埠)的資料庫,是針對OpenvSwitch開發的輕量級資料庫。
OVSDB資料庫由兩個主要部分構成,即ovsdb-server和ovsdb-client,Ovsdb-server是OVS的資料庫伺服器端,位於Open vSwitch本地。Ovsdb-client則為OVS資料庫客戶端,其通過OVSDB 管理協議(Open vSwitch Database Management Protocol)向ovsdb-server端發送資料庫配置和查詢的命令,即ovs-vsctl命令。因此,ovs-client又被稱為管理者。ovsdb-client通常運行在Open vSwitch 本地,即管理員可以在OVS本地以命令行方式輸入資料庫配置和查詢命令。另外,ovsdb-client也可以部署在遠端,從而實現對ovsdb-server的遠程配置。目前在Opendaylight控制器中也有一個單獨的子項目實現此管理協議,即OVSDB(比如ovsdb-release-lithium-sr3)。
OVSDB是一個輕量級的資料庫,其實它只是一個JSON文件,默認路徑為/etc/openvswitch/conf.db。記錄的網橋、埠、QOS等網路配置信息是以JSON格式(schema)保存的,通常schema在/usr/share/openvswitch/vswitch.ovsschema中。
1.1 OVSDB管理協議OVSDB管理協議(OVSDB management protocol)是VMware公司提出的負責管理OVS資料庫的協議,OVSDB管理協議定義了一套RPC介面,用戶可通過遠程調用的方式管理OVSDB。
其中transact是OVSDB管理協議中比較重要的操作方法,它是RPC請求的參數中提供資料庫的增、刪、改、查等常用操作:
ODL中包括三個OVSDB插件,OVSDB southbound、northbound、openstack,他們的邏輯關係如下圖所示:
2.1 OVSDB的不兼容性
These 2 ovsdb features cannot be installed at the same time: odl-ovsdb-plugin and odl-ovsdb-southbound-impl that is so, because they will instantiate their own ovsdb-library, which listens on port 6640 (by default).
When odl-ovsdb-openstack is used, it assumes no other application in odl is managing network-virt. In other words, it is assumed that if ovsdb is using odl-neutron-service, no other feature in odl is providing the same net-virt service.
2.2 OVSDB南向插件的使用
1、安裝南向插件
Shell
ovsdb插件的被動連接方式下(也就是控制器的ovsdb插件當做伺服器,設備當做客戶端),md-sal de operational 資料庫的OVS的node-id格式為ovsdb://uuid//{{uuid of OVS}};主動連接模式下,OVS的node-id格式為 ovsdb: //{{ip : port}}
2、測試ovsdb插件的被動連接方式,在終端運行
Shell
通過curl能夠看到ovsdb節點信息。
Shell
3、測試ovsdb插件的主動連接方式,在終端運行
Shell
此時通過postman設置odl控制器來連接ovsdb:
可以通過web看到:
參考資料
OpenDaylight OVSDB架構:
https://wiki.opendaylight.org/view/OVSDB:Developer_Guide#OpenDaylight_OVSDB_Architecture
OVSDB MDSAL南向:https://wiki.opendaylight.org/view/OVSDB:MDSAL_Southbound
基於OpenDaylight和OVSDB搭建VxLAN網路:http://www.sdnlab.com/15030.html
OVSDB與ODL Lithium版本集成測試: