LLDP 链路层发现协议

LLDP

LLDP简介

定义

LLDP(LLDP,Link Layer Discovery Protocol,链路层发现协议)是IEEE 802.1AB中定义的第二层发现协议。通过采用LLDP技术,在网络规模迅速扩大时,网管系统可以快速掌握二层网络拓扑信息和拓扑变化信息。

目的

为了方便WLAN网络的维护监控,网管需要展示有线无线一体化的拓扑关系,即展示AP的邻居关系(包括AP以及AP直连的交换机)。通过LLDP标准协议,AP将本地LLDP信息通过标准的LLDP TLV(Type Length Value,类型长度值)定期向邻居发送组播报文。如果邻居AP也使能了LLDP功能,则双方建立邻居关系,如果AP上行口连接的是交换机(具备LLDP功能的设备),同时该交换机使能了LLDP功能,则交换机也将是AP的邻居,AP将向交换机发送LLDP信息,同时接收交换机发送的LLDP组播报文。网管通过SNMP协议获取AP的LLDP信息,维护拓扑信息。 LLDP协议规定设备的每个接口上都有标准的SNMP(Simple Network Management Protocol)MIB库,存储着本地状态信息(例如设备ID、接口ID、管理地址等信息),并且设备可以向其邻居节点发送本地状态信息及状态更新的信息。邻居节点将接收到的信息存储在标准的SNMP MIB库中以便网管系统提取。 网管系统从管理范围内的所有设备的本地MIB和远端MIB处收集拓扑信息,并分析出当前网络第二层的拓扑结构以及拓扑结构中存在的问题。

受益

企业或运营商通过该功能可以清楚的了解整个网络的拓扑结构,给设备管理和故障排查带来便利,并节省大量人力物力。

LLDP基本概念

LLDP报文

封装有LLDPDU的报文称为LLDP报文,其封装格式有两种:Ethernet II和SNAP(Subnetwork Access Protocol,子网访问协议)。

Ethernet II格式封装的LLDP报文

如图 1所示,是以Ethernet II格式封装的LLDP报文,其中各字段的含义如下:

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

表1 Ethernet II格式封装的LLDP报文

LLDP 链路层发现协议_第1张图片
图 1 Ethernet II格式封装的LLDP报文

SNAP格式封装的LLDP报文

如图 2所示,是以SNAP格式封装的LLDP报文,其中各字段的含义如下:

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

表2 SNAP格式封装的LLDP报文

LLDP 链路层发现协议_第2张图片
图 2 SNAP格式封装的LLDP报文

LLDPDU

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

如图 3所示,每个LLDPDU共可携带28种TLV,其中深蓝色的Chasis ID TLV、Port ID TLV、TTL TLV和End TLV这四种是必须携带的,其余的TLV则为可选携带。

图 3 LLDPDU

TLV

TLV是组成LLDPDU的单元,每个TLV都代表一个信息。LLDP可以封装的TLV包括基本TLV、802.1组织定义TLV、802.3组织定义TLV和LLDP-MED(Media Endpoint Discovery,媒体终端发现) TLV。

基本TLV是网络设备管理基础的一组TLV,802.1组织定义TLV、802.3组织定义TLV和LLDP-MED TLV则是由标准组织或其他机构定义的TLV,用于增强对网络设备的管理,可根据实际需要选择是否在LLDPDU中发送。

基本TLV

在基本TLV中,有几种TLV对于实现LLDP功能来说是必选的,即必须在LLDPDU中发布,如表3所示。

TLV名称 说明 是否必须发布
End of LLDPDU 标识LLDPDU结束
Chassis ID 发送设备的桥MAC地址
Port ID 标识LLDPDU发送端的端口。当设备不发送MED TLV时,内容为端口名称;当设备发送MED TLV时,内容为端口的MAC地址,没有端口MAC时使用桥MAC
Time To Live 本设备信息在邻居设备上的存活时间
Port Description 以太网端口的描述字符串
System Name 设备的名称
System Description 系统描述
System Capabilities 系统的主要功能以及已使能的功能项
Management Address 管理地址,以及对应的接口号和OID(Object Identifier,对象标识)

表 3 基本TLV

802.1组织定义TLV

IEEE 802.1组织定义TLV的内容如表4所示。

|TLV名称|说明|
|:---:|:---:|:---:|
|Port VLAN ID|端口的VLAN ID|
|Port And Protocol VLAN ID|端口的协议VLAN ID|
|VLAN Name|端口VLAN的名称|
|Protocol Identity|端口支持的协议类型|
表 4 IEEE 802.1组织定义的TLV

802.3组织定义TLV

IEEE 802.3组织定义TLV的内容如表 5所示。

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

LLDP-MED TLV

LLDP-MED TLV为VoIP(Voice over IP,在IP上传送语音)提供了许多高级的应用,包括基本配置、网络策略配置、地址信息以及目录管理等,满足了语音设备的不同生产厂商在成本有效、易部署、易管理等方面的要求,并解决了在以太网中部署语音设备的问题,为语音设备的生产者、销售者以及使用者提供了便利。LLDP-MED TLV的内容如表 6所示。

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

表6 LLDP-MED TLV

MIB

MIB用于管理通过LLDP收到的信息数据库。

MIB数据库分为

LLDP Local System MIB LLDP Remote System MIB
用来保存本地设备信息。包括设备ID、接口ID、系统名称、系统描述、接口描述、设备能力、网络管理地址. 用来保存相邻设备的信息。包括设备ID、接口ID、系统名称、系统描述、接口描述、设备能力、网络管理地址.

表7 MIB数据库

LLDP Agent

LLDP代理用于管理接口的LLDP
操作,主要完成下列任务:

  • 维护LLDP本地MIB的信息。
  • 维护LLDP远端MIB库。
  • 在本地状态发生变化的情况下,提取LLDP本地MIB信息并向邻居节点发送。在本地状态没有变化的情况下,按照一定的周期提取
    LLDP本地MIB信息向邻居节点发送。
  • 识别并处理收到的LLDP报文。
  • LLDP本地MIB或LLDP远端MIB的状态发生变化的情况下,向网管发送LLDP告警。

管理地址

管理地址是供网络管理系统标识网络设备并进行管理的地址。管理地址可以明确地标识一台设备,从而有利于网络拓扑的绘制,便于网络管理。管理地址被封装在LLDP报文的Management Address TLV中向外发布。

LLDP告警

LLDP告警是在LLDP本地MIB库或远端MIB库发生变化的情况下,设备向网管系统发送的更新拓扑的提示信息。触发告警的原因为:

  • 全局LLDP使能的状态变化。
  • 本地管理地址改变。
  • 邻居信息发生变化,包括添加删除老化邻居。

LLDP工作机制

LLDP的工作模式

LLDP有以下四种工作模式:

  • TxRx:既发送也接收LLDP报文。
  • Tx:只发送不接收LLDP报文。
  • Rx:只接收不发送LLDP报文。
  • Disable:既不发送也不接收LLDP报文。

当端口的LLDP工作模式发生变化时,端口将对协议状态机进行初始化操作。为了避免端口工作模式频繁改变而导致端口不断执行初始化操作,可配置端口初始化延迟时间,当端口工作模式改变时延迟一段时间再执行初始化操作。

LLDP报文的发送机制

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

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

LLDP报文的接收机制

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

总体结构

LLDP是一个二层拓扑结构发现协议,其基本原理是:网络中设备向其邻接设备发出其状态信息的通知,并且所有设备的每个端口上都存储着自己的信息,如果本地设备有状态发生变化,还可以向与它直接连接的近邻设备发送更新的信息,近邻的设备会将信息存储在标准的SNMP MIB库。网络管理系统可以从SNMP MIB库查询出当前第二层的连接情况。需要注意的是,LLDP只是一个远端设备状态信息发现协议,它并不能完成网络设备配置和端口控制等功能。 为了更好的说明LLDP协议实现原理,我们首先看一下LLDP
的框架结构图,如图4所示

我们可以看到图中右边出现的四个MIB库:

PTOPO MIB Entity MIB Interface MIB Other MIB
物理MIB MIB实体 MIB接口 其他MIB

LLDP模块就是通过与设备上的这些MIB的交互,来更新自己的LLDP local system MIB库以及自己定义的LLDP扩展MIB(图中的
Organizationally defined local device LLDP MIB
extension),然后通过LLDP的帧,将自己的相关信息通过连接到远端设备的接口,发送给远端设备。

同时,它接收远端设备发过来的LLDP帧,来更新LLDP remote system MIB即LLDP远端系统MIB库。这样,此设备会通过所有连接到相邻设备上的接口,来更新或者维护自己的远端LLDP
系统MIB库。通过这个MIB库,就很清楚的知道了自己相邻的设备
的信息,包括连接的是远方设备的哪个接口,连接的远端设备的桥
MAC地址等等。整个LLDP模块的收发信息,都是通过MIB来组织的,其基本实现原理就是这样。总的来说,LLDP
协议需要完成的工作主要有以下几个方面:

  • 初始化并维护本地 MIB库中的信息。
  • 从本地MIB库中提取信息,并将信息封装到LLDP帧中,以一定的时间间隔或者当设备状态发生变化时,将LLDP帧发送出去,通告邻接设备。
  • 对收到的LLDP帧进行确认和处理。
  • 通过收到的LLDP帧维护远端设备LLDP MIB信息库。
  • 当Local System MIB或Remote System MIB中有信息发生变化时,向网管上报。
LLDP 链路层发现协议_第3张图片
图4 结构图

其他注意

LLDP参数

拓扑发现过程中,适当调整LLDP参数能够及时有效地发现拓扑结构,并且减少资源的浪费。LLDP参数包括:

  • 发送LLDP报文的周期
  • 发送LLDP报文的延迟时间
  • 本地信息在邻居节点中保持的时间倍数
  • 接口LLDP功能重新使能的延迟时间发送
  • LLDP告警的延迟时间

发送LLDP报文的周期

设备状态没有变化的情况下,设备周期性的向邻居节点发送LLDP报文,该间隔时间称为发送LLDP报文的周期。 配置该周期之后,设备上每一个使能LLDP功能的接口都以该间隔为周期向邻居节点发送LLDP报文,但是各个接口发送报文的时间点可以不一致。通过调整该参数能够调整网络拓扑的发现速率。
需要根据网络负载适当调节该参数:

  • 取值大,能够减少LLDP报文交互频率,从而节省系统资源。但是取值过大会导致设备状态不能及时地通知到邻居节点,从而影响网络拓扑结构的及时发现。
  • 取值小,能够增加本地状态信息向邻居节点发送的频率,从而能够及时发现网络拓扑结构。但是取值过小会导致LLDP报文交互过于频繁,从而增加系统的负担,造成资源浪费.

发送LLDP报文的延迟时间

设备状态发生变化的情况下,AP会立即向邻居节点发送LLDP报文,并启动定时器。若在延迟时间内设备的状态发生变化,AP不会立即发送LDP报文;直到定时器超时后,AP才会将当前设备的最新状态发送给邻居节点,并再次启动定时器。若在延迟时间内设备的状态没有发生变化,AP会在下一个周期向邻居节点发送LLDP报文。

当设备的状态频繁发生变化的情况下,增加该参数取值能够减少
LLDP模块向邻居节点发送信息的频率。同时需要根据网络负载适当调节该参数:

  • 取值大,能够减少LLDP报文交互频率,从而节省系统资源。但是取值过大会导致设备状态不能及时地通知到邻居节点,从而影响网络拓扑结构的及时发现。
  • 取值小,能够增加本地状态信息向邻居节点发送的频率,从而能够及时发现网络拓扑结构。但是取值过小会导致LLDP报文交互过于频繁,从而增加系统的负载,造成资源的浪费。
    发送LLDP报文的周期必须大于等于四倍的LLDP报文发送延迟时间。该周期时间和延迟时间在报文的发送中的关系如
    图所示


    LLDP 链路层发现协议_第4张图片
    图5 发送LLDP报文的延迟时间

本地信息在邻居节点中保持的时间倍数

消息保持时间的倍数用于计算发送的LLDP报文在邻居节点中保存的有效时间。通过修改该参数的取值能够调整本地设备的信息在邻居节点中储存的有效时间。邻居节点接收到报文后,用这个有效时间更新其邻居节点(即发送端)的信息老化时间。
消息保持有效时间计算公式是:
TTL=Min(65535,(interval*hold-mulitiplier)),
其中:

  • TTL代表Time To Live,表示设备信息在邻居节点中保持的时间,取65535和interval*hold-multiplier中的最小值。
  • interval代表设备向邻居节点发送LLDP报文的周期。
  • hold-multiplier代表设备消息在邻居节点中保持的倍数。

功能重新使能的延迟时间

通过命令手工切换接口的LLDP功能为使能状态时,如果配置了
LLDP功能重新使能的延迟时间,AP会等待一段时间后,再将状态变化的消息通知邻居节点。通过该参数可以防止由于LLDP
功能状态频繁切换,导致邻居节点拓扑振荡。
丢弃邻居节点数 配置LLDP告警延迟时间后,每一个使能LLDP
功能的接口都以该值为最小延迟时间向网管系统发送邻居信息变化告警,但是各个接口发送告警的时间点可以不一致。当邻居
信息频繁发生变化的时候,延长该延迟时间来减少设备频繁向网管系统发送信息,以达到抑制拓扑振荡目的。

参考:

  • http://www.h3c.com.cn/Products___Technology/Technology/LAN/Other_technology/Technology_recommend/200805/605853_30003_0.htm#_Toc227407544

  • http://wenku.baidu.com/link?url=87AQv787F8tfmXsJBYr5_UgqNdBV7ru503pXemm76aUKvNJRql5Eqlh2JaY1kZL9TV9Q0f7B7hLdWEdgeUFTr9fBTR0Dmdg1WCIpLfMWP8i

你可能感兴趣的:(LLDP 链路层发现协议)