本發(fā)明涉及軟件及網(wǎng)絡(luò)技術(shù),具體涉及一種利用SDN技術(shù)解決分布式防火墻網(wǎng)絡(luò)一致更新的方法。
背景技術(shù):
在網(wǎng)絡(luò)規(guī)模急劇增長的大數(shù)據(jù)時代,網(wǎng)絡(luò)的一致更新難題正日益凸顯,即便我們小心翼翼讓舊的和新的配置都準(zhǔn)確無誤,也會很難正確的被實現(xiàn),處理不當(dāng)就會出現(xiàn)諸如轉(zhuǎn)發(fā)回路、數(shù)據(jù)丟包或者網(wǎng)絡(luò)堵塞等問題。最主要的原因在于網(wǎng)絡(luò)是一個分布式系統(tǒng),而算法很難完全做到分布式管理。有些時候需要網(wǎng)絡(luò)管理員手動驗證網(wǎng)絡(luò)的一系列更新是否是正確,但是這一過程冗雜并極易出錯。
通常情況下網(wǎng)絡(luò)又是需要更新配置的,比如網(wǎng)絡(luò)設(shè)備的維護升級,或者防止網(wǎng)絡(luò)擁塞修改數(shù)據(jù)流的路徑,改變現(xiàn)有網(wǎng)絡(luò)環(huán)境的安全策略等等。它需要設(shè)備在網(wǎng)運行時去修改路由器或交換機中的配置。如果沒有策略的去簡單實現(xiàn),會影響網(wǎng)絡(luò)的安全,這在網(wǎng)絡(luò)中是決不允許出現(xiàn)的。
在現(xiàn)有技術(shù)下,如若想實現(xiàn)網(wǎng)絡(luò)的更新,我們要么是對整個網(wǎng)絡(luò)環(huán)境進行版本化的更新,或者對設(shè)備進行下電處理,然后逐一進行配置,更新版本的方式太過于復(fù)雜,手動配置不能實現(xiàn)網(wǎng)絡(luò)的一致更新,盡管對于一部分的應(yīng)用場景還可以繼續(xù)適用,但是在如今的快速度低延時的大數(shù)據(jù)環(huán)境下已經(jīng)不再是主流。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種利用SDN技術(shù)解決分布式防火墻網(wǎng)絡(luò)一致更新的方法。
實現(xiàn)本發(fā)明目的的技術(shù)方案為:一種利用SDN技術(shù)解決特定分布式防火墻網(wǎng)絡(luò)一致性更新問題的方法,系統(tǒng)架構(gòu)包括Mininet模擬環(huán)境平臺、OpenDaylight控制器、RESTAPI應(yīng)用編程接口和分布式防火墻網(wǎng)絡(luò)拓撲結(jié)構(gòu);所述分布式防火墻網(wǎng)絡(luò)拓撲結(jié)構(gòu)包括第一OpenFlow智能交換機、第二OpenFlow智能交換機、第三OpenFlow智能交換機、第四OpenFlow智能交換機、第一主機、第二主機、第一監(jiān)控主機和第二監(jiān)控主機,所述第一OpenFlow智能交換機、第二OpenFlow智能交換機、第三OpenFlow智能交換機、第四OpenFlow智能交換機順次連接,所述第一主機與第二OpenFlow智能交換機相連,第二主機與第三OpenFlow智能交換機相連,第一監(jiān)控主機與第一OpenFlow智能交換機相連,第二監(jiān)控主機與第四OpenFlow智能交換機相連;該方法包括以下步驟:
第一步,開啟Mininet模擬平臺并初始化SDN基礎(chǔ)環(huán)境,修改自定義拓撲配置文件創(chuàng)建需要的網(wǎng)絡(luò)結(jié)構(gòu),使用net命令查看鏈路狀態(tài);
第二步,運行/opt/opendaylight-snapshot/run.DelayedSFEP.sh命令來開啟內(nèi)部OpenDaylight控制器,并讓主機之間互ping,測試平臺環(huán)境是否能夠模擬真實有效的網(wǎng)絡(luò);
第三步,關(guān)于第一監(jiān)控主機和第二監(jiān)控主機,分別配置命令“ifconfigh1-eth0:010.0.0.10”和“ifconfigh2-eth0:010.0.0.10”,在第一監(jiān)控主機和第一OpenFlow智能交換機的接口之間以及第二監(jiān)控主機和第四OpenFlow智能交換機之間添加混疊IP地址10.0.0.10;創(chuàng)建task-init.sh腳本文件來對第一OpenFlow智能交換機、第二OpenFlow智能交換機、第三OpenFlow智能交換機安裝初始流表條目,使第一主機周期性的發(fā)送數(shù)據(jù)包至第二主機上,初始狀態(tài)下由第一監(jiān)控主機負責(zé)監(jiān)測經(jīng)過驗證的主機流量;在下發(fā)的流表規(guī)則中對第一OpenFlow智能交換機、第二OpenFlow智能交換機、第三OpenFlow智能交換機進行配置,所有的流表項中添加匹配信息,設(shè)置VLAN為1,數(shù)據(jù)報文在傳輸前包頭中的VLAN匹配字段設(shè)置為1;
流表中定義第一OpenFlow智能交換機的操作集,操作集中交換機剝離原有的vlan標(biāo)記并將新的VLAN匹配信息值設(shè)置為1,將報文的目的MAC地址設(shè)置為第一監(jiān)控主機的MAC地址,報文流經(jīng)第一OpenFlow智能交換機時的轉(zhuǎn)入接口為第二接口,轉(zhuǎn)出接口為第一接口。
設(shè)定第二OpenFlow智能交換機為初始交換機,第一OpenFlow智能交換機、第三OpenFlow智能交換機為后續(xù)交換機,設(shè)置流表優(yōu)先級為1000,流表中定義第二OpenFlow智能交換機的操作集,交換機剝離原先設(shè)定的vlan標(biāo)記并將新的匹配信息vlan的值設(shè)置為1,報文流經(jīng)第二OpenFlow智能交換機時的轉(zhuǎn)入接口為第一接口,與第一智能交換機相連的轉(zhuǎn)出接口為第三接口,與第三智能交換機相連的轉(zhuǎn)出接口為第二接口;
將第三OpenFlow智能交換機中匹配信息vlan值設(shè)置為1,報文流經(jīng)第三OpenFlow智能交換機時的轉(zhuǎn)入接口為第一接口,轉(zhuǎn)出接口為第二接口;
第一主機發(fā)送數(shù)據(jù)包至第二主機時,數(shù)據(jù)包流經(jīng)第二OpenFlow智能交換機、第三OpenFlow智能交換機,將第二OpenFlow智能交換機的第一接口作為數(shù)據(jù)包的入接口,第二接口作為數(shù)據(jù)包的出接口,第三OpenFlow智能交換機s3的第一接口作為數(shù)據(jù)包的入接口,第二接口作為數(shù)據(jù)包的出接口;
第一監(jiān)控主機監(jiān)測第一主機發(fā)送的數(shù)據(jù)包時,數(shù)據(jù)包流經(jīng)第二OpenFlow智能交換機、第一OpenFlow智能交換機,將第二OpenFlow智能交換機的第一接口作為數(shù)據(jù)包的轉(zhuǎn)入接口,第三接口作為數(shù)據(jù)包的轉(zhuǎn)出接口,第一OpenFlow智能交換機的第二接口作為數(shù)據(jù)包的轉(zhuǎn)入接口,第一接口作為數(shù)據(jù)包的轉(zhuǎn)出接口;
第四步,第二監(jiān)控主機開始監(jiān)測經(jīng)過驗證的主機流量,此時后續(xù)交換機為第四OpenFlow智能交換機、第三OpenFlow智能交換機,初始交換機仍為第二OpenFlow智能交換機,按照先后續(xù)交換機最后初始交換機的配置順序下發(fā)流表,即按照第四OpenFlow智能交換機、第三OpenFlow智能交換機、第二OpenFlow智能交換機的順序依次配置;
創(chuàng)建并運行task-update.sh腳本進行防火墻的一致性更新,確保能完全監(jiān)控發(fā)送的數(shù)據(jù)報文,在該腳本中對第四OpenFlow智能交換機、第三OpenFlow智能交換機和第二OpenFlow智能交換機定義操作集進行更新;定義的操作集要求所有流表項中添加VLAN匹配信息并將其設(shè)置為2,傳輸?shù)膱笪奶砑酉鄳?yīng)的匹配字段并將VLAN標(biāo)記設(shè)置為相同的值2;
流表規(guī)則中定義第四OpenFlow智能交換機的操作集,操作集中要求交換機剝離原先的vlan標(biāo)記并將新的匹配信息設(shè)置為2,報文的目的MAC地址設(shè)置為第二監(jiān)控主機h2的MAC地址,數(shù)據(jù)報文流經(jīng)第四OpenFlow智能交換機時的流入口為第二接口,轉(zhuǎn)出接口為第一接口;
下發(fā)給第三OpenFlow智能交換機的流表中同樣要求交換機剝離原有的vlan標(biāo)記并將新的vlan匹配信息值設(shè)置為2,報文流經(jīng)第三OpenFlow智能交換機時的流入口為第一接口,與第四OpenFlow智能交換機相連的轉(zhuǎn)出接口為第三接口,與第二主機相連的轉(zhuǎn)出接口為第二接口;
對于第二OpenFlow智能交換機,將流表優(yōu)先級提高至2000,同時將vlan匹配信息設(shè)置為2;數(shù)據(jù)報文在發(fā)送前包頭中添加新的vlan匹配字段,當(dāng)網(wǎng)絡(luò)更新后流經(jīng)交換機時按照新的匹配規(guī)則進行匹配,由于優(yōu)先級的提高,數(shù)據(jù)流按照新的路由路徑進行傳輸,流經(jīng)第二OpenFlow智能交換機時的流入口為第一接口,與第三OpenFlow智能交換機相連的數(shù)據(jù)轉(zhuǎn)出接口為第二接口;
第五步,通過第一監(jiān)控主機和第二監(jiān)控主機的xterm終端屏顯查看接收到的數(shù)據(jù)報文標(biāo)號,判斷所有數(shù)據(jù)是否都已經(jīng)成功發(fā)送,如成功則關(guān)閉Mininet模擬環(huán)境平臺,反之繼續(xù)監(jiān)測發(fā)送直至發(fā)送完成。
與現(xiàn)有技術(shù)相比,本發(fā)明的顯著優(yōu)點為:
(1)本發(fā)明通過控制器對交換機下發(fā)不同的流表規(guī)則,實現(xiàn)了網(wǎng)絡(luò)的一致更新,從而省去了對每一個交換設(shè)備逐一進行手動配置的繁復(fù)步驟,且不再需要考慮對交換機進行配置時對傳輸?shù)臄?shù)據(jù)包以及對原有網(wǎng)絡(luò)安全造成影響,相比于版本化的更新,能夠很容易的實現(xiàn)網(wǎng)絡(luò)的一致更新;
(2)本發(fā)明不會對控制器帶來額外的控制負載,并且流表的更新時間很短,能快速適應(yīng)網(wǎng)絡(luò)出現(xiàn)的更新。
附圖說明
圖1本發(fā)明所采用的分布式防火墻網(wǎng)絡(luò)拓撲圖。
圖2本發(fā)明初始條件下由第一監(jiān)控主機h1監(jiān)測流量的網(wǎng)絡(luò)拓撲圖。
圖3本發(fā)明更換監(jiān)控設(shè)備后的網(wǎng)絡(luò)拓撲圖。
圖4本發(fā)明解決網(wǎng)絡(luò)更新問題的方法流程圖。
具體實施方式
SDN的出現(xiàn)增加了網(wǎng)絡(luò)的靈活性,通過軟件編程的方式改變了之前的“硬編碼”,可以讓添加和改變網(wǎng)絡(luò)控制邏輯變得更簡單,能夠為不同的用戶設(shè)計專用的協(xié)議并且能夠?qū)π掳咐焖僦?。它減少了交換機的復(fù)雜性,控制邏輯從交換機和主機移到主服務(wù)器上,交換機上硬件仍支持轉(zhuǎn)發(fā),所以交換機的轉(zhuǎn)發(fā)性能未受到影響,而集中的網(wǎng)絡(luò)控制有更快的時間收斂和更高的資源利用率。利用SDN技術(shù)來解決分布式防火墻一致更新問題是本發(fā)明基于上述考慮而設(shè)計的。
結(jié)合圖1-圖4,本發(fā)明的一種利用SDN技術(shù)解決特定分布式防火墻網(wǎng)絡(luò)一致性更新問題的方法,系統(tǒng)架構(gòu)包括Mininet模擬環(huán)境平臺、OpenDaylight控制器、RESTAPI應(yīng)用編程接口和分布式防火墻網(wǎng)絡(luò)拓撲結(jié)構(gòu);所述分布式防火墻網(wǎng)絡(luò)拓撲結(jié)構(gòu)包括第一OpenFlow智能交換機s1、第二OpenFlow智能交換機s2、第三OpenFlow智能交換機s3、第四OpenFlow智能交換機s4、第一主機gen、第二主機srv、第一監(jiān)控主機h1和第二監(jiān)控主機h2,所述第一OpenFlow智能交換機s1、第二OpenFlow智能交換機s2、第三OpenFlow智能交換機s3、第四OpenFlow智能交換機s4順次連接,所述第一主機gen與第二OpenFlow智能交換機s2相連,第二主機srv與第三OpenFlow智能交換機s3相連,第一監(jiān)控主機h1與第一OpenFlow智能交換機s1相連,第二監(jiān)控主機h2與第四OpenFlow智能交換機s4相連;該方法包括以下步驟:
第一步,開啟Mininet模擬平臺并初始化SDN基礎(chǔ)環(huán)境,修改自定義拓撲配置文件創(chuàng)建需要的網(wǎng)絡(luò)結(jié)構(gòu),使用net命令查看鏈路狀態(tài);
第二步,運行/opt/opendaylight-snapshot/run.DelayedSFEP.sh命令來開啟內(nèi)部OpenDaylight控制器,并讓主機之間互ping,測試平臺環(huán)境是否能夠很好的模擬真實有效的網(wǎng)絡(luò);
第三步,關(guān)于第一監(jiān)控主機h1和第二監(jiān)控主機h2,分別配置命令“ifconfigh1-eth0:010.0.0.10”和“ifconfigh2-eth0:010.0.0.10”,在第一監(jiān)控主機h1和第一OpenFlow智能交換機s1的接口之間以及第二監(jiān)控主機h2和第四OpenFlow智能交換機s4之間添加混疊IP地址10.0.0.10;創(chuàng)建task-init.sh腳本文件來對第一OpenFlow智能交換機s1、第二OpenFlow智能交換機s2、第三OpenFlow智能交換機s3安裝初始流表條目,使第一主機gen周期性的發(fā)送數(shù)據(jù)包至第二主機srv上,初始狀態(tài)下由第一監(jiān)控主機h1負責(zé)監(jiān)測經(jīng)過驗證的主機流量;在下發(fā)的流表規(guī)則中對第一OpenFlow智能交換機s1、第二OpenFlow智能交換機s2、第三OpenFlow智能交換機s3進行配置,所有的流表項中添加匹配信息,設(shè)置VLAN為1,數(shù)據(jù)報文在傳輸前包頭中的VLAN匹配字段設(shè)置為1;
流表中定義第一OpenFlow智能交換機s1的操作集,操作集中交換機剝離原有的vlan標(biāo)記并將新的VLAN匹配信息值設(shè)置為1,將報文的目的MAC地址設(shè)置為第一監(jiān)控主機h1的MAC地址,報文流經(jīng)第一OpenFlow智能交換機s1時的轉(zhuǎn)入接口為第二接口,轉(zhuǎn)出接口為第一接口。
設(shè)定第二OpenFlow智能交換機s2為初始交換機,第一OpenFlow智能交換機s1、第三OpenFlow智能交換機s3為后續(xù)交換機,設(shè)置流表優(yōu)先級為1000,流表中定義第二OpenFlow智能交換機s2的操作集,交換機剝離原先設(shè)定的vlan標(biāo)記并將新的匹配信息vlan的值設(shè)置為1,報文流經(jīng)第二OpenFlow智能交換機s2時的轉(zhuǎn)入接口為第一接口,與第一智能交換機相連的轉(zhuǎn)出接口為第三接口,與第三智能交換機相連的轉(zhuǎn)出接口為第二接口;
將第三OpenFlow智能交換機s3中匹配信息vlan值設(shè)置為1,報文流經(jīng)第三OpenFlow智能交換機s3時的轉(zhuǎn)入接口為第一接口,轉(zhuǎn)出接口為第二接口;
第一主機gen發(fā)送數(shù)據(jù)包至第二主機srv時,數(shù)據(jù)包流經(jīng)第二OpenFlow智能交換機s2、第三OpenFlow智能交換機s3,將第二OpenFlow智能交換機s2的第一接口作為數(shù)據(jù)包的入接口,第二接口作為數(shù)據(jù)包的出接口,第三OpenFlow智能交換機s3的第一接口作為數(shù)據(jù)包的入接口,第二接口作為數(shù)據(jù)包的出接口;
第一監(jiān)控主機h1監(jiān)測第一主機gen發(fā)送的數(shù)據(jù)包時,數(shù)據(jù)包流經(jīng)第二OpenFlow智能交換機s2、第一OpenFlow智能交換機s1,將第二OpenFlow智能交換機s2的第一接口作為數(shù)據(jù)包的轉(zhuǎn)入接口,第三接口作為數(shù)據(jù)包的轉(zhuǎn)出接口,第一OpenFlow智能交換機s1的第二接口作為數(shù)據(jù)包的轉(zhuǎn)入接口,第一接口作為數(shù)據(jù)包的轉(zhuǎn)出接口;
第四步,第二監(jiān)控主機h2開始監(jiān)測經(jīng)過驗證的主機流量,此時后續(xù)交換機為第四OpenFlow智能交換機s4、第三OpenFlow智能交換機s3,初始交換機仍為第二OpenFlow智能交換機s2,按照先后續(xù)交換機最后初始交換機的配置順序下發(fā)流表,即按照第四OpenFlow智能交換機s4、第三OpenFlow智能交換機s3、第二OpenFlow智能交換機s2的順序依次配置;
創(chuàng)建并運行task-update.sh腳本進行防火墻的一致性更新,確保能完全監(jiān)控發(fā)送的數(shù)據(jù)報文,在該腳本中對第四OpenFlow智能交換機s4、第三OpenFlow智能交換機s3和第二OpenFlow智能交換機s2定義操作集進行更新;定義的操作集要求所有流表項中添加VLAN匹配信息并將其設(shè)置為2,傳輸?shù)膱笪奶砑酉鄳?yīng)的匹配字段并將VLAN標(biāo)記設(shè)置為相同的值2;
流表規(guī)則中定義第四OpenFlow智能交換機s4的操作集,操作集中要求交換機剝離原先的vlan標(biāo)記并將新的匹配信息設(shè)置為2,報文的目的MAC地址設(shè)置為第二監(jiān)控主機h2的MAC地址,數(shù)據(jù)報文流經(jīng)第四OpenFlow智能交換機s4時的流入口為第二接口,轉(zhuǎn)出接口為第一接口;
下發(fā)給第三OpenFlow智能交換機s3的流表中同樣要求交換機剝離原有的vlan標(biāo)記并將新的vlan匹配信息值設(shè)置為2,報文流經(jīng)第三OpenFlow智能交換機s3時的流入口為第一接口,與第四OpenFlow智能交換機s4相連的轉(zhuǎn)出接口為第三接口,與第二主機srv相連的轉(zhuǎn)出接口為第二接口;
對于第二OpenFlow智能交換機s2,將流表優(yōu)先級提高至2000,同時將vlan匹配信息設(shè)置為2;數(shù)據(jù)報文在發(fā)送前包頭中添加新的vlan匹配字段,當(dāng)網(wǎng)絡(luò)更新后流經(jīng)交換機時按照新的匹配規(guī)則進行匹配,由于優(yōu)先級的提高,數(shù)據(jù)流按照新的路由路徑進行傳輸,流經(jīng)第二OpenFlow智能交換機s2時的流入口為第一接口,與第三OpenFlow智能交換機s3相連的數(shù)據(jù)轉(zhuǎn)出接口為第二接口;
第五步,通過第一監(jiān)控主機h1和第二監(jiān)控主機h2的xterm終端屏顯查看接收到的數(shù)據(jù)報文標(biāo)號,判斷所有數(shù)據(jù)是否都已經(jīng)成功發(fā)送,如成功則關(guān)閉Mininet模擬環(huán)境平臺,反之繼續(xù)監(jiān)測發(fā)送直至發(fā)送完成。
下面結(jié)合具體實施例對本發(fā)明作進一步說明。
實施例
為了便于本領(lǐng)域的普通技術(shù)人員理解本發(fā)明的原理、工作過程,首先對本發(fā)明中用到的詞匯作如下解釋或定義:
SDN:SoftwareDefinedNetwork,軟件自定義網(wǎng)絡(luò)。
API:Application Program Interface,應(yīng)用編程接口。
Xterm:終端模擬器,用來提供多個獨立的SHELL輸入輸出。為了方便更復(fù)雜的調(diào)試工作,可以使用Mininet中的Xterms命令來開啟每個主機節(jié)點的終端模擬。
OpenDaylight:是一個基于Java實現(xiàn)的開源控制器,能夠快速執(zhí)行需要完成的網(wǎng)絡(luò)任務(wù),旨在推動創(chuàng)新以及實施軟件定義網(wǎng)絡(luò)的透明化,它利用了SDN和NFV技術(shù)。
Mininet:軟件定義網(wǎng)絡(luò)系統(tǒng)中一種基于進程的虛擬化平臺,它使用虛擬化技術(shù)使一個單一的系統(tǒng)可以模擬完整的網(wǎng)絡(luò),并支持OpenFlow、OpenvSwith等協(xié)議。平臺中主機的行為同真實網(wǎng)絡(luò)環(huán)境下的設(shè)備幾乎完全相像,可以通過安全協(xié)議遠程登錄并且運行任意的程序。
下面結(jié)合具體的網(wǎng)絡(luò)結(jié)構(gòu)說明本發(fā)明利用SDN技術(shù)解決特定分布式防火墻網(wǎng)絡(luò)一致更新問題,所采用的系統(tǒng)架構(gòu)為:支持OpenFlow協(xié)議的智能交換機,Mininet模擬實驗平臺,RESTAPI應(yīng)用編程接口,OpenDaylight控制器,特定分布式防火墻網(wǎng)絡(luò)拓撲結(jié)構(gòu)。
OpenDaylight控制器能夠快速執(zhí)行需要完成的網(wǎng)絡(luò)任務(wù),以此來管理并控制分布式防火墻網(wǎng)絡(luò)狀態(tài)更新前后的交換機中的流表規(guī)則。OpenFlow智能交換機能夠解析并執(zhí)行控制器下發(fā)的流表規(guī)則,按照流表定義的操作集對流經(jīng)的數(shù)據(jù)流進行相應(yīng)的處理。RESTAPI應(yīng)用編程接口能夠根據(jù)網(wǎng)絡(luò)需求自定義開發(fā),編寫程序?qū)崿F(xiàn)所需的流表配置。
本發(fā)明所指的單個初始交換機應(yīng)用場景下的分布式防火墻網(wǎng)絡(luò)包括4臺支持OpenFlow協(xié)議的交換機。
為滿足網(wǎng)絡(luò)初始條件下由第一監(jiān)控主機h1來監(jiān)測發(fā)送的數(shù)據(jù)流量,需要對流表規(guī)則進行如下配置:
1)為避免對結(jié)果產(chǎn)生影響,首先需要將交換機中存在的原有流表規(guī)則都刪除;
2)按照先后續(xù)交換機最后初始交換機的順序下發(fā)流表規(guī)則,對第一OpenFlow智能交換機s1、第三OpenFlow智能交換機s3、第二OpenFlow智能交換機s2依次進行配置,要求所有的流表項中添加VLAN匹配信息并將值設(shè)置為1。數(shù)據(jù)在傳輸前包頭信息中會添加VLAN匹配字段,其值也設(shè)置為1,這樣數(shù)據(jù)流經(jīng)交換設(shè)備時才能與現(xiàn)有規(guī)則匹配,從而傳送到接收設(shè)備上。
3)流表中定義了第一OpenFlow智能交換機s1相關(guān)聯(lián)的操作集,要求交換機剝離原先設(shè)定的vlan標(biāo)記,并將數(shù)據(jù)報文的目的MAC地址設(shè)置成第一監(jiān)控主機h1的MAC地址,數(shù)據(jù)流經(jīng)交換機s1時的流入口為第二接口,轉(zhuǎn)出接口為第一接口。
4)下發(fā)給第三OpenFlow智能交換機s3的流表中規(guī)定如下配置,刪除并設(shè)置新的vlan匹配標(biāo)記為1,報文流經(jīng)第三OpenFlow智能交換機s3時的流入口為第一接口,轉(zhuǎn)出接口為第二接口。
5)對第二OpenFlow智能交換機s2進行如下配置,將流表優(yōu)先級設(shè)置為1000,交換機刪除并添加新的VLAN匹配信息將值設(shè)置為1。報文流經(jīng)交換機s2時的流入口為第一接口,與第一智能交換機s1相連的轉(zhuǎn)出接口為第三接口,與第三智能交換機s3相連的轉(zhuǎn)出接口為第二接口。
通過RESTAPI接口配置的腳本1為:
#Removepreviousflowsifthereareany:
Curlhttp://localhost:8080/wm/staticflowentrypusher/clear/all/json
#SWITCHS1::
#Packetiscomingtoport2ofswitchS1forh1usingVLAN1tag:
curl-d
'{"switch":"00:00:00:00:00:00:00:01","name":"flow-mod-1","ingress-port":"2",
vlan-id":"1","active":"true","actions":"set-dst-mac=00:00:00:00:00:02,strip-vlan,
output=1"}'http://localhost:8080/wm/staticflowentrypusher/json
#SWITCHS3::
#Packetiscomingtoport1ofswitchS3usingVLAN1tag:
curl-d
'{"switch":"00:00:00:00:00:00:00:03","name":"flow-mod-2","ingress-port":"1",
vlan-id":"1","active":"true","actions":"strip-vlan,output=2"}'
http://localhost:8080/wm/staticflowentrypusher/json
#SWITCHS2::
#Packetiscomingtoport1ofswitchS2forh1&srvusingVLAN1tag:
curl-d
'{"switch":"00:00:00:00:00:00:00:02","name":"flow-mod-3","priority":"1000",
"ingress-port":"1","active":"true","actions":"set-vlan-id=1,output=2,output=3"}'
http://localhost:8080/wm/staticflowentrypusher/json
為了更好的應(yīng)對網(wǎng)絡(luò)負載,網(wǎng)絡(luò)管理員決定改變網(wǎng)絡(luò)的配置,讓經(jīng)過驗證的主機流量由第二監(jiān)控主機h2進行監(jiān)測,此時不再需要對設(shè)備進行下電處理并逐一對交換機進行配置,僅僅根據(jù)需要重新創(chuàng)建task-update.sh腳本就可以實現(xiàn)一致性更新并確保對數(shù)據(jù)流量不間斷的監(jiān)控,這里按照先更新后續(xù)交換機s4、其次交換機s3最后初始交換機s2的順序來完成:
1)對第四OpenFlow智能交換機s4、第三OpenFlow智能交換機s3和第二OpenFlow智能交換機s2定義明確的操作集,來規(guī)避由于網(wǎng)絡(luò)時延以及新規(guī)則生效的時延而導(dǎo)致的無法對傳輸?shù)臄?shù)據(jù)報文全部監(jiān)測的問題,從而實現(xiàn)網(wǎng)絡(luò)更新的連續(xù)性。因此在新規(guī)則的所有流表項中重新定義新的VLAN標(biāo)簽,即設(shè)置VLAN值為2,并在報文傳送之前在包頭中添加同樣的匹配字段。
2)第二監(jiān)控主機h2監(jiān)測經(jīng)過驗證的主機流量包時,數(shù)據(jù)會流經(jīng)第四OpenFlow智能交換機s4,流表中定義了第四OpenFlow智能交換機s4的操作集,要求交換機剝離原先設(shè)定的vlan標(biāo)記,并將vlan匹配信息值設(shè)置為2,將數(shù)據(jù)報文的目的MAC地址設(shè)置成第二監(jiān)控主機h2的MAC地址。數(shù)據(jù)流經(jīng)交換機s4時的流入口為2接口,轉(zhuǎn)出接口為1接口。
3)下發(fā)給第三OpenFlow智能交換機s3的流表規(guī)定的操作集,同樣也要求剝離原先設(shè)定的vlan標(biāo)記,數(shù)據(jù)流經(jīng)第三OpenFlow智能交換機s3時的流入口為第一接口,與第四OpenFlow智能交換機s4相連的轉(zhuǎn)出接口為第三接口。
4)對于第二OpenFlow智能交換機s2,需要將流表優(yōu)先級提高至2000,同時設(shè)置匹配信息vlan的值為2。數(shù)據(jù)流經(jīng)第二OpenFlow智能交換機s2時的流入口為第一接口,與第三OpenFlow智能交換機s3相連的轉(zhuǎn)出接口為第二接口。在流經(jīng)交換機的數(shù)據(jù)被打上vlan2的標(biāo)記后,由于優(yōu)先級的提高,會按照新的路由路徑進行傳輸。
通過RESTAPI接口順序配置的腳本2為:
#SWITCHS4::
#Packetiscomingtoport2ofswitchS4forh2usingVLAN2tag:
curl-d
'{"switch":"00:00:00:00:00:00:00:04","name":"flow-mod-4","ingress-port":"2",
vlan-id":"2","active":"true","actions":"set-dst-mac=00:00:00:00:00:03,strip-vlan,
output=1"}'http://localhost:8080/wm/staticflowentrypusher/json
#SWITCHS3::
#Packetiscomingtoport1ofswitchS3usingVLAN2tag:
curl-d
'{"switch":"00:00:00:00:00:00:00:03","name":"flow-mod-5","ingress-port":"1",
vlan-id":"2","active":"true","actions":"putput=3,strip-vlan,output=2"}'
http://localhost:8080/wm/staticflowentrypusher/json
#SWITCHS2::
#Packetiscomingtoport1ofswitchS2forh2&srvusingVLAN2tag:
curl-d
'{"switch":"00:00:00:00:00:00:00:02","name":"flow-mod-6","priority","2000",
"ingress-port":"1","active":"true","actions":"set-vlan-id=2,output=2"}'
http://localhost:8080/wm/staticflowentrypusher/json
本發(fā)明利用SDN技術(shù)解決分布式防火墻網(wǎng)絡(luò)一致更新問題的方法,具體步驟如下:
第一步,開啟Mininet模擬平臺并初始化SDN基礎(chǔ)環(huán)境,修改自定義拓撲配置文件創(chuàng)建需要的網(wǎng)絡(luò)結(jié)構(gòu),使用net命令查看鏈路狀態(tài);
第二步,運行/opt/opendaylight-snapshot/run.DelayedSFEP.sh命令來開啟內(nèi)部OpenDaylight控制器,并讓主機之間互ping,測試平臺環(huán)境是否能夠很好的模擬真實有效的網(wǎng)絡(luò);
第三步,運行命令“sudomn--mac--arp--controller remote--custom monitors-topo.py--topo monitors”來使用定義好的Topo.sh腳本文件,創(chuàng)建需要的網(wǎng)絡(luò)拓撲架構(gòu);
第四步,關(guān)于第一監(jiān)控主機h1和第二監(jiān)控主機h2,分別配置命令ifconfig h1-eth0:010.0.0.10和ifconfig h2-eth0:0 10.0.0.10,在第一監(jiān)控主機h1和第一OpenFlow智能交換機S1的接口之間以及第二監(jiān)控主機h2和第四OpenFlow智能交換機s4之間添加混疊IP地址10.0.0.10。創(chuàng)建task-init.sh腳本文件來對交換機安裝初始流表條目,使第一監(jiān)控主機h1來監(jiān)測傳送的網(wǎng)絡(luò)流量;
第五步,在第一主機gen上運行命令“./udpsender 10.0.0.10 4000 300”,發(fā)送數(shù)據(jù)包到第二主機srv上并持續(xù)30S,同時運行命令“mininet>xterm h1 h2 gen srv”來開啟每個主機的終端模擬器。第一監(jiān)控主機h1負責(zé)監(jiān)測來自經(jīng)過驗證的主機流量,一旦出現(xiàn)異常則報錯并停止數(shù)據(jù)報文的傳送;
第六步,為應(yīng)對網(wǎng)絡(luò)負載,讓第二監(jiān)控主機h2開始監(jiān)測經(jīng)過驗證的主機流量,因此需要重新創(chuàng)建task-update.sh腳本來實現(xiàn)網(wǎng)絡(luò)一致性更新并確保能完全監(jiān)控發(fā)送的數(shù)據(jù)報文。此時后續(xù)交換機為s4、s3,初始交換機仍為s2,按照先后續(xù)交換機最后初始交換機的配置順序下發(fā)流表,這里按第四OpenFlow智能交換機s4、第三OpenFlow智能交換機s3、第二OpenFlow智能交換機s2的順序依次配置。
第七步,通過第一監(jiān)控主機h1和第二監(jiān)控主機h2開啟的xterm終端屏顯查看接收到的數(shù)據(jù)報文標(biāo)號,判斷所有數(shù)據(jù)是否都已經(jīng)成功發(fā)送,如成功則關(guān)閉Mininet模擬環(huán)境平臺,反之繼續(xù)監(jiān)測發(fā)送直至發(fā)送完成。