定义
设备链路检测协议DLDP(Device Link Detection Protocol)用来监控光纤或铜质双绞线(例如超五类双绞线)的链路状态。如果发现单向链路存在,DLDP协议会根据用户配置,自动关闭或通知用户手工关闭相关接口,以防止网络问题的发生。
目的
在实际组网中有时会出现一种特殊的现象——单向链路。所谓单向链路是指本端设备可以通过链路层收到对端设备发送的报文,但对端设备不能收到本端设备的报文。单向链路会引起一系列问题,比如生成树拓扑环路等。
如图1和图2所示,以光纤为例,单向链路分为两种类型:一种是光纤交叉连接,另一种是一条光纤未连接或一条光纤断路。
DLDP是链路层协议,它与物理层协议协同工作来监控设备的链路状态。物理层的自动协商机制进行物理信号和故障的检测;DLDP进行对端设备的识别、单向链路的识别和关闭不可达接口等工作。二者协同工作,可以检测和关闭物理和逻辑的单向连接。如果链路两端在物理层都能独立正常工作,DLDP会在链路层检测这些链路是否正确连接、两端是否可以正确的交互报文。这种检测不能通过自动协商机制实现。
DLDP对接收到的报文按如下顺序进行分析和处理:
-
在认证模式下,对报文进行认证。如果报文通不过认证,DLDP丢弃该报文。
-
报文中的通告时间间隔(Interval)如果和本设备的不一致,DLDP丢弃报文。
-
对DLDP报文进行处理。多邻居单向链路监测机制
DLDP支持多个通过Hub相连的设备之间启用DLDP协议检测单通链路,此时每个接口检测到本接口有1个以上的邻居。
多邻居的典型组网如图3所示,SwitchA通过Hub与SwtichB、SwitchC、SwitchD相连,各设备均支持DLDP,连线为铜质双绞线或光纤。在多邻居的组网环境中,为了能正确检测出可能存在的单向链路,要求连接到Hub上的接口都需要启用DLDP。
在存在多邻居的情况下,接口一旦发现自己的邻居之一处于单通状态或者收到了邻居之一发送Disable报文后,即进入Disable状态。以上图为例,当SwtichA、SwitchB、SwitchC发现邻居SwitchD的连接出错后,都将本设备的接口迁移到Disable状态。这种实现能避免在多邻居情况下,出现设备不能及时响应拓扑变化的情况而引起的流量转发错误。如果SwitchA正在向SwitchB转发流量,此时SwitchB与Hub相连的Rx光纤中断,此时SwitchA关闭接口能避免继续向SwitchB转发报文(同时SwitchA也不能向SwitchC和SwitchD继续发送报文)。如果SwitchA、SwitchB之间还存在冗余链路,那么SwitchA关闭接口还能使STP迅速启用SwitchA、SwitchB间的冗余链路。
上述组网中,如果各设备连接的不是Hub,而是未启用DLDP功能但支持对DLDPDU进行转发的设备,DLDP仍视为多邻居的情况处理。
发现单向链路后的处理机制
当DLDP检测到单向链路时,可以采用两种方式关闭单通的接口。
-
手动模式:该模式仅依靠DLDP协议检测单向链路,关闭接口由网络管理员手动完成。DLDP在检测到单通后,只输出Log和Trap信息,建议用户关闭此接口。
-
自动模式:该模式下发现单通时,除了输出Log和Trap信息外,还会自动将接口设为DLDP Down状态。处于DLDP Down状态的接口仅仅接收并处理BPDU报文,不转发用户流量。