草庐IT

LLDP(链路层发现协议)

搞钱的阿泽 2023-04-18 原文

定义:LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定义的链路层发现协议。LLDP是一种标准的二层发现方式,可以将本端设备的管理地址、设备标识、接口标识等信息组织起来,并发布给自己的邻居设备,邻居设备收到这些信息后将其以标准的管理信息库MIB(Management Information Base)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。

目的:随着网络规模越来越大,网络设备种类繁多,并且各自的配置错综复杂,对网络管理能力的要求也越来越高。传统网络管理系统多数只能分析到三层网络拓扑结构,无法确定网络设备的详细拓扑信息、是否存在配置冲突等。因此需要有一个标准的二层信息交流协议。LLDP提供了一种标准的链路层发现方式。通过LLDP获取的设备二层信息能够快速获取相连设备的拓扑状态;显示出客户端、交换机、路由器、应用服务器以及网络服务器之间的路径;检测设备间的配置冲突、查询网络失败的原因。企业网用户可以通过使用网管系统,对支持运行LLDP协议的设备进行链路状态监控,在网络发生故障的时候快速进行故障定位。

一、LLDP工作原理图:

二、LLDP基本实现原理为:

1、LLDP模块通过LLDP代理与设备上物理拓扑MIB、实体MIB、接口MIB以及其他类型MIB的交互,来更新自己的LLDP本地系统MIB,以及本地设备自定义的LLDP扩展MIB。

2、将本地设备信息封装成LLDP帧发送给远端设备。

3、接收远端设备发过来的LLDP帧,更新自己的LLDP远端系统MIB,以及远端设备自定义的LLDP扩展MIB。

4、通过LLDP代理收发LLDP帧,设备就很清楚地知道远端设备的信息,包括连接的是远端设备的哪个接口、远端设备的MAC地址等信息。

LLDP本地系统MIB用来保存本地设备信息。包括设备ID、接口ID、系统名称、系统描述、接口描述、网络管理地址等信息。

LLDP远端系统MIB用来保存远端设备信息。包括设备ID、接口ID、系统名称、系统描述、接口描述、网络管理地址等信息。

三、LLDP代理完成下列任务:

维护LLDP本地系统MIB和LLDP远端系统MIB。

在本地状态发生变化的情况下,提取LLDP本地系统MIB信息并向远端设备发送。在本地设备状态信息没有变化的情况下,按照一定的周期提取LLDP本地系统MIB信息向远端设备发送。

识别并处理收到的LLDP帧。

LLDP本地系统MIB或LLDP远端系统MIB的状态发生变化的情况下,向网管发送LLDP告警。

 LLDP报文结构:

 各字段含义如下:

DA(Destination MAC Address):目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。

SA(Source MAC Address):源MAC地址,为发送端的MAC地址。

Type:报文类型,LLDP报文中该字段的值为0x88CC。

LLDPDU:LLDP数据单元,LLDP信息交换的主体。

FCS:帧检验序列。

四、报文收发机制:

LLDP报文发送机制

当使能LLDP功能时,设备会周期性地向邻居设备发送LLDP报文。如果设备的本地配置发生变化则立即发送LLDP报文,以将本地信息的变化情况尽快通知给邻居设备。为了防止本地信息的频繁变化而引起LLDP报文的大量发送,每发送一个LLDP报文后都需延迟一段时间后再继续发送下一个报文。

LLDP报文接收机制

当使能LLDP功能时,设备会对收到的LLDP报文及其携带的TLV进行有效性检查,通过检查后再将邻居信息保存到本地设备,并根据LLDPDU报文中TLV携带的TTL值设置邻居信息在本地设备的老化时间。如果接收到的LLDPDU中的TTL值等于零,将立刻老化掉该邻居信息。

五、组网模式:

单邻居组网模式:

单邻居组网模式是指设备的接口之间直接相连,而且接口只有一个邻居设备的情况。单邻居组网如图所示,Switch_A和AC_B之间直接相连,Switch_A和AC_B的每一个接口都只有一个邻居。

链路聚合组网模式:

链路聚合组网模式是指设备的接口之间存在链路聚合,接口之间是直接相连,链路聚合之间的每个接口只有一个邻居设备。如图所示AC_A和Switch_B之间存在链路聚合,AC_A和Switch_B的每一个接口都只有一个邻居。

 

六、配置命令: 

1、执行命令system-view,进入系统视图。

2、执行命令lldp message-transmission interval interval,配置设备LLDP报文发送周期。缺省情况下,LLDP报文发送周期为30秒。

3、执行命令lldp message-transmission delay delay,配置设备LLDP报文发送延迟时间。缺省情况下,LLDP报文发送延迟时间是2秒。

4、执行命令lldp message-transmission hold-multiplier hold,配置设备信息在邻居设备中保持的时间倍数。缺省情况下,设备信息在邻居设备中保持的时间倍数是4。

5、当邻居信息频繁发生变化的时候,可以通过lldp trap-interval命令配置设备向网管系统发送邻居信息变化告警的延迟时间,通过增加延迟时间来减少设备向网管系统发送信息,以达到抑制拓扑振荡目的。

有关LLDP(链路层发现协议)的更多相关文章

  1. 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总线个人知识总

  2. 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

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

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

  4. ruby-on-rails - 是否有可能发现 Ruby on Rails 应用程序中未使用哪些类? - 2

    在我们的项目中,我们有一些“被遗忘的”类存在了很长一段时间。那些类已被其他类替代,但我们忘记删除它们。是否有一些自动化的方法/工具可以发现Ruby{onRails}应用程序中没有使用哪些类?谢谢! 最佳答案 这个问题已经被提出了很多次,但是最好的答案都在这里:FindunusedcodeinaRailsapp我个人喜欢日志解析:https://stackoverflow.com/a/14161807但在任何情况下,您都可以创建自己的记录器,扩展ActiveRecord::Base以创建一个观察器,该观察器将最常用的模块存储在数据库中

  5. ruby - 元编程:如何发现对象的真实类? - 2

    我在用Ruby元编程开玩笑,我写了这段代码:classClassdef===(other)other.kind_of?(self)endendclassFakeClassdefinitialize(object)methods.each{|m|eval"undef#{m}"ifm.to_sym!=:methods}define=procdo|m|eval(这会创建一个模拟对象的假类。看:a=FakeClass.new(1)#=>1a.class#=>Fixnuma.methods#=>ReturnallFixnummethodsa+1#=>2(isnotaFakeClass)Fixnu

  6. 网络实验之RIPV2协议(一) - 2

    一、RIPV2协议简介  RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对

  7. ruby - 我天真的最大团发现算法比 Bron-Kerbosch 的运行得更快。怎么了? - 2

    简而言之,我的原始代码(用Ruby编写)如下所示:#$seenisahashtomemoizepreviouslyseensets#$sparseisahashofusernamestoalistofneighboringusernames#$setisthelistofoutputclusters$seen={}defsubgraph(set,adj)hash=(set+adj).sortreturnif$seen[hash]$sets.pushset.sort.join(",")ifadj.empty?andset.size>2adj.each{|node|subgraph(set

  8. ruby-on-rails - Ruby on Rails,没有发现 Rakefile 错误 - 2

    我在rails上安装了ruby​​,postgres。我安装了所有必需的gem文件,我创建了一个项目http://guides.rubyonrails.org/getting_started.html想要我在config/routes.rb添加了下面的代码Blog::Application.routes.drawdoresources:postsrootto:"welcome#index"end我正在尝试运行rakeroutes命令。但是我明白了rakeaborted!NoRakefilefound(lookingfor:rakefile,Rakefile,rakefile.rb,Ra

  9. ruby-on-rails - 发现未经许可的参数 : utf8, authenticity_token 仅用于更新方法 - 2

    我在用户管理Controller中有这样的更新方法defupdate@user.update(user_permitted_params)redirect_toadmin_user_managements_pathend我的强参数设置为defuser_permitted_paramsparams.require(:user).permit(:name,:email,:password,:password_confirmation,:address,:zip_code,:phone_number,:role_id)end我遇到了以下问题Unpermittedparameters:utf8

  10. ruby - 协议(protocol)族不支持的地址族 - 2

    我尝试执行此页面中显示的ruby示例:http://tomayko.com/writings/unicorn-is-unix但我得到的只是echo.rb:9:in`bind':Addressfamilynotsupportedbyprotocolfamily-bind(2)(Errno::EAFNOSUPPORT)fromecho.rb:9:in`'有什么想法吗? 最佳答案 我遇到了同样的问题。只需将localhost更改为0.0.0.0:address=Socket.pack_sockaddr_in(4242,'0.0.0.0')

随机推荐