一种交换机网管拓扑图实现算法的制作方法

文档序号:7565874阅读:233来源:国知局
专利名称:一种交换机网管拓扑图实现算法的制作方法
一种交换机网管拓扑图实现算法所属领域在工业通讯领域,目前还没有一套完善并付诸实现的网络拓扑图生成解决方案。 本算法能够从交换机中获取邻居信息后,迅速地生成网络结构为树状、单环、多环的拓扑 图,同时能够用有色线条标识出冗余链路和连通链路,这样就能方便用户从宏观的角度,对 整个网络结构进行监控和管理。
背景技术
网管网络拓扑图的生成一般都需要网络设备中底层软件的支持,目前拓扑节点信 息的收集主要是基于SNMP (Simple Network Management Protocol,简单网络管理协议)、 ICMPdnternet Control Message Protocol,互联网控制消息 协议)等协议。需要采集的 拓扑节点信息一般包括交换机的端口号、端口是否连接有交换机、端口的状态、端口所连设 备的ip地址与MAC地址等内容。目前基于SNMP、ICMP两种协议的上层网管拓扑发现算法都有三个明显的弊端。第 一,如果要包含必要的拓扑图节点信息,就必须定义相应的节点,网管软件以轮询的方式去 获取每一台交换机的每一个SNMP节点信息,效率十分低下,而且会加重网络负担,影响网 络质量。第二,在生成交换机拓扑图的过程中,无法明确指出拓扑图中哪一些链路为冗余链 路,哪一些链路为非冗余链路,不便于直观的进行管理。第三,当网络中的拓扑结构发生变 化时,网管软件的拓扑图无法实时更新并反映链路变化,无法提供精确的故障位置和端口。在当前的工业通讯领域,将会有越来越多的网络设备连接到互联网上,一些人为 破坏或者是设备老化故障可能会造成带来难以估计的后果,一种实时的网络拓扑图能够为 故障定位、辅助决策提供有力手段。技术方案网管软件获取的拓扑节点信息离不开底层交换机程序的支持,如果想要获取交 换机的拓扑节点信息,底层交换机程序就必须提供两个服务器进程stool、fileserver., stool进程负责向网管回复本交换机的ip等信息,方便网管与交换机之间建立TCP/IP连 接;fileserver进程负责向网管传送拓扑节点内容,并且向网管提供trap告警信息,实时 更新拓扑图。下面首先简要的说明网管生成拓扑图的大致过程。 网管软件启动一个侦听交换机回复UDP包的子线程ThreadBroadcast。 网管主线程向局域网内广播带有特定标识的UDP包,该UDP包只有拥有stool 进程的网络设备才能识别。 交换机的stool进程在捕获到该UDP包之后,将自身的ip地址填充到这个特定 的UDP包中,然后以UDP的方式将它重新发送出去。 网管软件侦听交换机恢复UDP包的子线程ThreadBroadcast在捕获这个带有交 换机ip的特殊UDP包之后,将该ip插入到一个字符串数组SwitchArray,将与该交换机建 立TCP/IP连接,同时创建侦听交换机trap告警信息的子线程ThreadTrap。
待延时IOs以后,此时网管与局域网内的所有交换机ip建立连接完成。 网管软件轮询所有的交换机,获取每一台交换机的拓扑节点信息,绘制网络拓 扑图。 当侦听到交换机trap告警信息的子线程ThreadTrap捕获到告警信息之后,更 新交换机面板。交换机拓扑图根据从交换机中获取的拓扑节点信息绘制拓扑图,而拓扑节点信息 主要包括以下几个必要元素。ΡΝ0:端口对应的编号。LS 端口连接状态,LK = 1表示端口连上;LK = 0表示端口没有连上。PS 端口阻塞状态,PS = OxAO表示端口为可连通状态,PS = 0x42表示端口为阻 塞状态(能收包不能发包)。SN 端口所挂设备的数量(由于底层协议为私有协议,可能会出现一个端口上挂 着多台设备的情况)。SIP 端口所挂设备的ip地址。下面将按照解析拓扑信息节点、分析拓扑节点信息、确定每一台交换机的位置、连 接交换机之间的线条几个关键步骤来阐述生成拓扑图的算法。一、解析拓扑节点信息将通过发送UDP广播包获取的交换机数组SwitchArray从小到大排序,网管软件 按照这个数组SwitchArray去获取每一台交换机的拓扑节点信息,然后对这些信息进行如 下处理。首先,创建一个单链表属于这台交换机,该单链表用于保存这台交换机的所有连 接信息。将拓扑节点信息中解析成如下形式PortState-ipl-ip2,其中PortState为端口 连接状态,16 (OxAO)为可连通状态,66 (0x42) ;ipl为MIN{本机ip,端口所挂设备ip},ip2 为 MAX {本机 ip,端口所挂设备 ip}。例如16-192. 168. 16. 128-192. 168. 16. 130,表示 ip 地址为192. 168. 16. 128的交换机与ip地址为192. 168. 16. 130的交换机的连接状态为连 通的。将解析得到的连接信息存至本交换机的链表中。这些连接信息能够将离散的交换机 通过不同的线条连接起来。其次,根据PID (端口号)与LK (端口连接状态),得到本交换机的端口连接位图 PortLinkMap,例如PortLinkMap = 5,5转化成二进制为101,从右往左看,表示本交换机端 口 1与端口 3为连通状态(linkup),其余端口为非连通状态(link down) 。该端口位图用 于显示拓扑图面板上的端口状态。二、分析拓扑节点信息建立一个堆栈SwitchStack,一个用于保存交换机之间连接信息的动态数组 SwitchLinkStateArray, 一个动态数组5 行吐0印让4^^7,节点深度为动态数组的下标,数 组元素的值表示某节点深度下有用的交换机的台数。步骤1 让SwitchArray中的第一个元素入栈(ip地址最小的元素作为根节点,这 样就能保证在网络拓扑结构不变而多次刷新拓扑图的情况下,拓扑图中各交换机的基本位 置不变。),将首先入栈的交换机的节点深度设置为0,SwitchD印thArray
=1。步骤2 如果堆栈SwitchStack不为空,获取栈顶ip地址的交换机Switchl保存连接信 息的单链表,如果单链表为空,SwitchStack栈顶元素出栈,继续执行步骤2 ;如果单 链表不为空,执行步骤3。如果堆栈SwitchStack为空,结束整个分析过程。
步骤3 解析单链表的元素,得到某端口的端口状态、与交换机Switchl相连的交 换机Switch2的ip地址。如果端口状态为66 (能收包不能发包),将该条连接信息保存 到SwitchLinkStateArray中,从单链表中删除掉当前的这条连接信息,执行步骤2 ;如果端 口状态为16 (能收包且能发包),将当前的连接信息赋给strLinklnfo,然后分别从交换机 Switchl和交换机Switch2保存连接信息的单链表中删除这条连接信息,继续执行步骤4。步骤4 判断与Switchl相连的Switch2的ip是否在堆栈SwitchStack,如果不在 堆栈中,执行步骤5 ;如果在堆栈中,执行步骤2。步骤5 将交换机Switch2的节点深度在交换机Switchl的节点深度基础上加1, 即Switch2. Depth = Switchl. D印th+1,将该节点深度下的交换机台数加1,将在步骤3中 保存的连接信息StrLinkInfo保存到动态数组SwitchLinkStateArray中,同时Switch2的 ip地址入栈,执行步骤2。分析拓扑节点信息这个步骤是最为关键的一步,它主要得到两条重要信息拓扑 图中的连线信息SwitchLinkArray,拓扑图中节点的总深度和各节点深度下拥有交换机的 台数。分析拓扑节点信息的简易数据流程图如说明书附图中的图1所示。三、确定每一台交换机的位置在分析完拓扑节点信息之后,得到了三条重要信息保存有线条连接信息的 SwitchLinkStateArray、每台交换机的节点深度和一个保存有每一个节点深度下交换机的 台数的数组SwitchD印thArray,其中每台交换机的节点深度和一个保存有每一个节点深度 下交换机的台数的数组SwitchD印thArray,就能够辅助我们确定每一台交换机在拓扑图中 的具体位置。首先定义一种数据结构Switch_ReCt,它用于保存某节点深度下某交换机的位置, 数据结构信息说明如下· Depth 交换机的节点深度。· Rect_Top 交换机在拓扑图中的上沿数值。· Rect_Buttom 交换机在拓扑图中的下沿数值。· Rect_Left 交换机在拓扑图中的左沿数值。· Rect_Right 交换机在拓扑图中的右沿数值。· IsAllocated 该位置是否已经分配,初始值为false。定义相对位置为左右关系的两台交换机距离为C_SWITCHS_INTV_WIDTH = 20,相 对位置为上下关系的两台交换机距离为C_SWITCHS_INTV_HEIGHT = 10,交换机图片的宽度 高度分别为 C_SWITCH_PIC_WIDTH = 36,C_SWITCH_PIC_HEIGHT = 20。下面是定位交换机 位置的关键步骤。步骤1 由的数组长度、交换机图片的高度C_SWITCH_PIC_ HEIGHT以及两台交换机之间的上下高度差C_SWITCHS_INTV_HEIGHT,可以得到每一个节点 深度下的交换机在拓扑图中上沿以及下沿的数值。具体计算公式为Switch_ReCt. Rect_Top =Switch_Rect. Depth*(C_SWITCHS_INTV_HEIGHT+C_SWITCH_PIC_HEIGHT) ;Switch_Rect. Rect_Buttom = Switch_Rect. Rect_Top+C_SWITCH_PIC_HEIGHT0
步骤2 由交换机的节点深度、数组交换机图片的宽 度C_SWITCH_PIC_WIDTH以及两台交换机之间的左右距离C_SWITCH_PIC_WIDTH,可以 得到每一台交换机在拓扑图中左沿与右沿的数值。具体计算公式为Switch_Rect. Rect_Left = Form. Width-SwitchDepthArray[Switch_Rect.Depth]*Switch_Rect. Width-(SwithDepthArray[Switch_Rect. Depth]_1)*C_SffITCHS_INTV_WIDTH+N* (C_ SWITCHS_INTV_WIDTH+C_SWITCH_PIC_WIDTH),其中 Form. Width 为拓扑图整个画板的宽度, N为该深度下已经定位了的交换机台数。四、交换机连线 确定完每一台交换机的具体位置以后,由分析拓扑节点信息我们已经得到了保存 有交换机之间连接信息的动态数组SwitchLinkStateArray,连接信息中有端口是否阻塞和 两台交换机的ip地址,可以很容易的将交换机之间进行连线,但是要注意一下连接信息 中是连通状态(16),或者阻塞状态(66)最好使用不同颜色的线条连接交换机,建议连通状 态使用绿色线条,阻塞状态使用橙黄色线条。上述四个步骤对整个拓扑图生成算法进行了一个详细的描述,该生成算法具有时 间复杂小、严格区分冗余链路、生成的拓扑图美观等优点,不但适用于普通的树形结构网络 拓扑,而且还适用于网络结构复杂的多环拓扑。


图1是分析拓扑节点信息流程图。 图2是整个算法获取拓扑节点信息的流程简图。
权利要求
1.一种交换机网管拓扑图实现算法,其特征在于底层通过Hello协议来实现拓扑节 点信息收集,底层通过Hello协议来实现拓扑节点信息收集,拓扑节点信息包括PNO端口 号、LS端口连接状态、PS端口阻塞状态、SN端口所挂设备的数量和SIP端口所连接的设备 的ip地址,将生成一个复杂的拓扑图的问题化解成“一台交换机与这台交换机的邻接交换 机”这个问题,
2.根据权利要求1所述的一种交换机网管拓扑图实现算法,其特征还在于在分析拓 扑节点信息过程中,使用“堆栈迭代”的方式解析拓扑节点信息,用非冗余链路的思想来处 理冗余链路的问题。在分析拓扑节点信息过程中,使用“堆栈迭代”的方式解析拓扑节点信 息;拓扑节点信息形式为“PS-MIN{IP1,IP2}-MAXUPl,IP2}”,PS端口阻塞状态来严格区分 连通链路和因冗余而被阻塞的链路,由于端口连通状态PS = 16下,交换机A中的拓扑节点 信息中有交换机B,那么交换机B中的拓扑节点信息中一定包含有交换机A ;如果端口连接 状态为阻塞状态PS = 66,能收包不能发包,交换机A中的拓扑节点信息中有交换机B,但是 交换机B中的拓扑节点信息中一定不包含有交换机A,在分析拓扑节点信息时,将冗余的链 路当成是非冗余的线路来对待。
3.根据权利要求1所述的一种交换机网管拓扑图实现算法,其特征还在于通过交换 机在拓扑图中的节点深度与节点深度下交换机的台数来定位交换机在拓扑中的位置。连接 线条时通过有颜色区分的线条来指明连通链路与冗余链路,通过分析拓扑节点信息,得到 交换机在拓扑图中的节点深度与节点深度下交换机的台数,通过这两条信息就可以定位交 换机在拓扑中的位置。连接线条时可根据解析得到的连接信息中是否包含有阻塞信息,来 决定用何种颜色的线条来连接交换机。
全文摘要
本发明是关于一种交换机网管拓扑图算法,该算法底层拓扑节点信息的收集基于Hello协议,来维护了一个保存有自身端口信息和邻接交换机信息的文件,将整个复杂的网络拓扑问题转化成一个交换机与邻接交换机的问题。在获取这些拓扑节点信息的过程中,使用到了UDP协议和TCP协议。在分析拓扑节点信息时,采用“堆栈迭代”的方法,来解析得到连接交换机线条的信息、交换机的节点深度信息,然后以此来确定交换机在拓扑图中的具体位置,最后根据连接交换机线条信息来决定连通链路的线条和冗余链路的线条。
文档编号H04L12/24GK102148703SQ20111002163
公开日2011年8月10日 申请日期2011年1月19日 优先权日2011年1月19日
发明者刘湘泉, 周厚明 申请人:武汉迈威光电技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1