更新时间:2024-11-11
1UDLD概述
UDLD协议是通过光缆或双绞线连接的设备监视电缆的物理配置并探测是否有单向链路存在的二层协议。只有连接的设备支持了UDLD协议,才能够探测出,并关闭单向链路。单向链路会引起多种问题,包括生成树拓扑环。因此,当UDLD探测到一个单向链路,它就将关掉受影响的接口并通知用户。
UDLD同物理层协议机制一起判断物理链路的状态。在物理层,自动协商处理物理信号和错误探测,UDLD则处理自动协商不能处理的事务,如探测邻居的标识和关闭错误连接口。同时启动自动协商和UDLD协议,协同工作的一层和二层探测将能阻止物理和逻辑单向连接和其他协议的故障。
1.1UDLD模式
UDLD支持两种模式:normal模式(缺省)和aggressive模式。在normal模式下,UDLD能根据链路的单向业务探测出单向链路的存在。在aggressive模式下,UDLD不但可以根据链路的单向业务探测出单向链路的存在,而且可以探测一层探测协议无法探测的连接中断问题。
Normal模式下,如果UDLD确定连接丢失了,那么UDLD不会关闭端口,只会将该端口置于undetermined状态下。在Aggressive模式下,如果UDLD确定连接丢失,而且又没有能够重新建立连接,该模式认为通信中断是严重的网络问题,UDLD会将该端口linkdown,端口处于errdisable状态。无论哪种模式,如果UDLD认为是双向链路,那么端口处于Bidirectional。
Aggressive模式的UDLD可以探测为单向链路的情况包括:
第1章光纤或双绞线链路上,其中一个接口不能发送或接收业务;
第2章光纤或双绞线链路上,其中一个端接口down而另一端是up;
第3章光缆中一根线的连接断了,导致只能发送或者只能接收。
在这些情况下,UDLD会关闭受到影响的接口。
1.2运行机制运行机制
UDLD是一个工作在LLC层之上的二层协议,使用01-00-0c-cc-cc-cc为目的mac地址,SNAP HDLC的协议类型为0x0111,当和第一层的FEFI、自动协商机制一起运行时,可以验证一条链路在物理层和逻辑链路层的完整性。
UDLD 可以完成一些FEFI和自动协商不可能提供的功能,如检测并缓存邻居的信息、linkdown掉任何一个错误配置的端口,检查非点对点的逻辑端口上的故障和失效等。
UDLD使用两个基本机制:学习邻居的信息并将信息保存在一个本地cache中,一旦检测到一个新的邻居或一个邻居请求重新同步cache时,就发送一系列的UDLD probe/echo(hello)包。
UDLD在所有端口上持续的发送probe/echo信息,当在端口上收到一个UDLD响应信息时触发一个"detection-phase" 和验证进程。如果所有的有效条件都满足(端口是双向连接,并且线缆正确),这个端口linkup。否则,该端口被置为linkdown。
一旦一个链路建立起来并被标志为双向的,UDLD会继续每隔15秒发送一个probe/echo信息。
1.3端口状态
UDLD探测接口可能处于以下状态:
端口状态 |
注释 |
Detection |
探测状态 |
Unknown |
未知状态,可能正处在探测阶段或未进行探测 |
Unidirectional |
已探测出单向连接 |
Bidirectional |
已探测出双向连接 |
1.4邻居缓存的维护
UDLD在每个活动的接口上周期性的发送probe/echo包,以维护邻居缓存的完整性。 一旦收到一个hello信息,将它缓存到内存中,并保存一个通过hold-time定义的时间间隔。如果一个hold-time超时,相应的cache被清空,如果在hold-time定义的时间间隔内收到新的hello信息,则新的替代老的,并将计时器清零。
为了维护UDLD cache的完整性,一旦一个启用了UDLD的接口被禁用,或该接口上的设备被重启,该接口存在的所有缓存均会被清除,UDLD传送至少一个信息让邻居清空响应的缓存条目。
1.5回显检测机制
回显机制构成了检测算法的基础。一旦一个UDLD设备学习到了一个新的邻居或从一个非同步状态的邻居收到了一个重新同步的请求。它将启动或重启本端的检测窗口,并发送一个完全同意的回显信息。由要求所有的邻居都必须有这个相应的行为,回显的发送者期待收到一个响应的echos。如果检测窗口结束,而没有合法的响应信息收到,这个链路被认为是单向连接。就触发链路重连接或端口link down进程。
2UDLD配置任务列表
• 全局启动/关闭UDLD
• 启动/关闭接口UDLD
• 设置aggresive模式的消息间隔
• 重启被UDLD关闭的接口
• 显示UDLD状态
3UDLD配置任务
3.1全局启动/关闭UDLD
全局配置模式下,运行下面命令,启动所有接口的UDLD功能。
命令 |
目的 |
udld [enable | aggressive] |
以某模式,启动所有接口的UDLD模块 |
全局配置模式下,运行下面命令,关闭所有接口的UDLD功能。
命令 |
目的 |
no udld [enable | aggressive] |
关闭所有接口的UDLD模块 |
注意:在全局模式下启动/关闭UDLD功能,所有端口都将执行UDLD功能。
aggressive模式udld是udld的一种变种,它能够提供额外的好处。在启用积极模式udld的情况下,当端口停止接收udld数据包的时候,udld将尝试重新建立与邻居的连接。但如果尝试次数超过一定次数之后,那么端口状态就将变更为“error-disable”状态,它将使端口linkdown。在运行UDLD 功能时,两边的端口都应该运行在相同的模式下,不然得不到想要的结果。
3.2启动/关闭接口UDLD
接口配置模式下,运行下面命令,启动该接口的UDLD功能。
命令 |
目的 |
udld port [aggressive] |
以某模式,启动接口的UDLD模块。不输入aggressive参数以normal模式启动接口的UDLD;输入aggressive参数以aggressive模式启动接口的UDLD。 |
接口配置模式下,运行下面命令,关闭该接口的UDLD功能。
命令 |
目的 |
no udld port [aggressive] |
关闭接口的UDLD模块,接口运行与什么模式下,就需要输入相应模式的关闭命令。 |
注意:在运行UDLD 功能时,两边的端口都应该运行在相同的模式下,不然得不到想要的结果。
3.3设置aggressive模式的消息间隔
在全局配置模式下,运行下面命令,设置aggressive模式的消息间隔。
命令 |
目的 |
udld message time |
设置aggressive模式的消息间隔 |
3.4重启被UDLD关闭的接口
在管理模式下,运行下面命令,重启被UDLD模块关闭的接口。
命令 |
目的 |
udld reset |
重启被UDLD关闭的接口 |
3.5显示UDLD状态
显示当前所有接口的UDLD模块的状态。
命令 |
目的 |
show udld |
显示当前所有接口的UDLD模块状态 |
显示指定接口的UDLD模块状态。
命令 |
目的 |
show udld interface interface |
显示指定接口的UDLD模块状态 |
UDLD显示命令可以查看端口的UDLD运行状态及模式,以及当前探测状态和端口的当前链路状态(link state),还可以显示邻居的一些信息。
显示当前各接口UDLD运行状态:
Switch#show udld Interface GigaEthernet0/1 --- Port enable administrative configuration setting: Enabled 接口UDLD配置情况 Port enable operational state: Enabled 接口UDLD启动状况 Current bidirectional state: Bidirectional 链路是否为双向链路 Current operational state: Advertisment UDLD运行的状态 Message interval: 15 消息间隔 Time out interval: 5 超时间隔 Entry 1 缓存项 --- Expiration time: 42 剩余老化时间 Cache Device index: 1 该项信息的索引号 Device ID: CAT0611Z0L9 邻居设备的ID Port ID: GigaEthernet0/1 相连接口的ID Neighbor echo 1 device: S35000202 邻居的邻居的设备ID Neighbor echo 1 port: GigaEthernet0/1 邻居的邻居的接口ID Message interval: 15 邻居的消息间隔 Time out interval: 5 邻居的超时间隔 UDLD Device name: Switch Interface GigaEthernet0/2 --- Port enable administrative configuration setting: Disabled Port enable operational state: Disabled Current bidirectional state: Unknown Interface GigaEthernet0/3 --- Port enable administrative configuration setting: Disabled Port enable operational state: Disabled Current bidirectional state: Unknown …………………… |
显示当前某接口的UDLD运行情况:
Switch#show udld interface g0/1 Interface GigaEthernet0/1 --- Port enable administrative configuration setting: Enabled 接口UDLD配置情况 Port enable operational state: Enabled 接口UDLD启动状况 Current bidirectional state: Bidirectional 链路是否为双向链路 Current operational state: Advertisment UDLD运行的状态 Message interval: 15 消息间隔 Time out interval: 5 超时间隔 Entry 1 缓存项 --- Expiration time: 42 剩余老化时间 Cache Device index: 1 该项信息的索引号 Device ID: CAT0611Z0L9 邻居设备的ID Port ID: GigaEthernet0/1 相连接口的ID Neighbor echo 1 device: S35000202 邻居的邻居的设备ID Neighbor echo 1 port: GigaEthernet0/1 邻居的邻居的接口ID Message interval: 15 邻居的消息间隔 Time out interval: 5 邻居的超时间隔 UDLD Device name: Switch |
4配置示例
4.1网络环境需求
在两台交换机相连的端口上以及全局上配置UDLD协议。
4.2网络拓扑图
图2 网络拓扑图
4.3配置步骤
配置交换机Switch A:
Switch_config#udld enable
Switch_config#interface g0/1
Switch_config_g0/1#udld port
Switch_config_g0/1#quit
配置交换机Switch B:
Switch_config#udld enable
Switch_config#interface g0/1
Switch_config_g0/1#udld port
Switch_config_g0/1#quit
在交换机Switch A上输入命令显示:
Switch_config#show udld interface g0/1
Interface GigaEthernet0/1
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Unknown
Current operational state: Detection
Message interval: 15
Time out interval: 1
Entry 1
---
Expiration time: 44
Cache Device index: 1
Device ID: S35043000
Port ID: GigaEthernet0/1
Neighbor echo 1 device: S32030079
Neighbor echo 1 port: GigaEthernet0/1
Message interval: 15
Time out interval: 1
UDLD Device name: SwitchB
Switch_config#
Switch_config#show udld interface g0/1
Interface GigaEthernet0/1
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Unknown
Current operational state: Advertisment
Message interval: 15
Time out interval: 7
Entry 1
---
Expiration time: 43
Cache Device index: 1
Device ID: S35043000
Port ID: GigaEthernet0/1
Neighbor echo 1 device: S32030079
Neighbor echo 1 port: GigaEthernet0/1
Message interval: 15
Time out interval: 7
UDLD Device name: SwitchB
Switch_config#
Switch_config#show udld interface g0/1
Interface GigaEthernet0/1
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisment
Message interval: 15
Time out interval: 15
Entry 1
---
Expiration time: 36
Cache Device index: 1
Device ID: S35043000
Port ID: GigaEthernet0/1
Neighbor echo 1 device: S32030079
Neighbor echo 1 port: GigaEthernet0/1
Message interval: 15
Time out interval: 15
UDLD Device name: SwitchB
Switch_config#
从显示输出可以看出UDLD探测出链路状况经历的三个阶段:
第1章Detection(探测)阶段,这个阶段每隔一秒发送一个UDLD报文。
第2章Unknown(探测未确定)阶段,这个阶段每隔7秒发送一个UDLD报文。
第3章已探测出双向/单向连接阶段。一旦一个链路建立起来并被标志为双向的,UDLD会继续每隔15秒发送一个probe/echo信息。