1.1 CDP協議概述
CDP(Cisco Discovery Protocol,Cisco設備發現協議)用于發現直連的CISCO設備相關信息。CDP利用直連的兩個設備間定時發送hello信息(CDP數據包)維持鄰居關系。
默認情況下,每隔60秒的時間,每個CISCO設備都要向互連的對方發送一個CDP數據包。如果經過3個hello周期(180秒,稱為holdtime或TTL)還沒有收到對方的CDP包,則本地設備在CDP鄰居表中刪除那個CDP鄰居設備。
如圖1所示,是在一臺Cisco Catalyst 2924交換機上對CDP數據包的診斷輸出信息??梢钥吹?,交換機在每個活動接口發送CDP數據包。
直連設備互相之間交換的CDP包中的內容主要包括:對端設備的名稱、對端設備的性能(如交換機還是路由器)、對端設備的平臺(型號)、對端設備的IP地址(或管理IP)等信息。
對于如圖2所示的網絡拓撲來說,可以分別在兩個設備上使用相關的命令得到對端設備的有關信息。
如圖3所示,是在路由器R1上利用命令show cdp neighbors得到的CDP信息的輸出。從中我們可以看出路由器R1的直連鄰居設備Sw1的一些相關信息,包括:設備ID、保持時間、性能、平臺、本地和對端的連接端口。
使用命令show cdp neighbors detail,可以得到對端設備的更詳細的信息。如圖4所示。同樣的命令也可以在交換機Sw1上執行。
1.2 CDP包結構
CDP包的結構如圖5所示。
首先是以太網幀頭,包括DLC頭部、LLC頭部、SNAP頭部,接下來是長度不定的CDP字段。
其中,CDP幀中除了開始的3個部分:CDP版本(2)、TTL(180秒)、校驗和外,其余的內容由若干個TLV項(Type類型、Length長度、Value值)組成。常見的TLV的定義如表1所示。
1.3 CDP協議sniffer分析
1.3.1 Catalyst WS-C2924-XL f0/17輸出cdp包
圖6是sniffer捕獲到到的Catalyst WS-C2924-XL f0/17輸出cdp包頭部。
從圖中我們可以知道這是一個SNAP幀(其幀格式如圖7所示)。
在CDP頭部中,應該注意到以下一些重要信息:
●CDP采用的是多播目標MAC地址:01-00-0C-CC-CC-CC(用于CDP和VTP)
●DLC后面所跟的802.3幀的總長度為372字節,是指除了DLC頭之外的所有內容的長度
●SNAP中的前3字節表示OUI ID,這里是00-00-0C代表廠商Cisco
●SNAP中的后2字節表示此幀承載的協議類型,0x2000表示是CDP協議
圖8顯示了此包中的CDP輸出部分(第1部分)。
其中,應該注意到以下一些重要信息:
●當前采用的CDP的版本是CDP2.0
●保持時間(TTL)為180秒
●校驗和:2字節
隨后是若干個TLV字段,它們分別是:
●TLV1(其內容是TLV的組合)
■T(2字節):0x0001(設備名稱):
■L(2字節):7(T、L、V加在一起的總長度):
■V(3字節):Sw1(主機名稱)
●TLV2
■T(2字節):0x0002(IP地址)
■L(2字節):17(T、L、V加在一起的總長度)
■V(13字節):
◆包內地址數(4字節):1
◆協議類型(1字節):1=NLPID
◆協議長度(1字節):1
◆協議值(1字節):0xCC=IP
◆地址長度(2字節):4
◆管理IP地址(4字節):192.168.0.130
●TLV3
■T(2字節):0x0003(端口號)
■L(2字節):20(T、L、V加在一起的總長度)
■V(16字節):端口="FastEthernet0/24"
圖9顯示了此包中的CDP輸出部分(第2部分)。
其中,主要有以下一些TLV字段,它們分別是:
●TLV4
■T(2字節):0x0004(性能)
■L(2字節):8(T、L、V加在一起的總長度)
■V(4字節):
◆Capabilities flag(2字節):未用
◆Capabilities flags(2字節):
●0:不提供1層功能(不是中繼器)
●0:網橋/交換機不轉發IGMP報告包(不支持/使能IGMP)
●0:設備在進行路由協議(不是一個主機)
●1:執行2層交換(是個交換機)
●0:不執行2層源路由橋接
●1:執行(運行)2層透明網橋
●0:不執行3層路由
●TLV5
■T(2字節):0x0005(版本信息)
■L(2字節):226(T、L、V加在一起的總長度)
■V(222字節):版本信息"Cisco Internetwork Operating System Software .IOS (tm) C2900XL Software (C2900XL-C3H2S-M), Version 12.0(5)WC9a, RELEASE SOFTWARE (fc1).Copyright (c) 1983-7004 by cisco systems, Inc..Compiled Tue 13-Jan-04 11:54 by antonino"(實際上是在該設備上執行命令show version的輸出信息)。
●TLV6
■T(2字節):0x0006(設備平臺、型號)
■L(2字節):21(T、L、V加在一起的總長度)
■V(17字節):設備型號:cisco WS-C2924-XL
圖10顯示了此包中的CDP輸出部分(第2部分)。
其中,主要有以下一些TLV字段,它們分別是:
●TLV8
■T(2字節):0x0008(交換機簇管理)
■L(2字節):36(T、L、V加在一起的總長度)
■V(32字節):
◆廠商代碼:00-00-0c(cisco)
◆協議ID:0x0112(交換機簇管理)
◆交換機簇管理IP:0.0.0.0
◆交換機MAC地址:00-04-28-d2-09-00
◆管理Vlan:1
◆… …
●TLV9
■T(2字節):0x0009(VTP 管理域)
■L(2字節):14(T、L、V加在一起的總長度)
■V(10字節):VTP 管理域名:chinaitlab
●TLV10
■T(2字節):0x000a(本征Vlan)
■L(2字節):6(T、L、V加在一起的總長度)
■V(2字節):本征Vlan:1(可以通過int vlan 2、ip add xxx改變)
●TLV11
■T(2字節):0x000b(雙工方式)
■L(2字節):5(T、L、V加在一起的總長度)
■V(1字節):雙工方式:1=全雙工
1.3.2 Cisco 2500 e0輸出cdp包
圖11是sniffer捕獲到到的Cisco 2500 e0輸出cdp包中的CDP部分(第1部分)。
其中,應該注意到以下一些重要信息:
●當前采用的CDP的版本是CDP2.0
●保持時間(TTL)為180秒
●校驗和:2字節
隨后是若干個TLV字段,它們分別是:
●TLV1
■T(2字節):0x0001(設備名稱)
■L(2字節):6(T、L、V加在一起的總長度)
■V(2字節):R1(主機名稱)
●TLV2
■T(2字節):0x0002(IP地址)
■L(2字節):17(T、L、V加在一起的總長度):2字節
■V(13字節):
◆包內地址數(4字節):1
◆協議類型(1字節):1=NLPID
◆協議長度(1字節):1
◆協議值(1字節):0xCC=IP
◆地址長度(2字節):4
IP地址(4字節):10.0.0.1
●TLV3
■T(2字節):0x0003(端口號)
■L(2字節):13(T、L、V加在一起的總長度)
■V(9字節):端口="Ethernet0"
圖12顯示了此包中的CDP輸出部分(第2部分)。
其中,主要有以下一些TLV字段,它們分別是:
●TLV4
■T(2字節):0x0004(性能)
■L(2字節):8(T、L、V加在一起的總長度)
■V(4字節):
◆Capabilities flag(2字節):未用
◆Capabilities flags(2字節):
●0:不提供1層功能
●0:網橋/交換機不轉發IGMP報告包
●0:設備在路由協議
●0:不執行2層交換
●0:不執行2層源路由橋接
●0:不執行(運行)2層透明網橋
●1:(為至少一個網絡協議)執行3層路由功能
●TLV5
■T(2字節):0x0005(版本信息)
■L(2字節):215(T、L、V加在一起的總長度)
■V(211字節):版本信息"Cisco Internetwork Operating System Software .IOS (tm) 2500 Software (C2500-JK8OS-L), Version 12.2(1d), RELEASE SOFTWARE (fc1).Copyright (c) 1983-7002 by cisco Systems, Inc..Compiled Sun 03-Feb-02 22:01 by srani"(實際上是在該設備上執行命令show version的輸出信息)。
●TLV6
■T(2字節):0x0006(設備平臺、型號)
■L(2字節):14(T、L、V加在一起的總長度)
■V(3字節):設備型號:cisco 2500
圖13顯示了此包中的CDP輸出部分(第3部分)。
其中,主要有以下一些TLV字段,它們分別是:
●TLV7
■T(2字節):0x000B(雙工方式)
■L(2字節):5(T、L、V加在一起的總長度)
■V(1字節):雙工方式:0=半雙工