1、1绘制动态网络拓扑的程序实现摘要:探讨了利用易语言根据用户输入的地址和上联地址,考虑分辨率和美观自动绘制动态拓扑图的方法。 关键词:网络拓扑 生成拓扑 易语言 Abstract: To explore the use of easy language according to user input address and an upper address, consider the resolution and beautiful automatic drawing dynamic topology method. Key words: network topology topology ea
2、sy language 中图分类号 TP393.02文献标识码A文章编号 网络拓扑对网管人员网络管理、网络规划起到非常重要的作用。比如做网络监控, 网络故障、流量瓶颈等信息就要直接显示在网络拓扑上, 这样网管人员才能对网络状况一目了然。网管人员绘制拓扑一般有两种方法,第一种是在电脑上绘制静态拓扑,但是网络设备越来越多,更新越来越频繁,绘制静态拓扑图的方案显然已经无法胜任。第二种是利用第三方商业软件,自动发现设备并绘制拓扑,对于自动发现画出的拓扑,基本都需要人工再复杂调整,且移植性不好,在不同分辨率下适应性差。笔者通过研究,利用易语言自动绘制动态拓扑,可在不同分辨率机器上都能显示完整拓扑,并且支
3、持网络设备多上联,清晰的表示层次,最大2程度的减少交叉,无法避免的交叉线将用弧线表示。 程序实现目标 程序根据用户输入的设备 IP 地址和上联 IP 地址,算出层次,根据当前分辨率自动算出每个设备的位置,并绘制拓扑。 绘制的拓扑图该考虑布局美观,靠边设备都应该离屏幕边界一定距离,同时所有设备之间需要保持合适间距。 拓扑图要清楚的表示设备之间层次和连接关系,同一上联的设备应当排列在一起,最大程度的避免连线交叉 拓扑图要支持设备多上联情况,对于多上联将会造成无法避免的连线交叉,要判断出,并用弧线表示。 拓扑图中网络设备的 IP 地址、上联 IP 地址、设备类型等都可以随时调整,并根据调整后的数据即
4、时刷新拓扑,根据设备类型是防火墙、交换机还是服务器,显示相应的图标。 系统具体设计实现 数据库设计 由于本程序数据量和读写都比较少,所以为便于操作维护采用桌面型数据库 Access。 在表“基本库”中记录各设备的信息: “IP”字段记录设备的 IP 地址。 “上联 1”“上联 8”字段记录设备的上联 IP 地址,默认情况下一个设备只有一个上联,特殊情况下,一个网络设备可能有两个甚至多个上联,为防止这种特殊情况,预备了“上联 2”“上联 8”字段。字段“层次”记录程序根据设备的上联关3系计算出的该设备层数。类型记录的是设备的类型,比如核心交换机、汇聚交换机、接入交换机、服务器、防火墙等,选择不同
5、的类型,屏幕显示不同的图标。 “拓扑宽度”和“拓扑高度”记录屏幕中实际显示图标的宽度和高度。 “左边居中”和“顶边高度”记录的是图标在屏幕中位置。程序模块设计 2.1、用户输入模块 提供用户对设备信息增删改的界面。 2.2、层次关系计算模块 根据用户输入的上联 IP,找出最上层设备,同时判断是否有循环,有循环则提示出错,没有循环则把最上层设备层次定义为 1,其下联定义为 2,以下以此类推。 易语言实现关键代码如下: 2.3、图标大小及位置计算模块 相同一层的网络设备布局在屏幕的同一行,相同上联的设备排序在一起,这样可避免连线时出现交叉线。根据屏幕宽度和设备数目以及设备层数,依照算法自动调节图标
6、宽度和间隔宽度。 易语言实现代码如下: 42.4、绘制拓扑模块 根据每个设备图标的位置显示图标,并按计算出的图标大小设置图标尺寸。绘制线条连接各设备,同时判断是否与已有线条交叉,因为当设备出现多上联时,可能要出现线条交叉。 判断两个线段是否交叉,可利用两条直线的方程求解,解就是交点,然后判断交点是否在线段内。 其中求经过点(x1,y1)和(x2,y2)的直线和经过点(x3,y3)和(x4,y4)的直线的交点易语言代码如下: 交点 x (y2 y1) x1 (x2 x1) (y4 y3) x3 (x4 x3) y3 y1) (y2 y1) (x2 x1) (y4 y3) (x4 x3) 交点 y (y2 y1) (y2 y1) x1 (x4 x3) (y4 y3) (y2 y1) (x2 x1) x3 (y2 y1) (y3 y1) (x2 x1) (x4 x3) (y2 y1) (x2 x1) (x4 x3) (y4 y3) (x2 x1) (x2 x1) (y2 y1) x1 (x2 x1) y1 程序运行后效果: 5结束语: 利用该自动绘制网络拓扑的程序,网管人员可以对网络结构和状况一目了然,在此自动绘制拓扑程序的基础上,我们又增加设计了自动监测网络和报警功能,将故障设备用红色标示,并且声音报警。该程序在我单位运行几个月来,极大地方便了网络管理和故障排除。