一種提取移動(dòng)自組織網(wǎng)絡(luò)mac層拓?fù)浞椒?br>
【專利摘要】本發(fā)明屬于移動(dòng)自組織網(wǎng)絡(luò)領(lǐng)域,具體涉及移動(dòng)自組織網(wǎng)絡(luò)所使用的MAC協(xié)議。首先對(duì)采集的數(shù)據(jù)進(jìn)行過濾,然后提取所有剩下數(shù)據(jù)包MAC層中的MAC地址對(duì),根據(jù)這些地址對(duì),繪制出MAC層拓?fù)浣Y(jié)構(gòu)。搜集目標(biāo)網(wǎng)絡(luò)中通信的數(shù)據(jù)包,對(duì)這些數(shù)據(jù)包進(jìn)行篩選,僅保留移動(dòng)自組網(wǎng)中MAC幀是數(shù)據(jù)幀,提取出剩下數(shù)據(jù)包MAC層中MAC地址對(duì),基于這些地址對(duì)能夠提取出目標(biāo)網(wǎng)絡(luò)MAC層拓?fù)浣Y(jié)構(gòu)。
【專利說明】—種提取移動(dòng)自組織網(wǎng)絡(luò)MAC層拓?fù)浞椒?br>
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于移動(dòng)自組織網(wǎng)絡(luò)領(lǐng)域,具體涉及移動(dòng)自組織網(wǎng)絡(luò)所使用的MAC協(xié)議。 【背景技術(shù)】
[0002]移動(dòng)自組織網(wǎng)絡(luò),是由若干可移動(dòng)的通信節(jié)點(diǎn)構(gòu)成的無固定設(shè)置的、可快速組建 的多跳無線通信網(wǎng)絡(luò),它具有網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)動(dòng)態(tài)變化、自組織無中心節(jié)點(diǎn)、無線傳輸帶寬有 限等特點(diǎn)。通過觀察網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),可以獲知網(wǎng)絡(luò)是否存在漏洞并對(duì)網(wǎng)絡(luò)性能進(jìn)行評(píng)估,也 可以獲知某區(qū)域節(jié)點(diǎn)是否密集。針對(duì)某區(qū)域的密集程度,可以選擇適合的路由協(xié)議。在移 動(dòng)自組織網(wǎng)絡(luò)中,當(dāng)有節(jié)點(diǎn)出現(xiàn)故障,不能和其他節(jié)點(diǎn)通信的時(shí)候,網(wǎng)絡(luò)管理員可以通過獲 取此時(shí)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),通過比較以前和現(xiàn)在的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),找出可能出現(xiàn)故障的節(jié)點(diǎn) 并及時(shí)的修復(fù)它。本專利是一種基于采集的數(shù)據(jù)提取出移動(dòng)自組織網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種提取MAC層拓?fù)浣Y(jié)構(gòu)的方法。
[0004]本發(fā)明的目的通過如下步驟實(shí)現(xiàn):
[0005]S1、對(duì)采集的數(shù)據(jù)包進(jìn)行篩選,過濾掉非測(cè)試網(wǎng)絡(luò)的數(shù)據(jù)包,保留MAC幀是Data類 型或Data QoS類型、MAC地址(源和目的)是單播地址的數(shù)據(jù)包,其中,所述的采集的數(shù)據(jù)包 為目標(biāo)網(wǎng)絡(luò)中所有數(shù)據(jù)包;
[0006]S2、提取SI篩選下來的數(shù)據(jù)包的MAC地址對(duì),若目的MAC地址是廣播地址,則拋棄 該數(shù)據(jù)包,否則把這對(duì)地址作為一個(gè)元素存入鏈表MACList中;
[0007]S3、創(chuàng)建一個(gè)一維數(shù)組MACadd[],用來存放所有的MAC地址,并記每個(gè)MAC地址在 數(shù)組中的位置作為其索引號(hào),記為Index,其中,有L個(gè)元素;
[0008]S4、根據(jù)S3所述的一維數(shù)組MACadd 口創(chuàng)建一個(gè)L*L的二維數(shù)組Adjac_MAC 口 [], 所述Adjac_MAC[][]的橫坐標(biāo)表示源MAC地址,縱坐標(biāo)表示目的MAC地址,所有元素值初 始化為0,所述Adjac_MAC[][]中元素值表示源和目的MAC地址之間的發(fā)包數(shù),遍歷鏈表 MACList中所有元素,更新鄰接矩陣;
[0009]S5、根據(jù)S4所述更新后的鄰接矩陣,繪制測(cè)試網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),包括:
[0010]S51、確定子圖個(gè)數(shù),子圖中的任意節(jié)點(diǎn)和其他子圖中的每個(gè)節(jié)點(diǎn)都不存在鏈路, 初始化subgraph=l,記索引號(hào)為I的節(jié)點(diǎn)為參考節(jié)點(diǎn);
[0011]S52、反向遍歷S51所述參考節(jié)點(diǎn)對(duì)應(yīng)的行元素,若有元素值不為零,則標(biāo)記該值 列坐標(biāo)對(duì)應(yīng)的節(jié)點(diǎn)為已讀,并以最后一個(gè)元素值不為零時(shí),該值列坐標(biāo)對(duì)應(yīng)的節(jié)點(diǎn)為參考 節(jié)點(diǎn),執(zhí)行步驟S52 ;
[0012]S53、遍歷所有節(jié)點(diǎn),查找是否存在沒有被標(biāo)記的,若都標(biāo)記為已讀,則執(zhí)行步驟 S54,若有未被標(biāo)記的,則停止查找,以該節(jié)點(diǎn)為參考節(jié)點(diǎn),且subgraph++,執(zhí)行步驟S52 ;
[0013]S54、把每個(gè)節(jié)點(diǎn)的標(biāo)記清零,設(shè)顯示區(qū)域?qū)挒閣idth,高為height,存在鏈路的節(jié) 點(diǎn)之間距離為r=width/3/sqrt (subgraph),根據(jù)subgraph,把顯示區(qū)域劃分為subgraph塊,記索引號(hào)為I的節(jié)點(diǎn)為根節(jié)點(diǎn),若subgraph為奇數(shù),其坐標(biāo)為X=width/2, Y=height/2,否則根節(jié)點(diǎn)的坐標(biāo)為 X=width* (subgraph+1) / (2*subgraph) , Y=height/2 ;
[0014]S55、確定與根節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)坐標(biāo)。先統(tǒng)計(jì)與根節(jié)點(diǎn)存在鏈路節(jié)點(diǎn)的個(gè)數(shù),記為 adjacentnum,令 Q= Ji/4,若 adjacentnum==l, Q= /2,否則,dQ= ^ /2/(adjacentnum-1),與根節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)坐標(biāo)為X’ =X+r*cos (Q),Y,=Y+r*sin(Q), Q姆次遞增ー個(gè)dQ,并標(biāo)記姆個(gè)節(jié)點(diǎn)為已讀,令fIag=I, dn=0 ;
[0015]S56、遍歷所有節(jié)點(diǎn),若所有節(jié)點(diǎn)均已被標(biāo)記為已讀,則結(jié)束,否貝U,執(zhí)行flag*=_l,當(dāng)其為-1時(shí),表示與該節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)放在左邊的子圖,flag為I時(shí),表示與該節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)放在右邊的子圖,并以該節(jié)點(diǎn)為根節(jié)點(diǎn),若subgraph為奇數(shù),根節(jié)點(diǎn)坐標(biāo)為 X=0.5*(subgraph+flag*dn)*width/subgraph, Y=height/2 ;否則,根節(jié)點(diǎn)的坐標(biāo)為 X=0.5* (subgraph+l+f lag*dn) *width/subgraph, Y=height/20 f Iag==I 時(shí),dn+=2,表不左右子圖都畫完一次,執(zhí)行步驟S55。
[0016]本發(fā)明的有益效果是:搜集目標(biāo)網(wǎng)絡(luò)中通信的數(shù)據(jù)包,對(duì)這些數(shù)據(jù)包進(jìn)行篩選,僅保留移動(dòng)自組網(wǎng)中MAC幀是數(shù)據(jù)幀,提取出剩下數(shù)據(jù)包MAC層中MAC地址對(duì),基于這些地址對(duì)能夠提取出目標(biāo)網(wǎng)絡(luò)MAC層拓?fù)浣Y(jié)構(gòu)。
【專利附圖】
【附圖說明】
[0017]圖1是提取MAC層拓?fù)浣Y(jié)構(gòu)流程圖。
[0018]圖2是ー個(gè)基于A ODV路由協(xié)議的移動(dòng)自組網(wǎng)的拓?fù)鋱D。每個(gè)圓代表ー個(gè)節(jié)點(diǎn),數(shù)字代表編號(hào),每個(gè)邊代表一條直達(dá)鏈路。
[0019]圖3是802.11協(xié)議一般幀格式。
[0020]圖4是802.11協(xié)議幀格式中Frame control字段具體格式。
【具體實(shí)施方式】
[0021]下面結(jié)合附圖來說明本發(fā)明的【具體實(shí)施方式】:
[0022]創(chuàng)建ー個(gè)移動(dòng)移動(dòng)自組織網(wǎng)絡(luò),基于AODV路由協(xié)議實(shí)驗(yàn)平臺(tái),MAC層采用802.11協(xié)議,通過互相發(fā)送ping命令產(chǎn)生數(shù)據(jù)。用Linux系統(tǒng)下Wireshark搜集數(shù)據(jù),需開啟混雜模式(monO),這樣才能收集覆蓋范圍內(nèi)的所有數(shù)據(jù)包。在Windows下用Microsoft visualstudio2008編寫的程序?qū)Σ杉臄?shù)據(jù)進(jìn)行分析,最后把程序整合到Wireshark下進(jìn)行演
/Jn o
[0023]S1、如圖2所示,構(gòu)建ー個(gè)移動(dòng)自組織網(wǎng)絡(luò),由四個(gè)節(jié)點(diǎn)組成星形結(jié)構(gòu),采用基于AODV路由協(xié)議實(shí)驗(yàn)平臺(tái),MAC層采用802.11協(xié)議,幀格式如圖3所示,互相發(fā)送ping命令
產(chǎn)生數(shù)據(jù)。
[0024]S2、對(duì)收集的數(shù)據(jù)進(jìn)行篩選。
[0025]S21、過濾掉非測(cè)試網(wǎng)絡(luò)的數(shù)據(jù)包。采集數(shù)據(jù)的時(shí)候,是聯(lián)入該網(wǎng)絡(luò)進(jìn)行采集的,即假設(shè)MAC層數(shù)據(jù)部分是未加密或已解密的,而其他網(wǎng)絡(luò)大多數(shù)都是加密的。所以,若數(shù)據(jù)包MAC層數(shù)據(jù)部分加密了,則認(rèn)為是非測(cè)試網(wǎng)絡(luò)的數(shù)據(jù)包。在接收的PCAP文件中,若MAC層數(shù)據(jù)部分未加密或已解密,則數(shù)據(jù)包中邏輯鏈路控制字段8個(gè)字節(jié)都為“&&、&&、03、00、00、
00、08、00”(十六進(jìn)制表示),提取出每個(gè)數(shù)據(jù)包該字段的值,若有一個(gè)比特不相符,則認(rèn)為該數(shù)據(jù)包不是目標(biāo)網(wǎng)絡(luò)產(chǎn)生的。
[0026]S22、只保留MAC幀是Data類型或Data QoS類型、MAC地址(源和目的)是單播地址的數(shù)據(jù)包。在MAC幀頭部Frame control字段(見圖4)中,有種類和子類兩部分,種類有控制幀(01),管理幀(00),數(shù)據(jù)幀(10)。設(shè)一個(gè)數(shù)據(jù)包Frame control字段低8位的值賦給 macFrameType,若(macFrameType&OxOC) ==0x08,則保留,否則都拋棄。
[0027]S3、提取篩選下來的數(shù)據(jù)包的MAC地址對(duì)(SA表示源MAC地址、DA表示目的MAC地址),若目的MAC地址是廣播地址,即255.255.255.255 (十進(jìn)制),則拋棄該數(shù)據(jù)包,否則把這對(duì)地址作為一個(gè)元素存入鏈表MACList中;
[0028]S4、動(dòng)態(tài)創(chuàng)建一個(gè)一維數(shù)組MACadd[],用來存放所有MAC地址。遍歷鏈表MACList中每個(gè)元素,判斷其中的MAC地址是否已在數(shù)組中。若數(shù)組MACadd []中沒有某MAC地址,則加入;若已存在,則不加。并記每個(gè)MAC地址在數(shù)組中的位置作為其索引號(hào),記為Index。
[0029]S5、根據(jù)一維數(shù)組MACadd [],元素個(gè)數(shù)記為L(zhǎng),創(chuàng)建一個(gè)L*L 二維數(shù)組Adjac_MAC []□,橫坐標(biāo)表示源MAC地址,縱坐標(biāo)表示目的MAC地址,所有元素值初始化為O。數(shù)組中元素值表示源和目的MAC地址之間發(fā)包數(shù)。遍歷鏈表MACList,鏈表中每個(gè)元素(MAC地址對(duì))的源MAC地址記為SA、目的MAC地址記為DA,通過更新鄰接矩陣中對(duì)應(yīng)的元素,即Adjac_MAC[Index[SA]][Index[DA]]++。
[0030]S6、繪制測(cè)試網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。繪制拓?fù)鋱D的步驟如下:
[0031]A:確定有幾個(gè)子圖,子圖中的任意節(jié)點(diǎn)和其他子圖中的每個(gè)節(jié)點(diǎn)都不存在鏈路。初始化subgraph=l,記索引號(hào)為I的節(jié)點(diǎn)為參考節(jié)點(diǎn)。
[0032]B:反向遍歷參考節(jié)點(diǎn)對(duì)應(yīng)的行元素,若有元素值不為零,則標(biāo)記該值列坐標(biāo)對(duì)應(yīng)的節(jié)點(diǎn)為已讀,并以最后一個(gè)元素值不為零時(shí),該值列坐標(biāo)對(duì)應(yīng)的節(jié)點(diǎn)為參考節(jié)點(diǎn),執(zhí)行步驟B。
[0033]C:遍歷所有節(jié)點(diǎn),查找是否存在沒有被標(biāo)記的,若都標(biāo)記為已讀,則執(zhí)行步驟D,若有未被標(biāo)記的,則停止查找,以該節(jié)點(diǎn)為參考節(jié)點(diǎn),且subgraph++,執(zhí)行步驟B。
[0034]D:把每個(gè)節(jié)點(diǎn)的標(biāo)記清零,設(shè)顯示區(qū)域?qū)挒閣idth,高為height,存在鏈路的節(jié)點(diǎn)之間距離為r=width/3/sqrt (subgraph)。根據(jù)subgraph,把顯示區(qū)域劃分為subgraph塊。記索引號(hào)為I的節(jié)點(diǎn)為根節(jié)點(diǎn),若subgraph為奇數(shù),其坐標(biāo)為X=width/2, Y=height/2 ;否則根節(jié)點(diǎn)的坐標(biāo)為 X=width* (subgraph+1) / (2*subgraph) , Y=height/2。
[0035]E:確定與根節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)坐標(biāo)。先統(tǒng)計(jì)與根節(jié)點(diǎn)存在鏈路節(jié)點(diǎn)的個(gè)數(shù),記為 adjacentnum,令 Q=Ji/4。若 adjacentnum==l, Q= π /2,;否則,dQ= π /2/(adjacentnum-1)。與根節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)坐標(biāo)為X’ =X+r*cos (Q),Y’ =Y+r*sin (Q),Q每次遞增一個(gè)dQ,并標(biāo)記每個(gè)節(jié)點(diǎn)為已讀,令flag=l, dn=0。
[0036]F:遍歷所有節(jié)點(diǎn),若所有節(jié)點(diǎn)均已被標(biāo)記為已讀,貝U結(jié)束;否則,執(zhí)行flag*=_l,當(dāng)其為-1時(shí),表示與該節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)放在左邊的子圖,flag為I時(shí),表示與該節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)放在右邊的子圖,并以該節(jié)點(diǎn)為根節(jié)點(diǎn),若subgraph為奇數(shù),根節(jié)點(diǎn)坐標(biāo)為 X=0.5*(subgraph+flag*dn)*width/subgraph, Y=height/2 ;否則,根節(jié)點(diǎn)的坐標(biāo)為 Χ=0.5* (subgraph+l+f lag*dn) *width/subgraph, Y=height/20 f Iag==I 時(shí),dn+=2,表不左右子圖都畫完一次。執(zhí)行步驟E。
【權(quán)利要求】
1.一種提取移動(dòng)自組織網(wǎng)絡(luò)MAC層拓?fù)浞椒ǎ涮卣髟谟?,包括如下步驟: S1、對(duì)采集的數(shù)據(jù)包進(jìn)行篩選,過濾掉非測(cè)試網(wǎng)絡(luò)的數(shù)據(jù)包,保留MAC幀是Data類型或Data QoS類型、MAC地址(源和目的)是單播地址的數(shù)據(jù)包,其中,所述的采集的數(shù)據(jù)包為目標(biāo)網(wǎng)絡(luò)中所有數(shù)據(jù)包; S2、提取SI篩選下來的數(shù)據(jù)包的MAC地址對(duì),若目的MAC地址是廣播地址,則拋棄該數(shù)據(jù)包,否則把這對(duì)地址作為一個(gè)元素存入鏈表MACList中; S3、創(chuàng)建一個(gè)一維數(shù)組MACadd[],用來存放所有的MAC地址,并記每個(gè)MAC地址在數(shù)組中的位置作為其索引號(hào),記為Index,其中,有L個(gè)元素; S4、根據(jù)S3所述的一維數(shù)組MACadd[]創(chuàng)建一個(gè)L*L的二維數(shù)組Adjac_MAC[][],所述Adjac_MAC[][]的橫坐標(biāo)表示源MAC地址,縱坐標(biāo)表示目的MAC地址,所有元素值初始化為.0,所述Adjac_MAC[][]中元素值表示源和目的MAC地址之間的發(fā)包數(shù),遍歷鏈表MACList中所有元素,更新鄰接矩陣; S5、根據(jù)S4所述更新后的鄰接矩陣,繪制測(cè)試網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),包括: S51、確定子圖個(gè)數(shù),子圖中的任意節(jié)點(diǎn)和其他子圖中的每個(gè)節(jié)點(diǎn)都不存在鏈路,初始化subgraph=l,記索引號(hào)為I的節(jié)點(diǎn)為參考節(jié)點(diǎn); S52、反向遍歷S51所述參考節(jié)點(diǎn)對(duì)應(yīng)的行元素,若有元素值不為零,則標(biāo)記該值列坐標(biāo)對(duì)應(yīng)的節(jié)點(diǎn)為已讀,并以最后一個(gè)元素值不為零時(shí),該值列坐標(biāo)對(duì)應(yīng)的節(jié)點(diǎn)為參考節(jié)點(diǎn),執(zhí)行步驟S52 ; S53、遍歷所有節(jié)點(diǎn),查找是否存在沒有被標(biāo)記的,若都標(biāo)記為已讀,則執(zhí)行步驟S54,若有未被標(biāo)記的,則停止查找,以該節(jié)點(diǎn)為參考節(jié)點(diǎn),且subgraph++,執(zhí)行步驟S52 ; S54、把每個(gè)節(jié)點(diǎn)的標(biāo)記清零,設(shè)顯示區(qū)域?qū)挒閣idth,高為height,存在鏈路的節(jié)點(diǎn)之間距離為r=width/3/sqrt (subgraph),根據(jù)subgraph,把顯示區(qū)域劃分為subgraph塊,記索引號(hào)為I的節(jié)點(diǎn)為根節(jié)點(diǎn),若subgraph為奇數(shù),其坐標(biāo)為X=width/2, Y=height/2,否則根節(jié)點(diǎn)的坐標(biāo)為 X=width* (subgraph+1) / (2*subgraph) , Y=height/2 ; S55、確定與根節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)坐標(biāo),先統(tǒng)計(jì)與根節(jié)點(diǎn)存在鏈路節(jié)點(diǎn)的個(gè)數(shù),記為adjacentnum,令 Q= π /4,若 adjacentnum==l, Q= π /2,否則,dQ= π /2/ (adjacentnum-1),與根節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)坐標(biāo)為X’ =X+r*cos (Q),Y’ =Y+r*sin (Q),Q每次遞增一個(gè)dQ,并標(biāo)記每個(gè)節(jié)點(diǎn)為已讀,令f Iag=I, dn=0 ; S56、遍歷所有節(jié)點(diǎn),若所有節(jié)點(diǎn)均已被標(biāo)記為已讀,則結(jié)束,否則,執(zhí)行flag*=-l,當(dāng)其為-1時(shí),表示與該節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)放在左邊的子圖,flag為I時(shí),表示與該節(jié)點(diǎn)存在鏈路的節(jié)點(diǎn)放在右邊的子圖,并以該節(jié)點(diǎn)為根節(jié)點(diǎn),若subgraph為奇數(shù),根節(jié)點(diǎn)坐標(biāo)為X=0.5* (subgraph+flag*dn) *width/subgraph, Y=height/2 ;否則,根節(jié)點(diǎn)的坐標(biāo)為 X=0.5*(subgraph+l+f lag*dn) *width/subgraph, Y=height/2, f Iag==I 時(shí),dn+=2,表不左右子圖都畫完一次,執(zhí)行步驟S55。
【文檔編號(hào)】H04W84/18GK103595640SQ201310633623
【公開日】2014年2月19日 申請(qǐng)日期:2013年11月29日 優(yōu)先權(quán)日:2013年11月29日
【發(fā)明者】阮宗利, 劉學(xué)通, 王海南, 彭曉燕, 廖紅舒 申請(qǐng)人:電子科技大學(xué)