在看本篇之前, 我預設你已經把 OpenWrt 刷好, 也把 OpenvSwitch 安裝好了, 那從現在開始我們就要開始設定 OpenWrt 讓他變成一個 OpenFlow switch, 那如果沒刷過的也別難過, 可以參考 編譯 OpenWrt 來完成編譯, 那如果有需要 .config
的話, 可以參考我的 config
環境
DLink DIR-835
5 LAN Port
2 WLAN Port
這邊要稱讚一下他的 recovery mode 做得還不錯, 有 web 上傳介面, 節省很多時間
切出 5 個 interface
將原先 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
開啟 WLAN
將 /etc/config/wireless 裡面的兩行option disabled 0
remove 之後, 再下 wifi
啟動 wireless
設定 OpenvSwitch
新增 interface 至 ovs-br 做管理
eth0.4 不加進去的理由已經寫在上面
檢查
這邊要注意所有的 interface 都應該要被正確的顯示, 尤其是 ovs-ofctl 這裡面的資訊, 大家最常遇到的問題是
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)
檢查 route table
檢查網路狀況
設定 controller 連線
應該要可以看到
is_connected: true
, 若無的話, 你上面一定有個步驟弄錯, 再仔細檢查看看