草庐IT

UDLD(cisco)和DLDP(huasan/Huawei),单向链路检测协议详解

℡七里晴天 2023-07-13 原文

Cisco:

  UDLD (UniDirectional Link Detection 单向链路检测),Cisco私有的二层协议,用来监听利用光纤或双绞线连接的以太链路,当出现单向链路(只能向一个方向传输,比如我能把数据发给你,你也能收到,但是你发给我的数据我收不到)时,UDLD可以检测出这一状况,关闭相应接口并发送警告信息。单向链路可能引起很多问题,尤其是生成树,可能会造成回环。

注意:UDLD需要链路两端设备都支持才能正常运行。

工作模式:UDLD支持两种工作模式;普通(normal)模式(默认)和激进(aggressive)模式。

普通(normal)模式:这个模式下,UDLD可以检测单向链路,并标记端口为undetermined状态产生系统日志,In other words, normal

mode will shut down a port only if it can explicitly determine that

the associated link is faulty for an extended period of time.

激进(aggressive)模式:这个模式下,UDLD可以检测到由单向链路。并且会尝试重建链路,连续发送8秒的UDLD message,如果此间没有任何的UDLD echo应答,此端口会被放置于errdisable状态

配置详解:

Switch(config)#udld ?
  aggressive  Enable UDLD protocol in aggressive mode on fiber ports except
                     where locally configured
  enable         Enable UDLD protocol on fiber ports except where locally
                     configured
  message     Set UDLD message parameters

   //全局启用UDLD,aggressive设置为激进模式,enable设置为普通模式,message time设置    hello间隔,范围是1-90,默认15

int e0/0

udld port [aggressive]      //接口下启用UDLD,不加aggressive为普通模式。

exit

show udld [接口名]        //查看UDLD信息。

udld reset          //特权模式下重启所有被UDLD关闭的接口。

huawei:

     定义:DLDP(Device Link Detection Protocol)设备链路检测协议,用来监控光纤或铜质双绞线(例如超五类双绞线)的链路状态。如果发现单向链路存在,DLDP协议会根据用户配置,自动关闭或通知用户手工关闭相关接口,以防止网络问题的发生.

 

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

工作模式:

普通模式

老化邻居表时,不主动探测邻居是否存在,邻居老化定时器超时后,直接老化该邻居表项。

系统只能识别一种类型的单向链路:光纤交叉连接。

加强模式

老化邻居表时,主动探测邻居是否存在,邻居老化定时器超时后,启用加强定时器和Echo等待定时器,Echo等待定时器超时后,将本端状态置为单通,并删除该邻居表项。

系统能识别两种类型的单向链路:一种是光纤交叉连接,另一种是一条光纤未连接或一条光纤断路。

说明:

在探测后一种类型的单向链路时,需要将接口配置为强制速率和强制全双工模式,否则该协议不起作用。

配置详解:

[HUAWEI]dldp ?
  authentication-mode      Specify password and authentication mode of DLDP
                                         packet
  delaydown-timer          Specify the value of delaydown timer
  enable                          DLDP enable
  interval                        Specify the value of advertisement packet timer
  reset                            DLDP state reset
  unidirectional-shutdown  Specify the mode of DLDP unidirectional shutdown, the
                                      default is auto
  work-mode                  Set the work mode of DLDP, the default is enhance[HUAWEI]dldp ena

dldp interval 10:在SwitchA上配置发送Advertisement报文的时间间隔为10秒

dldp delaydown-timer 4:在SwitchA上配置DelayDown定时器的超时时间为4秒

dldp authentication-mode hmac-sha256 Huawei-123:在SwitchA上配置DLDP报文的认证方式hmac-sha256方式,密码为Huawei-123

一般为默认不需要动,默认值如下表

 

[HUAWEI]dldp enable      //全局启用DLDP协议,默认工作模式为加强模式可使用work-mode更改
[HUAWEI]int g1/0/1
[HUAWEI-GE1/0/1]dldp ?
  compatible-mode  DLDP compatible protocol             
  enable           Enable DLDP protocol on port
  reset            DLDP state reset

[HUAWEI-GE1/0/1]dldp enable        //在接口下启用dldp

扩展:

[HUAWEI-GE1/0/1]dldp compatible-mode ?
  enable     Enable DLDP compatible protocol on port        //启用dldp兼容模式(如果与某些老式华为交换机进行DLDP互通时,需要配置此命令,否则会导致DLDP不能互通。)

  local-mac  Local mac    //配置DLDP兼容模式下发送DLDP报文的MAC地址。在设备上使能兼容模式之后,使用此命令配置DLDP兼容模式发送DLDP报文MAC地址,可以防止对端设备由于发现多个邻居而出现DLDP振荡的问题。

 

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

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

[HUAWEI]dldp unidirectional-shutdown ?
  auto    Auto mode(default mode)
  manual  Manual mode

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

  • 自动模式:该模式下发现单通时,除了输出Log和Trap信息外,还会自动将接口设为DLDP Down状态。处于DLDP Down状态的接口仅仅接收并处理BPDU报文,不转发用户流量。

链路自动恢复机制

  • 如果接口的关闭模式被设置为手动关闭,手动关闭的接口不可通过链路自动恢复机制打开。

  • 如果接口的关闭模式被设置为系统自动关闭,系统自动关闭的接口可以通过链路自动恢复机制打开。

有关UDLD(cisco)和DLDP(huasan/Huawei),单向链路检测协议详解的更多相关文章

  1. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  2. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  3. ruby - 检测由 RSpec、Ruby 运行的代码 - 2

    我想知道我的代码是否在rspec下运行。这可能吗?原因是我正在加载一些错误记录器,这些记录器在测试期间会被故意错误(expect{x}.toraise_error)弄得乱七八糟。我查看了我的ENV变量,没有(明显的)测试环境变量的迹象。 最佳答案 在spec_helper.rb的开头添加:ENV['RACK_ENV']='test'现在您可以在代码中检查RACK_ENV是否经过测试。 关于ruby-检测由RSpec、Ruby运行的代码,我们在StackOverflow上找到一个类似的问题

  4. ruby - 使用 Ruby Daemons gem 检测停止 - 2

    我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe

  5. ruby - Ruby 脚本如何检测到它正在 irb 中运行? - 2

    我有一个定义类的Ruby脚本。我希望脚本执行语句BoolParser.generate:file_base=>'bool_parser'仅当脚本作为可执行文件被调用时,而不是当它被irbrequire(或通过-r在命令行上传递)时。我可以用什么来包装上面的语句,以防止它在我的Ruby文件加载时执行? 最佳答案 条件$0==__FILE__...!/usr/bin/ruby1.8classBoolParserdefself.generate(args)p['BoolParser.generate',args]endendif$0==_

  6. ruby - HTTP POST 上的 SSL 错误(未知协议(protocol)) - 2

    尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify

  7. Ruby 无法检测字符串中的换行符 - 2

    我有以下字符串,我想检测那里的换行符。但是Ruby的字符串方法include?检测不到它。我正在运行Ruby1.9.2p290。我哪里出错了?"/'ædres/\nYour".include?('\n')=>false 最佳答案 \n需要在双引号内,否则无法转义。>>"\n".include?'\n'=>false>>"\n".include?"\n"=>true 关于Ruby无法检测字符串中的换行符,我们在StackOverflow上找到一个类似的问题: h

  8. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

  9. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  10. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

随机推荐