UDLD (UniDirectional Link Detection 单向链路检测)
一、概述
UDLD是一个Cisco私有的二层协议,用于监听利用光纤或双绞线连接的以太链路的物理配置,当出现单向链路(只能向一个方向传输,比如我能把数据发给你,你也能收到,但是你发给我的数据我收不到)时,UDLD可以检测出这一状况,关闭相应接口并发送警告信息。单向链路可能引起很多问题,尤其是生成树,可能会造成回环。注意:UDLD需要链路两端设备都支持才能正常运行。
二、UDLD工作模式
UDLD支持两种工作模式;普通(normal)模式(默认)和激进(aggressive)模式。
普通(normal)模式:这个模式下,UDLD可以检测到由于端口的误接引起的光纤的单向链路。
激进(aggressive)模式:这个模式下,UDLD可以检测到由于端口的误接引起的光纤的单向链路。并且可以检测到光纤及双绞线链路中的单向链路。
三、UDLD工作原理
1.维护邻居数据库
UDLD 周期型的在每个活动接口上发送hello包(也叫通告advertisement或探针probe)。
当交换机收到hello包后,存储这一信息直到老化时间到期,当老化时间到期前再次收到hello时,则刷新老化时间。
2.检测和回报
交换机会向其邻居发送回复(echo),当邻居在一定时间内没有收到回复,则认为与邻居间的链路出现问题。如果是普通模式,链路有可能会被认为是不确定的状态而不会被关闭(强调一下,普通模式只能检测光纤误解,比如Tx、Rx插反了)。如果是激进模式,则链路会被认为是单向的而被关闭(接口置于err-disable状态)。
以上我只是大概的说了一下,Cisco官方文档中内容很多的,想详细了解的话可以查一下。
四、UDLD配置
注意:
UDLD默认不在全局或任何接口下启用。
UDLD不支持ATM接口。
确保链路两端接口设备都支持UDLD,并且需要工作在相同的UDLD模式下。
conf t
udld {aggressive | enable | message time 间隔时间} '全局启用UDLD,aggressive设置为激进模式,enable设置为普通模式,message time设置hello间隔,范围是1-90,默认15。
int fa0/10
udld port [aggressive] '接口下启用UDLD,不加aggressive为普通模式。
show udld [接口名] '查看UDLD信息。
udld reset '特权模式下重启所有被UDLD关闭的接口。
有的IOS配置命令可能是下面的:
(config)# udld {enable | aggressive}
(config-if)# udld port [aggressive]
(config)# udld message time 间隔
还有,刚才提到过,UDLD检测到单向链路后会将接口置为err-disable状态,我们可以用以下命令恢复:
(config)# errdisable recovery cause udld
errdisable recovery cause udld 可以将UDLD置为err-disable状态的接口恢复,不过前提条件是链路已经不再是单向的了,要不然会再次被UDLD关闭。回头再仔细说说关于errdisable recovery。