若不小心失去整個網路架構的資訊,肯定會造成網管上的大混亂,若該網路環境採用的是Cisco網路設備,則可透過CDP探索協定收集到全部Cisco網路設備的軟硬體資訊,立即重建網路拓樸資訊。本文將講述如何利用CDP協定交換資訊、如何設定CDP協定、CDP協定與VLAN的關係,以及CDP與訊框中繼有何關連。
由思科(Cisco)公司自行開發的CDP(Cisco Discovery Protocol)為運行於網路七層協定之中第二層Data Link Layer的協定。透過這個協定,所有的Cisco網路設備會互相交換並且收集設備的資訊,例如IP位址或是目前所運行的Cisco IOS版本等等。
前幾期的文章中,筆者提到需求導向的路由技術,CDP協定也可以用於這樣的網路環境。CDP的用途很廣闊,主要是讓網路管理人員方便管理企業內部的Cisco網路設備。當失去整個網路架構的資訊時(例如網路拓樸),透過CDP探索協定就可以一次收集到所有Cisco網路設備的硬體和軟體的資訊,以便重建網路拓樸資訊。
對於網路管理人員而言,尤其是完整使用Cisco網路設備的企業網路管理人員,這無異是一大福音。底下整理出關於CDP協定的有用資訊,包含CDP協定的介紹、使用方式,甚至與VLAN的關係,讓大家有一個整體的概念。
利用CDP協定交換資訊
事實上,Cisco網路設備會定期與周遭的Cisco網路設備進行資訊交換的動作,以便了解周遭網路情況,這有助於網路設計的決策、疑難排解以及設備變更等工作。而要達到這樣定期的資料交換動作,就必須透過CDP協定才行。
什麼是CDP協定
CDP全稱為Cisco Discovery Protocol,此協定是用來收集Cisco設備的相關資訊,只有Cisco設備適用於CDP協定,其他廠牌都不支援。因此,CDP協定可以提供Cisco交換器(Switch)、路由器或是其他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指令可以用來顯示系統硬體資訊、軟體版本資訊、設定檔的所在位置與檔案名稱等等。指令如下所示:
藉由執行這個指令,可以從結果中觀察出目前正在使用什麼版本的Cisco IOS,輸出結果會有這樣一行:
這就代表目前的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的相關資訊,可以使用以下這個指令:
show cdp指令的後面可以接上多種關鍵字,以便顯示各種不同的CDP協定資訊,接上各種關鍵字之後的指令可以是以下幾種:
就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設備在網路層的位址,相關指令如下:
接著介紹show cdp entry指令。show cdp entry指令後面可接上Cisco設備ID或是設備的IP位址,代表要顯示那個鄰近設備的相關資訊,當然也可以加上*,以便於顯示全部的鄰近設備,例如:
而透過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協定的設備來存取某個設備,可以用以下這個指令:
這個指令會關閉整台設備所有介面的CDP協定。若只要關閉某個介面的CDP協定,則使用以下的指令:
相反地,若要重新開啟CDP,就只要把no關鍵字拿掉即可,指令範例如下:
若只是單純開啟CDPv2,可以使用以下這個指令來開啟:
CDPv2有三個額外的交換資訊,即VTP domain name、Native VLAN以及全/?半雙工模式資訊,其中,VTP與VLAN相關訊息會在往後的文章中一一為讀者說明。
當然,CDPv2的預設值是開啟的。不過,對於這個指令而言,Cisco IOS版本至少要在12.0(3)T以上才有支援。若要關閉CDPv2,只要在cdp advertise-v2之前加上no關鍵字即可,指令如下所示:
清除CDP相關資訊的指令
若要清除CDP相關資訊,Cisco IOS提供兩個指令來達到這樣的動作:clear cdp counters和clear cdp table。這兩個指令都是在Cisco IOS版本為10.3以後才開始支援。
clear cdp counters指令是用來把CDP的traffic counters歸零。歸零之後,可以使用show cdp traffic指令來看是否已經歸零。其執行範例如下:
而clear cdp table指令是用來清除show cdp neighbors指令的相關資訊,這個指令一樣沒有進階參數,以下是執行範例:
清除之後,可以用show cdp neighbors指令來確認是否已經清除。
設定CDP發送頻率和最大Hold-time值的指令
前面提到CDP資訊的交換頻率預設為60秒交換一次,但其實這個值可以透過cdp timer指令來改變。使用方式為cdp timer,後面再接上新的頻率,單位是秒。因此,若要將交換CDP的頻率改為每隔80秒交換一次,可使用如下的指令:
在使用這個指令之後,若希望回到預設值,則執行:
通常要更改CDP的發送頻率都是因為頻寬的考量,因此可以根據所使用的環境來設定適合的發送頻率。若要改變Hold-time的最大值,可以透過cdp holdtime指令來設定,這裡所設定的值,代表Cisco設備要在本地端保留其他設備的CDP資訊長達多久的時間,預設值為180秒。
設定方式為cdp holdtime後面接上時間參數,單位是秒。假設要將最大Hold-time值設定為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就是訊框中繼,也有人稱之為幀中繼,是一個效能相當高的廣域網路協定,運作於OSI網路模型中的實體層(第一層)和資料連結層(第二層)。
訊框中繼網路協定是連線導向的網路協定,也因此,訊框中繼網路協定可以提供高效率而且品質很好的網路連線。而在網路傳輸資料的錯誤偵測與保護方面,訊框中繼網路協定依靠於高階層的網路協定。訊框中繼網路協定定義了介於路由器和網路服務供應商的交換器設備之間的互動連線。
訊框中繼網路的子介面
而訊框中繼有子介面(Sub-interface)的概念,子介面的使用對於訊框中繼網路來說,是相當重要的,因為子介面可以很有效地解決訊框中繼網路所可能帶來之路由更新(Routing Update)的可到達性問題(Reachability Issue)以及重複發送廣播封包問題(Broadcast Replication)。
因為這裡篇幅有限,詳細內容就不多加敘述。讀者目前只需要明白在訊框中繼之中,可以將子介面設定成以下兩種模式的其中一種:
1. 點對點模式
2. 多點模式
就點對點模式而言,這種子介面通常是用來與遠端路由器的「一個」實體介面或是「一個」子介面建立起永久性虛擬線路。在這種情況之下,每個子介面都是處於自己的子網路(Subnet),也是屬於自己的子網路,而且每個子介面都有自己的DLCI值。
由於在這樣的點對點的網路環境中,每個子介面像是點對點的介面,所以,路由更新的網路封包與Split-horizon無關,因此點對點的子介面可以解決Split-horizon的問題。
其中,多點模式就是一開始提到的Frame Relay Multipoint Sub-Interfaces,亦即多點模式的訊框中繼子介面,這種子介面預設CDP協定就是關閉的。此種介面通常是用來與遠端路由器的「多個」實體介面或「多個」子介面建立起永久性虛擬線路。
在這種情況之下,所有相關的子介面都屬於同一個子網路中,而每個子介面都像是一般的非廣播式多重存取網路(NBMA)的訊框中繼網路介面。此外,多點模式子介面都屬於同一個子網路,所以可以節省位址的使用數量,並且也能夠用於全狀拓樸的網路架構。
ATM網路不支援CDP協定
一開始提到,CDP協定可運用於Cisco網路設備,也提到預設CDP協定為啟動,而Frame Relay Multipoint Sub-Interfaces除外。但事實上,不是每個介面都支援CDP協定,例如ATM網路就不支援。
那什麼是ATM?ATM是Asynchronous Transfer Mode的簡稱,指的是非同步傳輸模式。非同步傳輸模式廣域網路是新一代的高速廣域網路,其具備相當完備的服務品質保障,因此許多國家早已投入大量的資源進行研究和使用。
目前,非同步傳輸模式網路的技術已經成熟,許多國家已經開始使用,台灣當然也是。非同步傳輸模式廣域網路是以交換器為基礎,每一個交換器有許多的埠,而各個電腦必須使用ATM網路卡,透過適當的網路線材連接到交換器的某個埠上,以形成非同步傳輸模式網路。各位讀者在透過CDP協定規劃並取得網路設備資訊時,也要把ATM網路這個不支援的因素考慮在內。
結語
對於網路管理人員來說,整個網路拓樸的相關文件是非常重要的,有助於未來網路的設計、網路架構的改變以及疑難排解等等。網路拓樸文件應該包含實體性和邏輯性的資料,最好包含以下這些訊息:
1. 網路設備的連接關係
2. 網路設備和各個網段的位址資訊
3. 網路線材的種類
4. 各台網路設備的詳細資訊
5. 網路架構版圖
6. 設備的連接介面
7. 終端埠的資訊
8. 電源與電路相關資訊
成功管理網路架構的關鍵,就在於如何維護這些正確的網路拓樸文件,因此當網路架構有任何的改變時,都應該對文件做相對應的修改。經由這篇文章的介紹,想必各位讀者已經了解在管理Cisco設備時如何運用指令來了解整個網路的運作情形。這不僅對網管人員來說是一項必讀的文章,對於要赴考CCNA的讀者更是不可或缺的重點。