LLDP协议(链路层链路发现协议)

文章目录

  • LLDP协议(链路层链路发现协议)
    • TLV
    • LLDPDU
    • LLDP工作机制
    • LLDP 报文
      • ethernet II
      • SNAP

LLDP协议(链路层链路发现协议)

随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息,LLDP协议(Link Layer Discovery Protocol,链路层发现协议)就是用于这个目的的协议。

LLDP协议使得接入网络的一台设备可以将本端的设备管理的地址、设备标识、接口标识等构成不同的TLV(Type/Length/Value,类型/长度/值)将其**封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元)发送给接入同一个局域网络的其它设备。当一个设备从网络中接收到其它设备的这些信息时,它就将这些信息以MIB(Management Information Base,管理信息库)**的形式存储起来,以供网络管理系统查询及判断链路的通信状况。

LLDP的实体主要维护了两个MIB库,一个 local system MIB,一个remote system MIB;一个用于维护本地相关的设备MIB信息,一个用于维护远端设备MIB信息。

LLDP信息的通告以及接收处理不受端口的STP状态的影响

TLV

TLV是组成LLDPDU的最小单元,表示一个对象的类型、长度和信息。每个TLV代表设备的一种信息,例如设备ID、接口ID、管理地址等都各自对应Chassis ID TLV、Port ID TLV、Management Address TLV等固定的TLV。

  • Type:表示TLV的类型,它占7个bits。每个TLV的类型值不同,比如End of LLDPDU TLV的类型值为0,Chassis ID TLV的类型值为1等。
  • information string length:表示TLV内容的长度,它占9个bit。
  • information string:表示TLV的内容,最大支持511bytes长度的内容

LLDPDU

组成LLDPDU之前,设备先将本地信息封装成TLV(Type-Length-Value)格式,再由若干个TLV组合成一个LLDPDU封装在LLDP报文的数据部分进行传送。

LLDP协议规定每个LLDPDU共可携带28种TLV,且每个LLDPDU固定以Chassis ID TLV、Port ID TLV和Time to Live TLV开始,以End of LLDPDU TLV为结束,这四个 TLV为必选的TLV,其他则为可选TLV。

LLDP工作机制

LLDP是一个用于信息通告和获取的协议,但是需要注意的一点是,LLDP发送的信息通告不需要确认,不能发送一个请求来请求获取某些信息,也就是说LLDP是一个单向协议,只有主动通告一种工作方式,无需确认,不能查询、请求(比如像ARP协议那样请求某个IP的MAC地址)。
LLDP主要完成如下工作:

  1. 初始化并维护本地MIB 库中的信息。
  2. 从本地MIB 库中提取信息,并将信息封装到LLDP 帧中。LLDP帧的发送有两种触发方式,一是定时器到期触发,一是设备状态发生了变化触发。
  3. 识别并处理接收到的LLDPDU帧
  4. 维护远端设备LLDP MIB 信息库。
  5. 当本地或远端设备MIB信息库中有信息发生变化时,发出通告事件。

LLDP 报文

LLDP报文封装有两种格式,一是ethernet II,另外一个是SNAP

ethernet II

  • Destination MAC address:目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。
  • Source MAC address:源MAC地址,为端口MAC地址或设备桥MAC地址(如果有端口地址则使用端口MAC地址,否则使用设备桥MAC地址)。
  • Type:报文类型,为0x88CC。
  • Data:数据,为LLDPDU。
  • FCS:帧检验序列。

SNAP

  • Destination MAC address:目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。
  • Source MAC address:源MAC地址,为端口MAC地址或设备桥MAC地址(如果有端口地址则使用端口MAC地址,否则使用设备桥MAC地址)。
  • Type:报文类型,为0xAAAA-0300-0000-88CC。
  • Data:数据,为LLDPDU。
  • FCS:帧检验序列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1、Linux驱动开发:模块_加载卸载

目录 🍅点击这里查看所有博文 随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记…

github上下载的vscode extension报找不到“vscode“模块的问题

问题来自于下载的 vscode 扩展源代码包 import * as vscode from "vscode"; 有问题的是这句,找不到 vscode 模块,错误代码 2307 主要是因为下载的源码工程里,没有 node_modules 这个文件夹,因为它本来就是需要被忽略…

97、Kafka的性能好在什么地方

Kafka的性能好在什么地方 一、顺序写二、零拷贝三、额外补充 kafka不基于内存,而是硬盘存储,因此消息堆积能力更强 一、顺序写 顺序写 : 利用磁盘的顺序访问速度可以接近内存,kafka的消息都是append操作,partition是有序的&#…

(数据结构)哈夫曼编码实现(C语言)

(数据结构)哈夫曼编码实现(C语言) 哈夫曼的编码:从一堆数组当中取出来最小的两个值,按照左下右大的进行绘制,将两个权值之和,放入队列当中,然后再进行取出两个小的,以此类推,直到全部…

VuePress在生产环境跳转子页报错 Failed to execute ‘appendChild‘ on ‘Node‘

记录一个使用VuePress时遇到的问题 使用VuePress做了一个文档网页,在开发环境的时候一切正常,但是发布到生产环境后,直接跳转二级页面会报错Failed to execute appendChild on Node 比如主页是http://sun/docs/.vuepress/dist/index.html#/…

SwiftUI-基础

应用入口 Main函数与App结构体的绑定,遵循App协议 main struct BaseApp: App {var body: some Scene {WindowGroup {ContentView()}} } 兼容UIApplicationDelegate main struct BasicApp: App {UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate…

【C语言项目】三子棋

文章目录 项目思路一、分文件进行创建二、进入游戏前的目录2.1 目录的功能:2.2 目录界面:2.3 选择进入或退出游戏2.4 多次重玩功能 三、画出棋盘3.1 写出棋子3.2 初始化棋盘3.2 画出棋盘的框架3.3 代码实现 四、玩家落子4.1 落子逻辑4.2具体情况分类讨论…

抖斗音直播间评论引流助手,支持直播间喊话+视频评论区喊话=到指定直播间引流精准粉丝【永久脚本+详细教程】

如果你觉得直播间发言手动太麻烦了,或许这个自动工具能帮到你! 1.开始运行前,需要手动去打开打开直播间或者视频评论区,再运行脚本。 2.脚本就是模拟人工操作,在相应的APP里进行评论,无突破APP限制功能。…

[USACO14DEC] Marathon G

洛谷[USACO14DEC] Marathon G 题目大意 Bessie \text{Bessie} Bessie设计了一条马拉松路线,有 N N N个点。 Bessie \text{Bessie} Bessie有 q q q次操作,每次操作是修改或询问。每次修改会修改一个点的坐标,每次询问是选手跑过一条子路径的时…

阿里云ACK的etcd证书过期手工升级操作

一.问题现象 阿里云ACK的etcd证书过期,通过图形化界面升级提示升级失败,考虑通过脚本的方式升级ETCD相关的证书。由于在前期做类似的升级ETCD证书失败导致整个集群业务出现访问异常,所有在升级之前做好对应的备份操作是很有必要的 二.前期准…

【Kubernetes运维篇】ingress-nginx实现业务灰度发布详解

文章目录 一、理论:实现灰度发布的几种场景1、场景一:将新版本灰度给部分用户2、场景二:按照比例流程给新版本3、实现灰度发布字段解释 二、实践:1、实验前提环境2、基于Request Header(请求头)进行流量分割3、基于Cookie进行流量…

93.qt qml-自定义Table优化(新增:水平拖拽/缩放自适应/选择使能/自定义委托)

之前我们更新了90.qt qml-Table表格组件(支持表头表尾固定/自定义颜色/自定义操作按钮/排序)_qml 表格_诺谦的博客-CSDN博客 但是一直没出源码,是因为该demo还存在问题,那就是表头表尾固定下,如果是半透明状态下,会看到表头表尾固定后的内容,所以只能重构代码,不能使用重…

Vue3组合式API+TypeScript写法入门

文章目录 前言1.reactive2.ref3.props4.computed5.emit6.watch总结 前言 参考Vue3官网. 本篇以组合式API为例, 但不包含setup语法糖式写法. 原本打算结合class-component, Vue3不推荐就不用了: OverView|Vue Class Component. 而且是不再推荐基于类的组件写法, 推荐单文件组件…

Android App 持续集成性能测试:启动流量

目录 前言: get app UID 获取流量数据 获得启动流量数据 总结 前言: Jenkins 是一种开源的持续集成工具,可以帮助我们更加方便地进行软件开发和测试工作。通过 API 远程管理 Jenkins 可以帮助我们更加方便地进行 Jenkins 的配置和管理工…

react实现路由跳转动画

下载插件 npm i react-transition-group 配置路由 import { createBrowserRouter as ReactRouter,Navigate } from "react-router-dom";import App from ../App.js import Login from "../view/login.js"; import Home from "../home.js"; co…

了解 3DS MAX 3D摄像机跟踪设置:第 4 部分

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 转到合成>新合成以创建新合成。 将“宽度”和“高度”值分别设置为 1280 和 720。将帧速率设置为 25,将持续时间设置为 12 秒。单…

Go基本数据类型及内置函数(一文稳定基础)

文章目录 1. 基础数据类型2.内置函数3.函数4.列表操作及for循环5.原子性操作6.通道7.协程与并发安全8.定时器 1. 基础数据类型 1. bool:布尔类型,只有 true 和 false 两个值。var test2 bool true2. string:字符串类型,表示一组字…

微服务网关

1.网关是如何演化来的,在微服务中有什么作用? 随着单体架构转化为微服务架构的时候,由一个后台服务由一个单一的服务变成了多个微服务,前端应用需要调用多个服务的接口,为了解决这个问题,网关就产生了。网…

【LeetCode】55.跳跃游戏

题目 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums [2,3,1,1,4] 输出:true 解释:可以…

一个月学通Python(二十六):Django使用缓存

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 文章目录 专栏介绍使用缓存Django项目接入Redis为视图提供缓…