一种基于LLDP的链路层拓扑发现系统的设计策略.docx

上传人:rrsccc 文档编号:8907531 上传时间:2021-01-24 格式:DOCX 页数:4 大小:14.94KB
返回 下载 相关 举报
一种基于LLDP的链路层拓扑发现系统的设计策略.docx_第1页
第1页 / 共4页
一种基于LLDP的链路层拓扑发现系统的设计策略.docx_第2页
第2页 / 共4页
一种基于LLDP的链路层拓扑发现系统的设计策略.docx_第3页
第3页 / 共4页
一种基于LLDP的链路层拓扑发现系统的设计策略.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《一种基于LLDP的链路层拓扑发现系统的设计策略.docx》由会员分享,可在线阅读,更多相关《一种基于LLDP的链路层拓扑发现系统的设计策略.docx(4页珍藏版)》请在三一文库上搜索。

1、一种基于LLDP的链路层拓扑发现系统的设计策略0 引言数据链路层网络拓扑是指以太网络中,以交换机为主的网络节点之间在数据链路层的连接关系,它反映了网络节点之间真实的物理连接拓扑。在网络运维工作中,内网拓扑结构的核实与确认是一个常见且重要的问题,因为它与故障定位、网络安全防护息息相关。思科公司最早推出了思科发现协议【1】(Cisco Discovery Protocol,CDP),然而它是内置在网络设备内部的私有协议,与其它平台不具备兼容性;基于交换机地址转发表的拓扑发现技术【2】解决了兼容性问题,然而这种技术算法非常复杂,且要求采集到的数据具有一定的完整性。链路层连接协议(Link Layer

2、 Discovery Protocol, LLDP)的发布意味着这个问题已经得到解决。LLDP的功能与CDP类似,拓扑关系的识别和维护由协议来实现,应用程序只需对拓扑信息进行提取即可;而且LLDP是公开的标准化的协议,不存在兼容性问题。1 LLDP分析LLDP提供了一种标准的拓扑沟通机制,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息按照TLV(Type/Length/Value,类型/长度/值)的结构进行组织,并封装在以太网帧中发布给邻居设备。所有设备在收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络

3、管理系统查询及判断链路的通信状况。LLDP的框架结构如图1所示【3】。图1 LLDP框架结构图由图1可见,PTOPO MIB、Entity MIB、Interface MIB以及Other MIB这四个MIB 库分别对应物理拓扑MIB、实体MIB、接口MIB 和其他MIB。LLDP 模块通过与设备上的这些MIB的交互来更新自己的LLDP local system MIB库以及自己定义的 LLDP扩展MIB,然后通过 LLDP帧将自己的相关信息通过连接到远端设备的接口,发送给远端设备。同时,它接收远端设备发来的LLDP 帧来更新 LLDP remote system MIB库。通过更新和维护这个

4、 MIB 库,设备就知道自己邻接设备的信息,包括本地端口、连接的对端设备的接口、对端接口MAC 地址等等。2 系统分析与设计2.1 需求分析网络管理员在日常工作中经常会遇到这样的问题:内网的整体框架、网络设备台账都是已知的,只需要对局部的详细拓扑进行快速的核实确认。在极少数网络环境发生较大变更的情况下,在网络设备台账、网络整体架构等基础信息都不完整时,也需要对拓扑结构、设备台账等信息进行提取和整理。因此,dYLw.nET网络管理员需要这样一种网络拓扑发现系统:在指定了网络设备IP时,它能够快速、灵活地进行拓扑关系提取和展现;而在仅给出IP地址区间时,它能够对网络中的设备类型进行识别,发现网络拓

5、扑,并整理出设备与主机的台账。2.2 系统架构系统的整体架构如图2所示。图2 系统整体架构图系统分为展现层、逻辑层和数据层。数据层与网络设备进行交互,采集原始数据;逻辑层是系统的核心层,它对原始数据进行运算处理,得到拓扑信息;展现层以图形化的方式对拓扑关系进行表达。2.3 数据结构系统的主要数据结构可归纳为表1。拓扑关系(L2Link)包含4个要素:本地IP、本地接口和对端IP、对端接口,它由逻辑层对LLDP数据进行计算处理得到。另外,系统还需要几个全局列表。IP/设备名映射表(ipNameMap)用于根据设备名查找设备IP。系统输入(input)是用户输入的一系列IP或子网地址列表。有效IP

6、地址列表(validIpList)是由输入计算得到的有效的IP地址列表;在线IP地址列表(onlineIpList)是对有效IP地址列表进行轮询Ping操作后得到,通过这个环节可以剔除掉未使用的IP;交换机列表(switchList)和主机列表(hostList)是系统的输出。系统需要从网络设备中提取的原始数据可归纳如表2所示。表1 主要数据结构归纳表表2 原始数据归纳表LLDP信息的定义位于LLDP MIB中的lldpRemTable,这些字段描述了对端设备的信息。测试表明,思科和华为交换机对于lldpRemPortId字段的实现与字段名称存在歧义,该值默认为接口的名称,如果该接口配置了别名

7、,dYLw.nET则取值为别名。接口信息的定义位于IF-MIB, 它描述了接口的名称、别名等信息。端口信息的定义位于Q-Bridge-MIB,该字段揭示了物理端口号与接口之间的映射关系。设备信息的定义位于RFC1213- MIB,定义了设备的名称和服务能力。需说明的是,sysName即设备名称,值取决于网络设备的配置。sysServices值标识了该设备工作在网络体系的哪一层。具体算法为:以0为初始值,对于网络体系的每一层L,如果提供该层的服务,那么总值就要加上2(L-1),比如,某设备提供数据链路层服务,那么总值要加上2;如果同时提供网络层服务,那么再加上4。如果同时提供网络层和应用层服务,

8、那么它是计算机。根据此方法可确定网络节点的类型。2.4 实现算法算法的输入为一个IP地址列表,其中每个IP可附加斜杠和子网掩码表示网络地址。算法的输出为一个交换机列表、一个主机列表和图形化的拓扑结构。完整的实现算法可组织为以下过程:(1)对输入进行解析,将网络地址转换为有效IP,最终得到一个有效IP地址列表。(2)遍历有效IP地址列表,进行Ping操作,得到在线IP地址列表。(3)遍历在线IP地址列表,采集系统数据,分析设备类型,得到交换机列表、主机列表。(4)遍历交换机列表,采集接口数据以及LLDP数据。(5)遍历交换机列表,提取LLDP数据,得到本地IP/本地端口对端接口/对端设备名称的关

9、系;根据对端设备名称匹配对端设备IP;根据本地端口匹配本地接口名称。至此,得到本设备上的所有拓扑关系。(6)遍历交换机列表,遍历交换机的拓扑信息列表,在图形用户接口上进行生动直观的网络拓扑展现。3 系统实现3.1 开发环境Java是纯面向对象的编程语言,语法简单,易于开发。它具有卓越的通用性、高效性、平台移植性和安全性【4】,我们选择Java进行开发。SNMP4J是面向Java平台的企业级开发库,我们使用它实现底层的协议操作,提高开发效率。JUNG是一个开源软件包,它提供了一种公共和可扩展的框架来实现数据的建模【5】,我们使用它来绘制网络拓扑图。3.2 开发过程系统的关键实现过程如下所示。pu

10、blic void topoDiscover(String input) /分析系dYLw.nET统输入,得到交换机列表和主机列表getDeviceList(input);/读取Lldp数据,提取拓扑信息for (Device device : switchList) if(device.getLldpTable() = false)MyLogger.logErr(读取不到lldp信息);continue;for (LldpInfo lldpInfo : device.lldpTable) /从lldp信息中提取本地端口号String localPort = lldpInfo.getLocal

11、Port();String localIfIndex = ;String localInterface = ;/根据本地端口号查询接口索引for (Port2IfIndexInfo port2IfIndexInfo : device.port2IfIndexInfoTable) if(port2IfIndexInfo.getPort().equals(localPort)localIfIndex = port2IfIndexInfo.getIfIndex();break;/根据接口索引查询本地接口名称for (InterfaceInfo interfaceInfo : device.ifLis

12、t) if(interfaceInfo.getIfIndex().equals(localIfIndex)localInterface = interfaceInfo.getName();break; dYLw.nET/从lldp信息中提取对端设备名称、对端接口名称String remoteSysName = lldpInfo.getLldpRemSysName();String remoteInterface = lldpInfo.getLldpRemPortID();/查询对端设备IPString remoteIp = ipSysNameMap.get(remoteSysName);/生成

13、连接关系L2Link link = new L2Link(device.getIp(), localInterface, remoteIp, remoteInterface);device.l2LinkList.add(link);/将拓扑信息进行图形化展示drawTopo();首选,系统对用户输入进行分析,得到得到交换机列表和主机列表,然后遍历交换机列表,读取分析拓扑信息,最后进行图形化展示。最终效果如图3所示。可见,系统能够以生动直观的形式对交换机之间的拓扑关系进行展现。(下转第141页) dYLw.nET图3 运行效果图4 总结本文针对网络管理员的日常运维需求,基于LLDP实现了一个链路层拓扑发现系统,它能够对指定的网络设备进行拓扑发现,具有快速、轻量级的特性;另外,在网络信息未知的情况下,只需要给出IP网段地址,系统即可进行网络设备和网络拓扑的探测。LLDP的出现标志着链路层网络拓扑的发现在技术上已经不存在问题,目前LLDP已经得到了主流厂商的兼容并逐渐普及开来,该问题的彻底解决只剩下时间问题。【参考文献】【1】CISCO. Cisco Discovery Protocol Version 2 . http:/ LLDP技术白皮书.http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1