安裝OpenvSwitch (ovs)


簡介

搭建SDN環境少不了SDN交換機,SDN交換機跟普通交換機最大的區別就是將普通交換機的數據平面和控制平面相分離,SDN交換機只負責數據的轉發,而控制指令則由更上一級的控制器下發。

Open vSwitch(下面簡稱OVS)是一個高質量的、多層虛擬交換機。OVS遵循開源Apache2.0許可,通過可編程擴展,OVS可以實現大規模網絡的自動化(配置、管理、維護),同時支持現有標准管理接口和協議(比如NetFlow、sFlow、SPAN、RSPAN、CLI、LACP、802.1ag等)。此外OVS支持多種linux虛擬化技術,包括Xen/XenServer, KVM,和 VirtualBox等。

本文通過Ubuntu平台安裝部署OVS,並介紹OVS上的一些常用操作,讓讀者進一步了解OpenFLow交換機。

實驗環境

1. 本文基於下列環境安裝:

  • 虛擬機Vmware Workstation 10.0.3;
  • Ubuntu13.10(內核版本3.11);
  • OVS選擇截稿前最新的Open vSwitch 2.3.0版本(2014年8月14日發布)。

2. OVS2.3.0版本最新特性及改進如下:

  • OpenFlow 1.1,1.2,和1.3協議現在在OVS vswitchd中默認啟用。
  • Linux內核數據面現在提供一個優化的流匹配過程的精確匹配緩存。
  • 數據面流現在有部分通配符tranport端口匹配字段。這減少了用戶空間的向上調用,但會增加數據面中不同的掩模數。
  • 提供megaflows在Linux內核下數據平面的操作。
  • 添加IPFIX支持SCTP流和模板ICMPv4 / V6流。
  • Linux內核支持到3.14。
  • 添加dpdk實驗支持。

3. OVS各版本支持的Linux內核如下,可以根據下表選擇適合的Linux系統安裝。

表1. OVS與Linux內核版本對應關系

ovs install-table 1 ovs與linux內核對應關系

4. OVS各模塊簡要介紹如下:

  • ovs-vswitchd:主要模塊,實現switch的daemon,包括一個支持流交換的Linux內核模塊;
  • ovsdb-server:輕量級數據庫服務器,提供ovs-vswitchd獲取配置信息;
  • ovs-dpctl:用來配置switch內核模塊;
  • 一些Scripts and specs 輔助OVS安裝在Citrix XenServer上,作為默認switch;
  • ovs-vsctl:查詢和更新ovs-vswitchd的配置;
  • ovs-appctl:發送命令消息,運行相關daemon。

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

  • ovs-ofctl:查詢和控制OpenFlow交換機和控制器;
  • ovs-pki:OpenFlow交換機創建和管理公鑰框架;
  • ovs-tcpundump:tcpdump的補丁,解析OpenFlow的消息。

准備工作

在正式下載安裝OVS之前我們需要安裝一些系統組件及庫文件以作為OVS正確運行的環境依賴。請切換至root用戶進行操作。

# apt-get update
# apt-get install -y build-essential

 

注:正常運行使用OVS只需要安裝上述依賴即可,如果需要進一步開發OVS可能需要其他環境依賴,可以自行度娘。

部署Open vSwitch 2.3.0

1.下載OVS 2.3.0安裝包。

2. 解壓OVS 2.3.0安裝包。

4. 編譯並安裝OVS 2.3.0。

5. 如果需要OVS支持VLAN功能,還需要加載openvswitch.ko模塊,如果不需要,此步可以忽略。

6. 我們需要安裝並加載構建的內核模塊。

注:若重啟機器導致openvswitch沒有啟動(lsmod |grep openvswitch),如果重新加載。

7. 使用ovsdb工具初始化配置數據庫。

至此,如果沒有報錯的話OVS的部署已經成功完成。如果中間步驟出現問題,請仔細檢查是否按步驟進行或有無單詞拼寫錯誤。

啟動Open vSwitch 2.3.0

1.在啟動OVS之前,我們需要先啟動ovsdb-server配置數據庫。注意后面的命令大部分是由兩個短“-”組成的。

2.首次用ovsdb-tool創建數據庫時需用ovs-vsctl命令初始化下數據庫。

3. 啟動OVS主進程

4. 查看OVS進程是否啟動。

root@ubuntu:/home/chulk/sdn/openvswitch-2.3.1# ps aux|grep ovs
root       1719  0.0  0.2  21212  2092 ?        Ss   02:53   0:00 ovsdb-server -v --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 --log-file
root       1724  0.3  0.2 243068  2452 ?        Ssl  02:53   0:12 ovs-vswitchd --pidfile --detach --log-file
root       2640  0.0  0.0  21072   572 ?        S<s  03:53   0:00 ovsdb-server: monitoring pid 2641 (healthy)    

 

5. 我們可以通過如下命令查看所安裝OVS的版本號。

如果到這步你都沒有問題,那么恭喜,你已經成功安裝並啟動了OVS 2.3.0。下面我們會介紹一些常用的操作命令。

Open vSwitch基本操作

1. OVS連接控制器

如果我們想讓啟動好的OVS連接一個控制器,我們可以按如下步驟做。相關控制器的安裝部署可以參考之前的技術專欄相關文章:《常用SDN控制器安裝部署之Floodlight篇》,《SDN常用控制器安裝部署之POX篇》,《OpenDaylight與Mininet應用實戰之基本環境搭建(一)》。這里我們以Floodlight控制器為例。

首先添加一個名為br0的網橋。

列出所有網橋。

啟用該網橋。

此時再用ifconfig命令能在網絡設備列表里看到名為br0的網橋即啟動成功。

root@ubuntu:/home/chulk/sdn/openvswitch-2.3.1# ifconfig -a
br0       Link encap:Ethernet  HWaddr a6:0c:7f:2e:0a:47  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 00:50:56:2c:4f:1d  
          inet addr:172.16.26.136  Bcast:172.16.26.255  Mask:255.255.255.128
          inet6 addr: fe80::250:56ff:fe2c:4f1d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21635 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3669 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3550892 (3.5 MB)  TX bytes:536821 (536.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:6197 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6197 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1925113 (1.9 MB)  TX bytes:1925113 (1.9 MB)

ovs-system Link encap:Ethernet  HWaddr fa:6e:dd:da:2e:a7  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

我們可以用下面的命令將br0網橋連接至一個指定的控制器。

這里本文使用的控制器地址為172.16.26.136,端口為6653。即:

查看OVS是否連接上控制器。

 

2. 交換機相關操作

查看虛擬交換機的信息。

 

查看br0上各交換機端口的狀態。

 

查看br0上所有的流規則

3. 網橋管理

之前已經添加了一個名為br0的網橋。

現在可以將網絡接口eth0掛接到網橋br0上。

列出掛接到網橋br0上的所有網絡接口。

查看結果,如圖所示:

ovs install-操作-07

刪除網橋br0上掛接的eth0網絡接口。

 

刪除名為br0的網橋。

4. OVS其它常用命令及選項如下表所示:

表2. ovs-vsctl常用命令及選項

ovs install-table1 ovs-vsctl命令

表3. ovs-ofctl常用命令及選項

ovs install-table2 ovs-ofctl命令

 

    參考:http://www.sdnlab.com/3166.html

       編譯安裝或升級 :源代碼目錄  INSTALL

   ubuntu apt-get 安裝及操作: http://blog.csdn.net/sdnexplorer/article/details/26053713


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM