LLDP鏈路層發現協議詳解
LLDP(鏈路層發現協議)是定義在802.1ab中的一個二層協議,接入網絡的設備可以通過其,將管理地址、設備標識、接口標識等信息發送給同一個局域網絡的其它設備。
LLDP 幀格式
封裝有 LLDP DU 的報文稱為 LLDP 幀,其封裝格式有兩種:Ethernet II 和 SNAP(Subnetwork Access Protocol,子網訪問協議)。
Ethernet II 格式封裝的 LLDP 幀
其中各字段的含義如下:
DA:目的 MAC地址,為固定的組播 MAC地址 0x0180-C200-000E。
SA:源 MAC地址,為端口 MAC 地址或設備 MAC 地址(如有端口地址則用端口 MAC 地址,否則用設備 MAC 地址)。
Type:幀類型,為 0x88CC。
Data:數據,為 LLDPDU。
FCS:幀檢驗序列。
SNAP 格式封裝的 LLDP 幀
各字段的含義如下:
DA:目的 MAC 地址,為固定的組播 MAC 地址 01-80-C2-00-00-0E。
SA:源 MAC 地址,為端口 MAC 地址或設備 MAC 地址(如果有端口地址則用端口 MAC 地址,否則用設備 MAC 地址)。
Type:幀類型,為 0xAAAA-0300-0000-88CC。
Data:數據,為 LLDPDU。
FCS:幀檢驗序列。
LLDP 工作機制
LLDP 是一個用於信息通告和獲取的協議,但是需要注意的一點是,LLDP 發送的信息通告不需要確認,不能發送一個請求來請求獲取某些信息,也就是說 LLDP 是一個單向的協議,只有主動通告一種工作方式,無需確認,不能查詢、請求(比如像 ARP 協議那樣請求某個 IP 的MAC 地址)。
LLDP 主要完成如下工作:
1.初始化並維護本地MIB 庫中的信息。
2.從本地 MIB 庫中提取信息,並將信息封裝到 LLDP 幀中。LLDP 幀的發送有兩種觸發方式,一是定時器到期觸發,一是設備狀態發生了變化觸發。
3.識別並處理接收到的 LLDP DU 幀
4.維護遠端設備 LLDP MIB 信息庫。
5.當本地或遠端設備 MIB 信息庫中有信息發生變化時,發出通告事件。
LLDP DU 發送機制
LLDP DU 的發送可以被如下事件觸發:
- 與本地 MIB 信息庫相關聯的定時器 tx TTR 到期時,這將確保遠端接收系統中的相關信息不會因為 TTL 到期而過期。
- 本地 MIB 信息庫中的信息發生了改變時,會立即發送 LLDP DU,這將保證改變能及時被更新。
- 如果一個“新鄰居”被識別,將會啟用快速發送機制,在很短的時間內連續發送指定數量(txFastInit,默認值為4)的 LLDP DU,以確保“新鄰居”能被快速更新。如果遠端系統MIB信息庫因為過載(tooManyNeighbors)而不能容納新的鄰居信息,則會為了避免過多的 PDU傳輸而抑制快速發送行為。
LLDP DU 接收機制
LLDP 幀的接收由3個階段組成:幀的識別、幀的校驗以及 LLDP 遠端 MIB 信息庫更新。
幀的識別
幀識別由在 LLDP/LSAP(鏈路服務訪問點)進行,檢查的內容是幀的目的地是否是 LLDP 的組播 MAC 地址,幀的類型是否是 LLDP。
幀的驗證
該過程會首先根據 TLV 的格式定義依次校驗 Chassis ID TLV,Port ID TLV, Time To Live TLV,如果這三個TLV都存在且有效,才會進一步的解碼可選的 TLV 直到遇到 End Of LLDPDU TLV,然后根據獲得的信息更新遠端 MIB 信息庫。
遠端MIB 信息庫更新
在前兩步都通過之后,LLDP DU 的接收者就需要根據解析出來的信息更新遠端 MIB 信息庫。在 MIB 信息庫中,LLDP 使用 chassis ID + Port ID 來標識、存儲來自不同源的信息。
- 如果遠端 MIB 庫中已經有對應於該 chassis ID + Port ID 的信息,則使用收到的幀中的新的 TTL 來更新 TTL。並用對於收到的新的 LLDPP DU 中的每一種 type,如果有變化就進行更新,如果某種 type 原來不存在,則需要將其添加到MIB庫中。
- 如果實現不支持某種類型的 type,則:
- 如果 type 不是 127,則按照基本 TLV 的格式將其存儲到遠端MIB庫,存儲格式為 type, length,value。
- 如果 type 是127,則按照組織定義TLV的格式將其存儲到遠端MIB庫,存儲格式為 type, length,value,OUI,組織自定義子類型,以及信息域。
更新時,如果需要添加新的 chassis ID + Port ID 的表項,或者為某個 chassis ID + Port ID添加新的 TLV,則可能遇到沒有內存的問題,標准沒有規定必須如何處理,只是給出了一些建議:
• 忽略新的 LLDP DU 的信息
• 刪除最舊的信息以釋放空間給新的信息
• 隨機刪除一些舊的信息以釋放空間給新的信息
LLDP DU 攜帶的TTL(Time To Live)值會影響接收端的處理方式,如果它不為0,則更新相應信息的老化時間,如果接收到的 LLDPDU 中的 TTL 等於0,則將立刻老化掉相應的信息(即與該 LLDP DU 的發送者相關的MIB信息)。
如果一個 chassis ID+Port ID 標識的信息的 TTL 超時,則相應的 MIB 信息會被刪除。
LLDP 工作模式
LLDP 工作模式:
• TxRx:既發送也接收 LLDP 幀。
• Tx:只發送不接收 LLDP 幀。
• Rx:只接收不發送 LLDP 幀。
• Disable:既不發送也不接收 LLDP 幀(准確的說,這並不是一個 LLDP 的狀態,這可能是• LLDP 功能被關閉了,也可能是設備就不支持)。
由於 LLDP 可以單獨工作在發送或接收模式下,因此 LLDP 協議的實現需要支持單獨初始化發送或者接收功能。當工作模式發生變化時,需要根據老的/新的工作模式來關閉/打開發送或者接收的功能。