a) 返回值应该为最合适管理使用的,典型的,例如一个像IPv4一样的三层地址,
192.168.254.10
b) 如果管理地址可用,返回地址应为站或端口的MAC地址。
Interface numbering subtype (接口的编号类型)应当包含一个整型值,来表明定义接口编号所使用的方法。目前定义了三个值。Unknown、ifIndex、System Port number; 6. 组织特定TLVs
这个TLV类提供来允许不同的组织如IEEE 802.1、IEEE 802.3、IETF 以及一些个体软件商或设备制作商来定义TLV,用以向使用相同影音的实体广播信息。必须遵循如下规定:
a) 组织特定TLV发送的信息是一个单向的通知。此TLV不能请求回复也不能确认回
复。
b) 组织特定TLV发送的信息应当与从远端端口接收到的TLV信息不想关。
c) 组织特定TLV与另一个TLV在相同媒体上发送的消息应该不相关,这提供了一种
信息量大于单个TLV所容纳信息量的消息的发送方法。
d) 收到的组织特定TLV中的消息不应当被系统中的其他端口向前确认。 e) 组织特定TLV的确认方法稍后介绍;
每一套组织特定TLVs应当包含相关的LLDP MIB 扩展以及相关的TLV选择管理变量和MIB/TLV 交叉参考表。
实施LLDP的系统以及支持为组织特定TLV扩展集制定的标准协议的系统应当支持所有的TLVs和为特定TLV集制定的扩展LLDP MIB。(这段太纠结了。。) 6.1)组织特定TLV基本格式 TLV类型 :相同的类型值-127,被所有的组织定义的TLVs所采用。 TLV信息字符串长度:长度域应包含信息字符串的长度,按字节方式。 组织特定标示符:见IEEE Std 802-2001 t条款9所定义。 组织定义子类型:组织定义的子类型域包含一个该组织定义的特殊的子类型值。 组织定义的信息字符串:组织定义信息字符串的实际格式是组织特定的并且可以
a) 包含TLV类型或子类型的特殊的二进制或者文字字符信息 ,文字字符信息应当用
UTF-8编码。
b) 包含一个或多个信息域,像Management Address TLV 一样带有相应的域类别标示
符以及域长指示符。 6.2)组织特定TLV使用规则
每个组织定义了他们各自的组织特定TLV ,这些TLV应当包含一个定义了特定使用规则和特定情形的分条款, 来决定LLDP接受代理如何处理TLV。 组织特定TLV使用规则应当包括:
a) 组织特定TLV的数量应该包含在LLDPDU中,以及能够表明两个具有相同OUI和
组织定义子类型的TLV之间差别的额外域子类型信息。 b) 任何特定的错误情况和行为应当被已定义的错误情形处理。(不太会翻译)
THE PROTOCOL (协议)
这一条描述了单一端口上的本地LLDP代理管理LLDP操作的相关协议。 LLDP代理负责发起以下任务:
a) 获取本地系统MIB的中最近信息。
b) 当系统条件或状态改变时提取本地系统MIB中的信息并按一定格式组包,然后定期向
远端LLDP代理端口发送。 c) 识别并处理接收到的LLDP帧。 d) 获取远端系统MIB中的最近信息。
e) 当本地或远端系统MIB中的一个值或状态变化发生时,设置变量somethingChangedLocal
和 somethingChangedRemote 来通知 PTOPOMIB 管理 和其他可选MIBs的MIB管理。 LLDP支持三种操作模式:只发送,只接收,同时发送和接收。 1. 协议初始化
因为本地LLDP代理被配置成同时发送和接受LLDP数据帧,只发送LLDP数据帧,只接收LLDP数据帧,所以需要分离帧发送和接收的相关协议初始化程序。 1.1) LLDP传输模块初始化
在传输模块的初始化和重新初始化过程中,本地LLDP代理将执行以下任务: a) 如果可用,本地LLDP系统MIB中的不变配置将恢复,或者给所有的LLDP配置
变量指定恰当的默认值。
b) 使用合适的本地物理拓扑信息初始化内部数据结构。 c) 设置somethingChangedLocal 为FALSE
d) 以下与时间相关的参数设置为合适的值。reinitDelay、msgTxHold、msgTxInterval、
TxDelay。
e) 检查变量adminStatus 决定初始化是否进一步执行。如果值为 ‘disabled‘,那么
直到变量portEnabled为真且adminstatus的值为下列之一,LLDP发送初始化才进行。EnableTxRx或enableTxOnly 1.2) LLDP接收模块初始化
当变量portEnabled为真,LLDP接收模块被初始化或重新初始化来接受数据帧。这个过程中,本地LLDP代理激昂执行下列任务: a) 设置tooManyNeighbors 为假。
b) 查看adminStatus 以决定初始化是否继续进行,如果值为 ‘disabled‘ LLDP 接
收初始化将停止,直到adminStatus变为“enabledTxRx”或“enabledRxOnly”。 c) 这个端口的远端系统MIB中的所有信息将被删除。
2. 数据帧的传输
数据帧的传送由LLDP MIB 管理和LLDP 传输模块共同负责。LLDP传送如下文所述:
a) 当下述事件任何一件发生时,一个准备发送的活跃端口将发起一次LLDP
帧传输。1)与LLDP本地系统MIB相关的传输倒计时定时器、txTTR到期。2)本地LLDP系统MIB中的一个或多个对象状态发生改变。
b) 为了防止由于本地LLDP系统MIB对象短期内快速变化引起的LLDP数
据帧的频繁发送、也为了增加每个数据帧中报告的变化数量,本地LLDP将通过传输延迟定时器的变量值的设定来限制数据帧的传输速率。传输延迟定时器的值由网络管理设定。
c) 如果数据帧的传输不是被限定在单一端口而是通过同一局域网段相关的
一组端口,LLDP代理将限定在一个传输周期内的多数据帧传输。这种情
况下,应当选择端口组中的一个端口来代表整个组。LLDP代理应当代表端口组作为“底板”。
d) 为防止同步的影响在同一个多端口实现中的不同端口的实际传输时间间
隔应错开。
2.1) LLDPDU的构建 定义了两类LLDPDU:
a) 普通LLDPDU 目的是提供关于本地站的管理信息。
b) 特殊的shutdown 公告LLDPDU,表明远端LLDP代理的远端系统
MIB中的与本站相关的信息将要无效。
2.1.1)正常LLDPDU的构建 LLDP本地系统MIB中应当包含构建个体TLV所需要的信息,应当能够允许网络管理选择将要包含在LLDPDU中可选TLVs。 当新的传输周期请求一个LLDP使能端口时,LLDP MIB管理将从LLDP本地系统MIB中提取出所选信息,并构建一个LLDPDU.(1)这个LLDPDU包括:Chassis ID TLV、Port ID TLV、 Time To Live TLV (TTL值与txTTL相同)。(2)额外的可选TLVs 可以是选自基础管理集或者来自一个或多个组织特定集,必须在LLDPDU长度限制允许之内,且被网络管理从本地系统MIB中选出。(3)一个 End Of LLDPDU TLV。
可选TLV可以来自基础管理集,像 Management Address TLV (有不同的TLV 类型和子类型)或者具有不同OUI和组织定义子类型(来自一个或多个组织特定集)都可以包含在同一个LLDPDU中。
当LLDPDU创建完成,MIB管理将初始化LLDP 本地系统MIB中的txTTR 定时器。
2.1.2)Shutdown LLDPDU construction
当LLDP代理得知一个相关的端口将变的不可操作,一段特殊的程序用来处理这种情况。一个最新配置LLDP帧传输使能的端口,如果变为disabled或接口管理性的disabled,一个LLDP shutdown将会发出。它包括Chassis ID 和 Port ID TLVs,Time To Live (TTL域设为0),End Of LLDPDU TLV。此LLDPDU应不包含任何可选TLV并且应在端口非使能前发出。
NOTE:有一种内在的竞争机制,使得接口在知道它将会关闭之前再多发送一帧数据包。如果可以,连接应该在这个帧发送出去之后中断。在事件adminStatus过度到disabled状态中,LLDP代理将会关闭,那么关闭程序应当被所有的本地端口所执行。
2.2) LLDP数据帧的格式和传输 在接受一个LLDPDU之前,LLDP发送模块应该:
a) 向LLDPDU中添加合适的目的地址、源地址以及LLDP以太网类型完成
MA_UNITDATA的构架
b) 利用LLC服务向MAC传递MA_UNITDATA.request 进行数据帧最后的
组包和传输。
c) 增加statsFramesOutTotal 计数器。
3. 数据帧的接受
LLDP数据帧的接收包括三部分:数据帧识别、数据帧确认、LLDP远端系统MIB更新。所有的错误检查是在数据帧确认阶段进行的。
3.1)LLDP数据帧识别
数据帧的识别是在LLDP/LSAP进行的,下面的帧参数将被检查以确定是否:
a) 目的地址值 是(8.1中定义的)LLDP_Multicast Address 。
b) 以太网类型值是特殊帧格式(8.3中定义的)的LLDP以太网类型。
如果上述两个条件都成立,全局变量rcvFrame 将被设置为真,数据帧被发往LLDP接收模块进行确认。 3.2)LLDPDU 确认
接收模块将处理接收到的每个LLDPDU。端口的statsFramesInTotal计数器将增加,检查确认在LLDPDU的开头是否有3个强制TLV。 a) 提取第一个TLV
1) 如果提取出的TLV类型值不等于1,TLV不是一个Chassis ID TLV:
i)这个LLDPDU将被丢弃。
ii)statsFramesDiscardedTotal 和 statsFramesInErrorsTotal 计数器都将增加。 iii)变量 badFrame将被设为TRUE iv) 程序rxProcessFrame()将被终止 2) 如果提取出的TLV类型为1,chassis ID TLV 信息字符串长度不在2~256 范围
内:
i)这个LLDPDU将被丢弃。
ii)statsFramesDiscardedTotal 和 statsFramesInErrorsTotal 计数器都将增加。 iii)变量 badFrame将被设为TRUE iv) 程序rxProcessFrame()将被终止 3) 如果提取出的TLV类型为1,且chassis ID TLV信息长度在2~256范围内,chassis
ID的值被提取出,并成为MSAP identifier的第一部分。
b) 第二个TLV被提取:
1) 如果提取出的TLV类型值不等于2,TLV不是一个Port ID TLV:
i)这个LLDPDU将被丢弃。
ii)statsFramesDiscardedTotal 和 statsFramesInErrorsTotal 计数器都将增加。 iii)变量 badFrame将被设为TRUE iv) 程序rxProcessFrame()将被终止 2) 如果提取出的TLV类型为2,Port ID TLV 信息字符串长度不在2~256 范围内:
i)这个LLDPDU将被丢弃。
ii)statsFramesDiscardedTotal 和 statsFramesInErrorsTotal 计数器都将增加。 iii)变量 badFrame将被设为TRUE iv) 程序rxProcessFrame()将被终止
如果提取出的TLV类型为2,且Port ID TLV信息长度在2~256范围内,Port ID的值被提取出,附加到chassis ID 值的后面来完成MSAP identifier 的构建。 c) 第三个TLV被提取出:
1) 如果提取出的TLV类型值不等于3,TLV不是一个Time To Live TLV:
i)这个LLDPDU将被丢弃。
ii)statsFramesDiscardedTotal 和 statsFramesInErrorsTotal 计数器都将增加。 iii)变量 badFrame将被设为TRUE iv) 程序rxProcessFrame()将被终止 2) 如果提取出的TLV类型为3,Time To Live TLV 信息字符串长度不在2~256 范
围内: