- 事前準備:
- Autoconf version 2.63
- Automake version 1.10
- libtool version 2.4
- perl version 5.10.1
- python 2.x for x >=4
- 準備Kernel Source :
- 先確認Kernel版本,並下載 Source code
- 編譯Modules
#apt-get install autoconf automake libtool uuid
#ln -s /usr/bin/uuid /usr/bin/uuidgen
#ln -s /usr/bin/uuid /usr/bin/uuidgen
#apt-get install linux-source-3.18
#ln -s /usr/src/linux-source-3.18 /lib/modules/3.6.18+/build
#cd /lib/modules/3.6.18+/build
#make mrproper
#gzip -dc /proc/config.gz > .config
#make modules_prepare
#cd /lib/modules/3.6.18+/build
#make mrproper
#gzip -dc /proc/config.gz > .config
#make modules_prepare
- 安裝OVS:
#git clone https://github.com/openvswitch/ovs
#cd ovs
#./boot.sh
#./configure --with-linux=/lib/modules/`uname -r`/build --prefix=/usr
#make
#make install
#make modules_install
#modprobe openvswitch
#cp debian/openvswitch-testcontroller.init /etc/init.d/openvswitch-testcontroller
#cp debian/openvswitch-switch.init /etc/init.d/openvswitch-switch
#ln -s /etc/init.d/openvswitch-switch /etc/rc2.d/S20openvswitch-switch
#ln -s /etc/init.d/openvswitch-switch /etc/rc0.d/K80openvswitch-switch
#cd ovs
#./boot.sh
#./configure --with-linux=/lib/modules/`uname -r`/build --prefix=/usr
#make
#make install
#make modules_install
#modprobe openvswitch
#cp debian/openvswitch-testcontroller.init /etc/init.d/openvswitch-testcontroller
#cp debian/openvswitch-switch.init /etc/init.d/openvswitch-switch
#ln -s /etc/init.d/openvswitch-switch /etc/rc2.d/S20openvswitch-switch
#ln -s /etc/init.d/openvswitch-switch /etc/rc0.d/K80openvswitch-switch
- 建構OVS
- 網卡定義 (外接兩張USB網卡)
eth0:用於設定Controllereth1:Switch Port 1eth2:Switch Port 2 - 設定OVS
- 建立 bridge#ovs-vsctl add-br ovs-br0
- 加入 Port 到 bridge#ovs-vsctl add-port ovs-br0 eth1
#ovs-vsctl add-port ovs-br0 eth2 - 設定 OVS 支援 Open Flow 13#ovs-vsctl set bridge ovs-br0 protocols=OpenFlow13
-
設定 Controller IP#ovs-vsctl set-controller ovs-br0 tcp:127.0.0.1:6633
- 設定 Fail Mode (standalone|secure)#ovs-vsctl set-fail-mode ovs-br0 standalone
設定Standalone:表示連線至controller失敗時,而OVS則會執行ovs-vswitchd,成為一個普通的Switch功能
設定Secure:表示連線至controller失敗時,而OVS則會停止所有的封包運行 - 顯示ovs狀態#ovs-vsctl show
- 顯示open flow
#ovs-ofctl dump-flows br0 -O openflow13
圖一 : 架構圖 |
Note :
如果啟動發生:unix:/usr/local/var/run/openvswitch/db.sock: database connection failed (no such file or directory)。解決方法如下:
Reference :#!/bin/bash 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 ovs-vsctl --no-wait init ovs-vswitchd --pidfile --detach
[1] openvswitch
[2] Build Kernel Modules
[3] 如何將Linux打造成OpenFlow Switch:Openvswitch
[4] Openvswitch + OpenFlow: Let’s get started
作者已經移除這則留言。
回覆刪除OVS沒有連上Controller的可能性非常多,例如1. Controller的Port 6633啟動使否成功。2.Controller的那台主機Firewall是否把擋掉OVS的連線。3. OVS的設定是否符合Controller等等奇怪的原因。
刪除一般連不上,我會先確認以下幾個項目
1. 確認Controller的Port有正確啟動(程式有啟動,不代表就是正常運作)
2. 從OVS那台主機ping Controller的主機確認可以ping(確認OVS與Controller彼此是互通的)
3. 從OVS那台使用telnet嘗試連到Controller 6633是否會成功(確認從OVS與Controller可連上)
4. 以上則是基本的確認Controller與OVS中間的通道是透通的,若以上都沒問題,那就可以檢查OVS與Controller之間的設定是否正確。
希望以上可以幫助您。
作者已經移除這則留言。
刪除不好意思 請問您
回覆刪除ln -s /usr/src/linux-source-3.18 /lib/modules/3.6.18+/build
我執行完後
出現沒有/lib/modules/3.6.18+/build 此一檔案或目錄 該如何處理