链路层发现协议(LDP )是在802.1ab中定义的第2层协议,使得接入网络的设备可以将诸如管理地址、设备标识符、接口标识符等信息发送到同一LAN网络中的其它设备。
LDP帧格式
封装有LLDP DU的消息称为LLDP帧,其封装形式有以太网ii和snap(subnetworkaccessprotocol,子网访问协议)两种。
以以太网ii格式封装的LLDP帧
其中,各字段的含义是: DA :目的地MAC地址、固定组播MAC地址0x0180-C200-000E。
SA )源MAC地址、端口MAC地址或设备MAC地址(如果有端口地址,则为端口MAC地址,否则为设备MAC地址)。
类型:帧类型,0x88CC厘米。
数据:数据,液晶屏PDU。
FCS :帧检查序列。
以SNAP格式封装的LLDP帧
每个字段的含义是DA :目标MAC地址、固定多播MAC地址01-80-C2-00-00-0E。
SA )源MAC地址、端口MAC地址或设备MAC地址(如果有,则为端口MAC地址,否则为设备MAC地址)。
类型:帧类型,0xAAAA-0300-0000-88CC。
数据:数据,液晶屏PDU。
FCS :帧检查序列。
LDP的工作原理
请注意,LDP是用于信息通知和检索的协议,但LLDP发送的信息通知不需要确认,无法发送请求检索特定信息。 这意味着LLDP是单向协议,不需要确认,不能查询或请求。 例如,不能像ARP协议那样请求IP的MAC地址。
LDP主要执行以下任务: 1 .初始化并维护本地MIB库中的信息。
2 .从本地MIB库提取信息,并将其封装在LLDP帧中。 LDP帧的发送有两种触发方式:计时器期满触发和设备状态发生变化的触发。
3 .识别并处理接收到的LLDP DU帧
4 .维护远程设备LLDP MIB存储库。
5 .如果信息更改为本地或远程设备的MIB存储库,则发出通知事件。
LLDP DU发送机制
与本地MIB资料档案库关联的计时器tx TTR过期时,远程接收系统中的相关信息不会因TTL过期而过期的事件可以触发LLDP DU的发送。
如果本地MIB存储库中的信息发生更改,将立即发送LLDP DU以确保更改及时更新。
如果检测到“新邻居”,则启用快速发送机制以快速更新“新邻居”,并在短时间内连续发送指定数量的lldpdu(txfastinit,默认值为4 )。 如果远程系统的MIB存储库由于过载而无法容纳新邻居信息,则会抑制快速发送行为,以避免过度的PDU传输。
LLDP DU接收机制
LDP帧的接收由三个阶段组成:帧识别、帧检查和基于LLDP远程MIB信息的更新。
帧识别
帧的标识由链路服务接入点(LLDP/LSAP )完成,检查的内容是帧的目的地是否为LLDP的多播MAC地址以及帧的类型是否为LLDP。
验证框架
在此过程中,首先根据TLV的格式定义依次验证底盘id TLV、端口id TLV、时间到实时TLV,如果存在三个TLV且有效,则在遇到End Of LLDPDU TLV之前使用可选TLV
更新远程MIB存储库
通过前两个步骤后,LLDP DU的收件人需要根据分析的信息更新远程MIB信息库。 在MIB存储库中,LLDP使用底盘id端口id来标识和存储来自不同源的信息。 如果远程MIB库中已经有与底盘id端口id对应的信息,请使用接收到的帧的新TTL更新TTL。 对于接收到的新LLDPP DU中的每个type,如果有更改则进行更新,如果某个type原本不存在,则需要添加到MIB库中。
如果实现不支持特定类型的类型:
如果类型不是127,则以基本TLV格式保存在远程MIB库中。 保存格式为type、length和value。
如果类型为127,则以组织定义的TLV格式存储在远程MIB库中,包括类型、长度、值、OUI、组织自定义子类型和信息域。
更新时,如果需要添加新的chassis ID Port ID的表项,或者需要向某个chassis ID Port ID添加新的TLV,则可能会出现没有内存的问题。 虽然标准没有规定应该如何处理,但建议您忽略新LLDP DU的信息
删除最旧的信息为新信息释放空间
为了在新信息中释放空间,随机删除旧信息
LLDPDU持有的时间至活动(TTL )的值影响接收侧的处理方法,如果该值不是0,则更新相关信息的老化时间,如果接收到的LLDPDU的TTL为0,则立即更新相关信息(即,关于LLDPDU的发送者的MIB信息)
由chassis ID Port ID标识的信息的TTL超时时,相应的MIB信息将被删除。
LDP动作模式
发送和接收LDP操作模式: txrx:lldp帧。
tx :不接收lldp帧。
rx :只接收不发送lldp帧。
禁用:既不发送也不接收LLDP帧(准确地说,这不是LLDP的状态,LLDP功能可能已关闭或设备不支持)。
由于LLDP可以在发送模式或接收模式下单独运行,因此LLDP协议实现需要单独初始化发送或接收功能。 动作模式发生变化时,需要根据旧/新的动作模式关闭/打开发送或接收功能。