減少網管人員的工作量
靈活運用CDP協定 管理Cisco設備

2009-09-07
網管人員必須確切掌握企業內部所有設備與網路運作的情形,以便在突發事件或變更硬體時,立即反應迅速處置。但說易行難,執行過程浩瀚且瑣碎,其實若採用的是Cisco網路設備,就可以使用CDP協定來啟動自動交換資訊機制,輕鬆解決上述的問題。
身為網路管理人員,最需要隨時瞭解的是企業內部目前的網路情況、設備的概況等等,其中當然包含目前企業內部有哪些網路設備、型號、IP位址、運作的埠號與硬體平台等等資訊。如果是大型企業的話,勢必會有很多這樣的網路設備存在,例如路由器(Router)或是交換機(Switch)等等。  

當企業內部網路架構變更時,網管人員必須連到網路設備確認型號,但是這前提還是必須先得到遠端網路設備的IP位址才知道要連到哪裡,如果連IP位址都忘記或是不曉得,那就得前往網路設備前面查詢相關資訊。  

此外,IT人員還必須記得更新相關的文件,以便記錄目前的網路設備情況等等,如果這些資訊能夠自動取得,那該有多好!  

如果貴公司採用Cisco網路設備,透過Cisco網路設備內建的CDP協定啟動自動交換資訊的機制,就可以讓這樣的工作量輕鬆許多。接下來,就來看看如何使用CDP協定。  

利用CDP協定交換資訊  

事實上,Cisco網路設備會定期與周遭的Cisco網路設備進行資訊交換的動作,以便得知周遭網路情況,有助於網路設計的決策、疑難排解和設備變更等工作。而要達到這樣定期的資料交換動作,就必須透過CDP協定才行。  

什麼是CDP協定  

CDP協定是Cisco Discovery Protocol的縮寫,此協定可用來收集Cisco設備的相關資訊,只有Cisco設備適用於CDP協定,其他廠牌都不支援。因此,CDP協定可以提供Cisco交換機、路由器或是其他Cisco設備的摘要資訊給直接連接於此設備的其他Cisco設備。  

CDP協定運作於網路七層協定的第二層,也就是Data Link Layer(資料連結層),也因此多種不同的Cisco設備,例如支援不同網路層協定的Cisco路由器(支援IP和Novell IPX)也可以經由CDP協定互相學習。不過,對於這些使用CDP協定的設備,都必須支援Sub-network Access Protocol(SNAP)協定的封裝行為,例如LAN、Frame Relay和ATM等等。當Cisco網路設備啟動時,預設會啟動CDP協定。  

如何確保Cisco網路設備支援CDP  

並非所有的Cisco網路設備都支援CDP協定。想必,大家看到上面這個標題也能猜出個所以然。事實上,CDP協定只有在Cisco IOS版本為10.3版本以後才會支援。  

Cisco IOS指的是Cisco設備上的軟體,透過這軟體可以下達指令給大部分的Cisco設備,Cisco IOS就像使用者和Cisco設備的中介層一樣,因此Cisco IOS可以看成Cisco設備上的作業系統一樣。  

而在Cisco IOS指令介面中,可以透過show這個指令來輸出各種詳細資訊。不過show指令只純粹用來顯示設定值,因此這指令是在User Mode或Privileged Mode底下執行,而不是Global Configuration Mode和其他模式。其中,show version指令可用來顯示系統硬體資訊、軟體版本資訊、設定檔的所在位置與檔案名稱等等,指令如下所示:  

Switch_KC#show version

藉由執行指令,可以從結果中觀察出目前正在使用什麼版本的Cisco IOS,輸出結果會有這樣一行:  

IOS(tm) C2950 Software (C2950-I6Q4L2-M), Version 12.1(20)EA1

這代表目前的Cisco IOS版本為12.1(20)EA1。以這個執行範例為例,這台Cisco網路設備就可以支援CDP協定。  

CDP協定所提供的資訊  

而到底CDP協定提供哪些資訊來協助網路管理人員呢?CDP協定所能擷取的資訊包含:  

1.設備ID
2. 第三層的IP位址清單
3. 埠的ID
4. 所支援的功能列表
5. 硬體平台

其中,設備ID就是設備的名稱,而埠的ID則包含本地端和遠端的埠名稱,這裡用ASCII的格式字串來表示,例如ethernet0。至於硬體平台則有硬體型號,例如Cisco 7200 series router。目前最廣泛被使用的是CDP version 2,即CDPv2。  

CDPv2可以提供更多硬體的資訊,也提供更具智慧性的硬體資訊追蹤功能,這個功能包含一個回報機制,此新的資訊回報機制能夠完成更迅速的資訊追蹤,以便降低收集資訊所需要的時間。而若有錯誤訊息,可以將錯誤訊息送到console端或是記錄到伺服器的檔案中。  

CDP協定的設定方式  

以下開始介紹如何開啟或關閉CDP協定,以及如何顯示CDP協定相關資訊,並包含各種相關指令的操作說明。  

顯示CDP協定資訊的指令:show cdp

Cisco路由器上的CDP協定可以手動開啟或關閉,預設為開啟,此外,也可以根據各個不同的埠來做開啟關閉的動作。若要查看CDP的相關資訊,可以利用以下這個指令:  

Router#show cdp

show cdp指令的後面可以接上多種關鍵字,以便顯示各種不同的CDP協定資訊,接上各種關鍵字之後的指令可以是:

Router#show cdp entry
Router#show cdp interface
Router#show cdp neighbors
Router#show cdp traffic

就show cdp neighbors這個指令而言,可以取得以下這些資訊:  

1.鄰近設備的Device ID
2. 本地端的介面
3. Hold-time值,單位是秒
4. 鄰近設備的種類代碼
5. 鄰近設備的硬體平台
6. 鄰近設備的遠端埠ID

show cdp neighbors也是查看CDP資訊中最常被使用的指令。其中,Hold-time指的是此設備持有目前資訊長達多久的時間。開啟CDP協定之後,各個Cisco設備會定期交換設備的資訊給其他Cisco網路設備,預設為每隔60秒會交換一次,因此Hold-time能顯示出目前資訊已經存留在設備中沒有更新。預設上,資訊最多只會被保留180秒,超過180秒此資訊就會被丟棄。show cdp neighbors指令所輸出的內容會因為Cisco設備的種類而有些微的不同,但是大致上資訊都是差不多的。至於鄰近設備的種類代碼,其可能的值與代表意義如下:

另外,show cdp neighbors也可以在Cisco Catalyst Switch上用來顯示本地端介面接收CDP的更新資訊。如果在show cdp neighbors指令後面加上detail關鍵字,可以取得更詳細的資訊,例如顯示鄰近Cisco設備在網路層的位址。指令如下:  

Router#show cdp neighbors detail

接著要介紹的是show cdp entry指令。show cdp entry指令後面可接上Cisco設備ID或設備的IP位址,代表要顯示那個鄰近設備的相關資訊,當然也可以加上*以便於顯示全部的鄰近設備。例如:  

Router#show cdp entry *

而透過show cdp entry這個指令可以取得以下這些資訊:

1.鄰近設備的Device ID
2. 網路第三層協定的資訊,例如IP位址
3. 鄰近設備的硬體平台
4. 鄰近設備的種類
5. 本地端介面種類和outgoing遠端的埠ID
6. Hold-time值,單位是秒
7. Cisco IOS軟體種類和版本資訊

其中,鄰近設備的種類可以顯示出這個設備是路由器、交換機,還是其他種類的設備。與show cdp neighbors指令所能顯現的設備種類代碼差不多。其他能顯示的內容和show cdp neighbors差不多,比較特別的是,這指令可以顯示網路第三層協定的資訊、Cisco IOS軟體種類和版本資訊,對於要考試的讀者,這是較值得注意的。由上面這些資訊看來,上面這個指令所能顯示的資訊和「show cdp entry *」指令其實是差不多的。

第三個要介紹的指令是show cdp traffic,這指令是用來顯示與介面的流量相關的資訊,因此這個指令可以顯示下列相關訊息:

1.資料錯誤
2. Checksum錯誤
3. 封裝失敗
4. 記憶體用盡(Out of memory)
5. 無效的封包
6. 已分割的封包
7. 已經送出和已經接收到的CDPv1封包
8. 已經送出和已經接收到的CDPv2封包

需要注意的是,show cdp traffic這個指令在Cisco Catalyst 1900 Switch上是不支援的。  

第四個show cdp interface指令則可以顯示出目前傳送CDP的介面狀況,包含:  

1.介面是否運作中
2. 介面所使用的封裝方式
3. Hold-time值是多少
4. 每隔多久送出CDP封包(預設是每隔60秒)

開啟或關閉CDP協定的指令  

CDP協定也允許存取不同種類的資訊,也可以設定要擷取多麼詳細的資訊內容。剛才提到,各個介面上的CDP預設上是開啟的,但是除了Frame Relay Multipoint Sub-Interfaces之外,針對這個子介面,後面會有詳細的說明。若要防止其他支援CDP協定的設備來存取某個設備,可以利用以下這個指令:

Router(config)#no cdp run

上面這個指令是會關閉整台設備所有介面的CDP協定。若只要關閉某個介面的CDP協定,可利用以下這個指令:

Router(config-if)#no cdp enable

相反地,若要重新開啟CDP,就只要把no關鍵字拿掉即可,其指令範例如下:

Router(config-if)#cdp enable

若要單純開啟CDPv2的話,可以使用以下這個指令來開啟:

Router(config)#cdp advertise-v2

CDPv2有三個額外的交換資訊:VTP domain name、Native VLAN和全/半雙工模式資訊,其中VTP與VLAN相關訊息會在往後的文章中一一為讀者說明。當然,CDPv2的預設值是開啟的。不過對於這個指令而言,Cisco IOS版本至少要在12.0(3)T以上才能支援。若要關閉CDPv2,只要在cdp advertise-v2之前加上no關鍵字即可。其指令範例如下:

Router(config)#no cdp advertise-v2

清除CDP相關資訊的指令

若要清除CDP相關資訊,Cisco IOS提供了clear cdp counters和clear cdp table這兩個指令來達到這樣的動作。這兩個指令都是在Cisco IOS版本為10.3以後才開始支援。clear cdp counters指令是用來把CDP的traffic counters歸零。歸零之後可以用show cdp traffic指令查看是否已經歸零。其執行範例如下:

Router_KC#clear cdp counters
Router_KC#show cdp traffic
CDP counters:
Packets output: 0, Input: 0
Hdr syntax: 0, Chksum error: 0, Encaps failed: 0
No memory: 0, Invalid packet: 0, Fragmented: 0

而clear cdp table指令則用來清除show cdp neighbors指令的相關資訊,這個指令一樣沒有進階參數。以下是執行範例:  

Router_KC#clear cdp table
CDP-AD: Deleted table entry for neon.cisco.com,
interface Ethernet0
CDP-AD: Deleted table entry for neon.cisco.com, interface Serial0

清除之後,可以用show cdp neighbors指令來確認是否已經清除。  

設定CDP發送頻率和最大hold-time值的指令

之前提到CDP資訊的交換頻率預設為60秒交換一次,其實這個值可以透過cdp timer指令來改變。使用方式為cdp timer,後面再接上新的頻率,單位是秒。因此若要將交換CDP的頻率改為每隔80秒交換一次的話,其指令如下:

Router_1979(config)#cdp timer 80

使用這個指令之後,若希望回到預設值,則可以執行下列的指令:

Router_1979(config)#no cdp timer

通常要更改CDP的發送頻率都是因為頻寬的考量,因此,讀者可以根據所使用的環境來設定適合的發送頻率。若要改變hold-time的最大值,可以透過cdp holdtime指令來設定,這裡所設定的值,代表Cisco設備要在本地端保留其他設備的CDP資訊長達多久的時間,預設值為180秒。設定方式為cdp holdtime後面接上時間參數,單位是秒。假設要將最大hold-time值設定為300秒,則執行範例如下:

Router_1979(config)#cdp holdtime 300

CDP協定與VLAN的關係

什麼是VLAN?CDP協定和VLAN又有什麼關係呢?筆者想,既然都提到CDP協定,也許很多明白什麼是VLAN的讀者不知道CDP運作在哪個VLAN,至於不明白什麼是VLAN的讀者,筆者也可以趁這個機會介紹一下。  

何謂VLAN  

VLAN,也就是Virtual LAN,是Switch幾乎都會使用到的技術。一個VLAN是由一群終端機器組合而成,例如一堆使用者的PC設備,而這些VLAN中的機器通常擁有相同的特性,而這特性並不需要與這些機器的所在位置有任何的關係。此外,VLAN技術也允許把一台Switch設備的埠分成幾個群組,並且可以針對每個不同的群組套用不同的設定。可以說VLAN是可以在邏輯上區分不同的廣播網域,而這樣的廣播網域可以延伸到多個實體區域網路區段,因此VLAN技術可以增加網路組織的彈性。  

VLAN運用範例  

舉例來說,假設現在要為一家大型企業組織整個網路設計,希望將整個大型網路區分成幾個小型的網段,而每個網段都是針對不同的使用者,例如工程師應該存取同一個網段的網路,而銷售人員可能會存取另一個不同的網段。  

而尷尬的是,工程師可能橫跨很多個樓層,同樣地,銷售人員的電腦位置也處於好幾個樓層,此時如果希望根據實體的電腦位置來區分不同的網段,想必這是一件很累人的事情。  

這個時候就要使用VLAN技術來區分不同的網段,把工程師全部分到同一個VLAN中,而把銷售人員都分到同一個VLAN中,這樣就不用牽扯到實體的網路連線而達到網段區分的效果。當然,也可以根據公司裡的各個單位來區分網段,或是根據各種其他的區分條件。  

VLAN與CDP協定  

事實上,每一款Switch設備所能支援的VLAN個數是不一樣的,會根據設備的硬體而有些許的不同,大部分的Cisco Switch設備支援64個VLAN,而2950系列則支援250個VLAN,因此在建立VLAN之前必須要先了解手邊的設備支援多少個VLAN。  

此外,也必須了解手邊設備的預設VLAN是哪一個,通常預設的VLAN都是VLAN 1,因此CDP和VTP協定的封包一般都會送到VLAN 1之中。  

不是所有介面都預設啟動CDP協定  

沒錯,剛才有提到預設上,CDP協定是會啟動的,但是Frame Relay Multipoint Sub-Interfaces例外。什麼是Frame Relay?Frame Relay,就是訊框中繼(Frame Relay,也有人稱之為「幀中繼」)網路協定,是一個效能相當高的廣域網路協定,運作於OSI網路模型中的實體層(第一層)和資料連結層(第二層)。  

訊框中繼(Frame Relay)網路協定是連線導向的網路協定,也因此訊框中繼(Frame Relay)網路協定可以提供高效率而且品質很好的網路連線。  

而在網路傳輸資料的錯誤偵測與保護方面,訊框中繼網路協定依靠於高階層的網路協定。訊框中繼網路協定定義了介於路由器和網路服務供應商的交換機設備之間的互動連線。  

而訊框中繼有子介面的概念,其詳細的內容因為篇幅有限,就不加以敘述。讀者目前只需要明白在訊框中繼之中,可以將子介面設定成以下兩種模式的其中一種:

●點對點模式
● 多點模式

其中,多點模式就是這裡提到的Frame Relay Multipoint Sub-Interfaces,也就是多點模式的訊框中繼子介面,這種子介面預設上,CDP協定就是關閉的。這種介面通常是用來與遠端路由器的「多個」實體介面或是「多個」子介面建立起永久性虛擬線路。

在這種情況之下,所有相關的子介面都屬於同一個子網路之中,而每個子介面都像是一般的非廣播式多重存取網路(NBMA)的訊框中繼網路介面。而且由於多點模式子介面都屬於同一個子網路,所以可以節省位址的使用數量,此外也可以用於全狀拓撲的網路架構。  

ATM網路與CDP  

從一開始就提到,CDP協定可運用於Cisco網路設備,也提到預設上CDP協定是啟動的,但Frame Relay Multipoint Sub-Interfaces除外。但事實上,並不是每個介面都支援CDP協定,例如ATM網路就不支援。  

什麼是ATM?ATM是Asynchronous Transfer Mode的簡稱,指的是非同步傳輸模式。非同步傳輸模式廣域網路是新一代的高速廣域網路,其具備相當完備的服務品質保障,所以許多國家早已投入大量的資源進行研究和使用。  

目前,非同步傳輸模式網路的技術已經成熟,許多國家已經開始使用,台灣當然也是。非同步傳輸模式廣域網路是以交換機(Switch)為基礎,每一個交換機有許多的埠,而各個電腦必須使用ATM網路卡,透過適當的網路線材連接到交換機的某個埠上,以形成非同步傳輸模式網路。下面所示就是IBM的PCI介面ATM網路卡。

各位讀者在透過CDP協定規劃並取得網路設備資訊的時候,也要把ATM網路這個不支援的因素考慮在內。  

結語  

對於網路管理人員來說,整個網路拓撲的相關文件是非常重要的,有助於未來網路的設計、網路架構的改變和疑難排解等等。網路拓撲文件應該包含實體性和邏輯性的資料,最好包含以下這些訊息:  

1.網路設備的連接關係
2. 網路設備和各個網段的位址資訊
3. 網路線材的種類
4. 各台網路設備的詳細資訊
5. 網路架構版圖
6. 設備的連接介面
7. 終端埠的資訊
8. 電源與電路相關資訊

成功管理網路架構的關鍵就在於如何維護這些正確的網路拓撲文件,因此,一旦網路架構有任何的改變,都應該對文件做相對應的修改。

經由這篇文章的介紹,想必各位讀者已經了解如何在管理Cisco設備的同時,運用指令來了解整個網路的運作情形。不僅對網管人員而言是一項必讀的文章,對於要赴考CCNA的讀者們,更是不可或缺的重點。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!