搬遷至 blog.pichuang.com.tw
轉移陣地之後有新的文章會寫在 http://blog.pichuang.com.tw
感謝各位
轉移陣地之後有新的文章會寫在 http://blog.pichuang.com.tw
感謝各位
OpenvSwitch debug 要分三個階段看
大多數說網路不通的人在第一個階段就有問題了, 基本上只要知道 OpenvSwitch 架構和 Flow match 的行為, 就能(較)簡單的進行 Debug, 這篇從第一個階段開始講
透過上圖可以清楚知道 OpenvSwitch 主要分為三個 Componets: kmod_openvswitch, ovs-vswitchd, ovsdb-server
ovs-dpctl show
做觀察不同的 ovs bridge 會分別有不同的 Flow table
, 可以透過 ovs-ofctl show ovs-br
做觀察ovs-vsctl
都是在與 ovsdb-server 溝通, 這點非常重要詳細一點可以參考小弟於 SDNDS-TW Meetup #2 分享的投影片
亦或是 rajdeep , Director, Developer Relations VMware India at VMware India 於 slideshare 發表的投影片
ovs-ctl status
ps aux | grep ovs
/usr/share/openvswitch/scripts/ovs-ctl
這個在安裝的時候並沒有被安裝在 /usr/bin 底下, 如果要用的話可以自行 link 至目錄底下ovsdb-tool show-log [-mmm]
cat /var/log/openvswitch/{ovsdb-server,ovs-vswitchd}.log
--log-file
才會有的資訊, 詳細可以看安裝流程
ovs-appctl vlog/list
做設定ovs-vsctl show
這邊主要處理是由 ovsdb-server 負責
ovs-ofctl show ovs-br
這邊主要處理是由 ovs-vswitchd 負責
ovs-vsctl set bridge ovs-br protocols=OpenFlow10
in_port=1,actions=output:2
裡面所述的數字, 都是從這邊對應的, Controller 能控制的 ofport 也是在 ovs-vswitchd 處理ovs-dpctl show
這邊主要處理是由 datapath 負責
ovs-ofctl show ovs-br
所看到的 ofport 無相關, 但後續在 datapath 中 trace flow 時會需要他各位觀察一下 ovs-ofctl show ovs-br
與 ovs-dpctl show
兩者 interface 及 port number 的關係, 可以發現 ovs-vswitchd 針對綁定的 interface 有自己的 ofport number, 然而相同 interface 在 datapath 又有不同的 number, 所以在 trace flow 要特別注意這類 mapping 問題, 千萬不要弄混
接下來還會有 OpenvSwitch Debug$ Trace flow 的文章, 請讓我繼續拖搞, 謝謝各位
在看本篇之前, 我預設你已經把 OpenWrt 刷好, 也把 OpenvSwitch 安裝好了, 那從現在開始我們就要開始設定 OpenWrt 讓他變成一個 OpenFlow switch, 那如果沒刷過的也別難過, 可以參考 編譯 OpenWrt 來完成編譯, 那如果有需要 .config
的話, 可以參考我的 config
將原先 eth0.{1,2} 切成 5 個 interface eth0.{1,2,3,4,5}, 供 OpenvSwitch 針對 Port 做控制
裡面的 eth0.4 為什麼要特別設定呢? 在先舊的 config 我們都是透過 OpenWrt 替我們建好的 bridge 'lan' (192.168.1.1)來進行連線, 新的設定檔因為把 lan 拿掉, 所以要特別針對某個 interface (例如: eth0.4) 上一個 ip, 好方便連線設定
而這個 interface 之後也不會將它 ovs-vsctl add-port
, 理由是避免你設定錯誤導致整台 AP 進不去的防制手段, 可以視為 Console port
將 /etc/config/wireless 裡面的兩行option disabled 0
remove 之後, 再下 wifi
啟動 wireless
新增 interface 至 ovs-br 做管理
ovs-vsctl add-br ovs-br
ovs-vsctl add-port ovs-br eth0.1
ovs-vsctl add-port ovs-br eth0.2
ovs-vsctl add-port ovs-br eth0.3
ovs-vsctl add-port ovs-br eth0.5
ovs-vsctl add-port ovs-br wlan0
ovs-vsctl add-port ovs-br wlab1
檢查
ovs-vsctl show
ovs-ofctl show ovs-br
ovs-vsctl show
明明有相關資訊, 但是卻不會動, 有過半的可能是因為你的 ovs-vswitchd 沒有啟動, 你下 ovs-ofctl show ovs-br
會毫無反應設定網路是非常重要的事情 "網路不會通, 就不會有 SDN"
讓 ovs-br 連上網路 (Network: 192.168.77.0/24, GW: 192.168.77.1), 這邊採用 in-band 作法, out-of-band 作法之後再另外說
上 ip (例: 192.168.77.111)
ifconfig ovs-br 192.168.77.111
route add default gw 192.168.77.1 ovs-br
檢查 route table
route -n
ping 192.168.77.1
ping 8.8.8.8
ovs-vsctl set-controller ovs-br tcp:x.x.x.x:6633
is_connected: true
, 若無的話, 你上面一定有個步驟弄錯, 再仔細檢查看看到這邊應該大家都可以順利地建立 OpenFlow switch, 那如果有問題的話, 歡迎加入 SDNDS-TW 討論, 我們有很多志同道合的人都在這邊一起努力, 希望大家都能一起加入討論或研究