計算機網路中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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM