實驗目的
1、初步認識Open vSwitch,瞭解Open vSwitch的背景、功能和基本組成結構。
2、學會安裝部署Open vSwitch,能夠獨立解決安裝部署中遇到的問題。
任務環境
設備名稱 | 軟件環境 | 硬件環境 |
---|---|---|
主機 | Ubuntu 14.04命令行版 | CPU:1核 內存:2G 磁盤:20G |
注:系統默認的賬戶爲root/root@openlab,openlab/user@openlab。
任務內容
1、瞭解Open vSwitch的版本信息以及安裝需求,爲安裝Open vSwitch做好充分的準備工作,然後按照教程實現源碼安裝Open vSwitch。
2、配置、運行Open vSwitch。其中主要配置的就是Open vSwitch的核心組件,包括ovsdb-Server、ovs-vswitchd和ovs kernel module。
實驗原理
Open vSwitch是由Nicira Networks主導,運行在虛擬化平臺(例如KVM,Xen)上的虛擬交換機。Open vSwitch基於C語言開發,遵循Apache 2.0許可證,能同時支持多種標準的管理接口和協議(比如NetFlow、sFlow、SPAN、RSPAN、CLI、LACP、802.1ag等)。Open vSwitch通過OpenFlow協議由統一的控制器管理,從而實現對接入的虛擬機(或設備)的網絡聯通。整體組網結構如下圖:
Open vSwitch內部架構圖如下所示:
Open vSwitch各模塊簡要介紹如下:
1、ovs-vswtichd:主要模塊,實現vswitch的守候進程daemon,包括一個支持流交換的Linux內核模塊。
2、ovsdb-server:輕量級數據庫服務器,保存配置信息,ovs-vswitchd通過這個數據庫獲取配置信息。
3、ovs-dpctl:用來配置vswitch內核模塊的一個工具。
4、ovs-vsctl:主要是獲取或者更改ovs-vswitchd的配置信息,此工具操作的時候會更新ovsdb-server中的數據庫。
5、ovs-appctl:一個向ovs-vswtichd的守護進程發送命令的的程序。
6、datapath:內核模塊,根據流表匹配結果做相應處理。
7、ovs-ofctl:查詢和控制OpenFlow虛擬交換機的流表。
Open vSwitch版本及其相應的內核要求如下,請根據自己的內核版本選擇相應的Open vSwitch版本。
Open vSwitch | Linux kernel |
---|---|
1.4.x | 2.6.18 to 3.2 |
1.5.x | 2.6.18 to 3.2 |
1.6.x | 2.6.18 to 3.2 |
1.7.x | 2.6.18 to 3.3 |
1.8.x | 2.6.18 to 3.4 |
1.9.x | 2.6.18 to 3.8 |
1.10.x | 2.6.18 to 3.8 |
2.0.x | 2.6.18 to 3.8 |
2.1.x | 2.6.18 to 3.10 |
2.2.x | 2.6.18 to 3.11 |
2.3.x | 2.6.18 to 3.14 |
2.4.x | 2.6.18 to 4.0 |
2.5.x | 2.6.18 to 4.3 |
2.6.x | 3.10 to 4.7 |
2.7.x | 3.10 to 4.9 |
實驗步驟
一、安裝Open vSwitch
步驟1 登錄主機,執行ifconfig命令查看主機的IP地址,如下圖所示。
步驟2 執行uname -a命令查看當前系統內核版本,如下圖所示。
由上圖可知,當前系統內核版本是3.2.0。
步驟3 執行find / -name openvswitch-2.3.2.tar.gz命令查找Open vSwitch安裝包,如下圖所示。
由上圖可知,Open vSwitch安裝包在“/home/openlab/lab”目錄下。
步驟4 執行以下命令,進入Open vSwitch安裝包目錄,解壓Open vSwitch源文件,並進入解壓後的目錄。
# cd /home/openlab/lab
# tar -zxvf openvswitch-2.3.2.tar.gz
# cd openvswitch-2.3.2
步驟5 執行以下命令,生成Makefile文件。
# ./configure --with-linux=/lib/modules/3.2.0-29-generic-pae/build
使用—with-linux參數指定內核源碼編譯目錄,不同環境的Linux版本不一樣,“3.2.0-29-generic-pae”是通過命令“ls /lib/modules/”查看得到的,請根據實際查詢情況修改。
步驟6 執行以下命令編譯、安裝Open vSwitch。
# make
# make install
說明:這個過程有點漫長,請耐心等待,並注意打印出的錯誤提示。
二、配置Open vSwitch
步驟1 執行以下命令,加載Open vSwitch內核模塊openvswitch.ko。
# insmod ./datapath/linux/openvswitch.ko
說明:注意以上命令使用的是相對路徑,默認處於openvswitch-2.3.2目錄下。加載內核模塊如果出現“File exists“錯誤請忽略,如果提示“unknown symbol in module“,解決方法參見異常處理。
步驟2 執行以下命令建立Open vSwitch配置文件和數據庫,並根據ovsdb模板vswitch.ovsschema創建ovsdb數據庫openvswitch.conf.db,用於存儲虛擬交換機的配置信息。
# mkdir -p /usr/local/etc/openvswitch
# ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
步驟3 執行以下命令啓動ovsdb數據庫。默認支持SSL,如果在build openvswitch時disable了SSL 支持,則省略—private-key,—certificate,—bootstrap-ca-cert相關命令。
# ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach
說明:默認Open vSwitch版本爲2.3.2,與Open vSwitch2.0.0之前的版本的啓動命令有所出入。
步驟4 執行以下命令,查看ovsdb數據是否啓動成功。
# ps -ef|grep ovsdb-server
步驟5 執行以下命令,初始化數據庫。
# ovs-vsctl --no-wait init
步驟6 執行以下命令,啓動Open vSwitch daemon,連接到同樣的Unix domain socket上。
# ovs-vswitchd --pidfile --detach
步驟7 Open vSwitch已經安裝部署完畢,執行以下命令,查看當前ovs進程。
# ps –ef|grep ovs
步驟8 執行ovs-vsct1 show命令查看當前ovs的版本信息,如下圖所示。
三、異常處理
加載Open vSwitch內核模塊openvswitch.ko時,可能會出現如下問題。
這個問題是由於openvswitch.ko依賴的模塊沒有加載,首先查找openvswitch.ko的依賴模塊:
# modinfo ./datapath/linux/openvswitch.ko |grep depends
然後,根據查找結果加載這些依賴模塊:
# modprobe libcrc32c
# modprobe gre
當依賴模塊都加載後,就可以加載openvswitch.ko模塊了。
# insmod ./datapath/linux/openvswitch.ko