网络协议 — LLDP 数据链路发现协议

news2024/12/23 14:10:31

目录

文章目录

  • 目录
  • LLDP
    • LLDPDU
    • Ethernet II LLDPDU
    • SNAP LLDPDU
    • LLDPDU TLVs
      • 基本 TLV
      • 802.1 定义的 TLV
      • 802.3 定义的 TLV
      • 802.3 定义的 LLDP-MED TLV
  • LLDP 消息流程
  • LLDP 协议栈

LLDP

LLDP(Link Layer Discovery Protocol,链路层发现协议)是定义在 802.1ab 中的一个 L2 数据链路层的设备发现协议,用于在局域网中的网络设备之间交换基本信息,以便互相发现和识别相邻设备及其能力参数。解决了不同厂商的设备之间得以在一个标准的协议中交换彼此的数据链路层信息。

LLDP 协议具有广泛的应用场景,例如:自动发现网络中的设备、生成网络拓扑图、监控设备状态、进行故障排查和网络故障恢复等。LLDP 还常与其他网络管理协议(e.g. SNMP)结合使用,提供更全面的设备管理功能。

例如:在基于 LLDP 协议构建网络拓扑的应用场景中,网络设备在发送 LLDPDU 时,会将自己的设备信息和端口信息发布到相邻设备,相邻设备收到后可以将这些信息添加到自己的拓扑表中,从而逐步构建整个网络的拓扑结构。

在这里插入图片描述

LLDPDU

LLDP 协议使用 LLDPDU(LLDP Data Unit)作为协议消息。LLDPDU 采用了 TLV(Type-Length-Value,类型-长度-值)数据结构,每种 TLV 的 Length 和 Value 可以根据具体的 Type 而变化,一个 LLDPDU 可以包含多个 TLVs。

更具体而言,LLDPDU 具有 2 种不同的报文封装格式:Ethernet II 和 SNAP(Subnetwork Access Protocol,子网访问协议)。

Ethernet II LLDPDU

在这里插入图片描述

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

SNAP LLDPDU

在这里插入图片描述

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

LLDPDU TLVs

LLDP 可以封装的 TLV 包括以下 4 大类型:

  1. 基本 TLV;
  2. 802.1 定义的 TLV;
  3. 802.3 定义的 TLV;
  4. 802.3 定义的 LLDP-MED(Media Endpoint Discovery,媒体终端发现) TLV。

总的来说,每个 LLDPDU 共可携带 28 种 TLVs。

基本 TLV

在这里插入图片描述

深蓝色的 Chasis ID TLV、Port ID TLV、TTL TLV 和 End TLV 这 4 种是必须携带的,其余的 TLV 则为可选携带。

  1. Chassis ID TLV:用于传输设备的唯一标识符,如:设备的 MAC 地址、IP 地址等。在网络中唯一标识一台网络设备。
  2. Port ID TLV:用于传输设备的端口的唯一标识符,如:端口号、端口名称。
  3. Time To Live TLV:指示 LLDPDU 的生存期(消息在网络中传播的最大跳数)。
  4. End TLV:标识 LLDPDU TLVs 的结束。
  5. System Name TLV:用于传输设备的系统名称。
  6. System Description TLV:用于传输设备的系统描述信息,如:设备型号、厂商信息等。
  7. System Capabilities TLV:用于传输设备的系统能力信息,如:是否支持路由、交换、电源管理等。
  8. Port Description TLV:用于传输关于设备的端口描述信息,如:端口类型、速率等。
  9. Management Address TLV:用于传输设备的管理地址,用于网络管理和配置。
  10. Organizationally Specific TLV:用于扩展 LLDP 协议,传输特定厂商或组织定义的自定义信息。

其中,Management Address(管理地址)是网络设备提供给 NMS(网络管理系统)标识一个设备并进行管理的地址。

802.1 定义的 TLV

  • Port VLAN ID TLV:端口的 VLAN ID。
  • Port And Protocol VLAN ID TLV:端口的协议 VLAN ID。
  • VLAN Name TLV:端口的 VLAN 的名称。
  • Protocol Identity TLV:端口支持的协议类型。

802.3 定义的 TLV

  • MAC/PHY Configuration/Status TLV:端口的速率和双工状态、是否支持端口速率自动协商、是否已使能自动协商功能以及当前的速率和双工状态。
  • Power Via MDI TLV:端口的供电能力。
  • Link Aggregation TLV:端口是否支持链路聚合以及是否已使能链路聚合。
  • Maximum Frame Size TLV:端口支持的最大帧长度,取端口配置的 MTU(Max Transmission Unit,最大传输单元)。

802.3 定义的 LLDP-MED TLV

LLDP-MED(Media Endpoint Discovery,媒体终端发现) TLV 为 VoIP(Voice over IP,在 IP 上传送语音)应用场景提供了许多功能,包括:基本配置、网络策略配置、地址信息以及目录管理等,满足了语音设备的不同生产厂商在成本有效、易部署、易管理等方面的要求,并解决了在以太网中部署语音设备的问题,为语音设备的生产者、销售者以及使用者提供了便利。

  • LLDP-MED Capabilities TLV:当前设备的 MED 设备类型以及在 LLDPDU 中可封装的 LLDP-MED TLV 类型。
  • Network Policy TLV:端口的 VLAN ID、支持的应用(如语音和视频)、应用优先级以及使用策略等。
  • Extended Power-via-MDI TLV:当前设备的供电能力。
  • Hardware Revision TLV:MED 设备的硬件版本。
  • Firmware Revision TLV:MED 设备的固件版本。
  • Software Revision TLV:MED 设备的软件版本。
  • Serial Number TLV:MED 设备的序列号。
  • Manufacturer Name TLV:MED 设备的制造厂商。
  • Model Name TLV:MED 设备的模块名。
  • Asset ID TLV:MED 设备的资产标识符,以便目录管理和资产跟踪。
  • Location Identification TLV:位置标识信息,供其它设备在基于位置的应用中使用。

LLDP 消息流程

当设备启动 LLDP 协议后,LLDP 消息会从设备的每个端口上周期性的发出,相邻设备(直连设备)的 LLDP 协议会接收并解析这些消息,从而获取有关信息。

LLDP 协议支持每个端口工作在 4 种模式下,包括:

  1. TxRx:设备既发送也接收 LLDP 消息。
  2. Tx:设备只发送不接收 LLDP 消息。
  3. Rx:设备只接收不发送 LLDP 消息。
  4. Disable:既不发送也不接收 LLDP 消息。

当某个端口工作在 TxRx 或 Tx 模式时,端口除了会周期性地向邻居设备发送 LLDP 消息之外,还会在设备的本地配置发生变化则立即发送 LLDP 消息,以求尽快通知给邻居设备。但为了防止本地信息的频繁变化而引起 LLDP 消息的大量发送,端口每发送一个 LLDP 消息后都需延迟一段时间后再继续发送下一个消息。

当设备的工作模式由 Disable/Rx 切换为 TxRx/Tx,或者发现了新的邻居设备(即收到一个新的 LLDP 消息且本地尚未保存发送该报文设备的信息)时,该设备将自动启用快速发送机制,即将 LLDP 消息的发送周期缩短为 1s,并连续发送指定数量的 LLDP 消息后再恢复为正常的发送周期。

当端口工作在 TxRx 或 Rx 模式时,端口会对收到的 LLDP 消息及其携带的 TLVs 进行有效性检查,通过检查后再将邻居信息保存到本地,并根据 TTL TLV 来设置邻居信息在本地设备上的老化时间,若该值为零,则立刻老化该邻居信息。

LLDP 协议栈

网络设备中 LLDP 协议栈的实现主要完成如下工作:

  1. 初始化并维护本地 MIB 库中的信息。
  2. 从本地 MIB 库中提取信息,并将信息封装到 LLDP 消息中。
  3. 识别并处理接收到的 LLDP 消息。
  4. 维护远端设备 LLDP MIB 信息库。
  5. 当本地或远端设备 MIB 信息库中有信息发生变化时,发出通告事件。

在这里插入图片描述

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

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

相关文章

Windows环境下安装Nacos

文章目录 一、什么是Nacos1. 主要特点:1.1 服务发现和注册:1.2 配置管理:1.3 服务管理:1.4 多语言支持:1.5 高可用性和扩展性: 二、Windows下安装单机版Nacos1. 安装包下载:2. 目录文件说明&…

基于torchvision的CV迁移学习

前面我们用过了cifar10,这里因为我们模型的体量更大,他能够理解更加复杂的数据集,所以这里我们就使用更加复杂的数据集叫做cifar100,顾名思义就是它是一个100分类的图像数据集,分类数据更多,复杂度更多。 …

哈希表(hashtable)的数据插入、查找和遍历

文章目录 前言一、哈希二、哈希的具体实现2.1 准备工作2.2 插入数据2.3 输出哈希表2.4 在哈希表中寻找数据2.5 销毁哈希表 三、 哈希表的调用总结 前言 本期主要和大家介绍一下哈希算法,这里主要给出哈希算法的实现方法; 一、哈希 hash是一种算法: 哈希…

Linux进程理解【环境变量】

Linux进程理解【环境变量】 提到环境变量,大家可能有些陌生,如果编写过Java就知道,编写Java需要提前安装JDK,这个操作就是配置Java的编码环境,在Linux中当然也少不了环境变量,下面我们就一起来看看 文章目…

SpringBoot 统一功能的处理

SpringBoot 统一功能的处理 文章目录 SpringBoot 统一功能的处理1. 用户登录权限校验1.1 最初用户登录验证1.2 Spring AOP 统一用户登录验证的问题1.3 SpringAOP 拦截器1.3.1 实现自定义拦截器1.3.2 将自定义拦截器加入到系统配置 1.4 拦截器实现原理1.4.1 实现流程图1.4.2 实现…

LeetCode:3. 无重复字符的最长子串

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 题解目录 一、🌱[3. 无重复字符的最长子串](https://leetcode.cn/problems/l…

分享维修一例DELL R540服务器黄灯无法开机故障

DELL PowerEdge R540服务器故障维修案例:(看到文章就是缘分) 客户名称:东莞市某街道管理中心 故障机型:DELL R540服务器 故障问题:DELL R540服务器无法开机,前面板亮黄灯,工程师通过…

私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具…

javaee jstl表达式

jstl是el表达式的扩展 使用jstl需要添加jar包 package com.test.servlet;import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import javax.servlet.ServletException; import javax.servlet…

【C++】面向对象三大特性之继承

【C】面向对象三大特性之继承 继承的概念继承基类成员访问方式的变化子类到父类对象之间赋值兼容转换继承中的作用域子类的默认成员函数继承和友元、静态成员的关系菱形继承和菱形的虚拟继承虚拟继承解决二义性和数据冗余 继承的概念 继承:是面向对象程序设计使代码…

解析Android VNDK/VSDK Snapshot编译框架

1.背景 背景一: 为解决Android版本碎片化问题,引入Treble架构,它提供了稳定的新SoC供应商接口,引入HAL 接口定义语言(HIDL/Stable AIDL,技术栈依然是Binder),它指定了 vendor HAL 和system fr…

动态规划01背包之416分割等和子集(第10道)

题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例: 解法: 先复习一下01背包问题: dp[i][j]的含义:从下标为[0-i]的物品里…

【Spring Boot】Spring Boot的系统配置 — 日志配置

日志配置 日志对于系统监控、故障定位非常重要,比如当生产系统发生问题时,完整清晰的日志记录有助于快速定位问题。接下来介绍Spring Boot对日志的支持。 1.Spring Boot日志简介 Spring Boot自带spring-boot-starter-logging库实现系统日志功能&#…

基于linux下的高并发服务器开发(第一章)- 目录操作函数

09 / 目录操作函数 &#xff08;1&#xff09;int mkdir(const char* pathname,mode_t mode); #include <sys/stat.h> #include <sys/types.h>int mkdir(const char *pathname, mode_t mode); 作用&#xff1a;创建一个目录 参数&#xff1a; pat…

固态硬盘SSD选型测试大纲

一&#xff0c;前言 目前不仅仅是家用电脑系统盘很多都采用了固态硬盘&#xff0c;很多工业产品也选用固态硬盘作为存储介质&#xff0c;这主要得益于固态硬盘相对于机械硬盘的优势。 固态硬盘(Solid State Disk)都是由主控芯片和闪存芯片组成&#xff0c;简单来说就是用固态电…

Python编程从入门到实践_5-10 检查用户名_答案

#《Python编程从入门到实践》&#xff0c;动手试一试&#xff0c;5-10检查用户名&#xff0c;答案。2023-07-15,by qs。 current_users [AaA,bBb,CcC,DdD,EeE] new_users [AAA,bbb,abc,def,hij] for new_user in new_users:current_users_1 []for current_user in current_u…

安达发|汽车零部件行业追溯系统的应用

汽车行业正处于一个蓬勃发展的阶段&#xff0c;随着客户需求的不断变化&#xff0c;生产厂商推出新款商品的速度也越来越快&#xff0c;新项目和变更的不断出现&#xff0c;就可能导致在交付的产品质量方面遇到各种各样的问题。如果这些质量问题得不到及时有效地追溯和控制&…

华为模拟器eNSP过程中所遇问题(40错误)与解决办法

1. 版本 2.打开ensp开启AR2204&#xff0c;报错40 3.弹出文档&#xff0c;挨着试一遍先 安装eNSP的PC上是否存在名为“VirtualBox Host-Only Network”的虚拟网卡 需要启用。虚拟网卡的设置是否符合以下要求&#xff1a;IP地址为192.168.56.1&#xff0c;子网掩码为255.255.2…

Typora设置Gitee图床,自动上传图片

之前写了一篇同类型文章&#xff1a;如何将Typora中图片上传到csdn 实现了Typora本地编辑的内容中的图片&#xff0c;可以直接复制到csdn上进行发布。但是在使用过程中发现sm.ms这个图床站不是很稳定&#xff0c;即使用了翻墙也不稳定。 这篇文章推荐使用Gitee作为图床&#xf…

C++教程(六)——数组

1 数组 1.1 概述 所谓数组&#xff0c;就是一个集合&#xff0c;里面存放了相同类型的数据元素 **特点1&#xff1a;**数组中的每个数据元素都是相同的数据类型 **特点2&#xff1a;**数组是由连续的内存位置组成的 12 一维数组 1.2.1 一维数组定义方式 一维数组定义的三…