外企工程师教你一天认识一项技术,今天我们要学是单链路检测协议

1、区分厂家

a.思科的单向链路检测协议叫(UDLD)

b.华为的单向链路检测协议叫(DLDP)

只是叫法不一致,一样的技术实现的效果都是一样的,可能根据厂家的不一致各自在基础上做了一些DIY,比如普通模式、增强模式等等

2、思科篇
a.问题定义

生成树协议(STP)将冗余物理拓扑解析为无环树状转发拓扑。

为此,它会阻塞一个或多个端口。由于一个或多个端口被阻塞,因此转发拓扑中没有环路。STP 在其运行过程中依赖于网桥协议数据单元 (BPDU) 的接收和传送。如果端口处于阻塞状态的交换机上运行的STP进程没有从上游(指定)交换机接收BPDU,则STP最终会使该端口的STP信息老化,并将其转换为转发状态。

这可以创建STP环路,数据包在此环路路径中开始无限循环,并消耗越来越多的带宽和资源。这可能导致网络中断。

当端口处于打开状态时,交换机怎么可能不接收BPDU?原因是单向链路。

发生以下情况时,链路被视为单向链路:

  • 在连接的两端,链路均已接通
  • 本地端不接收远程端发送的数据包,而远程端接收本地端发送的数据包

在正常运行期间,网桥B是链路B-C上的指定端口。网桥B将BPDU向下发送至C,C是阻塞端口的接口。C 在该链路上发现了来自 B 的 BPDU 时,该端口会被阻塞

现在,考虑一下如果链路B-C在C方向上发生故障会发生什么情况。C不再接收来自B的流量,但是B仍然接收来自C的流量

C不会在链路B-C上接收BPDU,而且会延长使用最后一个BPDU接收的信息。这最多需要20秒,具体取决于maxAge STP计时器。一旦该端口上的 STP 信息老化,该端口就会从 blocking state 转换成侦听状态、识别状态,并最终转换为转发 STP 状态。这会造成环路,因为三角形A-B-C中没有阻塞端口。数据包沿该路径循环(B仍接收来自C的数据包),这会消耗额外的带宽,直到链路完全被填满

此方案可能会使网络瘫痪。单向链路可能引起的另一个问题是流量黑洞

b.单向链路检测协议 (UDLD) 工作原理

UDLD 是与第 1 层 (L1) 机制一起工作以确定链路物理状态的第 2 层 (L2) 协议。在第 1 层中,自动协商负责物理信令和故障检测。UDLD执行自动协商无法执行的任务,例如检测邻居身份和关闭错误连接的端口。当同时启用自动协商和 UDLD 时,第 1 层和第 2 层检测将一起工作,以防止出现物理和逻辑单向连接以及其他协议无法正常工作的情况

UDLD的工作方式是在相邻设备之间交换协议数据包。为了使UDLD正常工作,链路上的两台设备都必须支持UDLD并在各自的端口上启用它

为UDLD配置的每个交换机端口都会发送UDLD协议数据包,其中包含端口设备/端口ID以及UDLD在该端口上看到的邻居设备/端口ID。相邻端口在从另一端接收的数据包中看到自己的设备/端口ID(回声)。如果在特定的持续时间内,该端口在传入的 UDLD 数据包中未看到其自己的设备/端口 ID,则该链路会被视为单向链路

此回声算法允许检测以下问题:

  • 链路两端均已接通,但是,只有一端可以接收数据包
  • 当接收和传输光纤未连接到远程端的同一端口时,发生连接(电线)错误

一旦 UDLD 检测到单向链路,将禁用各自的端口,并将在控制台上输出以下信息:

UDLD-3-DISABLE: Unidirectional link detected on port 1/2. Port disabled

由UDLD关闭的端口将保持禁用状态,直到手动启用该端口,或者untlerrdisabletimeout过期(如果已配置)。

c.UDLD 运行模式

UDLD可以在两种模式下运行:正常模式和主动模式

  • 在正常模式下,如果确定端口的链路状态为双向,并且 UDLD 信息超时,UDLD 不会执行任何操作。UDLD 的端口状态标记为未确定。端口的行为与其STP状态一致
  • 在主动模式下,如果确定端口的链路状态为双向,并且在该端口上的链路仍处于接通状态时,UDLD 信息超时,则 UDLD 将尝试重建端口状态。如果不成功,则该端口被置于 errdisable 状态

当运行UDLD的端口在保持时间不接收来自邻居端口的UDLD数据包时,会发生UDLD信息过期。端口的保留时间由远程端口决定,并且取决于远程端的消息间隔。消息间隔越短,保持时间越短,检测速度越快。UDLD 的最近实施允许配置消息间隔。UDLD 信息可能会由于端口上的错误率较高(由某个物理问题或双工不匹配导致)而老化。这种丢包并不意味着链路是单向的,正常模式下的UDLD不会禁用此类链路

为了保证适当的检测时间,能够选择正确的消息间隔非常重要。消息间隔必须足够快,以便在创建转发环路之前检测单向链路,但是它不能使交换机CPU过载。默认消息间隔为15秒,并且足够快,可以在使用默认STP计时器创建转发环路之前检测单向链路。检测时间大约等于消息间隔的三倍。例如:Tdetection~ message_interval x3

对于默认的消息间隔 15 秒,检测时间为 45 秒

在单向链路发生故障时,STP需要Treconvergence=max_age + 2x forward_delay才能重新收敛。使用默认定时器,需要花费 20+2x15=50 秒。

建议保留Tdetection< Treconvergence并选择适当的消息间隔

在主动模式下,一旦信息老化,UDLD将尝试重新建立链路状态,并在八秒内每秒发送一次数据包。如果仍然没有确定链路状态,将禁用该链路。

主动模式添加了对以下情况的额外检测:

  • 端口停止响应(一端的端口既不传输也不接收,但是链路两端均处于接通状态)
  • 链路在一端处于接通状态,并在另一端处于断开状态。当本地端口上拔下传输光纤时,本地端口上的链路保持up状态,则光纤端口上会出现此问题。但是,在远程端,它处于关闭状态</tt>

最近,为使链路两端在这些情况下都处于断开状态,光纤快速以太网硬件实施提供了远端故障指示 (FEFI) 功能。在GigabitEthernet上,链路协商提供类似的功能。铜缆端口通常不会受这类问题的影响,因为它们使用以太网链路脉冲监控链路。必须指出的是,在这两种情况下,由于端口之间没有连接,因此不会发生转发环路。但是,如果链路一端为开启状态,而另一端为关闭状态,则可能会发生流量黑洞。主动 UDLD 设计为可防止出现此问题

d.配置和监控

运行命令show udld以验证接口上是否启用了UDLD

3、华为篇
a.定义:

在实际组网中有时会出现一种特殊的现象——单向链路。所谓单向链路是指本端设备可以通过链路层收到对端设备发送的报文,但对端设备不能收到本端设备的报文。单向链路会引起一系列问题,比如生成树拓扑环路等

DLDP是链路层协议,它与物理层协议协同工作来监控设备的链路状态。物理层的自动协商机制进行物理信号和故障的检测;DLDP进行对端设备的识别、单向链路的识别和关闭不可达接口等工作。二者协同工作,可以检测和关闭物理和逻辑的单向连接。如果链路两端在物理层都能独立正常工作,DLDP会在链路层检测这些链路是否正确连接、两端是否可以正确的交互报文。这种检测不能通过自动协商机制实现

b.DLDP状态机

DLDP协议通过与对方交互协议报文(DLDPDU)来识别对端设备、检测单向链路。DLDP协议有七种状态:Initial(初始化)、Inactive(未连通)、Active(活动)、Advertisement(通告)、Probe(探测)、Disable(单通)和DelayDown(延迟down)状态

c.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模式,手动或者自动关闭掉本端接口,同时删除该邻居表项
邻居老化定时器

每个新邻居加入时都要建立邻居表项,并启用相应的邻居老化定时器。每次收到邻居报文时都会刷新邻居表项,并更新相应的邻居老化定时器

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

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

加强定时器在加强模式下,当邻居老化定时器超时,还未收到邻居发来的报文,则对该邻居启用加强定时器,每秒向邻居发送1个Probe报文,连续发送8次,如果收不到邻居的Echo报文,则进入Disable状态。加强定时器的超时时间为10秒
DelayDown定时器

在加强模式下,当DLDP处于Active、Advertisement或Probe状态时,如果收到接口Down事件,不会立即删除邻居并进入Inactive状态,而是先进入DelayDown状态并启动DelayDown定时器(此时仍保留DLDP邻居信息,且只响应接口Up事件)

  • 若该定时器超时后仍未收到接口Up事件,则删除DLDP邻居信息并进入Inactive状态。
  • 若该定时器超时前收到了接口Up事件,则返回到原来的DLDP状态
恢复探测定时器恢复探测定时器的时间间隔为2秒,即处于Disable状态下的接口每2秒发送1个RecoverProbe报文,用于检测单向链路是否恢复。如果本端收到RecoverEcho报文,检查RecoverEcho报文中携带的邻居信息是否和本接口信息相同。如果相同,则认为本接口和该邻居之间已经恢复双向连通,则接口从Disable状态迁移到Active状态,开始重新建立邻居关系
d.DLDP协议工作模式
DLDP协议工作模式邻居表老化检测单向链路
普通模式老化邻居表时,不主动探测邻居是否存在,邻居老化定时器超时后,直接老化该邻居表项系统能识别两种类型的单向链路:一种是光纤交叉连接,另一种是一条光纤未连接或一条光纤断路
加强模式老化邻居表时,主动探测邻居是否存在,邻居老化定时器超时后,启用加强定时器和Echo等待定时器,Echo等待定时器超时后,将本端状态置为单通,并删除该邻居表项说明:在探测后一种类型的单向链路时,需要将接口配置为强制速率和强制全双工模式,否则该协议不起作用
e.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算法加密后的摘要以及本端认证类型进行比较,如果不一致,则丢弃报文
f.DLDP工作过程

DLDP对接收到的报文按如下顺序进行分析和处理:

  1. 在认证模式下,对报文进行认证。如果报文通不过认证,DLDP丢弃该报文
  2. 报文中的通告时间间隔(Interval)如果和本设备的不一致,DLDP丢弃报文
  3. 对DLDP报文进行处理
g.单邻居单向链路监测机制

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

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

2、由于Interface4不能收到Interface1的Probe报文,因此也不能回复Echo报文给Interface1,Interface1上的Echo等待定时器超时后,接口进入Disable(单通)状态。其他几个接口的检测过程与Interface1相同,最后四个接口都会进入Disable状态

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

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

1、DLDP使能后,处于Up状态的接口Interface1进入Active状态,向外发送带RSY标记的Advertisement报文通告自己的存在并请求邻居的信息

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

3、Interface1收到Probe报文后,建立该邻居表项,并进入Probe状态向对端回复Echo报文

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

5、DLDP使能后,接口Interface2发送报文、以及在Interface1上建立邻居的过程与步骤1~步骤4类似

6、最后,Interface1和Interface2均认为对方为自己的双通邻居并处于Advertisement状态

Interface1和Interface2双通后,如果Interface2的Rx线突然发生故障(如图3所示),无法收到信号,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状态
  1. 在加强模式下,接口Interface2已经物理Down,但对端却不能检测到此变化。为了避免Interface1需要在邻居老化定时器超时后才能察觉到与Interface2连接异常,DLDP设置了快速Link Down通知机制。当物理层检测到接口Interface2物理Down时,将向Interface1发送Link Down报文,Interface1收到Link Down报文,直接进入Disable状态
  2. 快速Link Down通知机制只有在加强模式下才会启用,在普通模式不会启用
i.多邻居单向链路监测机制

DLDP支持多个通过Hub相连的设备之间启用DLDP协议检测单通链路,此时每个接口检测到本接口有1个以上的邻居。

多邻居的典型组网如图1所示,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仍视为多邻居的情况处理

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

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

  • 手动模式:该模式仅依靠DLDP协议检测单向链路,关闭接口由网络管理员手动完成。DLDP在检测到单通后,只输出Log和Trap信息,建议用户关闭此接口
  • 自动模式:该模式下发现单通时,除了输出Log和Trap信息外,还会自动将接口设为DLDP Down状态。处于DLDP Down状态的接口仅仅接收并处理BPDU报文,不转发用户流量
4、总结

单链路检测协议就是为了检测链路和物理层的物理链路是否存在up但是单通传输数据的情况,因为光纤有两头嘛,收发光纤,所以单通会导致报文无法收或者发,导致二层协议STP收敛导致环路

好了,本期内容就这么多了,谢谢!干饭大王永远爱你们

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值