其他分享
首页 > 其他分享> > 数据链路层学习之LLDP

数据链路层学习之LLDP

作者:互联网

数据链路层学习之LLDP

2013年09月02日 20:38:36  阅读数 42323  

一、LLDP协议概述 

随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。 
LLDP(Link Layer Discovery Protocol,链路层发现协议)就是用于这个目的的协议。LLDP定义在802.1ab中,它是一个二层协议,它提供了一种标准的链路层发现方式。LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。当一个设备从网络中接收到其它设备的这些信息时,它就将这些信息以MIB的形式存储起来。
这些MIB信息可用于发现设备的物理拓扑结构以及管理配置信息。需要注意的是LLDP仅仅被设计用于进行信息通告,它被用于通告一个设备的信息并可以获得其它设备的信息,进而得到相关的MIB信息。它不是一个配置、控制协议,无法通过该协议对远端设备进行配置,它只是提供了关于网络拓扑以及管理配置的信息,这些信息可以被用于管理、配置的目的,如何用取决于信息的使用者。

二、LLDP结构

LLDP的框架结构如图所示:
此图也表明LLDP就是一个信息发现与通告协议,LLDP的实体主要维护了两个MIB库,一个 local system MIB,一个remote system MIB。从其名字也可以看出,一个用于维护本地相关的设备MIB信息,一个用于维护远端设备MIB信息。

LLDP通过与上图中右侧的几个MIB库交互来初始化并维护 local system MIB,并将本地的相关信息通告出去;同时当接收到来自其它设备的信息时就将其更新到remote system MIB中。通过这种工作方式,一个设备就可以将自己的信息通告出去并获得网络中其它设备的相关信息,最终获得反应网络拓扑以及其它配置信息的两个MIB库。这两个库可以被其用户用来完成各种功能。

需要说明的是LLDP信息的通告以及接收处理不受端口的STP状态的影响。

三、LLDP基本概念

1.LLDP帧格式

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

1.1 Ethernet II格式封装的LLDP帧 

  上图是以Ethernet II格式封装的LLDP帧,其中各字段的含义如下: 

1.2 SNAP格式封装的LLDP帧

 
上图是以SNAP格式封装的LLDP帧,其中各字段的含义如下: 

1.3 目地地址

目地地址实际上包括三个,分别为01-80-C2-00-00-0E,01-80-C2-00-00-03,01-80-C2-00-00-00。这三个地址分别用于不同的目地,它们可以跨越不同的网络。

 

TPMR以及S-VLAN,C-VLAN都是802.1Q中的概念,包括这三者的网络以及各个地址的作用范围如下图所示:

 

 

2. LLDPDU

 

LLDPPDU是LLDP的有效负载,用于承载要发送的消息。LLPDU的格式如下图所示:
  LLDPDU采用了TLV的格式,即type+lenght+value的格式,type表示TLV的类型,length是以字节为单位的TLV的长度,value是该TLV的值。其中Chassis ID TLV,Port ID TLV Time To Live TLV以及End Of LLDPDU TLV是强制的,必须包含的部分,除此之外在TLV Time To Live TLV和End Of LLDPDU TLV之间可以包含0个到多个可选的其它TLV。

3. TLV

TLV是组成 LLDPDU的单元,每个 TLV都代表一个信息。LLDPDU的TLV可以分为两大类:
TLV的基本格式如图所示:
  TLV的类型域的定义及分配如下图所示:
  其中type0-8属于基本的TLV集合。对于其中的Mandatory的TLV,它是必须包含在LLDP中的。
组织定义TLV集合的格式如下图所示:
  其中:

4. 基础TLV集合的TLV定义

几个强制的必须包含的TLV的定义如下。非强制的可以参考IEEE802.1AB。

4.1 End Of LLDPDU TLV

该TLV用于标识LLDPDU的结束。其格式如下:
  由于length=0,因此它不包含value域。

4.2 Chassis ID TLV

该TLV用于通告该LLDPDU发送者的chassis ID。由于有很多方式可用来标识一个chassis,因此在该类TLV中包含一个子类型域用于告诉接收者,发送者的chassis ID采用的是哪一种标识方式。其格式如图所示:
  每个LLDPDU必须包含且仅包含一个该类型的TLV。由于chassis ID实际上是用于标识设备的,因此在连接可用时它应该保持不变。
chassis子类型所可能的取值如图所示:
 

4.3 Port ID TLV

它用于标识发送该LLDPDU的设备的端口。类似于chassis ID,有很多方式可以标识一个Port,因此该TLV也包含一个子类型域。其格式如下图所示:
  每个LLDPDU必须包含一个且只能包含一个该类型的TLV。同时,当端口可用时,从该端口发送出去的LLDPDU的该TLV应该保持不变。
其子类型的可能取值如下图所示:
 

4.4 Time To Live TLV

该TLV用于告诉接收端,它接收到的这些信息的有效期有多长。其格式如图所示:
  TTL的时间单位是秒,由于只有2个字节长,因而最大有效时间是65536秒。如果在这个时间到期了还没有新的LLDPDU被收到,则该TLV所属的那个LLDPDU携带的信息会被从MIB中删除。如果收到了新的LLDPDU,则:
每一个LLDPDU必须包含且只能包含一个该类型的TLV。

四、工作机制

LLDP是一个用于信息通告和获取的协议,但是需要注意的一点是,LLDP发送的信息通告不需要确认,不能发送一个请求来请求获取某些信息,也就是说LLDP是一个单向的协议,只有主动通告一种工作方式,无需确认,不能查询、请求(比如像ARP协议那样请求某个IP的MAC地址)。
LLDP主要完成如下工作:
  1. 初始化并维护本地MIB 库中的信息。
  2. 从本地MIB 库中提取信息,并将信息封装到LLDP 帧中。LLDP帧的发送有两种触发方式,一是定时器到期触发,一是设备状态发生了变化触发。
  3. 识别并处理接收到的LLDPDU帧
  4. 维护远端设备LLDP MIB 信息库。
  5. 当本地或远端设备MIB信息库中有信息发生变化时,发出通告事件。

1.LLDPDU发送

1.1 发送机制

LLDPDU的发送可以被如下事件触发:
LLDP的常规发送时间是建立在系统的tick之上的,间隔为1秒一个,为了防止在共享介质的LAN(shared media LAN)中同时出现大量的LLDPDU(因为接入同一个LAN的多个系统的时间是同步的,因而多个系统上的基于tick的1秒定时器可能同时到期),发送定时器引入了一个随机的抖动,这就使得常规的LLDP帧的发送间隔时间的平均值仍是1秒,但是具体到某一次到期时间可能并不是准确的1秒。
同时为了防止在有多个端口需要发送LLDPDU的系统中,所有的端口的定时器都在同一时间到期,因而标准建议将采用某种机制将多个发送实例的定时器到期时间给错开,以避免一个系统在同一时刻发送大量的LLDPDU。

1.2 发送状态机

LLDPDU的发送状态机如图所示
  对于该状态机:

1.3发送定时器状态机

LLDP发送定时器状态机如图所示:
  localChange表示本地信息是否发生改变;txTTR表示下一次定时器到期的时间;newNeighbor表示是否发现了新的邻居,并由接收状态设置,由该状态机清除;txTick表示基于系统时间的1秒定时器是否到期。
对于该状态机:
这里有取值范围的几个变量都是可配置的变量。
从上述两个状态机的工作状态可以看出,发送定时器状态机用于维护信用量以及是否允许发送LLDPDU帧,而发送状态机根据这两个信息来决定是否发送。
另外需要注意的是LLDP所使用的所有定时器操作都是基于“基于系统时间的1秒定时器的”,每当这个定时器到期时它除了会将txTick设置为TRUE外,还会处理其它的定时功能。

2.LLDPDU 接收

2.1 接收机制

LLDP帧的接收由3个阶段组成:帧的识别、帧的校验以及LLDP远端MIB信息库更新。

2.1.1 帧的识别

帧识别由在LLDP/LSAP(链路服务访问点)进行,检查的内容是帧的目的地是否是LLDP的组播MAC地址,帧的类型是否是LLDP。

2.1.2 帧的验证

该过程会首先根据TLV的格式定义依次校验Chassis ID TLV,Port ID TLV, Time To Live TLV,如果这三个TLV都存在且有效,才会进一步的解码可选的TLV直到遇到End Of LLDPDU TLV,然后根据获得的信息更新远端MIB信息库。

2.1.3 远端MIB信息库更新

在前两步都通过之后,LLDPDU的接收者就需要根据解析出来的信息更新远端MIB信息库。在MIB信息库中,LLDP使用chassis ID + Port ID来标识、存储来自不同源的信息。

 

 

更新时,如果需要添加新的chassis ID + Port ID的表项,或者为某个chassis ID + Port ID添加新的TLV,则可能遇到没有内存的问题,标准没有规定必须如何处理,只是给出了一些建议:

LLDPDU 携带的TTL(Time To Live)值会影响接收端的处理方式,如果它不为0,则更新相应信息的老化时间,如果接收到的LLDPDU 中的TTL 等于0,则将立刻老化掉相应的信息(即与该LLDPDU的发送者相关的MIB信息)。
如果一个chassis ID + Port ID标识的信息的TTL超时,则相应的MIB信息会被删除。

2.2 接收状态机

LLDPDU的接收状态机如图所示:
 

3. LLDP工作模式

LLDP可以工作在多种模式下:
由于LLDP可以单独工作在发送或接收模式下,因此LLDP协议的实现需要支持单独初始化发送或者接收功能。当工作模式发生变化时,需要根据老的/新的工作模式来关闭/打开发送或者接收的功能。

标签:LLDP,发送,MIB,TLV,LLDPDU,信息,学习,链路层
来源: https://www.cnblogs.com/yechuan/p/11126291.html