DLDP技术白皮书

DLDP技术白皮书

关键词:单向链路,邻居,DLDP Down

    要:DLDP可以监控光纤或铜质双绞线的链路状态。如果发现单向链路存在,DLDP会根据用户配置,自动关闭或通知用户手工关闭相关端口,以避免流量的错误转发。本文介绍了DLDP的基本概念、运行机制和典型组网应用。

缩略语:

缩略语

英文全名

中文解释

DLDP

Device Link Detection Protocol

设备链路检测协议

LACP

Link Aggregation Control Protocol

链路聚合控制协议

RSY

Re-synchronization

再次同步

 

 



概述

1.1  产生背景

实际网络中有时会出现光纤交叉连接、一条光纤未连接、一条光纤或双绞线中的一条线路断路的情况,此时链路两端的端口之一可以收到对端发送的链路层报文,但对端不能收到本端发送的报文,这种链路即为单向链路。

在单向链路中,由于物理层处于连通状态,能正常工作,因而物理层的检测机制(如自动协商机制)无法发现设备间通信存在问题,从而导致流量的错误转发

DLDP的作用就是检测单向链路的存在并采取相应措施。它负责在通过光纤或铜质双绞线连接的设备上,监控物理线路的链路状态。当发现单向链路后,向用户发送告警信息,并根据用户配置,自动关闭或通知用户手工关闭相关端口,以防止网络问题的发生。

1.2  技术优点

DLDP是链路层协议,可以在链路层进行对端设备的识别、单向链路的识别和关闭不可达端口等工作。

l              如果链路两端在物理层都能独立正常工作,DLDP会在链路层检测这些链路是否正确连接、两端是否可以正确的交互报文,这种检测不能通过自动协商机制实现。

l              DLDP还可以与物理层协议协同工作来监控设备的链路状态。物理层的自动协商机制可以进行物理信号和故障的检测,二者协同工作,可以检测和关闭物理和逻辑的单向连接。

DLDP技术实现

2.1  概念介绍

DLDP协议通过与对方交互协议报文(DLDPDU)来识别对端设备、检测单向链路。下面对协议运行过程中用到的一些概念进行介绍。

2.1.1  DLDP协议状态

运行DLDP协议的端口共有7种可能的状态,每种状态的含义如1所示。

表1 DLDP协议状态

状态

说明

Initial(初始)

DLDP协议未使能时的初始化状态

Inactive(非活动)

DLDP协议已使能,但是链路down时所处的状态

Active(活动)

DLDP协议已使能且链路up,或者清空邻居表项后所处的状态

Advertisement(通告)

所有邻居双向连通或者处于Active状态超过5秒后进入的状态,这是一种没有发现单向链路时的比较稳定的状态

Probe(探测)

收到一个未知邻居的报文后进入的状态,此时将发送探测报文检测链路是否为单向链路

Disable(单通)

DLDP协议检测到单向链路,或在加强模式下邻居消失时的状态。此时端口不再接收和发送除DLDPDU以外的报文

DelayDown(延迟down

DLDP状态处于Active状态、Advertisement状态或Probe状态时,如果收到端口down事件,不会立即删除邻居、进入Inactive状态,而是先进入临时的DelayDown状态。在该状态下,DLDP邻居信息仍然被保留,且系统只响应端口up事件

 

2.1.2  DLDP协议定时器

DLDP协议工作过程中需要使用到的定时器如2所示。

表2 DLDP定时器

定时器

说明

Active发送定时器

Active状态下,发送带有RSY标记的Advertisement报文的时间间隔,固定为1

Advertisement发送定时器

Advertisement状态下,发送普通Advertisement报文的时间间隔,可以通过命令行进行配置,默认值为5

Probe发送定时器

Probe状态下,每个Probe发送定时器的时间间隔发送2Probe报文,Probe发送定时器的时间间隔固定为1

Echo等待定时器

DLDP状态切换到Probe时或启动加强探测时启用,超时时间为10

如果Echo等待定时器超时,还未收到来自邻居应答本端的Echo报文,则进入Disable(单通)状态,发送Disable报文,并根据用户配置的DLDP Down模式,提示用户手动或者自动关闭本端口,同时删除该邻居表项

邻居老化定时器

每个新邻居加入时都要建立邻居表项,并启用相应的老化定时器

每次收到邻居报文时都会刷新邻居表项,并更新相应的老化定时器

普通模式下,如果邻居老化定时器超时,还未收到邻居发来的报文,则发送带有RSY标记的Advertisement报文,同时删除该邻居表项

加强模式下,如果邻居老化定时器超时,还未收到邻居发来的报文,则启用加强定时器

邻居老化定时器的时间间隔是Advertisement发送定时器的3

加强定时器

在加强模式下:当邻居老化定时器超时,还未收到邻居发来的报文,则对该邻居启用加强定时器。加强定时器的超时时间为1

加强定时器启用后,每秒向邻居发送1Probe报文,连续发送8个,如果Echo等待定时器超时,仍收不到来自邻居应答本端的Echo报文,则进入Disable(单通)状态,发送Disable报文,并根据用户配置的DLDP Down模式,提示用户手动或者自动关闭本端口,同时删除该邻居表项

DelayDown定时器

DLDP状态处于Active状态、Advertisement状态或Probe状态时,如果收到端口down事件,则启动DelayDown定时器

如果该定时器超时后,系统还没有收到端口up事件,则删除DLDP邻居信息并进入Inactive状态;如果在定时器超时前收到端口up事件,则返回到原来的DLDP状态

恢复探测定时器

Disable状态下,发送RecoverProbe报文(用于检测单向链路是否恢复)的时间间隔,固定为2

 

2.1.3  DLDP邻居状态

如果本端端口能够收到对端端口发送的链路层报文,则将对端端口称为本端端口的邻居。能够相互发送和接收报文的两个端口互为邻居。DLDP邻居共有三种状态,如3所示。

表3 DLDP邻居状态

状态类型

说明

未知状态

刚建立这个邻居,目前正在对邻居进行探测,还没有收到邻居回应时的邻居状态。该状态只在探测(Probe)过程中存在,探测结束后就转为双通或者单通状态

双通状态

收到邻居回应后的邻居状态,表示目前处于正常的双向连通状态,该状态可以长期稳定存在

单通状态

检测到单通链路时的邻居状态,此时会将该邻居删除

 

2.2  单向链路检测机制

2.2.1  单邻居检测

下面分为两种情况介绍单邻居的单向链路检测过程:

l              DLDP使能前链路就是单通的情况

l              DLDP使能后链路由双通变为单通的情况

1. DLDP使能前链路就是单通的情况

1所示,连接两台设备的光纤交叉连接(图中的圆点代表端口,连接端口的两条线分别表示光纤的Tx线和Rx线)。

  

图1 光纤交叉连接组网图

DLDP使能后,处于up状态的四个端口都进入Active状态,并向外发送带RSY标记的Advertisement报文通告自己的存在并请求邻居的信息。下面以Port 1为例,介绍一下单向链路的检测过程:

(1)        Port 1收到Port 4发来的带RSY标记的Advertisement报文,就认为发现了新邻居,为该邻居启动Echo等待定时器和建立表项,同时启动此表项的老化定时器。随后,Port 1将进入Probe状态,向外发送Probe报文探测Port 4的存在。

(2)        由于Port 4不能收到Port 1Probe报文,因此也不能回复Echo报文给Port 1Port 1上的Echo等待定时器超时后,端口进入Disable(单通)状态。

其他几个端口的检测过程与Port 1相同,最后四个端口都会进入Disable状态。

2. DLDP使能后链路由双通变为单通的情况

2所示,设备之间通过光纤相连(图中的两条线分别表示光纤的Tx线和Rx线)。

图2 单邻居正常组网图

Tx线和Rx线都正常的情况下,双通邻居的确立过程如下:

(1)        DLDP使能后,处于up状态的端口Port A进入Active状态,向外发送带RSY标记的Advertisement报文通告自己的存在并请求邻居的信息。

(2)        Port B收到带RSY标记的Advertisement报文,就认为发现了新邻居,为该邻居启动Echo等待定时器和建立表项,同时启动此表项的老化定时器。此时,端口将进入Probe状态,向外发送Probe报文。

(3)        Port A收到Probe报文后,建立该邻居表项,并进入Probe状态向对端回复Echo报文。

(4)        Port B收到Echo报文后,由于本机上已经存在该邻居表项,并且报文中携带的邻居信息和本机保存的信息相同,就将该邻居标志为双通。Port BDLDP状态由Probe切换为Advertisement,并定时向外发送普通Advertisement报文。在Advertisement状态下,每次收到已知邻居发来的报文,都会重置该邻居的老化定时器的值。

(5)        DLDP使能后,端口Port B发送报文、以及在Port A上建立邻居的过程与步骤(1)~(4)类似。

(6)        最后,Port APort B均认为对方为自己的双通邻居并处于Advertisement状态。

Port APort B双通后,如果Port BRx线突然发生故障(如3所示),无法收到信号,Port B物理downPort B将进入Inactive状态,不再收发任何报文。但是Port BTx线还能发送信号,Port A能收到信号,因此Port A此时还是up状态。Port A在邻居老化定时器超时前收不到邻居Port B发送的DLDP报文,根据配置的工作模式不同,后续的单向链路的检测过程有所不同:

图3 单邻居单通组网图

l              在普通模式下,Port A在邻居老化定时器超时后,将删除该邻居表项,进入Active状态,同时发送一个带RSY标记的Advertisement报文以请求邻居信息。Port A处于Active状态5秒后将进入Advertisement状态并一直处于该状态,没有邻居。Port B一直处于Inactive状态。在这种情况下,普通模式无法检测出单通。

l              在加强模式下,Port A在邻居老化定时器超时后,将启用加强定时器和Echo等待定时器,并向邻居发送Probe报文。由于Port ATx线已经断了,等到Echo等待定时器超时,Port A仍收不到邻居Port B应答本端的Echo报文,Port A则进入Disable(单通)状态,发送Disable报文通知对端本端已处于单通状态。同时,Port A将删除该邻居表项,并启动恢复探测定时器,以检测链路是否恢复。在此过程中,Port B一直处于Inactive状态。

&  说明:

l      在加强模式下,端口Port B已经物理down,但对端却不能检测到此变化。为了避免Port A需要在邻居老化定时器超时后才能察觉到与Port B连接异常,DLDP设置了快速Link Down通知机制。当物理层检测到端口Port B物理down时,将向Port A发送Link Down报文,Port A收到Link Down报文,直接进入Disable状态。

l      快速Link Down通知机制只有在加强模式下才会启用,在普通模式不会启用。

 

2.2.2  多邻居检测

DLDP支持多个通过hub相连的设备之间启用DLDP协议检测单通链路,此时每个端口检测到本端口有1个以上的邻居。多邻居的典型组网如4所示,设备A通过hub与设备BCD相连,各设备均支持DLDP,连线为普通网线或光纤。

在多邻居的组网环境中,为了能正确检测出可能存在的单向链路,要求连接到hub上的端口都需要启用DLDP

图4 多邻居典型组网图

在存在多邻居的情况下,端口一旦发现自己的邻居之一处于单通状态或者收到了邻居之一发送Disable报文后,即进入Disable状态。以上图为例,当设备ABC发现邻居D的连接出错后,都将本设备的端口迁移到Disable状态。

这种实现能避免在多邻居情况下,出现设备不能及时响应拓扑变化的情况而引起的流量转发错误。仍以上图为例,如果设备A正在向B转发流量,此时Bhub相连的Rx光纤中断,此时A关闭端口能避免继续向B转发报文(同时A也不能向CD继续发送报文)。如果AB之间还存在冗余链路,那么A设备关闭端口还能使STP迅速启用AB间的冗余链路。

上述组网中,如果各设备连接的不是hub,而是未启用DLDP功能、但支持对DLDPDU进行转发的设备,DLDP仍视为多邻居的情况处理。

2.3  发现单向链路后的处理机制

DLDP检测到单向链路时,可以采用两种方式关闭单通的端口。

l              手动模式:该模式仅依靠DLDP协议检测单向链路,关闭端口由网络管理员手动完成。DLDP在检测到单通后,只输出LogTrap信息,建议用户Shut Down此端口。

l              自动模式:该模式下发现单通时,除了输出LogTrap信息外,还会自动将端口设为DLDP Down状态。处于DLDP Down状态的端口除了DLDPDU之外不允许收发任何其它报文。

&  说明:

当网络性能比较好时,建议采用自动模式。当网络性能比较差时,可能导致DLDP报文延迟接收,误认为发生单向链路,在这种情况下,建议采用手动模式,让网络管理员来手动关闭端口,以避免自动关闭端口对业务报文的收发造成影响。

 

2.4  链路恢复后的处理机制

当链路恢复双通后,可以通过下列方式使端口恢复正常工作:

l              对于被管理员手动Shut Down的端口,用户需要手动输入undo shutdown命令来打开端口,使端口能够收发报文。

l              对于系统自动设置为DLDP Down的端口,用户可以使用dldp reset重置命令来恢复端口正常工作;也可以等待DLDP通过链路自动恢复机制,发现邻居恢复双通后重新打开端口,使端口能够收发报文。

通过命令使端口重新开始检测的方式比较简单,在此不做赘述,下面将着重介绍一下设备的链路自动恢复机制。

设备提供的链路自动恢复机制,可以使处于DLDP Down状态的端口,在链路恢复后自动从DLDP Down状态中恢复。其具体过程如下:

(1)        DLDP Down的端口每2秒向外发送一次RecoverProbe报文(链路恢复探测报文)。报文中只携带本端口的信息。

(2)        对端如果收到该报文,则以RecoverEcho报文(恢复回应报文)作为应答。

(3)        一旦本端收到RecoverEcho报文,检查RecoverEcho报文中携带的邻居信息是否和本端口信息相同。如果相同,则认为本端口和该邻居之间已经恢复双向连通,则端口的DLDPDisable状态迁移到Active状态,开始重新建立邻居关系。

2.5  应用限制

在应用DLDP时,需要注意以下几点:

l              在物理链路未连通的情况下,DLDP不起作用,只有当物理链路连通后,DLDP才能检测出单向链路,因此在使能DLDP之前,请先连接好光纤或铜质双绞线。

l              为了防止网络攻击和恶意探测,用户可以对DLDP报文进行认证,认证方式分为明文认证和MD5认证。为确保检测出单向链路,要保证两端设备的认证方式和认证口令相同。

l              为确保检测出单向链路,要保证两端设备的DLDP处于使能状态、DLDP Advertisement报文发送时间间隔相等。

l              为了使DLDP在不同的网络环境下都能及时发现单向链路,需要合理调整DLDP Advertisement报文的时间间隔。如果设定的时间太长,DLDP协议不能及时关闭单向链路;如果设定的时间太短,会增加网络的流量。

l              使能LACP协议的端口的任何状态变化都不会影响DLDP的运行,DLDP将端口聚合组中的每条链路视为独立的链路进行处理。

l              当运行DLDP的两台设备进行对接时,请保证两台设备的DLDP软件版本一致,否则DLDP的运行可能出现问题。

l              使能了DLDP功能的设备之间可以通过透传设备(HubDLDP未使能的设备)相连,但是如果DLDP设备与透传设备之间通过聚合链路连接,则可能会引起DLDP状态机的往复震荡,导致DLDP端口反复up/down,请用户避免此情况的发生。

典型组网应用

DLDP典型的组网应用如5所示。Device ADevice B通过光纤相连,Port BRx线发生断路,Port B处于物理down状态。但是,由于Port A检测不到这种情况,仍然向Port B转发数据报文,这样就会造成数据报文的丢失。

为了检测出此单通情况,可以在两台设备上分别配置DLDP功能。当DLDP检测出单向链路后,会自动断开单向链路,就避免了数据报文的丢失。当管理员修复链路后,单向链路会自动恢复为正常状态,继续转发报文。

图5 DLDP典型应用组网图

 

Copyright ©2008 杭州华三通信技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

本文档中的信息可能变动,恕不另行通知。

附件下载

不同款型规格的资料略有差异, 详细信息请向具体销售和800咨询。 H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!