简单拓扑发现及其应用---------无向图中节点如何自主发现环,切断环。唯一路径以及原路返回。

    根据最近正在做的一个勤务电话项目,设计方案时出了一个的拓扑问题。概括就是无向图中节点如何自主发现环,切断环;

我将其简化为一下题目:
    题目:拓扑上设备数目未知,但是每台设备有四个端口,设备之间的连接,没有任何限制,即两台设备之间可以同时有2条、3条甚至
4条连接。拓扑不限,可能是链式、环式、相交环、点对点等多种。以下拓扑只是为了方便说明。拓扑中每个节点周围的数据表示端口,最多四个端口。拓扑中的仙没有权值、

设备之间的通信帧,可以自由定义,至少包括源地址、目的地址、路由长。

    第一如何确认两台设备之间的唯一路径,且能够按照最短路径原路返回?(即两点之间通话)
    第二如何让网络上的设备检测到环路,并进行切断环操作?(拓扑有环,导致数据叠加,增加负担)

    解答:
    针对这个拓扑中,每台设备我们都配置唯一的ID,
    我们首先解决直接相连设备之间的路径唯一的问题,即让设备与设备之间的连接变为一条,我们使用NDP(邻居发现协议),每台设备都可以发现自己的邻居,当他发现自己的
多个端口对应一个设备ID时,我们可以认为这几个端口,是一个端口,因为这几个端口都指向一台设备。所以我们就可以忽略题目中,两台设备之间,通过多条线连接的问题。

    对于问题1,我们采用最短路径的算法去解决,假如拓扑中节点A要找节点G,则设备A发起广播,则设备G最终会受到A发送的广播帧,广播帧没经过一个设备后,路由值都会加1,路由值初始化为0.中间转发设备要记录经过自己的帧的情况,包括源地址,目的地址,路由值,进入设备端口号,发送端口号;则设备G会收到很多广播帧,其中会有一个或几个路由值最小。然后设备G按照路由值最小的广播帧,进入的端口进行反馈应答帧。应答帧经过的设备,会对应答帧的情况与记录的广播帧的情况进行比较,发现路由值相等,且源地址与目的地址相反,则根据广播帧记录的端口进行转发。指导路由值零,正好反馈到设备A。

 

    问题2,每台设备都通过NDP(邻居发现协议)收集与自己直连的设备,建立一个邻居表。当有设备要进行环路检测时,广播整个拓扑,收集每台设备的邻居表,然后该设备对收集到的邻居表进行整理类似于TDP(拓扑发现协议)。这里以设备A进行环路检测为例进行说明。

  先说明邻居表

  设备的A的邻居表 A.1------C.2

A.1C.2
A.2NULL
A.3NULL
A.4NULL

  设备C的邻居表 C.1----E.2  C.2-----A.1   C.3------B。2

C.1E.2
C.2A.1
C.3B.2
C.4NULL

以此类推,当A设备收集完邻居表后,根据深度优先的搜索,进行对整个拓扑的遍历,一单发现有重复的点则,则认为是有环,记录重复的点,然后又发起者A,向重复点发送解环帧,该点对相应的端口进行阻塞。完成解环。

还有很多细节问题,没有考虑到。后续会继续更新。

转载请标明出处。有问题请联系xq-310@163.com         qq:842607968


 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0xweb3q

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值