一种基于SNMP的链路层拓扑发现算法

第38卷第2期

vol-38

No.2

文章■号t

计算机工程

2012年1月

JaIluary2012

文■耘讽码;A

中田分类号t11’393

Co唧u时Enginee咖g

・网络与通信・

1伽0_删(加12)o:}__0103——∞

措糟‘,王勇。,■奠玲‘

一种基于SNMP的链路层拓扑发现算法

(桂林电子科技大学&计算机科学与工程学院;bcsIP广西分中心;c信息与通信学院,广西桂林541004)

■蔓:为提高链路层网络拓扑发现效率,提出一种基于简单网络管理协议的拓扑发现算法。将交换机间的连接网络用树形结构表示,自

顶向下连层确定每个交换机的连接关系。通过修改连接关系的判定条件,并结合线程池和哈希查找技术,提高拓扑发现的效率。实验结果表明,该算法能快速准确地获得完整的哺}备:陌扑结构。

美t■:链路层;拓扑发现;简单网络管理协议;地址转发表;线程池;哈希查找

LinkLayer’ropolOgyDiscOVeryAlgOrithm

Based仰SiInpIeNetworkManagement

E^NN锄’w^NGY0Ⅱ矿,1AoⅪao-曲gc

(acollegeofcomputers石encc

ProtocoI

alldEngi【l∞血g:b

csmG啪g鲥c朋竹;c.couegcofIllf0呻a6∞andcbmm帅icati蚰,

adiscovery柚g耐thmforllllkl8yerof

connecdon

Guilinunive阽i【y

lAbs打actl

topology

InordertoimpfdvcⅡle

on

ofElec帅nic慨hnoIo阱Guilm望l004,c晡na)

desc—bingⅡ"c∞n∞donsbetw∞ns“忙h船孵aⅡ优.the

iropmvingthcc∞dinonsof

networkto刚09y

forev6Iy

based

simpleNetworl【M蛐age“∞nt

P㈣l(sNMP)By

lay盯accordjⅡg

djscov。叫emciencyofliIlkl8yer,吐115p8pe‘Pmpo∞s

划ab叩sllipof

eachswi【chis

esm蜥slled

t0畸埘ownm孤ncLBy

tllc咖n。ction妇w∞n

indicalcStb砒山e

t}Ⅱ训pool删hasllsearchtohpmve山eeffick“cy0ft叩olo盱discoVeryExp舐mental他sult

algo^岫c柚djscoverljIII【layertopolo鲥rapidlyandcomple世l弘andth6p吣sibknet’voIkel锄enbc扑bedlscoVercd

swikhes,combinedwitIItlle

IKeywordsl

search

link

layer;to阿ogydjscovery:sjmple№tworkM蛐gem朗t

Protocol(sNMP】:AddIcssFonvardingTable(AFD:tlIrc们pool:llash

DOI:10396叫issnl000—3428201202033

l捱述

链路层拓扑发现是确定子网内部网络设备之间的连接关系,其中最主要的是确定交换机之间的连接关系。目前,基于简单网络管理协议(simpIe

NetworkMan89ement

Protocol,

径。直接连接实际上是间接连接的特殊形式。例如在图l中,switchl和switch2属于直接连接关系,switchl与switch4则是间接连接关系。

sNMP)的网络拓扑发现算法在国内外得到了广泛的研究”41。文献【4—5J提出了基于地址转发表(AddressFonⅣarding1曲le,AFT)的物理拓扑发现算法,但该算法要求所有交换机的地址转发表是完整的。文献【6】在此基础上提出了改进算法,充分利用不完整的AFT信息判断网络设备的连接关系,并能发现可能存在的“哑设备”,但该算法运算量较大。文献【7】通过将交换机端口分为上行端口和下行端口,降低了对AFT的要求,并提出了一条判定上行端口和下行端口直连的引理。本文在上述研究工作的基础上。提出一种新的链路层网络拓扑发现算法,通过改进交换机连接关系的判定条件,并借助于线程池和哈希查找等技术,提高拓扑发现的效率。

2拓扑发现算法理论基稿

本文将子网中连接在一台路由器下的所有交换机的连接结构看作一棵“树”,设与路由器直接相连的交换机为树的第1层节点,与第1层交换机直接连接的交换机为第2层节点,以此类推,将交换机的连接结构划分为多个层,每个层有若干个节点。每个交换机节点又会连接一个或多个主机。这种结构方式清楚地反映了网络的拓扑结构。图1是一种常见的阿络拓扑结构。在交换机的结构树中,连接关系包括直接连接和问接连接。直接连接是指处于相邻位置的交换机相连接;而间接连接是指2个交换机之间存在着一条连接路

基盒疆目:国家自然科学基金资助项目(6嘴72022);广西研究生创新

基金资助项日(2010105950812M21)

圈l膏且曲阿掌精扦结糟

作者骱:潘楠(1985一),男,硕士研究生,主研方向:网络安全;

王勇.教授;陶晓玲,工程师

姻日囊:加11-05—19

E・mail:pn8527@yall00comcn

万方数据

104

计算机工程

2012年1月20日

2.1基本概念

定义l标志节点即出口路由器。

定义2品表示第f台交换机S的第J个端口。

定义3如表示品包含的MAc地址的集合;^表示交

换机墨的所有下行端口包含的MAC地址的集合。

定义4若交换机S的4中包含除S本身以外的所有其他交换机的MAc地址,则该交换机为根交换机。

定义5交换机端口所对应的地址转发表中出现标志节点MAC地址的端口为上行端口,否则,为下行端口。

定义6交换机墨的A中未出现其他交换机MAc地址的端口为叶端口,否则,为非叶端口。2.2相关定理

定理l若交换机墨的A中包含交换机&的MAC地址

墨一心c和A,则可确定品与品有连接关系。

证明:因为交换机置的A中包含S一胍c和A,说明

从毛出发必存在一条路径可以到达足,所以&与&有连接关系(直接相连或间接相连)。

定理2当&与&之间存在连接关系时。若A中MAc

地址的个数(IAI)等于A中MAc地址个数(IAI)加1,即

l如|.IA|+l,则毛与&直接连接。

证明:采用反证法证明。假设定理2不成立,即在品与

&之间存在连接关系且I气l=IAI+l时,%与&为间接连接。由此可知,A中除了包含瓯一枷c和A之外,还包含

其他交换机的MAc地址,因此,有l气l>IAI+l,与假设矛

盾,定理2得证。

定理3如果交换机墨的叶端口品的A中仅包含一台主机的MAC地址,那么该主机与交换机的品端口直接相连,若包含多台主机的MAc地址,则这些主机通过Hub与交换机的岛端口相连。

定理4如果交换机S的叶端口毛的如中仅包含路由器足的MAC地址,那么尺与交换机置的品端口直接相连。

3改进的链路层拓扑发现算法

根据链路层网络的拓扑结构,将拓扑发现分为以下3个步骤:

(1)获得活动设备集合

由子网对应的出口路由器的IP地址和子网掩码可确定子网的IP探测范围,向该范围内的每一个IP地址发送IcMP回显请求报文,根据是否返回IcMP回显响应报文判断设备的活动状态。

(2)确定设备类型

向每个活动设备的指定端口16l号发送sNMP报文,若有回应,则确定是交换机,否则,认为是主机。

(3)确定设备之间的连接关系

网络中主要存在的连接关系包括交换机与交换机的连接、交换机与主机的连接以及交换机与出口路由器的连接。根据定理l~定理4可分别判断以上连接关系,最终得到完整的网络拓扑结构。

在发现设备之间连接关系的操作中,确定交换机与交换机之间的连接关系最复杂也最耗时。传统的确定交换机与交换机之间连接关系的算法如下:

万方数据

f0“每个交换机Sj){

for(交换机si的第j个靖口){i“s;已经与别的交换机端口相连)

continue:

el∞{

i“Aii-AkUSLMAC)

s日与sk的上行端口直接相连;Jl}

对于上述算法中的判定条件A=AU&一心c,需要将A与网络中所有的AU瓯一胍c(七≠f)进行判断操作,而A

的计算量很大,导致发现效率不高,根据定理l和定理2,

可对上述判定条件作出修改,修改后的拓扑发现算法如下:

for(每个交换机si){

for(交换机S。的第j个靖口)li“S;已经与别的交换机端口相连)

continue:

elseI

i“Ab中能查找到sLMAC)li“Ai,中能查找到AkJ{

i“IAbI-IAk|+1)

sn与sk的上行端口直接相连;

}l}Jl

上述算法相对于传统算法的优势在于:通过修改交换机与交换机连接关系的判定条件,减少了A的计算量,缩短了确定连接关系的时间,提高了发现效率。

算法的关键技术包括:

(1)采用线程池技术提高发现效率

本文采用线程池的方式实现算法的前2步。与一般的多线程技术相比,线程池适用于单个任务处理时间较短、所需处理任务数量较多的情况,可减少频繁创建和销毁线程花费的时间,节省系统资源开销。采用线程池获得活动设备集合的核心代码如下:

ExecutorService

pool_Executors.newScheduledThreadPool(50);

AmyList<Futurc<String>>futurcList=

new

ArfayList<Fun盯e<String>>();

fof(in“=o;i<ipSp∞eList.sizc();i++){

futureList.add(p001.submit(new

PingActiVeDeViceCallable(ipspaceList.get(i)))):J

for(Future<String>fs:futurcList)f

try

i“fs名et()f-null)

actjVeDeViceList.add(fs.gct().t0SⅢng());

}catch(Inte唧ptedExceptione)f

e.printStackTrace():

}catch《ExecutionExceptio曲e)fe.printStackTrace();}}

p001.shutdown():

(2)采用哈希查找提高发现效率

在交换机连接关系的判断中,判断交换机端口的MAc地址集合中是否包含某一给定MAc这一操作的频率很高,但此操作一般需要通过遍历匹配实现,计算量非常大,尤其是在网络中交换机数目较多时,效率很低。因此,本文引入哈希表,将A存为哈希表,采用哈希查找的方式确定MAc

第38卷第2期潘楠,王勇,陶晓玲:一种基于sNMP的链路层拓扑发现算法

换机相连。

地址的包含关系,判断交换机之间是否连接。其中,哈希函致采用折叠法加除留余教法构造:首先把MAc地址分为6段,把每一段转换为十进制致后再顺叠相加,通过对相加的结果与Pp为一个素数,且小于或等于哈希表的大小)进行模运算得到哈希地址。此方法计算简单,得出的哈希地址可使MAc地址比较均匀地分布在哈希表中,从而减少查找的次数。当然。任何哈希函数的选择都有可能出现冲突,本文选择拉链法处理冲突。

4棱心算扶实现

通过采用线程池技术可快速得到网络中的交换机集合

州f圮^和主机集合^吲;确定swIr曲中的根交换机,并没置

第l层标识kvP仁1,下一层标识n“fkvef_拓坩“1。在此基础上判定交换机与交换机、主机、路由器的连接关系,从根交换机开始逐层向下判断,类似于广度优先搜索算法,直到所有交换机都已判断,算法结束。基本流程如下:

(1)对交换机S。从jwffc^中将其删除。

(2)对墨的一个恬动端口S,,将^f存为哈希表^ns柚kc;根据定义判断乳的类型,若为上行端口,执行步骤(3);若为下行端口,执行步骤(4)。

(3)判断^d曲^如c中MAc个数是否为1,若是,则根据定理4确定晶与路由器相连;若不是,说明&为只的上行

端口。

圈2阿皤拓}}置理鳍秉

实验网络是一个c类子网,而对于c类子网,最大存在的主机数为254台,采用本文算法创建一个大小为50的线程池对象,进行全网活动设备的探谢仅需要约7.2s,若采用单线程方式,则需要约123s;对于确定交换机之问的连接关系这一操作,若采用改进前的算法耗时约3.9s,而采用本文的发现算法仅需要约1.2s,可见,本文算法的效率更高。

(4)根据定义6判断S,若其为叶端口,判断^Ⅱ曲肼们中MAc个数是否为l,若是,则根据定理3确定S,与一台主机相连;若不是,则由定理3确定量.通过Hub与多台主机相连;否则,执行步骤(5)。

(5)从5wf,曲中取出交换机置。在妇j柚缸c中查找只一^Mc,若能查到,再在^djM忆c中查找A,若能查到,则根据定理1确定品与&之间存在连接关系;然后判断^d曲M们中MAc个数是否等于^的MAc个数再加l,若相等,则根据定理2确定S.与以的上行端口&直接相连,将邑一朋Hc存入第n“rjPv“层交换机的集合中;如果查不到,则判定swilc^中是否还有未判断的交换机,若有,重复此步骤,若无,执行步骤(6)。

(6】若置还有未确定的端口,返回步骤(2);否则,判断第kpPj层交换机的集合是否非空,若是,取未处理的交换机,并从集合中删除,返回步骤(1);否则,执行步骤(7)。

(7)拓坩f-^“fkv“。判断第kw,层交换机的集合是否非

6结束语

链路层的拓扑能真实地反映子网内部各个设备之问的连接情况。本文为快速实现链路层拓扑昀快速发现,提出了一种新的基于sNMP的拓扑发现算法,该算法通过修改交换机连接关系的判定条件,并采用线程池和哈希查找等技术,提高了拓扑发现的效率。同时能处理网络中存在的Hub。本文提出的算法能较好地解决单子网的拓扑发现问题,但无法发现存在vLAN的拓扑结构,这将是下一步的研究方向。

参考文簟

【l】邓泽林.傅明.刘翌南一种新的异构网络链路层拓扑发现

算法I耵计算机工程,20lo’3q2):119-120.

【2J孔令文,谭景倍数据链路层同络拓扑发现算珐研究唧.计算

机工程与设计,2∞8.29(19):494I—49“

空,若是,n删kvPf加l,取未处理的交换机,并从该层交

换机集台中删除,返回步骤(1);否则,算法结束。

f3】孙娟基于地址过滤的网络拓扑发现算法【刀计算机工程,

【4】B嘣tbarcYG帅脚akisM.Ma币nc,ct胡.伽Io科Diocovcfyin

H啪哪聊删sIPNetworl【s【C】胛眦.of山e19tllA肌u甜JointC0nf廿即ceofmc皿EC伽Du竹卸dcom删11i∞d0IlsSoci甜es

【S.1.】:IEEEPIess.2000:265—274.

2010,36(7):96.98.

5测试结果与分析

5.1实验环曩

在搭建的实验环境中,有I台路由器、3台交换机、1台Hub和5台主机。在测试本文的算法前,需要确保3台交换机开启sNMP协议。

5.2实验结果分析

采用本文的改进算法对实验嘲络进行发现,结果如图2所示。图2的左侧以树形结构显示了发现网络中的所有交换机和主机的IP地址;右下方显示了设备的详细信息;右上方显示了子网拓扑图。借助于不同的网络设备图标,可以直观地反映设备类型。当鼠标移至网络设备或链路时,会显示出相应信息,方便查看。图中虚线表示多台主机通过Hub与交

【5】

Bn州蛆n

Y.G帅falakis

M,J缸B,ct胡.T‘,pologyDiscovoryjn

He懈Dg曲eous口Netwo【I(8:neN眦Inv即砌了Sys把m【J】ⅢE日

ACM

Tr删d∞s叩№tworI(in盘2004,12(3):加1414.

of

【6】Low出帅pB,0’Hml啪nR,G瞄sTRT0叫ogyDisc0VeIyfor

sIGc0Ⅳ蹦’0lsn

Dicgo.

La噼E山mctN眈worI(s【q腑oc

uSA:Isn】.2001:237-248

【7】郑海,张国清物理罔络拓扑发现算法的研究【J】计算机研

究与发展,2002,39(3):264・268

编辑张帆

万方数据

一种基于SNMP的链路层拓扑发现算法

作者:作者单位:

潘楠, 王勇, 陶晓玲, PAN Nan, WANG Yong, TAO Xiao-ling

潘楠,PAN Nan(桂林电子科技大学计算机科学与工程学院,广西桂林,541004), 王勇,WANG Yong(桂林电子科技大学CSIP广西分中心,广西桂林,541004), 陶晓玲,TAO Xiao-ling(桂林电子科技大学信息与通信学院,广西桂林,541004)计算机工程

Computer Engineering2012,38(2)

刊名:英文刊名:年,卷(期):

本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjgc201202033.aspx

第38卷第2期

vol-38

No.2

文章■号t

计算机工程

2012年1月

JaIluary2012

文■耘讽码;A

中田分类号t11’393

Co唧u时Enginee咖g

・网络与通信・

1伽0_删(加12)o:}__0103——∞

措糟‘,王勇。,■奠玲‘

一种基于SNMP的链路层拓扑发现算法

(桂林电子科技大学&计算机科学与工程学院;bcsIP广西分中心;c信息与通信学院,广西桂林541004)

■蔓:为提高链路层网络拓扑发现效率,提出一种基于简单网络管理协议的拓扑发现算法。将交换机间的连接网络用树形结构表示,自

顶向下连层确定每个交换机的连接关系。通过修改连接关系的判定条件,并结合线程池和哈希查找技术,提高拓扑发现的效率。实验结果表明,该算法能快速准确地获得完整的哺}备:陌扑结构。

美t■:链路层;拓扑发现;简单网络管理协议;地址转发表;线程池;哈希查找

LinkLayer’ropolOgyDiscOVeryAlgOrithm

Based仰SiInpIeNetworkManagement

E^NN锄’w^NGY0Ⅱ矿,1AoⅪao-曲gc

(acollegeofcomputers石encc

ProtocoI

alldEngi【l∞血g:b

csmG啪g鲥c朋竹;c.couegcofIllf0呻a6∞andcbmm帅icati蚰,

adiscovery柚g耐thmforllllkl8yerof

connecdon

Guilinunive阽i【y

lAbs打actl

topology

InordertoimpfdvcⅡle

on

ofElec帅nic慨hnoIo阱Guilm望l004,c晡na)

desc—bingⅡ"c∞n∞donsbetw∞ns“忙h船孵aⅡ优.the

iropmvingthcc∞dinonsof

networkto刚09y

forev6Iy

based

simpleNetworl【M蛐age“∞nt

P㈣l(sNMP)By

lay盯accordjⅡg

djscov。叫emciencyofliIlkl8yer,吐115p8pe‘Pmpo∞s

划ab叩sllipof

eachswi【chis

esm蜥slled

t0畸埘ownm孤ncLBy

tllc咖n。ction妇w∞n

indicalcStb砒山e

t}Ⅱ训pool删hasllsearchtohpmve山eeffick“cy0ft叩olo盱discoVeryExp舐mental他sult

algo^岫c柚djscoverljIII【layertopolo鲥rapidlyandcomple世l弘andth6p吣sibknet’voIkel锄enbc扑bedlscoVercd

swikhes,combinedwitIItlle

IKeywordsl

search

link

layer;to阿ogydjscovery:sjmple№tworkM蛐gem朗t

Protocol(sNMP】:AddIcssFonvardingTable(AFD:tlIrc们pool:llash

DOI:10396叫issnl000—3428201202033

l捱述

链路层拓扑发现是确定子网内部网络设备之间的连接关系,其中最主要的是确定交换机之间的连接关系。目前,基于简单网络管理协议(simpIe

NetworkMan89ement

Protocol,

径。直接连接实际上是间接连接的特殊形式。例如在图l中,switchl和switch2属于直接连接关系,switchl与switch4则是间接连接关系。

sNMP)的网络拓扑发现算法在国内外得到了广泛的研究”41。文献【4—5J提出了基于地址转发表(AddressFonⅣarding1曲le,AFT)的物理拓扑发现算法,但该算法要求所有交换机的地址转发表是完整的。文献【6】在此基础上提出了改进算法,充分利用不完整的AFT信息判断网络设备的连接关系,并能发现可能存在的“哑设备”,但该算法运算量较大。文献【7】通过将交换机端口分为上行端口和下行端口,降低了对AFT的要求,并提出了一条判定上行端口和下行端口直连的引理。本文在上述研究工作的基础上。提出一种新的链路层网络拓扑发现算法,通过改进交换机连接关系的判定条件,并借助于线程池和哈希查找等技术,提高拓扑发现的效率。

2拓扑发现算法理论基稿

本文将子网中连接在一台路由器下的所有交换机的连接结构看作一棵“树”,设与路由器直接相连的交换机为树的第1层节点,与第1层交换机直接连接的交换机为第2层节点,以此类推,将交换机的连接结构划分为多个层,每个层有若干个节点。每个交换机节点又会连接一个或多个主机。这种结构方式清楚地反映了网络的拓扑结构。图1是一种常见的阿络拓扑结构。在交换机的结构树中,连接关系包括直接连接和问接连接。直接连接是指处于相邻位置的交换机相连接;而间接连接是指2个交换机之间存在着一条连接路

基盒疆目:国家自然科学基金资助项目(6嘴72022);广西研究生创新

基金资助项日(2010105950812M21)

圈l膏且曲阿掌精扦结糟

作者骱:潘楠(1985一),男,硕士研究生,主研方向:网络安全;

王勇.教授;陶晓玲,工程师

姻日囊:加11-05—19

E・mail:pn8527@yall00comcn

万方数据

104

计算机工程

2012年1月20日

2.1基本概念

定义l标志节点即出口路由器。

定义2品表示第f台交换机S的第J个端口。

定义3如表示品包含的MAc地址的集合;^表示交

换机墨的所有下行端口包含的MAC地址的集合。

定义4若交换机S的4中包含除S本身以外的所有其他交换机的MAc地址,则该交换机为根交换机。

定义5交换机端口所对应的地址转发表中出现标志节点MAC地址的端口为上行端口,否则,为下行端口。

定义6交换机墨的A中未出现其他交换机MAc地址的端口为叶端口,否则,为非叶端口。2.2相关定理

定理l若交换机墨的A中包含交换机&的MAC地址

墨一心c和A,则可确定品与品有连接关系。

证明:因为交换机置的A中包含S一胍c和A,说明

从毛出发必存在一条路径可以到达足,所以&与&有连接关系(直接相连或间接相连)。

定理2当&与&之间存在连接关系时。若A中MAc

地址的个数(IAI)等于A中MAc地址个数(IAI)加1,即

l如|.IA|+l,则毛与&直接连接。

证明:采用反证法证明。假设定理2不成立,即在品与

&之间存在连接关系且I气l=IAI+l时,%与&为间接连接。由此可知,A中除了包含瓯一枷c和A之外,还包含

其他交换机的MAc地址,因此,有l气l>IAI+l,与假设矛

盾,定理2得证。

定理3如果交换机墨的叶端口品的A中仅包含一台主机的MAC地址,那么该主机与交换机的品端口直接相连,若包含多台主机的MAc地址,则这些主机通过Hub与交换机的岛端口相连。

定理4如果交换机S的叶端口毛的如中仅包含路由器足的MAC地址,那么尺与交换机置的品端口直接相连。

3改进的链路层拓扑发现算法

根据链路层网络的拓扑结构,将拓扑发现分为以下3个步骤:

(1)获得活动设备集合

由子网对应的出口路由器的IP地址和子网掩码可确定子网的IP探测范围,向该范围内的每一个IP地址发送IcMP回显请求报文,根据是否返回IcMP回显响应报文判断设备的活动状态。

(2)确定设备类型

向每个活动设备的指定端口16l号发送sNMP报文,若有回应,则确定是交换机,否则,认为是主机。

(3)确定设备之间的连接关系

网络中主要存在的连接关系包括交换机与交换机的连接、交换机与主机的连接以及交换机与出口路由器的连接。根据定理l~定理4可分别判断以上连接关系,最终得到完整的网络拓扑结构。

在发现设备之间连接关系的操作中,确定交换机与交换机之间的连接关系最复杂也最耗时。传统的确定交换机与交换机之间连接关系的算法如下:

万方数据

f0“每个交换机Sj){

for(交换机si的第j个靖口){i“s;已经与别的交换机端口相连)

continue:

el∞{

i“Aii-AkUSLMAC)

s日与sk的上行端口直接相连;Jl}

对于上述算法中的判定条件A=AU&一心c,需要将A与网络中所有的AU瓯一胍c(七≠f)进行判断操作,而A

的计算量很大,导致发现效率不高,根据定理l和定理2,

可对上述判定条件作出修改,修改后的拓扑发现算法如下:

for(每个交换机si){

for(交换机S。的第j个靖口)li“S;已经与别的交换机端口相连)

continue:

elseI

i“Ab中能查找到sLMAC)li“Ai,中能查找到AkJ{

i“IAbI-IAk|+1)

sn与sk的上行端口直接相连;

}l}Jl

上述算法相对于传统算法的优势在于:通过修改交换机与交换机连接关系的判定条件,减少了A的计算量,缩短了确定连接关系的时间,提高了发现效率。

算法的关键技术包括:

(1)采用线程池技术提高发现效率

本文采用线程池的方式实现算法的前2步。与一般的多线程技术相比,线程池适用于单个任务处理时间较短、所需处理任务数量较多的情况,可减少频繁创建和销毁线程花费的时间,节省系统资源开销。采用线程池获得活动设备集合的核心代码如下:

ExecutorService

pool_Executors.newScheduledThreadPool(50);

AmyList<Futurc<String>>futurcList=

new

ArfayList<Fun盯e<String>>();

fof(in“=o;i<ipSp∞eList.sizc();i++){

futureList.add(p001.submit(new

PingActiVeDeViceCallable(ipspaceList.get(i)))):J

for(Future<String>fs:futurcList)f

try

i“fs名et()f-null)

actjVeDeViceList.add(fs.gct().t0SⅢng());

}catch(Inte唧ptedExceptione)f

e.printStackTrace():

}catch《ExecutionExceptio曲e)fe.printStackTrace();}}

p001.shutdown():

(2)采用哈希查找提高发现效率

在交换机连接关系的判断中,判断交换机端口的MAc地址集合中是否包含某一给定MAc这一操作的频率很高,但此操作一般需要通过遍历匹配实现,计算量非常大,尤其是在网络中交换机数目较多时,效率很低。因此,本文引入哈希表,将A存为哈希表,采用哈希查找的方式确定MAc

第38卷第2期潘楠,王勇,陶晓玲:一种基于sNMP的链路层拓扑发现算法

换机相连。

地址的包含关系,判断交换机之间是否连接。其中,哈希函致采用折叠法加除留余教法构造:首先把MAc地址分为6段,把每一段转换为十进制致后再顺叠相加,通过对相加的结果与Pp为一个素数,且小于或等于哈希表的大小)进行模运算得到哈希地址。此方法计算简单,得出的哈希地址可使MAc地址比较均匀地分布在哈希表中,从而减少查找的次数。当然。任何哈希函数的选择都有可能出现冲突,本文选择拉链法处理冲突。

4棱心算扶实现

通过采用线程池技术可快速得到网络中的交换机集合

州f圮^和主机集合^吲;确定swIr曲中的根交换机,并没置

第l层标识kvP仁1,下一层标识n“fkvef_拓坩“1。在此基础上判定交换机与交换机、主机、路由器的连接关系,从根交换机开始逐层向下判断,类似于广度优先搜索算法,直到所有交换机都已判断,算法结束。基本流程如下:

(1)对交换机S。从jwffc^中将其删除。

(2)对墨的一个恬动端口S,,将^f存为哈希表^ns柚kc;根据定义判断乳的类型,若为上行端口,执行步骤(3);若为下行端口,执行步骤(4)。

(3)判断^d曲^如c中MAc个数是否为1,若是,则根据定理4确定晶与路由器相连;若不是,说明&为只的上行

端口。

圈2阿皤拓}}置理鳍秉

实验网络是一个c类子网,而对于c类子网,最大存在的主机数为254台,采用本文算法创建一个大小为50的线程池对象,进行全网活动设备的探谢仅需要约7.2s,若采用单线程方式,则需要约123s;对于确定交换机之问的连接关系这一操作,若采用改进前的算法耗时约3.9s,而采用本文的发现算法仅需要约1.2s,可见,本文算法的效率更高。

(4)根据定义6判断S,若其为叶端口,判断^Ⅱ曲肼们中MAc个数是否为l,若是,则根据定理3确定S,与一台主机相连;若不是,则由定理3确定量.通过Hub与多台主机相连;否则,执行步骤(5)。

(5)从5wf,曲中取出交换机置。在妇j柚缸c中查找只一^Mc,若能查到,再在^djM忆c中查找A,若能查到,则根据定理1确定品与&之间存在连接关系;然后判断^d曲M们中MAc个数是否等于^的MAc个数再加l,若相等,则根据定理2确定S.与以的上行端口&直接相连,将邑一朋Hc存入第n“rjPv“层交换机的集合中;如果查不到,则判定swilc^中是否还有未判断的交换机,若有,重复此步骤,若无,执行步骤(6)。

(6】若置还有未确定的端口,返回步骤(2);否则,判断第kpPj层交换机的集合是否非空,若是,取未处理的交换机,并从集合中删除,返回步骤(1);否则,执行步骤(7)。

(7)拓坩f-^“fkv“。判断第kw,层交换机的集合是否非

6结束语

链路层的拓扑能真实地反映子网内部各个设备之问的连接情况。本文为快速实现链路层拓扑昀快速发现,提出了一种新的基于sNMP的拓扑发现算法,该算法通过修改交换机连接关系的判定条件,并采用线程池和哈希查找等技术,提高了拓扑发现的效率。同时能处理网络中存在的Hub。本文提出的算法能较好地解决单子网的拓扑发现问题,但无法发现存在vLAN的拓扑结构,这将是下一步的研究方向。

参考文簟

【l】邓泽林.傅明.刘翌南一种新的异构网络链路层拓扑发现

算法I耵计算机工程,20lo’3q2):119-120.

【2J孔令文,谭景倍数据链路层同络拓扑发现算珐研究唧.计算

机工程与设计,2∞8.29(19):494I—49“

空,若是,n删kvPf加l,取未处理的交换机,并从该层交

换机集台中删除,返回步骤(1);否则,算法结束。

f3】孙娟基于地址过滤的网络拓扑发现算法【刀计算机工程,

【4】B嘣tbarcYG帅脚akisM.Ma币nc,ct胡.伽Io科Diocovcfyin

H啪哪聊删sIPNetworl【s【C】胛眦.of山e19tllA肌u甜JointC0nf廿即ceofmc皿EC伽Du竹卸dcom删11i∞d0IlsSoci甜es

【S.1.】:IEEEPIess.2000:265—274.

2010,36(7):96.98.

5测试结果与分析

5.1实验环曩

在搭建的实验环境中,有I台路由器、3台交换机、1台Hub和5台主机。在测试本文的算法前,需要确保3台交换机开启sNMP协议。

5.2实验结果分析

采用本文的改进算法对实验嘲络进行发现,结果如图2所示。图2的左侧以树形结构显示了发现网络中的所有交换机和主机的IP地址;右下方显示了设备的详细信息;右上方显示了子网拓扑图。借助于不同的网络设备图标,可以直观地反映设备类型。当鼠标移至网络设备或链路时,会显示出相应信息,方便查看。图中虚线表示多台主机通过Hub与交

【5】

Bn州蛆n

Y.G帅falakis

M,J缸B,ct胡.T‘,pologyDiscovoryjn

He懈Dg曲eous口Netwo【I(8:neN眦Inv即砌了Sys把m【J】ⅢE日

ACM

Tr删d∞s叩№tworI(in盘2004,12(3):加1414.

of

【6】Low出帅pB,0’Hml啪nR,G瞄sTRT0叫ogyDisc0VeIyfor

sIGc0Ⅳ蹦’0lsn

Dicgo.

La噼E山mctN眈worI(s【q腑oc

uSA:Isn】.2001:237-248

【7】郑海,张国清物理罔络拓扑发现算法的研究【J】计算机研

究与发展,2002,39(3):264・268

编辑张帆

万方数据

一种基于SNMP的链路层拓扑发现算法

作者:作者单位:

潘楠, 王勇, 陶晓玲, PAN Nan, WANG Yong, TAO Xiao-ling

潘楠,PAN Nan(桂林电子科技大学计算机科学与工程学院,广西桂林,541004), 王勇,WANG Yong(桂林电子科技大学CSIP广西分中心,广西桂林,541004), 陶晓玲,TAO Xiao-ling(桂林电子科技大学信息与通信学院,广西桂林,541004)计算机工程

Computer Engineering2012,38(2)

刊名:英文刊名:年,卷(期):

本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjgc201202033.aspx


相关内容

  • 分布式网络拓扑管理系统研究与实现
  • 分布式网络拓扑管理系统研究与实现 摘 要:随着电力行业计算机通信网络系统和应用日益普及和完善,集中式的网管软件面临应用挑战,其拓扑管理的实时性不能满足网络规模扩大后的应用要求.文中分析分布式网络拓扑管理方案,通过有效的网络拓扑分割方式,设计并实现了由拓扑管理主站和嵌入式Linux 装置实现的拓扑管理 ...

  • 网络面试题
  • 问题补充: 一.交换部分 1.STP\MSTP\RSTP\PVST\PVST+ 2.HSRP\VRRP 3.HSRP|VRRP和STP|MSTP|RSTP|PVST混用应注意那几点 4.三层交换的实际应用及常见故障 二.路由部分 1.RIP 属于那一层协议,协议号多少 2.EIGRP 的各种管理距离 ...

  • 网络测试题1
  • 1. 小明正在对一台作为NAT 服务器的Cisco 路由器进行配置,现在他想将当前所有活跃的转换都清楚掉,他应该使用(d )命令.(选择一项) a) clear nat b) clear all c) erase ip nat translation d) clear ip nat translat ...

  • 计算机网络全部知识点
  • 第1章 概述 1.1 计算机网络在信息时代中的作用 因特网(Internet)的发展 因特网的意义 计算机网络向用户提供的最重要的功能:连通性.共享 1.2 因特网概述 1.2.1 网络的网络 请注意名词"结点" 网络与因特网 1.2.2 因特网发展的三个阶段 Internet ...

  • 论文_通信原理
  • 1.计算机网络:是指将不同地理位置上的独立的计算机,用传输介质和连网设备连接起来进行通信,用完善的软件系统进行管理,以实现资源共享为目的的系统. 2.计算机网络的功能:信息交换.资源共享和分布式处理. 3.广域网与计算机通信网的区别:1)广域网一般是将不同城市之间的LAN或者MAN利用计算机通信网进 ...

  • 网络工程设计教程_系统集成方法_答案(修订)
  • 第一章★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 1. 网络工程的定义是什么? 答:(1) 将系统化的.规范的.可度量的方法应用于网络系统的设计.建造和维护的过程,即将工程化应用于网络系统中. (2) 对(1)中所述方法的研究. 2. 与网络工程有关的工作可以分为哪些阶 ...

  • 工业以太网定义
  • 工业以太网,所谓工业以太网通俗地讲就是应用于工业的以太网. 以太网是目前计算机局域网最常见的通信协议标准,但它是为办公自动化的应用而设计的,并没有考虑到工业现场环境的需求,比如高温.低温.防尘等,所以以太网不能直接应用于环境恶劣的工业现场.所以工业以太网就随之产生了. 现代以太网技术与智能建筑以太网 ...

  • 华为认证考试重点
  • 1.一个完整的数据通信系统由报文.发送方.接收方.介质和协议五个部分组 成. 2.单工(键盘.显示器) .半双工(对讲机) .全双工(电话网络) 3.常见的网络拓扑结构:总线.星型.树型.环型和网型. 4.局域网的特点:距离短.延迟小.数据速率高.传输可靠. 5.局域网的常用网络设备:线缆.网卡.集 ...

  • 七层网络模型
  • 第五节 OSI各层的功能 (1)物理层----定义了为建立.维护和拆除物理链路所需的机械的.电气的.功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输.具体涉及接插件的规格."0"."1"信号的电平表示.收发双方的协调等内容. (2)数据链路层- ...