基本原理
信息采集
网络设备在运行过程中,会产生一些包含拓扑结构的信息,如下:
- 明确的链路类信息,此类信息原本是厂商提供出来,协助网管分析网络拓扑结构的,只要设备全部支持,就比较准确,否则会出现穿透问题。如
- CDP:Cisco Discovery Protocol,由CISCO推出的邻居设备发现协议
- NDP:Neighbor Discovery Protocol,由Huawei参考CDP推出的邻居设备发现协议,属于早期设备支持,新的Huawei设备往往同时支持NDP与LLDP
- LLDP:Link Layer Discovery Protocol,由IEEE推出的,与厂商无关的邻居设备发现协议,目前广泛应用在非CISCO设备上,尤其是Huawei与H3C
链路类信息,一般会很明确的指出,本设备的某个端口与目标设备的某个端口存在直接的链路连接。
如:
设备A 端口eth0/1 设备B 端口eth1/1
- 不明确的方向类信息
即转发表FDB。
一般只能表明,本设备的某个端口上,存在的某个MAC地址记录。
如:
设备A 端口eth0/1 MAC地址00:00:00:00:00:01
上述两种信息,目前一般都是局域网设备支持,如果设备是路由器,往往缺少这方面的信息。
拓扑计算
实际的拓扑计算过程较为复杂,本文做一些简化,大家可以大致理解为如下过程:
- 整理所有的可能存在的链路,主要来自
a. 所有明确的链路类信息,即CDP等
b. 部份不明确的方向类信息,即设备A包含设备B,同时设备B也包含设备A的两条转发表信息,我们可以复合为一条可能存在的链路 - 对这些可能存在的链路进行合理性检查,排除不合理的链路
剩余的所有链路,就作为最终的拓扑链路。
常见网络类型
根据基本原理可以得到,拓扑计算分为两人过程,并且高度依赖设备所能提供的信息。以下表格说明一般设备支持的情况:
厂商 | 路由器支持情况 | 交换机支持情况 |
---|---|---|
CISCO | 不支持FDB 支持本地链路CDP,而非本地链路由于运营商租用线路无法支持 |
支持CDP、FDB |
H3C | 不支持FDB 支持本地链路LLDP,而非本地链路由于运营商租用线路无法支持 |
支持LLDP、NDP、FDB |
HUAWEI | 不支持FDB 支持本地链路LLDP,而非本地链路由于运营商租用线路无法支持 |
支持LLDP、NDP、FDB |
根据上述设备支持情况可以推断出以下表格,包含了几种典型的网络拓扑计算类型:
网络 | 举例 | 发现情况 |
---|---|---|
所有设备支持CDP、NDP或LLDAP中的一种 | 如全CISCO设备网络或全支持LLDP的设备网络 | 只要设备全部开启,且不存在未配置community的设备,一般可完全发现链路 |
所有设备仅支持FDB | 如全部是CISCO二层交换机 | 一般可完全发现链路 |
所以设备均是路由器 | 如发现城域网 | 一般无法完全发现链路,因为路由器间的链路往往存在租用运营商,一根链路也可能通过VPN等技术同时连接多个其它路由器。 只能通过手工链路或引导用户使用网络拓扑。 |
各种设备混杂 | 如路由器与交换机各占一半 | 一般可以计算出交换机间的链路,但交换机与核心路由器间、路由器间的链路无法计算。 只能通过手工连接解决。 |
诊断步骤
确定网络类型,如果网络类型是城域网,发现的设备全是路由器,那么基本可以放弃诊断,使用手工链路或引导用户使用网络拓扑,不要观注物理拓扑。
确定设备是否支持CDP、NDP、LLDP中的任意一种,并尽量启用这些协议中的某一个,但不应该同时启用两个或两个以上的协议
这点最为重要,尤其是CDP或LLDP。而NDP属于老协议,目前只有老设备支持了,所以不建议启用。
如果还存在部份交换机与核心设备之间的链路无法计算,则很可能是核心设备不支持拓扑发现协议,此时建议使用手工链路。
设备配置方法
NDP相关操作
NDP由Huawei或H3C设备支持。
telnet到设备
执行super或system进入系统视图
查看所有的ndp链路
disp ndp
关闭ndp
undo ndp enable
启用ndp
ndp enable
LLDP相关操作
telnet到设备
执行super或system进入系统视图
查看所有的ndp链路
disp lldp
关闭lldp
undo lldp enable
启用lldp
lldp enable