CN107682270A - 一种网络拓扑发现方法及装置 - Google Patents
一种网络拓扑发现方法及装置 Download PDFInfo
- Publication number
- CN107682270A CN107682270A CN201710822662.0A CN201710822662A CN107682270A CN 107682270 A CN107682270 A CN 107682270A CN 201710822662 A CN201710822662 A CN 201710822662A CN 107682270 A CN107682270 A CN 107682270A
- Authority
- CN
- China
- Prior art keywords
- request
- dfs
- probe requests
- port
- probe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提出了一种网络拓扑发现方法及装置,网络设备接收包含探测报文的拓扑探测请求,依据探测报文判断所述探测请求是扩散请求还是回溯请求,如果是发散请求则对所述探测报文进行扩散处理,得到一个新的拓扑探测报文后,发送一个新的探测请求,如果是回溯请求,则依据探测报文判断是否存在回溯点,如果存在回溯点,则进行回溯处理,并得到一个新的拓扑探测报文后,执行新的探测请求发送过程,如果不存在回溯点,则依据探测报文生成网络拓扑信息,从而结束拓扑探测,并基于该方法提出了一种探测装置,本发明提出的网络拓扑发现方法减少了拓扑发现过程中的消息交换次数,减轻拓扑发现过程中各个设备CPU出现突发过载风险,同时通过全局网络拓扑信息表发现网络中单向链路的问题。
Description
技术领域
本发明涉及通信领域,尤其涉及通信网络拓扑领域。
背景技术
现有技术,如公开号CN 105721318 A,名称为一种软件定义网络SDN中发现网络拓扑的方法和装置的中国专利,公开号CN 106878187 A,名称为:一种分布式网络拓扑检测方法的中国专利,所描述一种拓扑发现方法,均为发起者以迭代或者半迭代的方式逐步获取与本设备1跳,2跳,3跳范围的网络设备节点的信息。
下面以图1所示拓扑,交换机S1作为拓扑发现的发起者为例,简要介绍公开号CN105721318 A的发明专利的技术方案:
1)、发起者交换机S1向自己已知的有效端口P1发送拓扑发现请求1;
2)、S2收到该拓扑发现请求1后需要构造拓扑发现响应1’,包含链路信息S2:P1-S1:P1并按原路径发送给交换机S1,同时向S2的本地有效端口P2和P3扩散拓扑发现请求2;
3)、S3接收到S2发送的拓扑发现请求2,构造拓扑发现响应2’按原路径发送给S1,同时向S3的本地有效端口P2扩散拓扑发现请求3;
4)、S4接收到S2发送的拓扑发现请求2,构造拓扑发现响应2’按原路径发送给S1,同时向S4的本地有效端口P2扩散拓扑发现请求4;
5)、S4接收到S3发送的拓扑发现请求3,构造拓扑发现响应3’按原路径发送给S1,此时S4的其他有效端口P1已经发送过拓扑发现响应,便不在继续扩散;
6)、S3接收到S4发送的拓扑发现请求4,同样按原路径给S1发送响应,此时S3的其他有效端口P1也已经发送过拓扑发现响应,也不在继续扩散;
7)、S1收到S2,S3,S4发送的响应,从中解析出响应报文的发送路径,生成全网拓扑信息表,当S1不在收到其他设备响应的新增的链路信息时即认为拓扑发现结束。
现有技术中,拓扑发现方法还包括有另外一些采用野蛮广播的方式广播自己的已知路径信息的方法,详细步骤不再赘述。
前述方案的基本原理:以广度优先方式逐步扩散拓扑发现探测请求,每个收到请求的设备直接向发起者发送携带链路信息的响应,这种方案有如下技术缺陷:
1)、如前述方案中步骤2、3、4、5所述,交换机S2,S3,S4接收到的每个拓扑探测请求,都需要向该请求的发起者发送携带链路信息的响应,因此发起者会接收到大量的网络链路对应的响应,影响拓扑发现的效率;
2)、如步骤2所述,交换机S2,接收到拓扑请求之后,需要向本地的每个的有效端口扩散该请求,因此当交换机S2有大量链路连接到其他交换机时,交换机S2需要突发性复制大量拓扑探测请求并扩散,并且导致接收到的响应也是突发性到达,增加交换机S2的CPU的瞬时负载;
3)、如步骤5,6所述,交换机S3,S4都向发起者交换机S1发送了针对的链路S3:P2--S4:P2的响应报文,导致交换机S1接收到两个对应同一链路的响应,额外增加交换机S1的负载;
4)、如步骤7所述,拓扑发现的发起者判断拓扑发现过程结束的依据是“不再收到非重复链路的响应”,因此拓扑发现过程结束点存在时间上不确定性。
发明内容
本发明为克服现有技术的不足,提出一种网络拓扑发现方法及装置。
为了解决上述的技术问题,本发明提出的基本技术方案为:
一种网络拓扑发现方法,其特征在于,执行如下步骤:
步骤1,接收包含探测报文的DFS拓扑探测请求;
步骤2、判断所述探测请求是扩散请求还是回溯请求,并基于判断结果对所述探测请求进行处理;
步骤3,根据所述处理结果生成网络拓扑信息表。
优选的,所述步骤2的具体过程为,
步骤2.1,判断所述DFS探测请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤2.2,否则执行步骤2.3;
步骤2.2,检查本设备是否在所述DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤2.4;
步骤2.3,检查本设备是否在所述DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤2.5;
步骤2.4,记录所述DFS探测请求的回溯点为此请求的接收端口,继续执行步骤2.5;
步骤2.5,查询所有符合条件的有效端口,如果存在,则执行步骤2.6,否则执行步骤2.7;
步骤2.6,扩散所述DFS探测请求,选取所述步骤2.5中查询得到的有效端口中端口号最小的端口作为继续扩散请求时的发送端口,置请求方向字段为扩散方向,然后执行步骤2.8;
步骤2.7,回溯该DFS探测请求,置请求方向字段为回溯方向,并通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口;
步骤2.8,如果该请求中设备列表里还未包含本设备,添加本设备标识和本地邻居信息,并从前述步骤确定的发送端口发送该请求。
优选的,所述步骤2.5中的条件具体为端口的邻居信息有效,且对端邻居设备不在所述探测请求中的设备列表里。
优选的,所述步骤2.7中的通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口,还包括判断是否找到所述回溯点,如果判断结果为是,则将对应回溯点作为发送端口,修改请求方向为回溯方向,添加设备标识及邻居信息,在回溯端口发送该请求,并结束该步骤,如果不能找到回溯点,则判断该请求发起者是否为自己,如果是,则本次拓扑发现流程完成,如果否,则丢弃该请求。
本发明还提供了一种网络拓扑发现的装置,其特征在于,所述装置包括接收单元,处理单元以及生成单元,其中,
所述接收单元,用于接收包含探测报文的DFS拓扑探测请求;
所述处理单元,用于判断所述探测请求是扩散请求还是回溯请求,并基于判断结果对所述探测请求进行处理;
所述生成单元,用于根据所述处理结果生成网络拓扑信息表。
优选的,所述处理单元具体用于执行如下步骤,
步骤2.1,判断所述DFS探测请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤2.2,否则执行步骤2.3;
步骤2.2,检查本设备是否在所述DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤2.4;
步骤2.3,检查本设备是否在所述DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤2.5;
步骤2.4,记录所述DFS探测请求的回溯点为此请求的接收端口,继续执行步骤2.5;
步骤2.5,查询所有符合条件的有效端口,如果存在,则执行步骤2.6,否则执行步骤2.7;
步骤2.6,扩散所述DFS探测请求,选取所述步骤2.5中查询得到的有效端口中端口号最小的端口作为继续扩散请求时的发送端口,置请求方向字段为扩散方向,然后执行步骤2.8;
步骤2.7,回溯该DFS探测请求,置请求方向字段为回溯方向,并通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口;
步骤2.8,如果该请求中设备列表里还未包含本设备,添加本设备标识和本地邻居信息,并从前述步骤确定的发送端口发送该请求。
本发明的有益效果是:本发明提出了一种网络拓扑实现方法及装置,本发明具有如下有益效果:
1)提高拓扑发现的效率以及确定性(发起者接收到自己发起的探测请求的回溯);
2)网络中的每个设备均可以做为拓扑发现的发起者;
3)拓扑发现过程中,参与的每个设备不需要进行的消息复制,也不会出现瞬时大量发送和接收消息的情况,降低参与设备瞬时过载的风险。
附图说明
图1为现有技术中的网络拓扑探测流程图;
图2为本发明的总体处理流程图;
图3为本发明的拓扑发现发起者构造并发送DFS探测请求的流程图;
图4为本发明的网络中其他设备接收到DFS探测请求及处理的流程图;
图5为本发明发起者处理DFS探测请求时的回溯处理的流程图;
图6为本发明中间设备处理DFS探测请求时的扩散流程图;
图7为本发明中的网络拓扑发现网络结构示意图;
图8为本发明中的控制单元针对DFS探测请求报文的流程示意图;
图9为本发明中网络拓扑实现核心流程示意图
图10为本发明的装置示意图
具体实施方式
以下将结合附图2至10对本发明做进一步的说明,但不应以此来限制本发明的保护范围。为了方便说明并且理解本发明的技术方案,以下说明所使用的方位词均以附图所展示的方位为准。
作为本发明的优选实施例,本方法总体处理流程,从功能执行单元角度划分为以下三个主要步骤,如图2所示:
步骤A:拓扑发现发起者为了发现网络拓扑,需要构造发送DFS探测请求,在DFS探测请求中填上发起者设备标识,还有本地的邻居信息,并选择本设备上一个端口发送给本设备的其中一个邻居。此处所指的选择本设备其中一个端口,可以是按照任意规则选择的其中一个有有效邻居信息的端口;
步骤B:其他设备接收到的DFS探测请求,在本地记录该DFS请求的回溯点,即该请求报文的接收端口,然后将本设备标识及邻居信息添加到DFS请求中,继续扩散/回溯DFS探测请求;
步骤C:拓扑探测发起者接收回溯的DFS探测请求,并依据DFS探测请求中设备列表及相应的邻居信息建立全网拓扑信息表;
作为说明,本方法中所指的邻居信息是指用来描述直接相连的两个设备之间的链路的一些信息集合;通常包括链路两端设备的标识以及端口标识,比如图1所示交换机S1的P1端口与交换机S2的P1端口直接相连,这里用S1:P1---S2:P1表示,即交换机S2为交换机S1的邻居,交换机S1可通过本地端口P1到达交换机S2的P1端口。
如图3所示,拓扑发现发起者构造并发送DFS探测请求的具体步骤如下:
A、拓扑发现发起者查询本地所有端口邻居信息,检查本地是否存在一个或者多个端口,该端口是否有有效邻居信息,即有效连接到其他设备的某个端口,如果不存在,则结束本次拓扑发现过程,如果存在,则执行步骤B;
B、检查本地有效端口数量是否大于1,如果大于1,则执行步骤C,否则将此端口作为本次DFS探测请求的发送端口,然后执行步骤D;
C、从所有有效端口中选择端口号最小的那个端口作为本次DFS探测请求的发送端口;
D、构造DFS探测请求,将本设备标识填到请求报文的发起者设备标识字段中,将请求方向置为扩散方向,然后将本设备标识及本地所有邻居信息添加到设备列表中;
E、在前述步骤确定的发送端口发送该DFS探测请求;
作为说明:步骤D中,拓扑发现发起者构造DFS探测请求时,还必须生成本地唯一的请求ID填到DFS探测请求报文中,用以唯一标识本设备发起的一次拓扑发现过程。特别指出的是,DFS探测请求在后续的扩散和回溯过程中,所有设备都不得修改其中的请求ID及发起者设备标识。本方法的一个实施例中,DFS探测请求ID是一个32位的无符号整型值,发起者构造DFS探测请求时,其中的请求ID为本设备上一次构造的DFS探测请求中的请求ID加1,如果本设备在此之前没有构造过DFS探测请求,则本次请求ID为0。
步骤D中所指的请求方向是DFS探测请求中的一个字段,表示在拓扑探测过程中探测请求报文运行的方向,分为扩散方向和回溯方向两种。
如图4所示,网络中其他设备接收到DFS探测请求及处理的具体步骤如下:
A、接收DFS探测请求,检查请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤B,否则执行步骤C;
作为说明,本步骤中检查请求方向的目的是为了依据请求方向对接收到的DFS探测请求进行合法性检查。
B、检查本设备是否在DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤D;
作为说明,本步骤检查的目的是判断DFS探测请求的合法性,如果本设备在扩散方向的DFS探测请求中的设备列表里,意味着该请求曾经经过了本设备,现在又被其他设备再次扩散到本设备,则认为该DFS探测请求在传播过程中出现了异常,应丢弃该请求不再继续处理。
C、检查本设备是否在DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤E;
D、记录该DFS探测请求的回溯点为此请求的接收端口,继续执行步骤E;
E、查询所有符合条件“端口的邻居信息有效,且对端邻居设备不在该DFS探测请求中的设备列表里”的有效端口,如果存在,则执行步骤F,否则执行步骤G;
作为说明,本步骤的目的是为了查询本地是否还有邻居设备不在该请求报文的设备列表中,以确定对该请求的后续处理是继续扩散还是回溯,如果本地所有邻居设备都已经在请求报文中的设备列表里的话,应当回溯该请求,如果本地有任何一个邻居设备不在请求报文中的设备列表里,应当继续扩散该请求。
F、扩散该DFS探测请求,需要选取步骤E中查询得到的有效端口中端口号最小的端口作为继续扩散请求时的发送端口,置请求方向字段为扩散方向,然后执行步骤H;
G、回溯该DFS探测请求,置请求方向字段为回溯方向,并通过该请求报文中的发起者设备标识+DFS请求ID查找到该请求对应的回溯点作为回溯请求时的发送端口;
H、如果该请求中设备列表里还未包含本设备,添加本设备标识和本地邻居信息,并从前述步骤确定的发送端口发送该请求;
作为说明:步骤D记录DFS探测请求的入端口为回溯点,目的是为了后面设备执行回溯时找到该请求的正确的请求发送端口,以保证DFS探测请求最终能返回到该请求的发起者。
如图5右侧虚线框内的所示,为发起者处理DFS探测请求时的回溯处理的流程:
A、通过该请求报文中的发起者设备标识+DFS请求ID查找该请求对应的回溯点,如果找到,则按照左侧流程执行,即其他设备的回溯流程,否则,执行步骤B;应当注意的是对于DFS探测请求的发起者即第一个发起该请求的设备来说,不会找到自己发起的DFS探测请求对应的回溯点;
B、检查本设备是否为该请求的发起者,如果是,则执行步骤C,否则丢弃该请求结束本次处理;
C、根据接收到的回溯方向的DFS探测请求中的设备列表生成网络拓扑信息表,结束本请求的处理及本次拓扑发现过程;
如图6所示为中间设备处理DFS探测请求时的扩散流程。
本方法扩散过程中,当存在有效端口,其邻居信息还不在请求报文的设备列表中时,步骤A所示,设备只是任意选择符合条件的端口中的一个(本方法的一种实施例从符合条件的有效端口中选择端口号最小的端口),继续扩散请求,而不需要复制出多份请求向所有有效端口发送,减小拓扑发现过程中探测请求报文交互的个数,降低设备瞬时计算性能过载的风险。
为了更好地说明本方法的一个实施例的具体过程,现就本发明的一种实施例中的DFS探测请求报文的结构做如下说明,如下表所示:
DstMAC | SrcMAC | ETHTYPE | Data |
采用标准EthernetII型封装,报文包含目的MAC地址字段DstMAC,源MAC地址字段SrcMAC,ETHTYPE字段以及Data部分,其中DstMAC字段使用广播MAC,SrcMAC为报文发送设备的MAC地址,ETHTYPE为的0xFFFF,Data部分描述拓扑发现过程中设备信息、链路信息等,具体定义如下:
发起者设备标识:表示DFS探测请求的发起设备的在网络中唯一标识,由第一个发起请求的设备填入,请求报文在后续扩散和回溯过程中所有设备都不得修改;
请求方向:表示DFS探测请求的方向是从继续扩散还是回溯方向,0表示扩散方向,1表示回溯方向;
设备列表长度:记录设备列表中设备的个数,通常意义指探测请求在扩散过程中经过的设备的个数;
请求ID:一个整型数字,由拓扑发现发起者填入一个本地唯一的数字,用以唯一标识本设备发起的多个探测请求过程;该字段与发起者设备标识一起可以唯一标识网络中的一次拓扑发现过程;
设备列表:记录探测请求扩散过程中经过的所有设备及设备上的链路的描述信息,形式为{DevID_X,<P1-DevId_Y:P1>,<P2-DevId_Y:P2>}表示标识为DevID_X的设备,有两个端口P1和P2分别连接到一个设备标识为DevID_Y的邻居设备的端口P1和P2。
下面结合图7所示网络结构,详细介绍本方法在此网络结构中发现网络拓扑的具体过程。如图7所示网络结构有交换机S1、交换机S2、交换机S3、交换机S4,其设备标识分别为“S1”、“S2”、“S3”、“S4”。以交换机S1作为拓扑发现的发起者为例。
1)、交换机S1查询本地端口的邻居信息,确定端口P1有一个有效邻居,构造DFS探测请求,请求的数据部分各字段为:发起者设备标识=“S1”,请求方向=0,请求标识=0,设备列表长度=1,设备列表为{{S1,<P1-S2:P1>}},然后交换机S1在端口P1发送请求报文;
2)、交换机S2从P1端口收到交换机S1发送的扩散方向的DFS探测请求报文,发现自己还不在设备列表中,在本设备内存中记录该请求,即交换机S1发起的请求ID为0的请求的回溯点为端口P1;
交换机S2检查本地有效端口的邻居信息,发现还有端口P2,P4上的邻居交换机S3,还有P3,P5的邻居交换机S4不在设备列表中,并且最小端口号为P2;
修改请求报文中的两个字段:设备列表长度=2,设备列表为{{S1,<P1-S2:P1>},{S2,<P1-S1:P1>,<P2-S3:P1>,<P4-S3:P3>,<P3-S4:P1>,<P5-S4:P3>}},并将更新后的请求报文从端口P2发出;
3)、交换机S3从P1端口收到交换机S2发出的扩散方向的DFS探测请求报文,发现自己还不在设备列表中,记录该请求,即交换机S1发起的请求ID为0的请求的回溯点为端口P1;
交换机S3检查本地有效端口的邻居信息,发现还有端口P2上的邻居交换机S4不在设备列表中,于是修改请求报文中的两个字段:设备列表长度=3,设备列表为{{S1,<P1-S2:P1>},{S2,<P1-S1:P1>,<P2-S3:P1>,<P4-S3:P3>,<P3-S4:P1>,<P5-S4:P3>},{S3,<P1-S2:P2>,<P2-S4:P2>,<P3-S2:P4>}},并将更新后的请求报文从端口P2发出;
4)、交换机S4从P2端口收到交换机S3发出来的扩散方向的DFS探测请求报文,发现自己还不在设备列表中,记录该请求,即交换机S1发起的请求ID为0的请求的回溯点为端口P2;
交换机S4检查本地有效端口的邻居信息,发现自己的两个邻居交换机S2和交换机S3均已经在设备列表中,于是执行回溯流程,修改请求报文中三个字段:请求方向=1,设备列表长度=4,设备列表为{{S1,<P1-S2:P1>},{S2,<P1-S1:P1>,<P2-S3:P1>,<P4-S3:P3>,<P3-S4:P1>,<P5-S4:P3>},{S3,<P1-S2:P2>,<P2-S4:P2>,<P3-S2:P4>},{S4,<P1-S2:P3>,<P3-S2:P5>,<P2-S3:P2>}},然后在回溯点端口P2发出;
5)、交换机S3从端口P2收到交换机S4发出的回溯方向的DFS探测请求报文,检查本地有效端口的邻居信息,发现自己的两个邻居交换机S2,和交换机S4均已经在设备列表中,于是执行回溯流程,根据发起者设备标识S1+请求ID找到该请求对应的回溯点为端口P1,将请求报文在端口P1发出;
6)、交换机S2从端口P2收到交换机S3发出的回溯方向的DFS探测请求报文,发现自己的三个邻居交换机S1,交换机S3,交换机S4均已在设备列表,同样执行回溯流程,找到该请求的回溯点为端口P1,将请求报文在端口P1发出;
7)、交换机S1从端口P1收到交换机S2发出的回溯方向DFS探测请求报文,发现自己所有邻居均已在设备列表中,且自己就是该探测请求的发起者,于是根据报文中的设备列表生成网络拓扑信息,结束本次拓扑发现过程。
本方法中涉及到的所有设备,内部有一个控制单元负责探测请求报文的接收、发送、扩散及回溯处理,所述设备包括防火墙、路由器、服务器等,所述控制单元的服务即可实现本文所述的网络拓扑发现方法。
具体来说所述控制单元针对DFS探测请求报文的主要处理步骤如图8所示,
步骤81:接收DFS探测请求,继续执行步骤82;
步骤82:对DFS探测请求进行预处理,包括依据请求方向对其进行合法性检查,以及在本设备内存中记录扩散方向请求的回溯点;
步骤83:判断本地是否有任何邻居设备不在请求报文中的设备列表里,如果有,则执行扩散流程步骤84,否则执行回溯流程步骤85;
步骤84:对DFS探测请求执行扩散流程,包括选择请求扩散时的发送端口,更新请求方向,填入本设备标识和本地邻居信息,并从选择的发送端口发送请求;
步骤85:对DFS探测请求执行回溯流程,当查找到该请求对应的回溯点,更新请求方向,并从回溯点对应的端口发送请求;当找不到该请求对应的回溯点并且本设备是该请求的发起者时,依据该请求中的设备列表生成网络拓扑,结束一次拓扑发现流程。
下面结合图9,说明其中的核心步骤的详细流程:
图8步骤82为DFS探测请求预处理流程,其详细流程为步骤91所示,参考图9,具体说明如下:
A、接收DFS探测请求,检查DFS探测请求的请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤B,否则执行步骤C;
作为说明,本步骤中检查请求方向的目的是为了依据请求方向对接收到的DFS探测请求进行合法性检查。
B、检查本设备是否在DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤D;
作为说明,本步骤检查的目的是判断DFS探测请求的合法性,如果本设备在扩散方向的DFS探测请求中的设备列表里,意味着该请求曾经经过了本设备,现在又被其他设备再次扩散到本设备,则认为该DFS探测请求在传播过程中出现了异常,应丢弃该请求不再继续处理。
C、检查本设备是否在DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤E;
D、在本地内存中记录该DFS探测请求的回溯点为此请求的接收端口,继续执行步骤E;
E、继续执行下一个流程;
参考图8,步骤84为DFS探测请求的扩散流程,其详细流程如下步骤92所示,参考图9:
A、选取查询得到的有效端口中选择端口号最小的作为继续扩散请求时的发送端口;
作为说明,步骤A是为了确定请求继续扩散时的发送端口。
B、置请求方向字段为扩散方向;
C、如果该请求中设备列表里还未包含本设备,也要添加本设备标识和本地邻居信息;
D、从前述步骤确定的发送端口发送该请求;
参考图8,步骤85为DFS探测请求的回溯流程,其详细流程如步骤93所示,参考图9,具体说明如下:
A、通过该请求报文中的发起者设备标识与DFS请求ID查找该请求对应的回溯点,如果找到,则执行步骤B,否则,执行步骤C;
B、回溯该DFS探测请求,置请求方向字段为回溯方向,从步骤A找到的回溯点对应的端口发送。特别指出的是如果该请求中设备列表里还未包含本设备,还需添加本设备标识和本地邻居信息;
C、检查本设备是否为该请求的发起者,如果是,则根据接收到的回溯方向的DFS探测请求中的设备列表生成网络拓扑信息表,结束本请求的处理及本次拓扑发现过程;否则丢弃该请求;
作为说明,对于DFS探测请求的发起者,也就是第一个发起该请求的设备来说,因为不存在回溯点,所以作为发起者不会从本地内存中找到自己发起的DFS探测请求对应的回溯点;如果回溯请求时,设备既不是第一个发起请求的设备,也找不到请求的回溯点,则该请求在扩散和回溯过程中出现了异常,丢弃这个请求。
下面结合图7所示网络结构,详细在此网络结构中网络拓扑发现过程中每台设备的控制单元的具体过程:
1)、交换机S1查询本地端口的邻居信息,确定端口P1有一个有效邻居,构造DFS探测请求,请求的数据部分各字段为:发起者设备标识=“S1”,请求方向=0,请求标识=0,设备列表长度=1,设备列表为{{S1,<P1-S2:P1>}},然后交换机S1在端口P1发送请求报文;
2)、交换机S2执行步骤81,从P1端口收到交换机S1发送的DFS探测请求报文。
执行步骤82,检查该请求报文中的请求方向为扩散方向,并且交换机S2还不在请求报文的设备列表里,那么认为该请求报文是合法的,于是在本设备内存中记录该请求,即交换机S1发起的请求ID为0的请求的回溯点为端口P1。
执行步骤83,交换机S2检查本地有效端口的邻居信息,发现还有端口P2,P4上的邻居交换机S3,还有P3,P5的邻居交换机S4不在设备列表中,于是执行步骤84的扩散流程。
执行步骤84,选取有效端口号最小的端口P2作为发送端口,置请求报文中字段:请求方向=1,检查交换机S2还不在请求报文设备列表里,于是在请求报文中添加本设备标识及邻居信息,具体方式为修改字段:设备列表长度=2,设备列表为{{S1,<P1-S2:P1>},{S2,<P1-S1:P1>,<P2-S3:P1>,<P4-S3:P3>,<P3-S4:P1>,<P5-S4:P3>}},并将更新后的请求报文从端口P2发出。
3)、交换机S3执行步骤81,从P1端口收到交换机S2发出的DFS探测请求报文。
执行步骤82,检查该请求报文中的请求方向为扩散方向,并且交换机S3还不在请求报文的设备列表里,那么认为该请求报文是合法的,于是在本设备内存中记录该请求,即交换机S1发起的请求ID为0的请求的回溯点为端口P1。
执行步骤83,交换机S3检查本地有效端口的邻居信息,发现还有端口P2上的邻居交换机S4不在设备列表中,于是执行步骤84的扩散流程。
执行步骤84,选取有效端口号最小的端口P2作为发送端口,置请求报文中字段:请求方向=1,检查交换机S3还不在请求报文设备列表里,于是在请求报文中添加本设备标识及邻居信息,具体方式为修改字段:设备列表长度=3,设备列表={{S1,<P1-S2:P1>},{S2,<P1-S1:P1>,<P2-S3:P1>,<P4-S3:P3>,<P3-S4:P1>,<P5-S4:P3>},{S3,<P1-S2:P2>,<P2-S4:P2>,<P3-S2:P4>}},并将更新后的请求报文从端口P2发出。
4)、交换机S4执行步骤81,从P2端口收到交换机S3发出来的DFS探测请求报文。
执行步骤82,检查该请求报文中的请求方向为扩散方向,并且交换机S4还不在请求报文的设备列表里,那么认为该请求报文是合法的,于是在本地内存中记录该请求,即交换机S1发起的请求ID为0的请求的回溯点为端口P2;
执行步骤83,交换机S4检查本地有效端口的邻居信息,发现自己的两个邻居交换机S2和交换机S3均已经在设备列表中,于是执行步骤85回溯流程。
执行步骤85,交换机S4根据发起者设备标识S1+请求ID找到该请求对应的回溯点为端口P2,置请求报文中字段:请求方向=1,检查交换机S4还不在请求报文设备列表里,于是在请求报文中添加本设备标识及邻居信息,具体方式为修改字段:设备列表长度=4,设备列表={{S1,<P1-S2:P1>},{S2,<P1-S1:P1>,<P2-S3:P1>,<P4-S3:P3>,<P3-S4:P1>,<P5-S4:P3>},{S3,<P1-S2:P2>,<P2-S4:P2>,<P3-S2:P4>},{S4,<P1-S2:P3>,<P3-S2:P5>,<P2-S3:P2>}},然后在回溯点端口P2发出;
5)、交换机S3执行步骤81,从端口P2收到交换机S4发出的DFS探测请求报文。
执行步骤82,检查该请求报文中的请求方向为回溯方向,并且交换机S3已经在请求报文的设备列表里,那么认为该请求报文是合法的,于是执行步骤83。
执行步骤83,交换机S3检查本地有效端口的邻居信息,发现自己的两个邻居交换机S2和交换机S4均已经在设备列表中,于是执行步骤85回溯流程。
执行步骤85,交换机S3根据发起者设备标识S1+请求ID找到该请求对应的回溯点为端口P1,置请求报文中一个字段:请求方向=1,检查交换机S3已经在请求报文设备列表里,不在添加本设备标识和邻居信息,将请求报文在端口P1发出;
6)、交换机S2执行步骤81,从端口P2收到交换机S3发出的DFS探测请求报文。
执行步骤82,检查该请求报文中的请求方向为回溯方向,并且交换机S2已经在请求报文的设备列表里,那么认为该请求报文是合法的,于是执行步骤83。
执行步骤83,交换机S2检查本地有效端口的邻居信息,发现自己的三个邻居交换机S1、交换机S3和交换机S4均已在设备列表,于是执行步骤85回溯流程。
执行步骤85,交换机S2根据发起者设备标识S1+请求ID找到该请求对应的回溯点为端口P1,置请求报文中一个字段:请求方向=1,检查交换机S2已经在请求报文设备列表里,不在添加本设备标识和邻居信息,将请求报文在端口P1发出;
7)、交换机S1执行步骤81,从端口P1收到交换机S2发出的DFS探测请求报文。
执行步骤82,检查该请求报文中的请求方向为回溯方向,并且交换机S1已经在请求报文的设备列表里,那么认为该请求报文是合法的,于是执行步骤83。
执行步骤83,交换机S1检查本地有效端口的邻居信息,发现自己的唯一邻居交换机S2已在设备列表,于是执行步骤85回溯流程。
执行步骤85,交换机S1根据发起者设备标识S1+请求ID查找该请求对应的回溯点,结果无法找到对应的回溯点,于是交换机S1检查自己是否为该探测请求的发起者,结果为真,然后根据报文中的设备列表生成网络拓扑信息,结束本次拓扑发现过程;
上述仅为本方法的一种实施例,也可以有其变形方案:
比如所述步骤91,参考图9,为DFS探测请求预处理,其他变形方案:
1)、检查了DFS探测请求的流程合法性,也可以在DFS探测请求报文增加校验和字段,用以检查DFS探测请求报文的完整性。
2)、对于DFS探测请求的异常检查方法,还可以先判断本设备是否在DFS探测请求的设备列表中,如果在,执行步骤A,否则执行步骤B
步骤A:判断是否为扩散方向,如果是则丢弃
步骤B:判断是否为回溯方向,如果是则丢弃
比如所述步骤92,参考图9,为DFS探测请求的扩散流程,其他变形方案:
1)、步骤92的子步骤A,有效端口中选择本次扩散时的发送端口,可以是任意一个有效端口,比如可以为所有有效端口中端口号最大的端口,还可以为随机挑选的一个端口,还可以先确定本次扩散的对端邻居设备,再选择本地某个连接到该邻居设备的端口。
2)、再如子步骤C,也可以调整到步骤91预处理阶段,判断本设备不在设备列表中,如果不在,则添加本设备到请求报文中。
比如所述步骤93、参考图9,为DFS探测请求的回溯流程,其他变形方案:
1)、可以先判断本设备是否为DFS探测请求的发起者,如果是,则根据请求报文中的设备列表信息生成网络拓扑信息表,否则执行步骤A
步骤A:检查是否能找到请求的回溯点,如果找不到,则丢弃该请求,否则修改请求方向为回溯方向,从回溯点对应的端口发送该请求报文。
如图10所示,本发明还提出了一种网络拓扑发现的装置,该装置包括接收单元,处理单元以及生成单元,其中,
接收单元,用于接收包含探测报文的DFS拓扑探测请求;
处理单元,用于判断所述探测请求是扩散请求还是回溯请求,并基于判断结果对所述探测请求进行处理;
生成单元,用于根据所述处理结果生成网络拓扑信息表。
处理单元具体用于执行如下步骤,
步骤2.1,判断所述DFS探测请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤2.2,否则执行步骤2.3;
步骤2.2,检查本设备是否在所述DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤2.4;
步骤2.3,检查本设备是否在所述DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤2.5;
步骤2.4,记录所述DFS探测请求的回溯点为此请求的接收端口,继续执行步骤2.5;
步骤2.5,查询所有符合条件的有效端口,如果存在,则执行步骤2.6,否则执行步骤2.7;
步骤2.6,扩散所述DFS探测请求,选取所述步骤2.5中查询得到的有效端口中端口号最小的端口作为继续扩散请求时的发送端口,置请求方向字段为扩散方向,然后执行步骤2.8;
步骤2.7,回溯该DFS探测请求,置请求方向字段为回溯方向,并通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口;
步骤2.8,如果该请求中设备列表里还未包含本设备,添加本设备标识和本地邻居信息,并从前述步骤确定的发送端口发送该请求。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对本发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
Claims (6)
1.一种网络拓扑发现方法,其特征在于,执行如下步骤:
步骤1,接收包含探测报文的DFS拓扑探测请求;
步骤2、判断所述探测请求是扩散请求还是回溯请求,并基于判断结果对所述探测请求进行处理;
步骤3,根据所述处理结果生成网络拓扑信息表。
2.根据权利要求1所述的方法,其特征在于,所述步骤2的具体过程为,
步骤2.1,判断所述DFS探测请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤2.2,否则执行步骤2.3;
步骤2.2,检查本设备是否在所述DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤2.4;
步骤2.3,检查本设备是否在所述DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤2.5;
步骤2.4,记录所述DFS探测请求的回溯点为此请求的接收端口,继续执行步骤2.5;
步骤2.5,查询所有符合条件的有效端口,如果存在,则执行步骤2.6,否则执行步骤2.7;
步骤2.6,扩散所述DFS探测请求,选取所述步骤2.5中查询得到的有效端口中端口号最小的端口作为继续扩散请求时的发送端口,置请求方向字段为扩散方向,然后执行步骤2.8;
步骤2.7,回溯该DFS探测请求,置请求方向字段为回溯方向,并通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口;
步骤2.8,如果该请求中设备列表里还未包含本设备,添加本设备标识和本地邻居信息,并从前述步骤确定的发送端口发送该请求。
3.根据权利要求2所述的方法,其特征在于,所述步骤2.5中的条件具体为端口的邻居信息有效,且对端邻居设备不在所述探测请求中的设备列表里。
4.根据权利要求3所述的方法,其特征在于,所述步骤2.7中的通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口,还包括判断是否找到所述回溯点,如果判断结果为是,则将对应回溯点作为发送端口,修改请求方向为回溯方向,添加设备标识及邻居信息,在回溯端口发送该请求,并结束该步骤,如果不能找到回溯点,则判断该请求发起者是否为自己,如果是,则本次拓扑发现流程完成,如果否,则丢弃该请求。
5.一种网络拓扑发现的装置,其特征在于,所述装置包括接收单元,处理单元以及生成单元,其中,
所述接收单元,用于接收包含探测报文的DFS拓扑探测请求;
所述处理单元,用于判断所述探测请求是扩散请求还是回溯请求,并基于判断结果对所述探测请求进行处理;
所述生成单元,用于根据所述处理结果生成网络拓扑信息表。
6.根据权利要求5所述的装置,其特征在于,所述处理单元具体用于执行如下步骤,
步骤2.1,判断所述DFS探测请求方向是否为扩散方向,如果为扩散方向的请求,则执行步骤2.2,否则执行步骤2.3;
步骤2.2,检查本设备是否在所述DFS探测请求的设备列表中,如果在,则丢弃该请求结束本次处理,否则执行步骤2.4;
步骤2.3,检查本设备是否在所述DFS探测请求的设备列表中,如果不在,则丢弃该请求结束本次处理,否则执行步骤2.5;
步骤2.4,记录所述DFS探测请求的回溯点为此请求的接收端口,继续执行步骤2.5;
步骤2.5,查询所有符合条件的有效端口,如果存在,则执行步骤2.6,否则执行步骤2.7;
步骤2.6,扩散所述DFS探测请求,选取所述步骤2.5中查询得到的有效端口中端口号最小的端口作为继续扩散请求时的发送端口,置请求方向字段为扩散方向,然后执行步骤2.8;
步骤2.7,回溯该DFS探测请求,置请求方向字段为回溯方向,并通过该请求报文中的发起者设备标识以及所述DFS请求的ID查找到该请求对应的回溯点作为回溯请求时的发送端口;
步骤2.8,如果该请求中设备列表里还未包含本设备,添加本设备标识和本地邻居信息,并从前述步骤确定的发送端口发送该请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710822662.0A CN107682270B (zh) | 2017-09-13 | 2017-09-13 | 一种网络拓扑发现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710822662.0A CN107682270B (zh) | 2017-09-13 | 2017-09-13 | 一种网络拓扑发现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107682270A true CN107682270A (zh) | 2018-02-09 |
CN107682270B CN107682270B (zh) | 2020-06-12 |
Family
ID=61135179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710822662.0A Active CN107682270B (zh) | 2017-09-13 | 2017-09-13 | 一种网络拓扑发现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107682270B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110868318A (zh) * | 2019-11-01 | 2020-03-06 | 咪咕文化科技有限公司 | 网络访问关系的生成方法、装置、电子设备及存储介质 |
CN111447604A (zh) * | 2020-04-07 | 2020-07-24 | 吉林大学 | 一种密集无线网络中采用隐式确认机制的拓扑发现方法 |
CN111447657A (zh) * | 2020-04-03 | 2020-07-24 | 吉林大学 | 一种邻居发现与广度优先算法相结合的无线网络拓扑发现方法 |
CN111770095A (zh) * | 2020-06-29 | 2020-10-13 | 百度在线网络技术(北京)有限公司 | 探测方法、装置、设备以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217428A (zh) * | 2008-01-11 | 2008-07-09 | 北京工业大学 | 基于拓扑树的回溯式路由级网络拓扑检测方法 |
CN102439905A (zh) * | 2011-09-30 | 2012-05-02 | 华为技术有限公司 | 网络拓扑自动发现方法、装置及系统 |
CN104038446A (zh) * | 2014-06-06 | 2014-09-10 | 华为技术有限公司 | 链路发现方法以及装置 |
CN104410527A (zh) * | 2014-12-01 | 2015-03-11 | 福建星网锐捷网络有限公司 | 一种拓扑检测方法、交换机及热堆叠系统 |
CN105721318A (zh) * | 2016-02-29 | 2016-06-29 | 华为技术有限公司 | 一种软件定义网络sdn中发现网络拓扑的方法和装置 |
US20170048110A1 (en) * | 2015-08-11 | 2017-02-16 | At&T Intellectual Property I, L.P. | Dynamic Virtual Network Topology Discovery Engine |
-
2017
- 2017-09-13 CN CN201710822662.0A patent/CN107682270B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217428A (zh) * | 2008-01-11 | 2008-07-09 | 北京工业大学 | 基于拓扑树的回溯式路由级网络拓扑检测方法 |
CN102439905A (zh) * | 2011-09-30 | 2012-05-02 | 华为技术有限公司 | 网络拓扑自动发现方法、装置及系统 |
CN104038446A (zh) * | 2014-06-06 | 2014-09-10 | 华为技术有限公司 | 链路发现方法以及装置 |
CN104410527A (zh) * | 2014-12-01 | 2015-03-11 | 福建星网锐捷网络有限公司 | 一种拓扑检测方法、交换机及热堆叠系统 |
US20170048110A1 (en) * | 2015-08-11 | 2017-02-16 | At&T Intellectual Property I, L.P. | Dynamic Virtual Network Topology Discovery Engine |
CN105721318A (zh) * | 2016-02-29 | 2016-06-29 | 华为技术有限公司 | 一种软件定义网络sdn中发现网络拓扑的方法和装置 |
Non-Patent Citations (1)
Title |
---|
杨京礼,姜守达,魏长安,孙超: "一种高效的单播网络自适应拓扑推测算法", 《电子学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110868318A (zh) * | 2019-11-01 | 2020-03-06 | 咪咕文化科技有限公司 | 网络访问关系的生成方法、装置、电子设备及存储介质 |
CN110868318B (zh) * | 2019-11-01 | 2022-10-18 | 咪咕文化科技有限公司 | 网络访问关系的生成方法、装置、电子设备及存储介质 |
CN111447657A (zh) * | 2020-04-03 | 2020-07-24 | 吉林大学 | 一种邻居发现与广度优先算法相结合的无线网络拓扑发现方法 |
CN111447657B (zh) * | 2020-04-03 | 2022-10-21 | 吉林大学 | 一种邻居发现与广度优先算法相结合的无线网络拓扑发现方法 |
CN111447604A (zh) * | 2020-04-07 | 2020-07-24 | 吉林大学 | 一种密集无线网络中采用隐式确认机制的拓扑发现方法 |
CN111447604B (zh) * | 2020-04-07 | 2022-06-03 | 吉林大学 | 一种密集无线网络中采用隐式确认机制的拓扑发现方法 |
CN111770095A (zh) * | 2020-06-29 | 2020-10-13 | 百度在线网络技术(北京)有限公司 | 探测方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107682270B (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107682270A (zh) | 一种网络拓扑发现方法及装置 | |
CN107508712A (zh) | 一种网络拓扑发现方法及装置 | |
CN103888928B (zh) | 一种业务策略控制方法及系统 | |
De Renesse et al. | Formal verification of ad-hoc routing protocols using SPIN model checker | |
CN100448319C (zh) | 与移动通信系统中ip会话的重新定位相关的优化信息传送 | |
US20240015211A1 (en) | Computer-implemented system and method for propagation and communication of data in a network such as a blockchain network | |
CN104935514B (zh) | 一种路径分配方法和装置 | |
CN102165741A (zh) | 在ipv6网络中用于封锁和搜索主机的方法 | |
EP3567813A1 (en) | Method, apparatus and system for determining content acquisition path and processing request | |
CN113408139B (zh) | 电力通信网络路径控制仿真验证方法、装置、设备和介质 | |
CN107404512A (zh) | 资源订阅方法、资源订阅装置和资源订阅系統 | |
CN106991008A (zh) | 一种资源锁管理方法、相关设备及系统 | |
CN103581317B (zh) | 一种网络资源共享的方法 | |
CN107547346A (zh) | 一种报文传输方法和装置 | |
Grajzer et al. | ND++–an extended IPv6 Neighbor Discovery protocol for enhanced stateless address autoconfiguration in MANETs | |
KR101950856B1 (ko) | 블록체인을 이용한 정보 관리 시스템 및 방법 | |
Serena et al. | Simulation of dissemination strategies on temporal networks | |
Kar et al. | An efficient producer mobility management technique for real-time communication in NDN-based Remote Health Monitoring systems | |
US7646729B2 (en) | Method and apparatus for determination of network topology | |
Sallal et al. | Security and performance evaluation of master node protocol in the bitcoin peer-to-peer network | |
CN101222410B (zh) | 一种邻域-资源发现的方法和装置以及系统 | |
JPWO2008044783A1 (ja) | 無線lanシステムの通信品質評価方法、通信品質評価装置および通信品質評価プログラム | |
CN107302571A (zh) | 基于果蝇算法的信息中心网络路由和缓存管理方法 | |
CN107682214A (zh) | 环回检测方法及装置 | |
CN101616092B (zh) | 一种路由发现的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |