西南民族大學(xué)計算機科學(xué)與技術(shù)學(xué)院 王 磊
在傳統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)中,部署網(wǎng)絡(luò)后,若想進(jìn)行修改,將會涉及到諸多網(wǎng)絡(luò)設(shè)備,如交換機、路由器等,而由于各個廠家支持的標(biāo)準(zhǔn)不甚統(tǒng)一,導(dǎo)致修改這些設(shè)備配置的過程十分繁瑣。在這種情況下,SDN(Software-Defined Networking,軟件定義網(wǎng)絡(luò))這種新型網(wǎng)絡(luò)架構(gòu)的提出就顯得尤為重要。
SDN采用數(shù)控分離的思想,把網(wǎng)絡(luò)設(shè)備的控制層和數(shù)據(jù)轉(zhuǎn)發(fā)層分離開來,核心技術(shù)運用了OpenFlow新型網(wǎng)絡(luò)交換模型,實現(xiàn)對網(wǎng)絡(luò)流量的靈活控制。同時,SDN網(wǎng)絡(luò)軟件可自主編程的特性,給予這一新型網(wǎng)絡(luò)體系架構(gòu)巨大的潛力和發(fā)展前景,形成更為開放的體系結(jié)構(gòu),賦予了網(wǎng)絡(luò)資源更豐富的內(nèi)涵。
本設(shè)計(OVS Pi)在SDN網(wǎng)絡(luò)體系架構(gòu)的基礎(chǔ)上,結(jié)合樹莓派(Raspberry Pi)、OVS(Open vSwitch)虛擬交換機技術(shù)、Ad Hoc技術(shù)以及GRE(Generic Routing Encapsulation,通用路由封裝)技術(shù)等,提出了將SDN網(wǎng)絡(luò)無線化的發(fā)展方向。OVS技術(shù)的加入,能夠以虛擬交換機的形式,取代SDN網(wǎng)絡(luò)中昂貴的支持OpenFlow協(xié)議的交換機。采用Ad Hoc技術(shù),使得樹莓派之間以無線的形式連接,更好的適應(yīng)各種狀況和地形。采用GRE隧道技術(shù),將整個網(wǎng)絡(luò)連通,使得整體網(wǎng)絡(luò)受控制器控制,各網(wǎng)絡(luò)節(jié)點間在受控情況下實現(xiàn)自由通訊。這為未來的SDN網(wǎng)絡(luò)發(fā)展提出了新的可能。
在傳統(tǒng)網(wǎng)絡(luò)中是以TCP/IP為核心的,對網(wǎng)絡(luò)轉(zhuǎn)發(fā)策略的控制和數(shù)據(jù)的轉(zhuǎn)發(fā)都集中在網(wǎng)絡(luò)中的同一個設(shè)備上,當(dāng)需要對整個網(wǎng)絡(luò)策略進(jìn)行調(diào)整,或要求獲取網(wǎng)絡(luò)中某些資源信息時,網(wǎng)絡(luò)很難準(zhǔn)確、快速地提供給網(wǎng)絡(luò)管理人員和網(wǎng)絡(luò)開發(fā)人員準(zhǔn)確的網(wǎng)絡(luò)動態(tài)信息。而SDN網(wǎng)絡(luò)體系架構(gòu)的提出能夠解決這一問題,它通過OpenFlow這一核心技術(shù)將網(wǎng)絡(luò)設(shè)備控制層與數(shù)據(jù)轉(zhuǎn)發(fā)層分離開來,實現(xiàn)了網(wǎng)絡(luò)的靈活編程化。較傳統(tǒng)網(wǎng)絡(luò)相比SDN網(wǎng)絡(luò)架構(gòu)在邏輯上更簡單,方便及時響應(yīng)網(wǎng)絡(luò)變化,并據(jù)此做出相應(yīng)網(wǎng)絡(luò)策略。
Ad Hoc技術(shù)是點對點的對等式網(wǎng)絡(luò),沒有中心控制節(jié)點,所有節(jié)點地位平等。在本設(shè)計中,主要利用其無線和地位平等的特性。無線能夠使得樹莓派間以無線方式連接,解決有線網(wǎng)絡(luò)中的距離限制。地位平等則與SDN中的交換機相對應(yīng),在SDN中,所有的交換機地位也是平等的,只負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)即可。
本設(shè)計中涉及的OVS(Open vSwitch)虛擬交換機技術(shù),能夠通過軟件形式虛擬化交換機的部件,創(chuàng)建虛擬網(wǎng)橋、虛擬端口,并將物理網(wǎng)卡與虛擬端口綁定,以達(dá)到實現(xiàn)交換機功能的目的。將樹莓派和SDN結(jié)合起來,組建小型無線化的SDN網(wǎng)絡(luò)。利用樹莓派造價低廉、功能強大的優(yōu)點,通過在樹莓派上部署OVS虛擬交換機的方式,將樹莓派改造成SDN網(wǎng)絡(luò)中的交換機,在降低SDN組網(wǎng)的成本的基礎(chǔ)上,使得本設(shè)計不僅具有實驗價值,也能夠有市場價值。有線SDN網(wǎng)絡(luò)的部署能夠解決數(shù)控分離的問題,而SDN網(wǎng)絡(luò)的無線化,則是在繼承SDN數(shù)控分離思想的基礎(chǔ)上做出的大膽嘗試,這樣的模式將能夠滿足在野外、狹小空間、網(wǎng)絡(luò)覆蓋中斷時的通訊需求。如:實時且移動性的監(jiān)控農(nóng)牧區(qū)因受氣候和放牧影響而引起的草場退化情況。
本設(shè)計的研究目標(biāo)為:(1)結(jié)合樹莓派和OVS技術(shù),在樹莓派上進(jìn)行編程和軟件配置。利用OVS的軟件功能,創(chuàng)建虛擬網(wǎng)橋、虛擬端口,并將物理網(wǎng)卡與虛擬端口綁定,實現(xiàn)SDN交換機的功能,使得樹莓派以交換機的身份參與到SDN網(wǎng)絡(luò)中,大大降低組建小型SDN網(wǎng)絡(luò)的成本,并且在減少體積、提高環(huán)境適用性等方向?qū)崿F(xiàn)優(yōu)化。(2)結(jié)合OVS Pi和Ad Hoc技術(shù),對現(xiàn)有SDN網(wǎng)絡(luò)的模式進(jìn)行創(chuàng)新,使樹莓派之間以Ad Hoc模式連接,嘗試組建無線化SDN網(wǎng)絡(luò),大大提升原本有線模式下的距離限制。(3)實現(xiàn)無線SDN網(wǎng)絡(luò)的靈活配置。將OVS配置、網(wǎng)卡配置等以腳本形式完成,實現(xiàn)半自動化網(wǎng)絡(luò)配置,降低網(wǎng)絡(luò)管理員的負(fù)擔(dān),并且實現(xiàn)開機自動加載配置,不必進(jìn)行額外操作即可連通網(wǎng)絡(luò)。
由于本設(shè)計中樹莓派采用的是基于Debian9的Jessie系統(tǒng),而主機則是Windows 8.0和Windows XP系統(tǒng),因此網(wǎng)卡配置部分也略有不同。
(1)樹莓派無線網(wǎng)卡配置
由于樹莓派間要以Ad Hoc模式進(jìn)行連接,因此要先對樹莓派的無線網(wǎng)卡做出相應(yīng)的配置。首先使用ifconfig -a命令,查看無線網(wǎng)卡名稱。(本設(shè)計中以樹莓派自帶無線網(wǎng)卡wlan0為配置對象,擴展的USB無線網(wǎng)卡wlan1連接WIFI,以供PuTTY連接。)確定名稱(wlan0)后,將該網(wǎng)卡設(shè)置為Ad Hoc模式,配置wireless-essid為Ad-Hoc,wireless-mode為Ad- Hoc,wireless-channel為3,并配置IP為10.0.0.2、BroadCast為10.0.0.255、NetMask為255.255.255.0、NetWork為10.0.0.0。Pi_2網(wǎng)卡配置除IP變?yōu)?0.0.0.3以外,其他均相同,不再贅述。配置完成后,使用ifconfig wlan0命令查看wlan0的網(wǎng)卡配置是否正確,然后使用iwconfig wlan0命令查看無線網(wǎng)卡wlan0的具體配置情況,如圖1和圖2所示,觀察到ESSID為ad-hoc,Mode為Ad-Hoc,且Pi_1與Pi_2的Cell值相同,則說明Ad Hoc模式的Pi_1與Pi_2的無線網(wǎng)卡已經(jīng)成功配對。
圖1 Pi_1 iwconfig查看wlan0及Cell值
圖2 Pi_2 iwconfig查看wlan0及Cell值
(2)主機有線網(wǎng)卡配置
本設(shè)計中,為了確保通訊成功,所有主機所在網(wǎng)段為10.0.1.0,IP為10.0.1.X(X:1~254)。在Host_1和Host_2上修改相關(guān)的IP配置,將IP地址分別設(shè)置為10.0.1.2和10.0.1.3,子網(wǎng)掩碼均設(shè)置為為255.255.255.0。網(wǎng)關(guān)及DNS不做配置。
此部分配置以Pi_1為例,Pi_2配置類似。
(1)網(wǎng)橋配置
在同一個樹莓派上通過建立并配置多個虛擬網(wǎng)橋,完成端口數(shù)據(jù)的轉(zhuǎn)發(fā)、丟棄以及配置GRE通道等操作,達(dá)到實現(xiàn)交換機功能的目的。具體配置的網(wǎng)橋數(shù)量與網(wǎng)絡(luò)規(guī)模大小相關(guān),需要針對不同規(guī)模進(jìn)行修改。由于本次測試采用兩臺樹莓派進(jìn)行,因此只需要建立兩個網(wǎng)橋br0和br1即可。
設(shè)置br0端口IP為20.0.0.2/24。由于本次測試所用控制器為Pi_1上開啟的Floodlight,因此,設(shè)置網(wǎng)橋br0遠(yuǎn)程控制器IP為10.0.0.2,端口為6653。
設(shè)置br1端口IP為30.0.0.2/24。同樣,設(shè)置網(wǎng)橋br1遠(yuǎn)程控制器IP為10.0.0.2,端口為6653。
(2)掛載網(wǎng)卡
將無線網(wǎng)卡(wlan0)掛載到br0上。采用OVS自身的命令addport,將wlan0掛載到網(wǎng)橋br0上,使得OVS Pi能夠通過網(wǎng)橋br0控制數(shù)據(jù)從wlan0端口通過。
將有線網(wǎng)卡(eth0/enxb827eb649b1c)掛載到br1上。采用OVS自身的命令add-port,將eth0掛載到網(wǎng)橋br1上,使得OVS Pi能夠控制從br1上的eth0端口進(jìn)出的數(shù)據(jù)。
(3) GRE通道配置
由于不連續(xù)的子網(wǎng)無法相互通信,而本設(shè)計實現(xiàn)時在不同樹莓派上的OVS配置的網(wǎng)橋的端口IP就屬于非連續(xù)子網(wǎng),因此如果不做任何操作,它們之間是無法轉(zhuǎn)發(fā)數(shù)據(jù)的。而GRE是VPN的第三層隧道協(xié)議,GRE通道的建立,就能很好的解決這個問題。為此在不同樹莓派上配置OVS時,需要在網(wǎng)橋中分別配置指向?qū)Ψ降腉RE通道。
由于要借助wlan0組成的Ad Hoc網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通訊,因此,將網(wǎng)橋br0的wlan0端口模式修改為GRE模式,建立GRE通道,指向?qū)Χ藈lan0的IP。
為了使br1與對端樹莓派的網(wǎng)橋相互通訊,需要在網(wǎng)橋br1上建立虛擬端口gre1,并配置為GRE模式,指向?qū)Χ司W(wǎng)橋br0的虛擬端口br0的IP。這樣就能夠打通所有網(wǎng)橋間的通信,使網(wǎng)絡(luò)實現(xiàn)互通互聯(lián)。
在測試前要首先清除之前的配置,運行sudo ovs-vsctl del-br br0和sudo ovs-vsctl del-br br1命令,并用ifconfig命令和sudo ovs-vsctl show命令檢測是否刪除成功。在本次測試過程中,該小型SDN網(wǎng)絡(luò)拓?fù)鋱D如下圖3所示:
圖3 測試網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)鋱D
進(jìn)入floodlight/ 目錄下運行java -jar target/floodlight.jar開啟SDN控制器Floodlight。在開啟控制器的樹莓派上打開瀏覽器,進(jìn)入Floodlight用戶頁面,地址為http://localhost:8080/ui/index.html。
下面將詳細(xì)配置Pi_1的OVS配置,Pi_2的配置與Pi_1相近,不再贅述。首先建立網(wǎng)橋br0、br1,設(shè)置br0端口IP為20.0.0.2/24,設(shè)置網(wǎng)橋br0遠(yuǎn)程控制器IP為10.0.0.2,端口為6653,設(shè)置br1端口IP為30.0.0.2/24,網(wǎng)橋br1遠(yuǎn)程控制器IP為10.0.0.2,端口為6653。將無線網(wǎng)卡(wlan0)掛載到br0上。將有線網(wǎng)卡掛載到br1上。
在網(wǎng)橋br0的wlan0端口建立gre通道,指向?qū)Χ藈lan0的IP。在網(wǎng)橋br1上建立虛擬端口gre1,并配置為gre模式,指向?qū)Χ司W(wǎng)橋br0的虛擬端口br0的IP。
完成上述配置后,我們使用sudo ovs-vsctl show命令查看Pi_1當(dāng)前的配置信息如圖4所示。
整體配置結(jié)束后,使用Ping命令進(jìn)行通訊測試。首先進(jìn)行交換機之間的Ping測試。
Pi_1 ping Pi_2 br0。在Pi_1上執(zhí)行命令ping 20.0.0.3 -c 4。
Pi_1 ping Pi_2 br1。在Pi_1上執(zhí)行命令ping 30.0.0.3 -c 4。
Pi_1 ping Pi_2 wlan0。在Pi_1上執(zhí)行命令ping 10.0.0.3 -c 4。
然后進(jìn)行主機之間的Ping測試。Host_1 Ping Host_2。在Host_1上執(zhí)行命令ping 10.0.1.3。
Host_2 Ping Host_1。在Host_2上執(zhí)行命令ping 10.0.1.2。
圖4 Pi_1 OVS配置
利用Curl工具,添加流表,達(dá)到阻斷通訊的目的,確認(rèn)當(dāng)前組建的小型SDN無線網(wǎng)絡(luò)可以被Floodlight控制器控制。
在Pi_1或Pi_2上,打開Terminal,執(zhí)行以下命令
curl -X POST -d ‘{“switch”: “00:00:b8:27:eb:71:18:e4”,”name”:”flow-1”,”in_port”:”1”,”active”:”true”,”actions”:”output=1”}’http://10.0.0.2:8080/wm/staticflowpusher/json
得到返回消息“Entry Pushed!”,證明推送流表成功。然后利用Curl工具查看流表,執(zhí)行以下命令curl -X GET http://10.0.0.2:8080/wm/staticflowpusher/list/all/json確認(rèn)流表添加成功。
此時,用Host_1 Ping Host_2,發(fā)現(xiàn)返回消息為“請求超時!”或“無法訪問目標(biāo)主機”。證明Host_1與Host_2通訊被阻斷,即證明Floodlight能夠控制當(dāng)前小型SDN無線網(wǎng)絡(luò)。
利用Curl刪除流表flow-1。Host_1 Ping Host_2再次成功。
經(jīng)過上述過程和驗證,說明Floodlight能夠成功控制當(dāng)前SDN無線網(wǎng)絡(luò)。
隨著SDN概念的演進(jìn)和發(fā)展,它在網(wǎng)絡(luò)技術(shù)領(lǐng)域的潛力受到了科研機構(gòu)、產(chǎn)業(yè)巨頭以及風(fēng)險投資等各方的高度關(guān)注。諸多現(xiàn)象表明,SDN具備巨大的潛在價值。而通過樹莓派、OVS、Ad Hoc等技術(shù),將SDN網(wǎng)絡(luò)實現(xiàn)無線化,也是SDN網(wǎng)絡(luò)的諸多發(fā)展方向之一。因此,研究SDN網(wǎng)絡(luò)無線化是具有比較大的意義的。
本設(shè)計是通過OVS技術(shù),將樹莓派改造為SDN網(wǎng)絡(luò)中的交換機。同時,對于OVS技術(shù)和Ad Hoc技術(shù),二者的結(jié)合也將碰撞出更多未知的可能。目前本設(shè)計確認(rèn)了同網(wǎng)段主機能夠相互通信,接下來還可以對處于不同VLAN、子網(wǎng)的主機通訊方面進(jìn)行進(jìn)一步研究。
由于本設(shè)計的成功,確認(rèn)了小型SDN網(wǎng)絡(luò)無線化的可能性,在規(guī)模上還未支持中、大型網(wǎng)絡(luò)。雖然本設(shè)計到此就結(jié)束了,但整體的項目遠(yuǎn)遠(yuǎn)還沒有結(jié)束。還有很多需要擴展的地方。例如,本設(shè)計只實現(xiàn)了樹莓派之間的無線化,對于主機與樹莓派之間以無線化連接還在進(jìn)一步探索中。