NS2仿真分析无线网络的攻击防御(2)
牙說:繼續(xù)上一篇博文進(jìn)行翻譯。
4. NS和我們的工作
我們?cè)噲D評(píng)估黑洞攻擊在無線Ad-hoc網(wǎng)絡(luò)中的影響。 為了實(shí)現(xiàn)這一點(diǎn),我們已經(jīng)使用NS 網(wǎng)絡(luò)模擬 [14]程序模擬了一個(gè)含有黑洞節(jié)點(diǎn)的無線自組網(wǎng)絡(luò)場(chǎng)景。為了模擬無線自組織網(wǎng)絡(luò)中的黑洞節(jié)點(diǎn),我們實(shí)現(xiàn)了一種將數(shù)據(jù)包吸引到自身之后丟棄數(shù)據(jù)包的新協(xié)議。在本章中,我們介紹了NS以及我們對(duì)這個(gè)軟件的改變。
4.1 NS網(wǎng)絡(luò)模擬器
NS是一個(gè)事件驅(qū)動(dòng)的網(wǎng)絡(luò)模擬器程序,由加利福尼亞州伯克利大學(xué)開發(fā),其中包括許多網(wǎng)絡(luò)對(duì)象,如協(xié)議,應(yīng)用程序和流量來源行等。 NS是VINT項(xiàng)目軟件的一部分[15],自從1995年以來一直由DARPA資助。
?? 圖13 NS-2模式
在仿真層,NS使用OTcl(面向?qū)ο蟮墓ぞ呙钫Z言)編程語言來解釋用戶仿真腳本。 OTcl語言實(shí)際上是面向?qū)ο蟮腡cl語言擴(kuò)展。 Tcl語言與C ++編程語言完全兼容。在頂層,NS是用戶TCL腳本的解釋器,它們與C++代碼一起使用,在第五章將詳細(xì)介紹TCL語言的使用。
如圖13 [16]所示,用戶編寫的OTcl腳本由NS解釋。 當(dāng)OTcl腳本被解釋時(shí),NS同時(shí)創(chuàng)建兩個(gè)主要的分析報(bào)告。 其中之一是NAM對(duì)象,顯示模擬的視覺動(dòng)畫。另一個(gè)是由模擬中所有對(duì)象的行為組成的跟蹤對(duì)象。它們都是由NS創(chuàng)建的文件,與NS一起使用的NAM軟件使用.nam文件。 Latter是一個(gè)“.tr”文件,其中包含文本格式的所有模擬軌跡。(牙注:翻譯不好,詞大致達(dá)意)
在本研究中,我們使用了ns一體式的2.29版本,并使用Cygwin在Windows環(huán)境中安裝了該軟件包。 在版本2之后,NS通常使用NS-2,在我們的論文中,我們將其稱為NS-2。 我們?cè)谖谋揪庉嬈髦芯帉懥恕?tcl”文件,并使用Unix操作系統(tǒng)的“cat”,“awk”,“wc”和“grep”命令分析了“.tr”文件的結(jié)果。 AODV協(xié)議的黑洞行為的實(shí)現(xiàn)階段是使用C ++編寫的。
4.2?在NS中實(shí)現(xiàn)新的路由協(xié)議以模擬黑洞行為
在[17]中描述了NS-2中新的Manet單播路由協(xié)議的實(shí)現(xiàn)。在我們的工作中,我們已經(jīng)使用了使用AODV協(xié)議的無線自組織網(wǎng)絡(luò)中顯示黑洞行為的節(jié)點(diǎn)(牙注:這句話非常繞口,考驗(yàn)語文水平……)。 由于節(jié)點(diǎn)表現(xiàn)為黑洞,因此它們必須使用可以參與AODV消息傳遞的新路由協(xié)議。 下面詳細(xì)介紹這種新的路由協(xié)議的實(shí)現(xiàn):
NS中的所有路由協(xié)議安裝在“ns-2.29”的目錄中。 我們復(fù)制此目錄中的AODV協(xié)議,并將目錄的名稱更改為“blackholeaodv”。
我們把這個(gè)目錄中標(biāo)記為“aodv”的所有文件的名稱將更改為“blackholeaodv”,如blackholeaodv.cc,blackholeaodv.h,blackholeaodv.tcl,blackholeaodv_rqueue.cc,blackholeaodv_rqueue.h等,除了“ aodv_packet.h“。 我們的工作重點(diǎn)是AODV和黑洞AODV協(xié)議將相互發(fā)送相同的AODV數(shù)據(jù)包。 因此,我們沒有將“aodv_packet.h”文件復(fù)制到blackholeaodv目錄中。
我們把目錄中的所有文件的所有類,函數(shù),結(jié)構(gòu)體,變量和常量名稱都改變了(牙注:改變大概是說改aodv為blackholeaodv吧),而不包括屬于AODV packet.h代碼的結(jié)構(gòu)體名稱。我們?cè)O(shè)計(jì)了aodv和blackholeoadv協(xié)議來發(fā)送對(duì)方的aodv數(shù)據(jù)包。 這兩個(gè)協(xié)議實(shí)際上是一樣的。
在上述更改之后,我們更改了NS-2共享的兩個(gè)常見文件,將新的blackholeaodv協(xié)議集成到模擬器中。以下是更改說明:
圖16 ?blackholeaodv“協(xié)議代理添加在”\ tcl \ lib \ ns-lib.tcl“中
第一個(gè)修改的文件是“\ tcl \ lib \ ns-lib.tcl”,其中協(xié)議代理程序被編碼為一個(gè)過程。 當(dāng)節(jié)點(diǎn)使用blackholeaodv協(xié)議時(shí),該代理在模擬開始時(shí)進(jìn)行調(diào)度,并分配給將使用blachholeadodv協(xié)議的節(jié)點(diǎn)。 blackholeaodv的代理程序如圖14所示。
在“ns-2.29”的根目錄中修改的第二個(gè)文件是“\ makefile”。 在所有實(shí)現(xiàn)準(zhǔn)備好之后,我們必須再次編譯NS-2來創(chuàng)建對(duì)象文件。 我們將圖15中的下面的行添加到“\ makefile”中。
圖17?“/makefile”中添加的部分
到目前為止,我們已經(jīng)實(shí)施了一個(gè)新的路由協(xié)議,被標(biāo)記為blackholeaodv。 但是,這種新的路由協(xié)議還沒有實(shí)現(xiàn)黑洞行為。 要將黑洞行為添加到新的AODV協(xié)議中,我們?cè)赽lackholeaodv / blackholeaodv.cc C ++文件中進(jìn)行了相同的更改。 我們將在blackholeaodv / blackholeaodv.cc文件中描述我們?cè)贏ODV和Black Hole AODV協(xié)議下的工作機(jī)制的這些改變。
當(dāng)通過“aodv / aodv.cc”的“recv”功能接收到數(shù)據(jù)包時(shí),它將根據(jù)其類型處理數(shù)據(jù)包。 如果數(shù)據(jù)包類型是許多AODV路由管理數(shù)據(jù)包中的任何一個(gè),它將數(shù)據(jù)包發(fā)送到下面我們將要解釋的“recvAODV”函數(shù)下。如果接收到的數(shù)據(jù)包是數(shù)據(jù)包,通常AODV協(xié)議將其發(fā)送到目標(biāo)地址,但是作為黑洞,它會(huì)丟棄所有數(shù)據(jù)包。?在下面的代碼中,第一個(gè)“if”條件提供如果它是目標(biāo)時(shí)節(jié)點(diǎn)接收數(shù)據(jù)包的情況,“else”條件會(huì)丟棄所有剩余的數(shù)據(jù)包。 If語句如圖16所示。
圖16 接收或者丟棄數(shù)據(jù)包的情況
如果分組是AODV管理分組,則“recv”函數(shù)將其發(fā)送到“recvblackholeAODV”功能。 “recvblackholeAODV”功能將檢查AODV管理包的類型,并根據(jù)包的類型將其發(fā)送到具有“case”語句的適當(dāng)函數(shù)。 例如; RREQ數(shù)據(jù)包發(fā)送到“recvRequest”函數(shù),RREP數(shù)據(jù)包發(fā)送到“recvReply”函數(shù)等,“recvblackholeAODV”函數(shù)的case語句如圖17所示。
圖17?用于選擇AODV控制消息類型的案例語句
在我們的情況下,我們將考慮RREQ功能,因?yàn)楹诙葱袨槭窃趷阂夤?jié)點(diǎn)接收到RREQ數(shù)據(jù)包時(shí)進(jìn)行的。 當(dāng)惡意節(jié)點(diǎn)接收到RREQ數(shù)據(jù)包時(shí),它會(huì)立即發(fā)送RREP數(shù)據(jù)包,就好像它有足夠的能力快速到達(dá)目的地。惡意節(jié)點(diǎn)通過這樣的方式欺騙節(jié)點(diǎn)。AODV協(xié)議的最大序列號(hào)是4294967295(32位無符號(hào)整數(shù)值中的最大值)。為了達(dá)到最好的欺瞞效果,惡意節(jié)點(diǎn)將發(fā)送的RREP數(shù)據(jù)包的序列號(hào)設(shè)置為4294967295,跳數(shù)設(shè)置為1。
黑洞攻擊的偽RREP消息如圖18所示。
圖18?黑洞攻擊的虛假RREP消息
所有更改完成后,我們重新編譯所有NS-2文件以創(chuàng)建對(duì)象文件。 完成編譯后,我們有一個(gè)新的測(cè)試臺(tái)來模擬AODV協(xié)議中的黑洞攻擊。 在下一章中我們將介紹模擬和仿真結(jié)果。
5.黑洞攻擊模擬及其影響
? ?在本章中,首先,我們將簡(jiǎn)要介紹Tcl語言來了解仿真場(chǎng)景,接著展示了如何測(cè)試黑洞的實(shí)現(xiàn)以及展示黑洞攻擊的模擬來演示其效果。然后我們將評(píng)估黑洞攻擊在Ad-Hoc網(wǎng)絡(luò)中的影響。
5.1 NS中的TCL語言
? ?TCL是加州大學(xué)伯克利分校的John Ousterhout開發(fā)的強(qiáng)大的解釋性編程語言。 [18] TCL是一個(gè)非常強(qiáng)大和動(dòng)態(tài)的編程語言。Tcl是一個(gè)真正的跨平臺(tái)語言,易于部署而且具有高擴(kuò)展性。
? ?Tcl語言最顯著的優(yōu)點(diǎn)是它與C語言完全兼容,Tcl庫可以直接與C程序進(jìn)行互操作。我們將在下一節(jié)中描述我們?cè)O(shè)計(jì)用于實(shí)施黑洞攻擊的Tcl代碼。
5.2 測(cè)試黑洞AODV
為了更加直觀地顯示實(shí)驗(yàn)結(jié)果,我們使用了NAM應(yīng)用程序進(jìn)行觀測(cè)。比較黑洞節(jié)點(diǎn)的的效果,我們使用了兩個(gè)模擬:在第一種情況下,我們沒有使用任何黑洞AODV節(jié)點(diǎn)(開展黑洞攻擊的惡意節(jié)點(diǎn)稱為黑洞節(jié)點(diǎn)),在第二種情況下,我們?cè)谀M中添加了一個(gè)黑洞攻擊節(jié)點(diǎn),然后我們使用NAM比較了模擬的結(jié)果。
5.2.1 模擬參數(shù)和測(cè)試指標(biāo)
為了從模擬節(jié)點(diǎn)中獲得等價(jià)準(zhǔn)確的結(jié)果,我們使用了UDP協(xié)議。在使用UDP協(xié)議的時(shí)候,即使數(shù)據(jù)包丟失,源節(jié)點(diǎn)也會(huì)持續(xù)不斷地發(fā)送數(shù)據(jù)包,但是如果是TCP協(xié)議,它就會(huì)斷開連接。使用UDP,我們可以觀察到仿真期間發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)之間的連接流動(dòng),還能夠分開發(fā)送和接收的數(shù)據(jù)包,因?yàn)樵诜抡嫫陂gUDP連接不會(huì)丟失。 如果使用TCP協(xié)議,我們不能對(duì)發(fā)送或接收的數(shù)據(jù)包進(jìn)行計(jì)數(shù),因?yàn)槿绻麤]有收到TCP ACK數(shù)據(jù)包,則啟動(dòng)TCP連接的節(jié)點(diǎn)將在一段時(shí)間后完成連接。
我們生成一個(gè)具有7個(gè)節(jié)點(diǎn)的小型網(wǎng)絡(luò),并在節(jié)點(diǎn)2和節(jié)點(diǎn)5之間建立UDP連接,附加通過UDP連接生成常量數(shù)據(jù)包的CBR(Constant Bit Rate)。CBR數(shù)據(jù)包的大小選擇為512字節(jié)長(zhǎng),數(shù)據(jù)速率設(shè)置為1M字節(jié)/s(牙注:有疑問……/s?)。場(chǎng)景大小為79m x 659m的持續(xù)時(shí)間設(shè)置為20s,CBR的連接在時(shí)刻1s開始并且持續(xù)到仿真結(jié)束。我們手動(dòng)定義了節(jié)點(diǎn)的適當(dāng)位置以顯示數(shù)據(jù)流,并且還向節(jié)點(diǎn)1引入一個(gè)運(yùn)動(dòng),以顯示網(wǎng)絡(luò)中的數(shù)據(jù)流的變化。 Tcl腳本包含第一次模擬的黑洞AODV,如附錄A所示。(牙注:附錄見最后)
5.2.2?模擬評(píng)估
在沒有黑洞AODV節(jié)點(diǎn)的第一種情況下,當(dāng)我們使用NAM查看模擬的動(dòng)畫時(shí),節(jié)點(diǎn)5和節(jié)點(diǎn)4之間的連接是正常的不連接,圖19顯示了從節(jié)點(diǎn)2到節(jié)點(diǎn)5的數(shù)據(jù)流。當(dāng)節(jié)點(diǎn)1移動(dòng)離開節(jié)點(diǎn)2的傳播范圍時(shí),通過節(jié)點(diǎn)3建立了新的連接。新的連接路徑如圖20所示。
圖19 節(jié)點(diǎn)2和節(jié)點(diǎn)5通過節(jié)點(diǎn)1和節(jié)點(diǎn)6建立的數(shù)據(jù)流
圖19 節(jié)點(diǎn)2和節(jié)點(diǎn)5通過節(jié)點(diǎn)3和節(jié)點(diǎn)4建立的數(shù)據(jù)流
? ? 在第二種情況下,注釋掉Tcl腳本中的三個(gè)語句,如圖21所示,我們可以輕松地將Black Hole行為添加到Node0中。第一個(gè)語句“$ ns node-config -adhocRouting blackholeAODV”是添加黑洞AODV行為到從此點(diǎn)創(chuàng)建的節(jié)點(diǎn)。 但是我們只將節(jié)點(diǎn)0定義為黑洞AODV,并且在節(jié)點(diǎn)0再次使用第三個(gè)語句之后,我們必須更改為AODV協(xié)議。 第二個(gè)聲明只是向Node0發(fā)出通知,將其定義為黑洞節(jié)點(diǎn)。
圖21?在Tcl腳本中創(chuàng)建和配置節(jié)點(diǎn)
節(jié)點(diǎn)0為黑洞AODV節(jié)點(diǎn),它吸收從節(jié)點(diǎn)2到節(jié)點(diǎn)5的連接中的數(shù)據(jù)包。圖22顯示了黑洞AODV節(jié)點(diǎn)如何吸收流量。
圖22?節(jié)點(diǎn)0(黑洞節(jié)點(diǎn))吸收節(jié)點(diǎn)2到節(jié)點(diǎn)5的數(shù)據(jù)包
因?yàn)槲覀儾荒茌p易地看到黑洞AODV Node在大量節(jié)點(diǎn)和連接中的影響,在實(shí)際的仿真中進(jìn)行實(shí)驗(yàn)之前,我們必須在具有少量節(jié)點(diǎn)的小型模擬中測(cè)試實(shí)現(xiàn)。
5.3 黑洞攻擊的測(cè)試
5.3.1?模擬參數(shù)和測(cè)量指標(biāo)
在偶數(shù)節(jié)點(diǎn)(包括0(零))和奇數(shù)節(jié)點(diǎn)之間建立UDP連接,我們使用了20個(gè)節(jié)點(diǎn),節(jié)點(diǎn)18和節(jié)點(diǎn)19沒有連接到網(wǎng)絡(luò)中的任何其他節(jié)點(diǎn)。
在這些情況下,偶數(shù)節(jié)點(diǎn)(節(jié)點(diǎn)0 - 節(jié)點(diǎn)16)是發(fā)送節(jié)點(diǎn),奇數(shù)節(jié)點(diǎn)(節(jié)點(diǎn)1 - 節(jié)點(diǎn)17)是接收節(jié)點(diǎn),偶數(shù)節(jié)點(diǎn)將分組發(fā)送到下一個(gè)奇數(shù)節(jié)點(diǎn),例如 節(jié)點(diǎn)0到節(jié)點(diǎn)1,節(jié)點(diǎn)2到節(jié)點(diǎn)3,節(jié)點(diǎn)4到節(jié)點(diǎn)5等等。我們可以對(duì)任何2個(gè)節(jié)點(diǎn)之間的發(fā)送和接收分組進(jìn)行計(jì)數(shù)。我們將 UDP代理連接到偶數(shù)節(jié)點(diǎn),并且NULL代理附加到奇數(shù)節(jié)點(diǎn)。
在這個(gè)場(chǎng)景中,18個(gè)節(jié)點(diǎn)之間共有9個(gè)連接,并且所有這些連接總是位于相同的節(jié)點(diǎn)之間。 但是,在每種情況下,每個(gè)單個(gè)節(jié)點(diǎn)都被放置在不同的坐標(biāo)上并且有著不同的運(yùn)動(dòng)表現(xiàn),這有助于我們使用相同的節(jié)點(diǎn)得到不同的結(jié)果,。節(jié)點(diǎn)位置和移動(dòng)由NS的第三方應(yīng)用程序“./setdest”隨機(jī)生成,并保存在模擬根目錄的“/ scenario”目錄中。 使用“./setdest”的參數(shù)命名每個(gè)場(chǎng)景,例如?“scen1forAODV-n20-t500-x750-y750”,“./setdest”應(yīng)用程序會(huì)在750 x 750米的平面空間中,在500秒內(nèi),隨機(jī)選擇速度,從20個(gè)節(jié)點(diǎn)之間產(chǎn)生一個(gè)從隨機(jī)起點(diǎn)移動(dòng)到隨機(jī)目的地的場(chǎng)景。
我們附加通過UDP連接生成常量數(shù)據(jù)包的CBR(常數(shù)比特率)應(yīng)用程序。 場(chǎng)景的持續(xù)時(shí)間為500秒,CBR連接在場(chǎng)景的第一秒開始,持續(xù)到場(chǎng)景的450秒。在本實(shí)驗(yàn)中,CBR參數(shù)如下:
包大小:512bytes
數(shù)據(jù)速率:10Kbits
在這個(gè)仿真中,我們沒有使用隨機(jī)包。
連接類型由NS的第三方應(yīng)用程序“./cbrgen”生成,并在模擬根目錄的“/ scenario”目錄中保存為名為“cbr”的文件。 附錄A中注釋的for循環(huán)將創(chuàng)建相同的cbr連接。
仿真中的節(jié)點(diǎn)由Tcl語言的“for”循環(huán)語句生成。 創(chuàng)建節(jié)點(diǎn)的這些語句如圖23所示。第一個(gè)循環(huán)創(chuàng)建了圖24中配置的前19個(gè)節(jié)點(diǎn)。“$ ns_ node-config - adhocRouting blackholeAODV”語句將節(jié)點(diǎn)配置的路由協(xié)議更改為NS中實(shí)現(xiàn)的“blackholeAODV”。在這句語句后面的第二個(gè)循環(huán)創(chuàng)造了最后一個(gè)節(jié)點(diǎn)。改變“$ val(nnaodv)”變量,我們可以根據(jù)需要?jiǎng)?chuàng)建AODV和Black Hole AODV節(jié)點(diǎn)。
圖23 使用循環(huán)創(chuàng)建無線節(jié)點(diǎn)
圖24 無線節(jié)點(diǎn)配置
我們的模擬文件以其模擬數(shù)字和“BlackHole”定義命名,例如“sim1forBlackHole.tcl”用于模擬1.為了比較具有黑洞AODV節(jié)點(diǎn)的模擬與沒有的模擬文件,我們更改了“ $ val(nnaodv)“變量為20,并在”$ ns_ node-config -adhocRouting blackholeAODV“語句前放置注釋”#“,然后我們將Tcl腳本復(fù)制到同一目錄中,用“AODV”更改”BlackHole“定義的文件名,例如“sim1forAODV.tcl”用于模擬1.黑洞AODV的第一個(gè)模擬文件的內(nèi)容,如附錄A所示。
5.3.2?檢查跟蹤文件并獲取結(jié)果
我們從Tcl腳本的輸出跟蹤文件中獲取模擬結(jié)果,該文件具有.tr擴(kuò)展名。 跟蹤文件包括模擬中的所有事件,例如發(fā)送數(shù)據(jù)包,哪個(gè)節(jié)點(diǎn)生成它們,哪個(gè)節(jié)點(diǎn)已經(jīng)接收到那個(gè)類型的數(shù)據(jù)包被發(fā)送,如果它被丟棄為什么被丟棄等等。在我們的模擬中,我們使用特別用于無線網(wǎng)絡(luò)的“new-trace”文件格式,并包括詳細(xì)的事件信息。 新追蹤文件示例如附錄B所示。
為了從跟蹤文件獲得結(jié)果,我們只需要字段1中的事件種類,字段4中的節(jié)點(diǎn)id(-Ni)和跟蹤級(jí)別(-Nl),字段5中的源地址,目標(biāo)地址和數(shù)據(jù)包類型。要識(shí)別 以上來自跟蹤文件的信息,我們使用UNIX的“cat”命令,并將其輸出寫入文件以供模擬的所有跟蹤文件使用。 在所有輸出中,我們只需要:
字段0中的事件信息的“s”值,以計(jì)算發(fā)送節(jié)點(diǎn)發(fā)送的CBR數(shù)據(jù)包數(shù)量
字段0中的事件信息的“r”值,以計(jì)算接收節(jié)點(diǎn)接收到的CBR數(shù)據(jù)包數(shù)量
“node?id”:值為字段4中的節(jié)點(diǎn)id信息,用于發(fā)送節(jié)點(diǎn)或接收節(jié)點(diǎn)
“MAC”值在字段4中的跟蹤級(jí)別信息,以過濾MAC級(jí)別(牙注:過濾mac級(jí)別是什么意思?)
字段5中的源地址和目的地地址信息的“源地址”和“目的地址”值,以計(jì)數(shù)從發(fā)送節(jié)點(diǎn)到接收節(jié)點(diǎn)的數(shù)據(jù)包。
cbr:字段5中的數(shù)據(jù)包類型,用于過濾cbr包(牙注:過濾cbr包是什么意思?)
總結(jié)
以上是生活随笔為你收集整理的NS2仿真分析无线网络的攻击防御(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 济宁市机器人科技乐园_人工智能的“游乐场
- 下一篇: 6大设计原则之开闭原则