什么是DLDP?
设备链路检测协议DLDP(Device Link Detection Protocol)用来监控光纤或铜质双绞线(例如超五类双绞线)的链路状态。如果发现单向链路存在,DLDP协议会根据用户配置,自动关闭或通知用户手工关闭相关接口,以防止网络问题的发生。
为什么需要DLDP?
在实际组网中有时会出现一种特殊的现象——单向链路。所谓单向链路是指本端设备可以通过链路层收到对端设备发送的报文,但对端设备不能收到本端设备的报文。单向链路会引起一系列问题,比如生成树拓扑环路等。
如下图所示,以光纤为例,单向链路分为两种类型:一种是光纤交叉连接,另一种是一条光纤未连接或一条光纤断路。
光纤交叉相连
一条光纤断路
DLDP是链路层协议,它与物理层协议协同工作来监控设备的链路状态。物理层的自动协商机制进行物理信号和故障的检测;DLDP进行对端设备的识别、单向链路的识别和关闭不可达接口等工作。二者协同工作,可以检测和关闭物理和逻辑的单向连接。如果链路两端在物理层都能独立正常工作,DLDP会在链路层检测这些链路是否正确连接、两端是否可以正确的交互报文。这种检测不能通过自动协商机制实现。
DLDP应用场景有哪些?
单邻居单向链路场景
单邻居单向链路场景有两种情况:
- DLDP使能前链路就是单通的情况
如下图所示,连接两台设备的光纤交叉连接(连接接口的两条线分别表示光纤的Tx线和Rx线)。
光纤交叉连接组网图DLDP使能后,处于Up状态的四个接口都进入Active状态,并向外发送带RSY标记的Advertisement报文通告自己的存在并请求邻居的信息。下面以Interface1为例,介绍一下单向链路的检测过程:
Interface1收到Interface4发来的带RSY标记的Advertisement报文,就认为发现了新邻居,为该邻居启动Echo等待定时器和建立表项,同时启动此表项的老化定时器。随后,Interface1将进入Probe状态,向外发送Probe报文探测Interface4的存在。
由于Interface4不能收到Interface1的Probe报文,因此也不能回复Echo报文给Interface1,Interface1上的Echo等待定时器超时后,接口进入Disable(单通)状态。
其他几个接口的检测过程与Interface1相同,最后四个接口都会进入Disable状态。
- DLDP使能后链路由双通变为单通的情况
如下图所示,设备之间通过光纤相连(图中的两条线分别表示光纤的Tx线和Rx线)。
单邻居正常组网图在Tx线和Rx线都正常的情况下,双通邻居的确立过程如下:
DLDP使能后,处于Up状态的接口Interface1进入Active状态,向外发送带RSY标记的Advertisement报文通告自己的存在并请求邻居的信息。
Interface2收到带RSY标记的Advertisement报文,就认为发现了新邻居,为该邻居启动Echo等待定时器和建立表项,同时启动此表项的老化定时器。此时,接口将进入Probe状态,向外发送Probe报文。
Interface1收到Probe报文后,建立该邻居表项,并进入Probe状态向对端回复Echo报文。
Interface2收到Echo报文后,由于本机上已经存在该邻居表项,并且报文中携带的邻居信息和本机保存的信息相同,就将该邻居标志为双通。Interface2的DLDP状态由Probe切换为Advertisement,并定时向外发送普通Advertisement报文。在Advertisement状态下,每次收到已知邻居发来的报文,都会重置该邻居的老化定时器的值。
- DLDP使能后,接口Interface2发送报文、以及在Interface1上建立邻居的过程与步骤1~步骤4类似。
- 最后,Interface1和Interface2均认为对方为自己的双通邻居并处于Advertisement状态。
Interface1和Interface2双通后,如果Interface2的Rx线突然发生故障(如下图所示),无法收到信号,Interface2将进入Inactive状态,不再收发任何报文。但是Interface2的Tx线还能发送信号,Interface1能收到信号,因此Interface1此时还是Up状态。Interface1在邻居老化定时器超时前收不到邻居Interface2发送的DLDP报文,根据配置的工作模式不同,后续的单向链路的检测过程有所不同:
单邻居单通组网图在普通模式下,Interface1在邻居老化定时器超时后,将删除该邻居表项,进入Active状态,同时发送一个带RSY标记的Advertisement报文以请求邻居信息。Interface1处于Active状态5秒后将进入Advertisement状态并一直处于该状态,没有邻居。Interface2一直处于Inactive状态。在这种情况下,普通模式无法检测出单通。
在加强模式下,Interface1在邻居老化定时器超时后,将启用加强定时器和Echo等待定时器,并向邻居发送Probe报文。由于Interface1的Tx线已经断了,等到Echo等待定时器超时,Interface1仍收不到邻居Interface2应答本端的Echo报文,Interface1则进入Disable(单通)状态,发送Disable报文通知对端本端已处于单通状态。同时,Interface1将删除该邻居表项,并启动恢复探测定时器,以检测链路是否恢复。在此过程中,Interface2一直处于Inactive状态。
在加强模式下,接口Interface2已经物理Down,但对端却不能检测到此变化。为了避免Interface1需要在邻居老化定时器超时后才能察觉到与Interface2连接异常,DLDP设置了快速Link Down通知机制。当物理层检测到接口Interface2物理Down时,将向Interface1发送Link Down报文,Interface1收到Link Down报文,直接进入Disable状态。
快速Link Down通知机制只有在加强模式下才会启用,在普通模式不会启用。
多邻居单向链路场景
DLDP支持多个通过Hub相连的设备之间启用DLDP协议检测单通链路,此时每个接口检测到本接口有1个以上的邻居。
多邻居的典型组网如图所示,SwitchA通过Hub与SwitchB、SwitchC、SwitchD相连,各设备均支持DLDP,连线为铜质双绞线或光纤。在多邻居的组网环境中,为了能正确检测出可能存在的单向链路,要求连接到Hub上的接口都需要启用DLDP。
多邻居典型组网图
在存在多邻居的情况下,接口一旦发现自己的邻居之一处于单通状态或者收到了邻居之一发送Disable报文后,即进入Disable状态。以上图为例,当SwitchA、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协议通过与对方交互协议报文(DLDPDU)来识别对端设备、检测单向链路。DLDP协议有七种状态:Initial(初始化)、Inactive(未连通)、Active(活动)、Advertisement(通告)、Probe(探测)、Disable(单通)和DelayDown(延迟down)状态。
DLDP报文协商时状态迁移图
状态 |
说明 |
|---|---|
Initial |
DLDP协议未使能时的初始化状态。 |
Inactive |
DLDP协议已使能,但是链路Down时所处的状态。 |
Active |
DLDP协议已使能且链路Up,或者清空邻居表项后所处的状态。 |
Advertisement |
所有邻居双向连通或者处于Active状态超过5秒后进入的状态,这是一种没有发现单向链路时的比较稳定的状态。 |
Probe |
发送探测报文检测链路是否为单向链路。该状态启动Probe发送定时器,为每个需要探测的邻居启动一个Echo等待定时器。 |
Disable |
加强模式下,DLDP协议检测到单通链路,则无法发送光信号的一端接口变为Disable状态。 |
DelayDown |
当DLDP状态处于Active状态、Advertisement状态或Probe状态时,如果收到接口Down事件,不会立即删除邻居、进入Inactive状态,而是先进入临时的DelayDown状态。在该状态下,DLDP邻居信息仍然被保留,且系统只响应接口Up事件。 |
DLDP定时器
DLDP协议工作过程中需要用到如下定时器:
定时器 |
说明 |
|---|---|
Active发送定时器 |
DLDP协议已使能且链路Up,或者清空邻居表项后,接口进入Active状态时启用Active发送定时器,发送带有RSY标记的Advertisement报文。定时器时间间隔缺省为1秒,即在Active状态下每秒发送1个带RSY标记的Advertisement报文,最多发送5个。连续发送5个RSY标记的Advertisement报文无回应后定时器超时,进入Advertisement状态。 |
Advertisement发送定时器 |
接口进入稳定的Advertisement状态后,启用Advertisement发送定时器发送Advertisement报文。发送Advertisement报文的时间间隔可以通过命令行进行配置。默认状态下,Advertisement发送定时器的时间间隔为5秒。 |
Probe发送定时器 |
收到一个未知邻居的报文后进入Probe状态,此时将发送探测报文检测链路是否为单向链路,该状态启动Probe发送定时器。Probe发送定时器的时间间隔为1秒,在Probe状态下每秒发送2个Probe报文。 |
Echo等待定时器 |
DLDP状态切换到Probe时启用,超时时间为10秒。如果Echo等待定时器超时,还未收到来自此邻居应答本端的Echo报文,则将本端状态置为单通,并将状态机转到Disable状态,输出日志和告警信息,发送Flush报文,并根据用户配置的DLDP Down模式,手动或者自动关闭掉本端接口,同时删除该邻居表项。 |
邻居老化定时器 |
每个新邻居加入时都要建立邻居表项,并启用相应的邻居老化定时器。每次收到邻居报文时都会刷新邻居表项,并更新相应的邻居老化定时器。
邻居老化定时器的时间间隔是Advertisement定时器的3倍。 |
加强定时器 |
在加强模式下,当邻居老化定时器超时,还未收到邻居发来的报文,则对该邻居启用加强定时器,每秒向邻居发送1个Probe报文,连续发送8次,如果收不到邻居的Echo报文,则进入Disable状态。加强定时器的超时时间为10秒。 |
DelayDown定时器 |
在加强模式下,当DLDP处于Active、Advertisement或Probe状态时,如果收到接口Down事件,不会立即删除邻居并进入Inactive状态,而是先进入DelayDown状态并启动DelayDown定时器(此时仍保留DLDP邻居信息,且只响应接口Up事件):
|
恢复探测定时器 |
恢复探测定时器的时间间隔为2秒,即处于Disable状态下的接口每2秒发送1个RecoverProbe报文,用于检测单向链路是否恢复。如果本端收到RecoverEcho报文,检查RecoverEcho报文中携带的邻居信息是否和本接口信息相同。如果相同,则认为本接口和该邻居之间已经恢复双向连通,则接口从Disable状态迁移到Active状态,开始重新建立邻居关系。 |
DLDP协议工作模式
DLDP协议有两种工作模式:普通模式和加强模式。
DLDP协议工作模式 |
邻居表老化 |
检测单向链路 |
|---|---|---|
普通模式 |
老化邻居表时,不主动探测邻居是否存在,邻居老化定时器超时后,直接老化该邻居表项。 |
系统只能识别一种类型的单向链路:光纤交叉连接。 |
加强模式 |
老化邻居表时,主动探测邻居是否存在,邻居老化定时器超时后,启用加强定时器和Echo等待定时器,Echo等待定时器超时后,将本端状态置为单通,并删除该邻居表项。 |
系统能识别两种类型的单向链路:一种是光纤交叉连接,另一种是一条光纤未连接或一条光纤断路。 说明:
在探测后一种类型的单向链路时,需要将接口配置为强制速率和强制全双工模式,否则该协议不起作用。 |
DLDP认证方式
如果使能了DLDP的接口链路状态为Up,DLDP会向对端发送DLDP报文,同时分析处理对端设备发送过来的DLDP报文。在有可能受到安全威胁的网络中,为了保证报文的合法真实性,用户可以在接口上配置DLDP报文认证方式,分为下列几种:
报文认证方式 |
处理方式 |
|---|---|
不认证方式 |
发送DLDP报文一方将认证字字段置为全0,认证类型字段置为0;接收DLDP报文一方要将报文中的认证字和认证类型同本端配置进行比较,如果不一致,则丢弃报文。 |
明文认证方式 |
发送DLDP报文一方将认证字字段置为用户配置的明文认证密码,认证类型字段置为1;接收DLDP报文一方要将报文中的认证字和认证类型同本端配置进行比较,如果不一致,则丢弃报文。 |
MD5认证方式 |
发送DLDP报文一方将认证字字段置为用户配置的密码经过MD5算法加密后的摘要,认证类型字段置为2;接收DLDP报文一方要将报文中的认证字和认证类型分别和本端配置的密码经过MD5算法加密后的摘要以及本端认证类型进行比较,如果不一致,则丢弃报文。 |
SHA认证方式 |
发送DLDP报文一方将认证字字段置为用户配置的密码经过SHA256算法加密后的摘要,认证类型字段置为3;接收DLDP报文一方要将报文中的认证字和认证类型分别和本端配置的密码经过SHA256算法加密后的摘要以及本端认证类型进行比较,如果不一致,则丢弃报文。 |
DLDP工作过程
DLDP对接收到的报文按如下顺序进行分析和处理:
在认证模式下,对报文进行认证。如果报文通不过认证,DLDP丢弃该报文。
报文中的通告时间间隔(Interval)如果和本设备的不一致,DLDP丢弃报文。
对DLDP报文进行处理。
- 作者: 孟显海,李强
- 最近更新: 2025-06-26
- 浏览次数: 1753
- 平均得分: