以太網(wǎng)鏈路層虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法研究與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第1頁
以太網(wǎng)鏈路層虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法研究與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第2頁
以太網(wǎng)鏈路層虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法研究與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第3頁
以太網(wǎng)鏈路層虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法研究與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第4頁
以太網(wǎng)鏈路層虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法研究與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

精品文檔-下載后可編輯以太網(wǎng)鏈路層虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法研究與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用摘要本文分析了現(xiàn)有的以太網(wǎng)鏈路層拓?fù)浒l(fā)現(xiàn)算法,在此基礎(chǔ)上提出了虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)改進(jìn)算法,給出了算法的具體實(shí)現(xiàn)方法和實(shí)現(xiàn)。使得原有算法的應(yīng)用范圍更廣,適應(yīng)性更強(qiáng)。改進(jìn)后的算法可以發(fā)現(xiàn)網(wǎng)絡(luò)中原算法無法發(fā)現(xiàn)的設(shè)備。

1、引言

隨著計(jì)算機(jī)性能的提高及通信量的巨增,傳統(tǒng)局域網(wǎng)已經(jīng)愈來愈超出了自身的負(fù)荷,交換式以太網(wǎng)技術(shù)應(yīng)運(yùn)而生,大大提高了局域網(wǎng)的性能。與過去基于網(wǎng)橋,集線器,路由器的共享媒體的局域網(wǎng)拓?fù)浣Y(jié)構(gòu)相比,網(wǎng)絡(luò)交換機(jī)能顯著的增加帶寬。交換技術(shù)的加入,就可以建立地理位置相對分散的網(wǎng)絡(luò),使局域網(wǎng)交換機(jī)的每個端口可平行、安全、同時的互相傳輸信息,而且使局域網(wǎng)可以高度擴(kuò)充。局域網(wǎng)交換機(jī)根據(jù)使用的網(wǎng)絡(luò)技術(shù)可分為:以太網(wǎng)交換機(jī)、令牌環(huán)交換機(jī)、FDDI交換機(jī)、ATM交換機(jī)、快速以太網(wǎng)交換機(jī)。由于以太網(wǎng)的簡單與易用性,所以目前大部分的LAN均采用了以太網(wǎng)交換機(jī)與快速以太網(wǎng)交換機(jī)作為自己的網(wǎng)絡(luò)交換設(shè)備。本文中的鏈路層拓?fù)浒l(fā)現(xiàn)正是針對以太網(wǎng)中的二層設(shè)備。

目前很多算法都是針對純可管理得交換機(jī)網(wǎng)絡(luò)設(shè)計(jì)的,但在實(shí)際應(yīng)用中,經(jīng)常會出現(xiàn)交換機(jī)網(wǎng)絡(luò)中夾雜著HUB或不可管理的啞交換機(jī)。這種類型設(shè)備的存在使網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的準(zhǔn)確性大打折扣,我們把這類型的設(shè)備定義為虛擬交換機(jī)。因此提出一種對虛擬交換機(jī)的拓?fù)浒l(fā)現(xiàn)算法能使得原有算法的應(yīng)用范圍更廣,適應(yīng)性更強(qiáng)。

2、現(xiàn)有鏈路層拓?fù)浒l(fā)現(xiàn)算法

從交換機(jī)工作原理上我們能夠發(fā)現(xiàn),交換機(jī)并未提供一種有效、直接的方法確定其直接連接的設(shè)備。對于一個異構(gòu)的網(wǎng)絡(luò)我們可行的方法就是利用SNMP中的MIBⅡbridge組的信息(各個廠家都實(shí)現(xiàn)),得到交換機(jī)的地址轉(zhuǎn)發(fā)表,并分析其特性,利用提出得簡單連接關(guān)系確定直接連接關(guān)系,來確定物理網(wǎng)路的拓?fù)潢P(guān)系。

2.1現(xiàn)有算法描述

以給定的子網(wǎng)號和掩碼地址作為輸入,以交換機(jī)對象鏈表,網(wǎng)段對象鏈表,主機(jī)對象鏈表,打印機(jī)對象鏈表和2層連接對象鏈表為算法的輸出。給定子網(wǎng)的拓?fù)湫畔⑷堪谏鲜龅逆湵碇小?/p>

1)算法的部分首先根據(jù)子網(wǎng)地址和子網(wǎng)掩碼計(jì)算出子網(wǎng)的范圍,然后掃描該范圍內(nèi)的所有IP地址,并判斷設(shè)備的類型以及其它信息。該過程用偽代碼表示如下:

for(子網(wǎng)范圍內(nèi)的每一個地址ipAddr)

if(存在某個設(shè)備的IP地址為ipAddr)

deviceType=getTypeofDevice(ipAddr);

if(deviceType==switch)生成交換機(jī)對象,添加到交換機(jī)對象鏈表中;

elseif(deviceType==printer)生成打印機(jī)對象,添加到打印機(jī)對象鏈表中;

else

生成主機(jī)對象,添加到主機(jī)對象鏈表中;

2)找到子網(wǎng)內(nèi)所有主機(jī)的MAC地址。

3)遍歷子網(wǎng)中所有的交換機(jī),交換機(jī)的FDB表。

4)基于每個交換機(jī)的FDB表,利用[4]所描述的方法計(jì)算交換機(jī)之間的連接關(guān)系。

5)重新調(diào)整子網(wǎng)內(nèi)的所有網(wǎng)段。

6)把網(wǎng)段和交換機(jī)的連接關(guān)系構(gòu)造成對象,添加到2層連接對象鏈表中。

在算法的第(2)步,之所以要找到物理地址是因?yàn)榻粨Q機(jī)FDB中的地址是MAC地址,在為主機(jī)劃分網(wǎng)段時,要用到這些MAC地址。找到主機(jī)MAC地址的方法有兩種。種是利用主機(jī)的MIBII中的inferfaces組中的ifPhysAddress對象,另一種是利用與該子網(wǎng)相連的路由器中的ipNetToMediaTable來找到該子網(wǎng)內(nèi)的所有主機(jī)的MAC地址。

2.2算法所存在的問題

算法的假設(shè)條件是整個網(wǎng)絡(luò)都是可管理的交換機(jī),即可以通過SNMP協(xié)議取得相應(yīng)信息。并且所有交換機(jī)是連接在一棵樹上,當(dāng)網(wǎng)絡(luò)中存在HUB和啞交換機(jī)時,因?yàn)樗鼈儧]有MIB表或取不到MIB信息,因此有許多設(shè)備就不能自動被發(fā)現(xiàn),而只能通過手動方式添加。在中提到虛擬交換機(jī)的概念及簡單的解決方法,但并沒有給出具體的實(shí)現(xiàn)算法。

3、虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法描述

虛擬交換機(jī)拓?fù)浒l(fā)現(xiàn)算法主要目的就是要檢測哪些交換機(jī)是直接連接到虛擬交換設(shè)備以及哪些交換機(jī)又是這些設(shè)備的下連設(shè)備。為了實(shí)現(xiàn)這個目標(biāo),根據(jù)中簡單連接原理,能得到每個設(shè)備和它們所有的根設(shè)備之間的連接關(guān)系集合。如果某一根設(shè)備跟它的集合中所有設(shè)備都沒有直接連接關(guān)系,則該設(shè)備下聯(lián)可能就是一個虛擬交換設(shè)備。這樣就確定了虛擬交換機(jī)的位置,下來是要找出與虛擬交換設(shè)備直接連接的下級設(shè)備。如果某一個或多個設(shè)備是其它所有設(shè)備到虛擬交換機(jī)所連接的根設(shè)備都必須經(jīng)過的節(jié)點(diǎn)(集合的交集),則這種設(shè)備一定是跟虛擬交換機(jī)直接連接的下級設(shè)備。

發(fā)現(xiàn)程序遍歷網(wǎng)絡(luò)中的每個交換機(jī),交換機(jī)中的FDB表,然后構(gòu)造兩張表:間接連接表和直接連接表。其中,間接連接表是一張二維表,每個表項(xiàng)都是一個struct,如下所示:

typedefstruct_SimpleConnectRecord{

SInterface*pSInterface;

struct_SimpleConnectRecord*portDown;//pointtothenextsimpleconnectrecord

struct_SimpleConnectRecord*portRight;//pointtotheSInterfaceofswitchsimplyconnected

}SimpleConnectRecord

表的每一行以交換機(jī)的某一個接口a開始,在接口a后面的同行的接口是以a為根,與a有簡單連接關(guān)系的所有接口。表的列包含了整個表中出現(xiàn)的所有的接口,并且兩兩互不相同,可以作為表的索引。

第二張表是直接連接表,直接連接表是一張一維鏈表。鏈表中的每個元素是下面的結(jié)構(gòu)體:

typedefstruct_DirectConnectRecord{

SInterface*pSInterfaceSource;

SInterface*pSinterfaceDestin;

struct_DirectConnectRecord*pNext;

}DirectConnectRecord;

拓?fù)浒l(fā)現(xiàn)程序通過對間接連接表的計(jì)算得到直接連接表,在根據(jù)直接連接表生成鏈路層連接對象。存儲在數(shù)據(jù)庫中。

3.1算法的實(shí)現(xiàn)

本算法采用java語言實(shí)現(xiàn)主要代碼如下:

VectorportRight[]=newVector[1024];

VectorportDown[]=newVector[1024];

Vectorcounter[]=newVector[1024];

intindex=0;

publicvoidgetDirectConnected(Stringhost){

createSimpleConnected(Stringhost);//利用Vector構(gòu)建一個可變大小的二維表

//對簡單連接表進(jìn)行識別得到直接連接關(guān)系

ListIteratorit=portDown[index].listIterator();

inti=0;//表示簡單連接表的行元素個數(shù)

intn=0;

counter[index]=newVector();

counter[index].addElement(newInteger(i));

while(it.hasNext()){//遍歷簡單連接表

i=Integer.parseInt(counter[index].get(0).toString());

intportSize=((Vector)portDown[index].elementAt(i)).size();

StringnextIP=((Vector)portDown[index].elementAt(i)).elementAt(0).toString();

if(portSize==2){//如果一個端口上僅僅連接一個設(shè)備,則與該設(shè)備是直接連接

i++;

index++;

getDirectConnected(nextIP);//以該設(shè)備為根得到其下級設(shè)備的連接關(guān)系

index--;

break;

}

elseif(portSize2){//連接多個設(shè)備的話,則通過算法得到直接連接關(guān)系

i++;

n++;

}

}

if(n==portSize){//如果所有的簡單連接設(shè)備的上連端口與其他設(shè)備之間均沒有簡單連接關(guān)系,則所有設(shè)備連接在

HUB上

//判斷哪些設(shè)備是與HUB簡單連接的設(shè)備

getHUBConnected();

//遍歷所有設(shè)備得到被各個設(shè)備包含的數(shù)

Stringtmp=ge

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論