1. 程式人生 > >計算機網路中CDP,LLDP,STP的詳解

計算機網路中CDP,LLDP,STP的詳解

CDP,LLDP,STP知識詳解

(1) CDP   

    CDP(Cisco Discovery Protoco:Cisco發現協議)是Cisco專有的用來發現鄰接點的協議 ,所有的Cisco產品都支援CDP。CDP只顯示直接相連的鄰居資訊,如果中間隔了一個其他裝置,也就是跨裝置的話,CDP是不能發現的,所以CDP的目的是獲取直接相鄰裝置的資訊。CDP非常有助於驗證一臺路由器是否連在它鄰居的適當埠。

    要執行CDP協議,物理介質必須支援SNAP協議(SubNetwork Access Protocol:子網路訪問協議)。SNAP規範了在IEEE802 網路上傳輸IP 資料報的標準方法。

    CDP協議是資料鏈路層協議,執行CDP的路由器定時廣播帶有CDP更新資料的報文。預設情況下,路由器每60秒以01-00-0c-cc-cc-cc 為目的地址傳送一次組播通告,當達到180秒的holdtime上限後仍未獲得鄰居裝置的通告時,將清除鄰居裝置資訊。

    cdp相關命令如下:

    cdp run命令:這個命令是用來在全域性模式下開啟CDP協議,預設情況下,CDP協議在全域性模式下是開啟的,我們可以通過使用no cdp run命令來關閉CDP協議,執行完畢no cdp run後,網路內的所有裝置(包括交換機與路由器)的CDP協議都將被禁用掉。

    cdp enable命令:這個命令需要在埠模式下配置,它在一個特定的埠開啟CDP協議,在預設情況下,CDP支援所有的埠傳送和接收CDP協議訊息,可是在例如非同步埠,CDP協議是關閉的。我們也可以通過使用no cdp enable來在某個埠關閉CDP協議訊息更新。如果在全域性模式下用no cdp run命令手動關閉了CDP協議,網路埠就不能開啟CDP協議。

    show cdp命令:這個命令的功能是顯示傳送CDP協議訊息的間隔時間。我們還可以通過這個命令來檢視CDP協議的版本資訊。

    show cdp entry {*|device-name[*][protocol |version]},我們可以用show cdp entry命令來檢視特定鄰居裝置的資訊,通過這個命令,我們可以檢視特定鄰居的IP地址、硬體平臺、相連線的埠、IOS版本資訊。

    show cdp interface [type number],如果你想檢視CDP協議在特定埠是開啟的還是關閉的,可以使用show cdp interface命令,這個命令也可以顯示CDP的訊息更新時間等內容。

    show cdp neighbors [type number] [detail]用show cdp neighbors命令我們可以獲得相連線的CDP鄰居的平臺、裝置型別和相連線的埠等資訊。

    clear cdp counters命令:這個命令是用來重置CDP協議流量計數器的,當使用這個命令後,我們再用show cdp traffic命令時,就會看到所有的進出CDP資料包資訊等資訊都被清空了。

 

 

(2) LLDP (一)

LLDP 產生背景
目前,網路裝置的種類日益繁多且各自的配置錯綜複雜,為了使不同廠商的裝置能夠在網路中相互發現並互動各自的系統及配置資訊,需要有一個標準的資訊交流平臺。
LLDP( Link Layer Discovery Protocol,鏈路層發現協議)就是在這樣的背景下產生的,它提供了一種標準的鏈路層發現方式,可以將本端裝置的的主要能力、管理地址、裝置標識、介面標識等資訊組織成不同的 TLV( Type/Length/Value, 型別/長度/值), 並封裝在 LLDPDU( Link Layer Discovery Protocol Data Unit,鏈路層發現協議資料單元)中釋出給與自己直連的鄰居,鄰居收到這些資訊後將其以標準 MIB( Management Information Base,管理資訊庫)的形式儲存起來,以供網路管理系統查詢及判斷鏈路的通訊狀況。
LLDP 基本概念
1. LLDP 報文
封裝有 LLDPDU 的報文稱為 LLDP 報文,其封裝格式有兩種: Ethernet II 和 SNAP(Subnetwork Access Protocol,子網訪問協議)。
(1) Ethernet II 格式封裝的 LLDP 報文
圖 1 Ethernet II 格式封裝的 LLDP 報文


如 圖 1 所示,是以Ethernet II格式封裝的LLDP報文,其中各欄位的含義如下:
z Destination MAC address:目的 MAC 地址,為固定的組播 MAC 地址 0x0180-C200-000E。
z Source MAC address:源 MAC 地址,為埠 MAC 地址或裝置橋 MAC 地址(如果有埠地址則使用埠 MAC 地址,否則使用裝置橋 MAC 地址)。
z Type:報文型別,為 0x88CC。
z Data:資料,為 LLDPDU。
z FCS:幀檢驗序列。
(2) SNAP 格式封裝的 LLDP 報文
技術介紹
區域網協議 LLDP
2
圖 2 SNAP 格式封裝的 LLDP 報文


如 圖 2所示,是以SNAP格式封裝的LLDP報文,其中各欄位的含義如下:
z Destination MAC address:目的 MAC 地址,為固定的組播 MAC 地址 0x0180-C200-000E。
z Source MAC address:源 MAC 地址,為埠 MAC 地址或裝置橋 MAC 地址(如果有埠地
址則使用埠 MAC 地址,否則使用裝置橋 MAC 地址)。
z Type:報文型別,為 0xAAAA-0300-0000-88CC。
z Data:資料,為 LLDPDU。
z FCS:幀檢驗序列。
2. LLDPDU
LLDPDU 就是封裝在 LLDP 報文資料部分的資料單元。在組成 LLDPDU 之前,裝置先將本地資訊封裝成 TLV 格式,再由若干個 TLV 組合成一個 LLDPDU 封裝在 LLDP 報文的資料部分進行傳送。
圖 3 LLDPDU


如 圖 3所示, 每個LLDPDU共可攜帶28 種TLV, 其中深藍色的Chasis ID TLV、 Port ID TLV、 TTL TLV和End TLV這四種是必須攜帶的,其餘的TLV則為可選攜帶。
3. 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-MEDTLV 則是由標準組織或其他機構定義的 TLV,用於增強對網路裝置的管理,可根據實際需要選擇是否在 LLDPDU 中傳送。
(1) 基本 TLV
在基本TLV中,有幾種TLV對於實現LLDP功能來說是必選的,即必須在LLDPDU中釋出,如 表 1 所示。
表 1 基本 TLV


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,物件標識) 否
(2) 802.1 組織定義 TLV
IEEE 802.1 組織定義TLV的內容如 表 2所示。


表 2 IEEE 802.1 組織定義的 TLV
TLV 名稱 說明
Port VLAN ID 埠的 VLAN ID
Port And Protocol VLAN ID 埠的協議 VLAN ID
VLAN Name 埠 VLAN 的名稱
Protocol Identity 埠支援的協議型別
(3) 802.3 組織定義 TLV
IEEE 802.3 組織定義TLV的內容如 表 3所示。


表 3 IEEE 802.3 組織定義的 TLV
TLV 名稱 說明MAC/PHY Configuration/Status 埠的速率和雙工狀態、是否支援埠速率自動協商、是否已使能自動協商功能以及當前的速率和雙工狀態Power Via MDI 埠的供電能力Link Aggregation 埠是否支援鏈路聚合以及是否已使能鏈路聚合Maximum Frame Size 埠支援的最大幀長度,取埠配置的 MTU( Max Transmission Unit,最大
傳輸單元)
(4) LLDP-MED TLV
LLDP-MED TLV為VoIP( Voice overIP,在IP上傳送語音)提供了許多高階的應用,包括基本配置、網路策略配置、地址資訊以及目錄管理等,滿足了語音裝置的不同生產廠商在成本有效、易部署、技術介紹區域網協議 LLDP
4
易管理等方面的要求,並解決了在乙太網中部署語音裝置的問題,為語音裝置的生產者、銷售者以及使用者提供了便利。LLDP-MED TLV的內容如 表 4所示。


表 4 LLDP-MED TLV
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 位置標識資訊,供其它裝置在基於位置的應用中使用
4. 管理地址
管理地址是供網路管理系統標識網路裝置並進行管理的地址。管理地址可以明確地標識一臺裝置,從而有利於網路拓撲的繪製, 便於網路管理。 管理地址被封裝在 LLDP 報文的 Management Address TLV 中向外釋出。
LLDP 工作機制
1. LLDP 的工作模式
LLDP 有以下四種工作模式:
z TxRx:既傳送也接收 LLDP 報文。
z Tx:只發送不接收 LLDP 報文。
z Rx:只接收不傳送 LLDP 報文。
z Disable:既不傳送也不接收 LLDP 報文。
當埠的 LLDP 工作模式發生變化時,埠將對協議狀態機進行初始化操作。為了避免埠工作模式頻繁改變而導致埠不斷執行初始化操作,可配置埠初始化延遲時間,當埠工作模式改變時延遲一段時間再執行初始化操作。
2. LLDP 報文的傳送機制
當埠工作在 TxRx 或 Tx 模式時,裝置會週期性地向鄰居裝置傳送 LLDP 報文。如果裝置的本地配置發生變化則立即傳送 LLDP 報文,以將本地資訊的變化情況儘快通知給鄰居裝置。但為了防止本地資訊的頻繁變化而引起 LLDP 報文的大量傳送,每傳送一個 LLDP 報文後都需延遲一段時間後再繼續傳送下一個報文。
技術介紹
區域網協議 LLDP
5
當裝置的工作模式由 Disable/Rx 切換為TxRx/Tx, 或者發現了新的鄰居裝置(即收到一個新的 LLDP報文且本地尚未儲存傳送該報文裝置的資訊)時,該裝置將自動啟用快速傳送機制,即將 LLDP 報文的傳送週期縮短為 1

 

 

3.  LLTP (2)

一、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幀,其中各欄位的含義如下: 

·       DA:目的 MAC地址,為固定的組播MAC地址 0x0180-C200-000E。 

·       SA:源 MAC地址,為埠 MAC地址或裝置MAC地址(如有埠地址則用埠MAC地址,否則用裝置MAC地址)。 

·       Type:幀型別,為 0x88CC。 

·       Data:資料,為 LLDPDU。 

·       FCS:幀檢驗序列。

1.2 SNAP格式封裝的LLDP幀

 
上圖是以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:幀檢驗序列。

1.3 目地地址

目地地址實際上包括三個,分別為01-80-C2-00-00-0E,01-80-C2-00-00-03,01-80-C2-00-00-00。這三個地址分別用於不同的目地,它們可以跨越不同的網路。

·       01-80-C2-00-00-0E,也被稱為Nearest Bridge組地址:無論是Two-Port MAC Relay (TPMR)元件還是S-VLAN元件還是C-VLAN元件,還是802.1D網橋都不能轉發目地為該地址的幀。簡單的說任何型別的網橋都不能轉發目地為該地址的幀,目地為該地址的幀被限制在連線兩個網橋介面的連線上傳輸。

·       01-80-C2-00-00-03,也被稱為Nearest non-TPMR Bridge組地址:對於目地地址為該地址的幀,Two-Port MAC Relay (TPMR)元件將成為一箇中繼器,即不接收它。而S-VLAN元件,C-VLAN元件,以及802.1D網橋不能轉發它,而是需要進行接收並處理。因此目地地址為該地址的幀將跨越TPMR。

·       01-80-C2-00-00-00,也被稱為Nearest non-Customer Bridge組地址:對於目地地址為該地址的幀,Two-Port MAC Relay (TPMR)元件以及S-VLAN元件將成為中繼器,即不接收它。而C-VLAN元件,以及802.1D網橋不能轉發它,而是需要進行接收並處理。因此目地地址為該地址的幀將跨越TPMR以及S-VLAN。

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 TimeTo Live TLV和End Of LLDPDU TLV之間可以包含0個到多個可選的其它TLV。

3. TLV

TLV是組成 LLDPDU的單元,每個 TLV都代表一個資訊。LLDPDU的TLV可以分為兩大類:

·       被認為是網路管理的基礎的TLV集合,所有的LLDP實現都需要支援。

·       組織定義的TLV擴充套件集和,包括 802.1組織定義TLV、802.3組織定義TLV以及其他組織定義的TLV。這些TLV用於增強對網路裝置的管理,可根據實際需要選擇是否在 LLDPDU中傳送。 

TLV的基本格式如圖所示:

 

TLV的型別域的定義及分配如下圖所示:

 

其中type0-8屬於基本的TLV集合。對於其中的Mandatory的TLV,它是必須包含在LLDP中的。
組織定義TLV集合的格式如下圖所示:

 

其中:

·       OUI:組織機構的ID。

·       organizationallydefined subtype:組織自定義的型別。

·       organizationallydefined information string:傳輸的資訊。

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,則:

·       如果TTL不為0,則會用新收到的LLDPDU的資訊替換MIB庫中的相應的資訊(即與該LLDPDU的傳送者相關的MIB資訊,LLDP使用ChassisID + Port ID來判斷是否來自於同一個源,這也是要求這兩者保持不變的原因)。

·       如果TTL為0,則刪除相應的MIB庫中的資訊(即與該LLDPDU的傳送者相關的MIB資訊)。因此TTL為0的LLDPDU又被稱為SHUTDOWN 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的傳送可以被如下事件觸發:

·       與本地MIB資訊庫相關聯的定時器txTTR到期時,這將確保遠端接收系統中的相關資訊不會因為TTL到期而過期。

·       本地MIB資訊庫中的資訊發生了改變時,會立即傳送LLDPDU,這將保證改變能及時被更新。

·       如果一個“新鄰居”被識別,將會啟用快速傳送機制,在很短的時間內連續傳送指定數量(txFastInit,預設值為4)的LLDPDU,以確保“新鄰居”能被快速更新。如果遠端系統MIB資訊庫因為過載(tooManyNeighbors)而不能容納新的鄰居資訊,則會為了避免過多的PDU傳輸而抑制快速傳送行為。

LLDP的常規傳送時間是建立在系統的tick之上的,間隔為1秒一個,為了防止在共享介質的LAN(sharedmedia LAN)中同時出現大量的LLDPDU(因為接入同一個LAN的多個系統的時間是同步的,因而多個系統上的基於tick的1秒定時器可能同時到期),傳送定時器引入了一個隨機的抖動,這就使得常規的LLDP幀的傳送間隔時間的平均值仍是1秒,但是具體到某一次到期時間可能並不是準確的1秒。
同時為了防止在有多個埠需要傳送LLDPDU的系統中,所有的埠的定時器都在同一時間到期,因而標準建議將採用某種機制將多個傳送例項的定時器到期時間給錯開,以避免一個系統在同一時刻傳送大量的LLDPDU。

1.2 傳送狀態機

LLDPDU的傳送狀態機如圖所示

 

對於該狀態機:

·       為了防止過於頻繁的重新初始化傳送狀態機,在LLDP的傳送狀態機中引入了一個延時,該延時限制了在關閉傳送狀態機後,必須至少等待多長時間才能重新初始化傳送狀態機。

·       是否傳送SHUTDOWNLLDPDU由本地的LLDP工作狀態決定。

·       是否傳送正常的LLDPDU由txNow和txCredit決定。這兩個變數都由傳送定時器狀態機更新。txNow決定是否傳送,而txCredit則是一個信用量,決定了可以傳送的量,如果是0則不允許傳送,只有大於0的值才允許傳送,每傳送一個該值就減1。更重要的是在本地資訊快速改變時,txCredit即允許連續傳送多個LLDPDU,但是又對可以連續傳送的LLDPDU幀數做了限制,這使得本地狀態的快速改變可以及時被通告出去,但是又不能無限傳送導致網路出現大量LLDPDU幀。

1.3傳送定時器狀態機

LLDP傳送定時器狀態機如圖所示:

 

localChange表示本地資訊是否發生改變;txTTR表示下一次定時器到期的時間;newNeighbor表示是否發現了新的鄰居,並由接收狀態設定,由該狀態機清除;txTick表示基於系統時間的1秒定時器是否到期。
對於該狀態機:

·       SIGNAL_TX用於觸發傳送,它會將txNow設定為允許傳送,並設定本地資訊發生改變為FALSE,如果當前不是在快速傳送狀態(txFast = 0)就設定傳送定時器下次到期時間為msgTxInterval(msgTxInterval預設為30秒,取值範圍1-3600秒),否則設定傳送定時器下次到期時間為msgFastTx(msgFastTx預設值為1秒,取值範圍1-3600秒)

·       如果本地資訊發生了改變,就立即進入SIGNAL_TX

·       如果定時器到期,則如果txFast大於0,則將其減1並進入SIGNAL_TX,否則直接進入SIGNAL_TX

·       如果發現了新鄰居,則首先將發現新鄰居的標識更新為沒有發現新鄰居,然後如果當前已經處於快速傳送狀態就直接進入傳送定時器到期狀態(以觸發一次立即傳送),否則設定txFast的值為txFastInit的值(txFastInit預設值為4,取值範圍1-8)

·       如果基於系統時間的1秒定時器到期,則給txCredit增加信用量,其最大值為txCreditMax,txCreditMax是一個取值在1到10之間的值,預設值為5。

這裡有取值範圍的幾個變數都是可配置的變數。
從上述兩個狀態機的工作狀態可以看出,傳送定時器狀態機用於維護信用量以及是否允許傳送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使用chassisID + Port ID來標識、儲存來自不同源的資訊。

·       如果遠端MIB庫中已經有對應於該chassis ID + Port ID的資訊,則使用收到的幀中的新的TTL來更新TTL。並用對於收到的新的LLDPPDU中的每一種type,如果有變化就進行更新,如果某種type原來不存在,則需要將其新增到MIB庫中。

·       如果實現不支援某種型別的type,則

o    如果type不是127,則按照基本TLV的格式將其儲存到遠端MIB庫,儲存格式為type,length,value。

o    如果type是127,則按照組織定義TLV的格式將其儲存到遠端MIB庫,儲存格式為type,length,value,OUI,組織自定義子型別,以及資訊域。

更新時,如果需要新增新的chassis ID + Port ID的表項,或者為某個chassis ID +Port ID新增新的TLV,則可能遇到沒有記憶體的問題,標準沒有規定必須如何處理,只是給出了一些建議:

·       忽略新的LLDPDU的資訊

·       刪除最舊的資訊以釋放空間給新的資訊

·       隨機刪除一些舊的資訊以釋放空間給新的資訊

LLDPDU 攜帶的TTL(Time To Live)值會影響接收端的處理方式,如果它不為0,則更新相應資訊的老化時間,如果接收到的LLDPDU 中的TTL 等於0,則將立刻老化掉相應的資訊(即與該LLDPDU的傳送者相關的MIB資訊)。
如果一個chassisID + Port ID標識的資訊的TTL超時,則相應的MIB資訊會被刪除。

2.2 接收狀態機

LLDPDU的接收狀態機如圖所示:

 

3. LLDP工作模式

LLDP可以工作在多種模式下:

·       TxRx:既傳送也接收LLDP 幀。

·       Tx:只發送不接收LLDP 幀。

·       Rx:只接收不傳送LLDP 幀。

·       Disable:既不傳送也不接收LLDP 幀(準確的說,這並不是一個LLDP的狀態,這可能是LLDP功能被關閉了,也可能是裝置就不支援)。

由於LLDP可以單獨工作在傳送或接收模式下,因此LLDP協議的實現需要支援單獨初始化傳送或者接收功能。當工作模式發生變化時,需要根據老的/新的工作模式來關閉/打開發送或者接收的功能。

 

(4)  STP

 

1. STP的用途

STP(Spanning Tree Protocol,生成樹協議)是根據IEEE協會制定的802.1D標準建立的,用於在區域網中消除資料鏈路層物理環路的協議。執行該協議的裝置通過彼此互動報文發現網路中的環路,並有選擇的對某些埠進行阻塞,最終將環路網路結構修剪成無環路的樹型網路結構,從而防止報文在環路網路中不斷增生和無限迴圈,避免主機由於重複接收相同的報文造成的報文處理能力下降的問題發生。STP包含了兩個含義,狹義的STP是指IEEE802.1D中定義的STP協議,廣義的STP是指包括IEEE 802.1D定義的STP協議以及各種在它的基礎上經過改進的生成樹協議。

2. STP的協議報文

STP採用的協議報文是BPDU(Bridge Protocol Data Unit,橋協議資料單元),也稱為配置訊息。STP通過在裝置之間傳遞BPDU來確定網路的拓撲結構。BPDU中包含了足夠的資訊來保證裝置完成生成樹的計算過程。

BPDU在STP協議中分為兩類:

     配置BPDU(ConfigurationBPDU):用於進行生成樹計算和維護生成樹拓撲的報文。

     TCN BPDU(Topology Change Notification BPDU):當拓撲結構發生變化時,用於通知相關裝置網路拓撲結構發生變化的報文。

3. STP的基本概念

(1)  根橋

樹形的網路結構,必須要有樹根,於是STP引入了根橋(Root Bridge)的概念。根橋在全網中只有一個,而且根橋會根據網路拓撲的變化而改變,因此根橋並不是固定的。

網路收斂後,根橋會按照一定的時間間隔產生並向外傳送配置BPDU,其他的裝置對該配置BPDU進行轉發,從而保證拓撲的穩定。

(2)根埠

所謂根埠,是指一個非根橋的裝置上離根橋最近的埠。根埠負責與根橋進行通訊。非根橋裝置上有且只有一個根埠,根橋上沒有根埠。

(3)指定橋與指定埠

指定橋與指定埠的含義 

分類

指定橋

指定埠

對於一臺裝置而言

與交換機直接相連並且負責向交換機轉發BPDU報文的裝置

指定橋向本機轉發BPDU報文的埠

對於一個區域網而言

負責向本網段轉發BPDU報文的裝置

指定橋向本網段轉發BPDU報文的埠

 

(4)路徑開銷

路徑開銷是STP協議用於選擇鏈路的參考值。STP協議通過計算路徑開銷,選擇較為“強壯”的鏈路,阻塞多餘的鏈路,將網路修剪成無環路的樹型網路結構。

 

4. STP的基本原理

STP通過在裝置之間傳遞BPDU來確定網路的拓撲結構。配置訊息中包含了足夠的資訊來保證裝置完成生成樹的計算過程,其中包含的幾個重要資訊如下:

     根橋ID:由根橋的優先順序和MAC地址組成;

     根路徑開銷:到根橋的最短路徑開銷;

     指定橋ID:由指定橋的優先順序和MAC地址組成;

     指定埠ID:由指定埠的優先順序和埠名稱組成;

     配置訊息在網路中傳播的生存期:Message Age;

     配置訊息在交換機中能夠儲存的最大生存期:Max Age;

     配置訊息傳送的週期:Hello Time;

     埠狀態遷移的延時:Forward Delay。

    (1) STP演算法實現的具體過程

    初始狀態

各臺裝置在初始時會生成以自己為根橋的BPDU報文訊息,根路徑開銷為0,指定橋ID為自身裝置ID,指定埠為本埠。

    最優配置訊息的選擇

各臺裝置都向外發送自己的配置訊息,同時也會收到其他裝置傳送的配置訊息。最優配置訊息的選擇過程如下:

1、每個埠收到配置訊息後的處理過程如下:

  當埠收到的配置訊息比本埠配置訊息的優先順序低時,裝置會將接收到的配置訊息丟棄,對該埠的配置訊息不作任何處理。

  當埠收到的配置訊息比本埠配置訊息的優先順序高時,裝置就用接收到的配置訊息中的內容替換該埠的配置訊息中的內容。

2、裝置將所有埠的配置訊息進行比較,選出最優的配置訊息。

配置訊息的比較原則如下:

根橋ID較小的配置訊息優先順序高;若根橋ID相同,則比較根路徑開銷,比較方法為:用配置訊息中的根路徑開銷加上本埠對應的路徑開銷,假設兩者之和為S,則S較小的配置訊息優先順序較高;若根路徑開銷也相同,則比較以下的配置訊息優先順序,優先順序較高的為根橋:指定橋ID、指定埠ID、接收該配置訊息的埠ID等,。

  根橋的選擇

網路初始化時,網路中所有的STP裝置都認為自己是“根橋”,根橋ID為自身的橋ID。通過交換配置訊息,裝置之間比較根橋ID,網路中根橋ID最小的裝置被選為根橋。

  根埠、指定埠的選擇

根埠、指定埠的選擇過程如下。

1、    非根橋裝置將接收最優配置訊息的那個埠定為根埠。

2、裝置根據根埠的配置訊息和根埠的路徑開銷,為每個埠計算一個指定埠配置訊息:

  根橋ID替換為根埠的配置訊息的根橋ID;

  根路徑開銷替換為根埠配置訊息的根路徑開銷加上根埠對應的路徑開銷;指定橋ID替換為自身裝置的ID;指定埠ID替換為自身埠ID。

3、裝置使用計算出來的配置訊息和需要確定埠角色的埠上的配置訊息進行比較,並根據比較結果進行不同的處理:

  如果計算出來的配置訊息優,則裝置就將該埠定為指定埠,埠上的配置訊息被計算出來的配置訊息替換,並週期性向外傳送。

  如果埠上的配置訊息優,則裝置不更新該埠配置訊息並將此埠阻塞,該埠將不再轉發資料,只接收但不傳送配置訊息;

說明:

在拓撲穩定狀態,只有根埠和指定埠轉發流量,其他的埠都處於阻塞狀態,它們只接收STP協議報文而不轉發使用者流量。

一旦根橋、根埠、指定埠選舉成功,則整個樹形拓撲就建立

下面結合例子說明STP演算法實現的計算過程。具體的組網如圖1-2所示,Device A的優先順序為0,Device B的優先順序為1,DeviceC的優先順序為2,各個鏈路的路徑開銷分別為5、10、4。

 

各臺裝置的初始狀態

各臺裝置的初始狀態如表1-4所示。

 

 

各臺裝置的比較過程及結果如表1-5所示。

裝置

比較過程

比較後端口的配置訊息

Device A

埠AP1收到Device B的配置訊息{1,0,1,BP1},Device A發現本埠的配置訊息{0,0,0,AP1}優於接收到的配置訊息,就把接收到的配置訊息丟棄。

埠AP2收到Device C的配置訊息{2,0,2,CP1},Device A發現本埠的配置訊息{0,0,0,AP2}優於接收到的配置訊息,就把接收到的配置訊息丟棄。

Device A發現自己各個埠的配置訊息中根橋和指定橋都是自己,則認為自己是根橋,各個埠的配置訊息都不作任何修改,以後週期性的向外傳送配置訊息

AP1:{0,0,0,AP1}

AP2:{0,0,0,AP2}

Device B

埠BP1收到來自Device A的配置訊息{0,0,0,AP1},Device B發現接收到的配置訊息優於本埠的

配置訊息{1,0,1,BP1},於是更新埠BP1的配置訊息。

埠BP2收到來自Device C的配置訊息{2,0,2,CP2},Device B發現本埠的配置訊息{1,0,1,BP2}

優於接收到的配置訊息,就把接收到的配置訊息丟棄。

BP1:{0,0,0,AP1}

BP2:{1,0,1,BP2}

Device B對各個埠的配置訊息進行比較,選出埠BP1的配置訊息為最優配置訊息,然後將埠BP1定為根埠,它的配置訊息不作改變。

Device B根據根埠BP1的配置訊息和根埠的路徑開銷5,為BP2埠計算一個指定埠配置訊息{0,5,1,BP2}。

Device B使用計算出來的配置訊息{0,5,1,BP2}和埠BP2上的配置訊息進行比較,比較的結果是計算出來的配置訊息較優,則Device B將埠BP2定為指定埠,它的配置訊息被計算出來的配置訊息替換,並週期性向外傳送。

根埠BP1:{0,0,0,AP1}

指定埠BP2:{0,5,1,BP2}

Device C

埠CP1收到來自Device A的配置訊息{0,0,0,AP2},Device C發現接收到的配置訊息優於本埠的

配置訊息{2,0,2,CP1},於是更新埠CP1的配置                 訊息。

埠CP2收到來自Device B埠BP2更新前的配置                 訊息{1,0,1,BP2},Device C發現接收到的配置訊息優於本埠的配置訊息{2,0,2,CP2},於是更新埠CP2的配置訊息。

CP1:{0,0,0,AP2}

CP2:{1,0,1,BP2}

 

 

經過比較:

埠CP1的配置訊息被選為最優的配置訊息,埠CP1就被定為根埠,它的配置訊息不作改變。

將計算出來的指定埠配置訊息{0,10,2,CP2}和埠CP2的配置訊息進行比較後,埠CP2轉為指定埠,它的配置訊息被計算出來的配置訊息替換。

根埠CP1:

{0,0,0,AP2}

指定埠CP2:

{0,10,2,CP2}

 

接著埠CP2 會收到Device B 更新後的配置訊息{0,5,1,BP2},由於收到的配置訊息比原配置訊息優,則Device C 觸發更新過程。

同時埠CP1 收到Device A 週期性傳送來的配置訊息,比較後Device C 不會觸發更新過程。

CP1:{0,0,0,AP2}

CP2:{0,5,1,BP2}

 

經過比較:

埠CP2 的根路徑開銷9(配置訊息的根路徑開銷5+埠CP2 對應的路徑開銷4)小於埠CP1 的根路徑開銷10(配置訊息的根路徑開銷0+埠CP1 對應的路徑開銷10),所以埠CP2 的配置訊息被選為最優的配置訊息,埠CP2 就被定為根埠,它的配置訊息就不作改變。

將埠CP1 的配置訊息和計算出來的指定埠配置訊息比較後,埠CP1 被阻塞,埠配置訊息不變,同時不接收從Device A 轉發的資料,直到新的情況觸發

生成樹的計算,比如從Device B 到Device C 的鏈路down 掉。

阻塞埠CP1:

{0,0,0,AP2}

根埠CP2:

{0,5,1,BP2}

經過上表的比較過程,此時以Device A為根橋的生成樹就確定下來了,形狀如圖1-3所示。

 

(2)STP 的配置訊息傳遞機制

當網路初始化時,所有的裝置都將自己作為根橋,生成以自己為根的配置訊息,並以Hello Time 為週期定時向外傳送。

接收到配置訊息的埠如果是根埠,且接收的配置訊息比該埠的配置訊息優,則裝置將配置訊息中攜帶的Message Age 按照一定的原則遞增,並啟動

定時器為這條配置訊息計時,同時將此配置訊息從裝置的指定埠轉發出去。

如果指定埠收到的配置訊息比本埠的配置訊息優先順序低時,會立刻發出自己的更好的配置訊息進行迴應。

如果某條路徑發生故障,則這條路徑上的根埠不會再收到新的配置訊息,舊的配置訊息將會因為超時而被丟棄,裝置重新生成以自己為根的配置訊息並向外傳送BPDU 和TCN BPDU,從而引發生成樹的重新計算,得到一條新的通路替代發生故障的鏈路,恢復網路連通性。

不過,重新計算得到的新配置訊息不會立刻就傳遍整個網路,因此舊的根埠和指定埠由於沒有發現網路拓撲變化,將仍按原來的路徑繼續轉發資料。如果新選出的根埠和指定埠立刻就開始資料轉發的話,可能會造成暫時性的環路。

(3)STP 定時器

STP計算中,需要使用三個重要的時間引數:Forward Delay、Hello Time 和MaxAge。

ForwardDelay 為交換機狀態遷移的延遲時間。

鏈路故障會引發網路重新進行生成樹的計算,生成樹的結構將發生相應的變化。不過重新計算得到的新配置訊息無法立刻傳遍整個網路,如果新選出的根埠和指定埠立刻就開始資料轉發的話,可能會造成暫時性的路徑迴環。

為此,生成樹協議採用了一種狀態遷移的機制,根埠和指定埠重新開始資料轉發之前要經歷一箇中間狀態,中間狀態經過2 倍的Forward Delay 的延時後才能進入Forwarding 狀態,這個延時保證了新的配置訊息已經傳遍整個網路。

 Hello Time 用於交換機檢測鏈路是否存在故障。

交換機每隔Hello Time 時間會向周圍的交換機發送hello 報文,以確認鏈路是否存在故障。

Max Age 是用來判斷配置訊息在交換機內儲存時間是否“過時”的引數,交換機會將過時的配置訊息丟棄。

 

STP作用:為了防止單點故障,做交換機冗餘,但是冗餘外會帶來廣播環路,形成廣播風暴,開啟STP的交換機互相傳送BPDU,通過比較優先順序大小,選定根橋和根埠,和指定埠,沒有被選為指定埠的埠處於阻塞狀態,只能轉發BPDU,不能通過資料。

 

1.選舉根橋:根據優先順序,預設32768,如果優先順序相同,則比較mac地址,誰小誰根橋

#spanning-tree vlan1 priority 4096    講優先順序改為4096

或者

#spanning-tree vlan1 root  primary(主根橋)或者 secondary(備用根橋)

 

2.在介面修改開銷值,以便選取指定埠

#int f0/1

#spanning-tree vlan1 cost 10