局域网中交换机接口连接关系的查询

2018-11-06 06:10
网络安全和信息化 2018年10期
关键词:上联IP地址交换机

一个网管在做网络维护过程中,经常会遇到交换机设备的更换、交换机之间连接关系的改变以及交换机所连接终端的改变,也经常需要处理各种网络故障。

特别是较大的单位往往网络拓扑结构会很复杂,交换机的数量可以达到几十台甚至上百台,设备分布范围可以达到几十甚至上百公里。一般在层次上会将交换机分为核心层交换机、汇聚层交换机和接入层交换机,各层交换机下还可能级联交换机或HUB,每个交换机都可能直接连接终端,形成一个复杂的树形网络系统。

图1 含有多层交换机的局域网的典型应用场景

笔者所在单位的应用场景即是如此,这种情况下,动态地掌握交换机之间以及交换机与终端间的连接关系,可以大大提高网络故障的处理效率,提高网络维护水平。在实际工作中,笔者编写了交换机接口关系查询程序,实现了交换机接口连接情况的动态掌握。

应用场景及相关网络知识简介

如图1所示,在较复杂的局域网中,交换机之间的连接关系构成一种树形结构,设备之间的访问需要跨越若干个交换机。不同的终端或服务器设备被划分到不同的VLAN中,以实现减少广播、隔离应用等目的。而要跨VLAN访问,必须在本机设置网关,在图1中,终端A、B属于 VLAN138,服 务 器属于VLAN137,终端A若想访问服务器A,必须指定网关10.19.138.1,而该地址是具有路由功能的核心交换机中定义的VLAN138的地址。

图中,交换机之间黑实线代表Trunk连接,例如交换机1.2与1.2.2之间的连接。Trunk可以通过所有VLAN,但需要两端的交换机定义该VLAN并应用到直接连接终端或服务器的端口,例如交换机1.2.2的Fa1/2端口必须指定为VLAN138。所有交换机都有一个MAC表,每条记录记载着所连接设备的MAC地址和接口的对应关系。同时,也有一个ARP表,每条记录记载着设备IP地址与MAC地址的对应关系。

正常网络应用情况下,只要设备连接到某交换机,就会在该交换机中存在一条MAC记录;只要设备设置了到核心交换机的默认路由,就会在核心交换机中存在一条ARP记录。

在默认情况下,除了本地端口外,CISCO交换机ARP表某条记录的存活时间为240分钟,MAC记录默认的存活时间为300秒,即若设备断线时间达到240分钟时,就会清除对应的ARP记录,若设备断线300秒,就会清除对应的MAC记录。这种“存活时间”的机制是为了不使ARP表和MAC表的记录数量过于庞大而导致访问时间变长或超出分配的存储空间,而在局域网环境下,由于设备数量的可预见性和相对固定的特点,这种“过期清除”的意义是不大的。

图2 交换机间的连接关系

程序功能

1.根据核心交换机的管理地址,自动生成所有交换机的设备型号、命名,以树形结构(以下简称“树”)展示各层交换机之间的连接关系,交换机通过哪个接口上(下)联哪个交换机的哪个接口(如图 2)。图中,接入层交换机i_shiyan型号为 WS-2960S-24TS-L,地 址为192.168.1.22,通过端口Gi1/0/25上联汇聚层交换机i_dianjianB的端口Gi3/5,通过端口Gi1/0/26下联交换机i_jingshui的Gi0/1端口。若交换机的连接关系发生变化或IP地址、设备型号发生变化时需重新生成树。

图3 交换机接口连接的设备

2.可以查询某个交换机的所有接口的连接设备(终端、服务器或交换机)并动态更新终端设备的上联信息(如图3)。图中该交换机哪个接口连接什么设备、没联设备的端口属于哪个VLAN以及端口(如Gi4/48)是否通过交换机或HUB连接一组设备等一目了然。有了这些信息,对网络维护中诸如加入设备或是临时用笔记本调试网络会带来很大的方便。

3.可以查询某个终端上联到哪个交换机的哪个接口并动态更新终端设备的上联信息(如图4),若该终端不在线,则显示上一次查询的信息。

4.生成Excel格式终端设备上联信息表(参见图2,可执行“导出”命令得到该表)。

程序实现的思路

限于篇幅,本文所涉及到的原理知识及命令解释不在此赘述。

在手工模式下,我们要查询所有交换机之间的连接关系,需要从核心交换机开始,通过 TELNET(或SSH,下同)登录到交换机,执行交换机本身提供的命令(以CISCO交换机为例,下同,华为交换机也有对应的命令)show cdp (若是其他交换机或混合使用各种交换机可以使用show lldp或display lldp命令,下同),该命令可以显示出与该交换机直接相连的交换机的信息(设备型号、IP、连接端口等),然后对核心交换机的下一级(汇聚层)进行遍历(使用show cdp 发现接入层交换机),层层深入,以此类推,直到发现所有交换机的信息,这时就可以生成一个以核心交换机为根的树。

图4 查询终端设备连接的交换机

要实现这个功能,需要使用“树的遍历”算法。当然,如果限定交换机的层数,也可以用其他方法实现。在此过程中,最关键的是Telnet返回数据的处理,对于一次返回数据超过winsock限度的,对返回信息需要做过滤处理,以减少返回信息的长度。

而要查询交换机所有接口信息(如接口的VLAN号、是否为Trunk、是否设置、是否UP等),可以使用命令“show int swi”,对于状态为“UP”的端口应该是通过Trunk连接的交换机或通过VLAN连接的终端。

如果是交换机,可以从以上树中得到所连接的交换机;而如果是终端,则可以通过show mac命令得到终端的MAC地址,再通过核心交换机的show arp得到终端的IP地址;对于状态为“DOWN”的,可以从库中得到接口信息(每个连接的终端如果在状态为“UP”时被查询过,就会将上联接口信息存在库中)。

对于通过终端的IP地址查询上联交换机的接口(以下称为“IP查询”),实现方法是在核心交换机上运行命令show arp 得到该终端的MAC地址,再通过命令show mac得到端口号,若该端口号不在以上树中,则说明该终端连接的是该交换机;若在树中出现,则需要沿着树进行遍历,在每个“路过”的交换机上运行show mac得到该MAC对应的端口号,直到该端口号不在树中。

我们查询交换机的接口情况或通过IP地址查询该设备上联哪个交换机,都需要用到ARP表和MAC表,而通过前述的“存活机制”可知,若因为设备离线几个小时导致记录被清除就无法知道它所连接的交换机,这显然不是我们希望看到的。如某人出差几天,设备关机了,我们仍需要知晓其终端是怎么连接交换机的。

要解决这一问题,方法是将设备的连接关系存储在参数文件(或数据库)中,形成一个二维表uplink,结构为“UserName,UserIP,UplinkSwitchName,UplinkSwitchIP,UplinkSwitchPort”,其中记录在ports查询和IP查询时更新。

反之,若在ports查询或IP查询时设备不在线,则读取表uplink中的数据,即上次的查询数据。IP地址表的生成即依赖于该二维表。

程序的实现方法和注意事项

显然,按照上面的思路,要实现程序功能,需要解决以下问题。

1.实现TELNET访问

所有交换机必须启动TELNET服务,设置访问口令,并确保返回的信息一次全部接收(取消默认的按页回显)以简化编程。以交换机i_hexinA为例(”#”后为输入的命令)需要进行如下设置:

图5 Telnet流程

本例中,实现TELNET访问的方法是通过WINSOCK控件访问交换机,发出命令,处理回显信息,过程如图5。

2.交换机命令的使用及返回数据的处理

要实现查询功能,首先必须了解交换机命令的功能、使用方法和技巧,使发给交换机的命令的返回信息,既能满足程序功能需要,又要便于程序对返回数据的处理。

例如使用命令“show cdp nei”可以得到交换机邻居的名称、接口信息,但是却得不到所连接的交换机的IP地址,这时应该使用“show cdp nei de”命令,而该命令的返回信息比较复杂;再比如,命令“show arp”可以返回交换机的ARP表信息,但是,当表的信息过多时,就会超出winsock对缓冲区大小的限制,使返回信息不完整,这时就需要使用命令“show arp | exclude Incom”对无用的信息进行过滤。

3.本程序中为了简化编程,假定了交换机的Telnet口令均为“cisco”,实际在编程中可能会复杂得多。

例如,可能使用ssh访问交换机,身份验证模式可能是user/password,不同交换机完成相应功能的命令也不一样,这时就需要一个参数文件进行声明,编程也会复杂一些。

总之,编制一个交换机接口管理的工具软件,既需要了解交换机及相关网络知识,也需要具备一些编程知识。有了这个工具,会使网管人员的工作效率大大提高。

猜你喜欢
上联IP地址交换机
牛年春联集锦
铁路远动系统几种组网方式IP地址的申请和设置
基于地铁交换机电源设计思考
修复损坏的交换机NOS
IP地址切换器(IPCFG)
小试身手
基于SNMP的IP地址管理系统开发与应用
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
公安网络中IP地址智能管理的研究与思考
羊年春联