CDPの概要

CiscoルータやCatalystスイッチはCDP(Cisco Discovery Protocol)によって、自身を起点として直接接続されている他のCisco機器を検出することができます。直接接続されているデバイスのことを近接デバイスあるいは隣接デバイスと呼んでいます。

CDPはデータリンク層で動作するCisco独自のプロトコルで、SNAPカプセル化をサポートする物理メディアで利用可能です。SNAPカプセル化をサポートする物理メディアは、イーサネット、フレームリレー、ATM、PPP/HDLCなどがあります。また、上位プロトコルには依存しません。Cisco独自のプロトコルなので、他のベンダのネットワーク機器やホストは検出できないので注意してください。CDPはデータリンク層のプロトコルなので、CDPで直接接続されている機器を検出できれば、データリンク層までは問題なく動作していることも確認できます。

CDPの概要
図 CDPの概要
他のベンダのデバイスでもCDPをサポートしているものであれば検出可能です。

Ciscoルータ/Catalystスイッチは、デフォルトでCDPが有効になっています。60秒ごとにCDPの情報を送信します。CDPの情報を送受信する際は、予約されたマルチキャストアドレス「01-00-0c-cc-cc-cc」を利用しています。CDPの情報を受信すれば、その内容をCDPのキャッシュに格納します。これを参照すれば、どのようなデバイスがどのポートに接続されているかがわかります。CDPのキャッシュを参照するには、show cdp neighborコマンドを利用します。

定期的なCDPの情報を一定時間受信することができなければ、その情報をキャッシュから削除します。この時間のことをホールドタイムといい、デフォルトは180秒です。

また、CDPはCatalystスイッチに接続されているCisco IP Phoneを検出するためにも利用します。Catalystスイッチに接続されているCisco IP PhoneへVoice VLANなどといったIP Phoneに必要な情報を通知できます。

CDPとCisco IP Phone
図 CDPとCisco IP Phone

CDPでやり取りする情報

CDPにはバージョン1とバージョン2があります。現在のCiscoデバイスはデフォルトでCDPバージョン2が有効になっています。

CDPバージョン1では、次の情報が送受信されています。

  • 隣接デバイスID
  • ローカルインタフェース
  • 隣接デバイスのケイパビリティ
  • 隣接デバイスのプラットフォーム
  • リモートインタフェース
  • 隣接デバイスのネットワーク層アドレス
  • 隣接デバイスのIOSバージョン情報

これに加えて、CDPバージョン2では次の情報が追加されています。

  • VTPドメイン名
  • ネイティブVLAN
  • インタフェースの2重モード

CDPの無効化

CDPでやり取りされる情報は、IOSバージョンやIPアドレスの情報が含まれています。そのため、不用意にCDPで情報を送信すると悪意のあるクラッカーに不正アクセスの足がかりとなる情報を与えてしまう可能性もあります。また、直接接続されている機器がCisco製以外であれば、CDPの情報を送信することは意味がありません。そこで、CDPの有効化/無効化をコントロールする必要があります。

CDPを無効化するには、グローバルコンフィグレーションモードで次のコマンドを入力します。

(config)#no cdp run

再びCDPを有効にするには、cdp runコマンドを入力します。

そして、インタフェース単位でもCDPを無効化することができます。CDPを無効にしたいインタフェースコンフィグレーションモードで次のコマンドを入力します。

(config-if)#no cdp enable

この設定により、該当のインタフェースからCDPの情報を送信することをとめることができます。再びCDPを有効にするにはcdp enableコマンドを入力してください。

CDPの確認

CDPで直接接続されているCisco機器を確認するには、主に次のコマンドを利用します。

  • #show cdp neighbor [detail]
  • #show cdp entry <device-id>

以下は、show cdp neighborの出力例です。

CenterRT#show cdp neighbors 
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, 
                  D - Remote, C - CVTA, M - Two-port Mac Relay 

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
Switch           Gig 0              179             S I   WS-C2960S Gig 1/0/1

show cdp neighborコマンドを実行している機器のホスト名はCenterRTです。CenterRTはSwitchと直接接続されています。接続しているインタフェースは、以下のとおりです。

CenterRT GigabitEthernet0 (Local Intrfce)
Switch GigabitEthernet1/0/1(Port ID)

また、PlatformからSwitchはCatalyst2960Sであることもわかります。

CDPで確認した機器同士の接続
図 CDPで確認した機器同士の接続

CDPの詳細な情報を確認するには、show cdp neighbor detailまたはshow cdp entry <device-id>コマンドです。

CenterRT#show cdp neighbors detail 
-------------------------
Device ID: Switch
Entry address(es): 10.0.0.100
Platform: cisco WS-C2960S-24TS-L,  Capabilities: Switch IGMP 
Interface: GigabitEthernet0,  Port ID (outgoing port): GigabitEthernet1/0/1
Holdtime : 177 sec

Version :
Cisco IOS Software, C2960S Software (C2960S-UNIVERSALK9-M), Version 15.0(2)SE2, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2013 by Cisco Systems, Inc.
Compiled Tue 05-Feb-13 12:48 by prod_rel_team

advertisement version: 2
Protocol Hello:  OUI=0x00000C, Protocol ID=0x0112; payload len=27, value=00000000FFFFFFFF010231FF00000000000070105C247880FF0000
VTP Management Domain: 'cisco'
Native VLAN: 1
Duplex: full

show cdp neighbor detailコマンドでは、IPアドレスやIOSバージョン、VTPドメイン、ネイティブVLAN、デュプレックスなどのさまざまな情報もわかります。

LLDPの概要

CiscoのCDPに相当する標準化されたプロトコルがLLDP(Link Layer Discovery Protocol)です。LLDPはIEEE802.1ABで標準化されています。LLDPはCDPと同様にデータリンク層で動作します。LLDPが有効な機器同士でLLDPフレームを交換することで、直接接続している機器を検出したり、追加の設定情報を通知することができます。

Cisco Catalystスイッチでは、LLDPをサポートしているモデルでもデフォルトでは、LLDPは無効化されています。LLDPを有効にするには、グローバルコンフィグレーションモードで次のコマンドを利用します。

(config)#lldp run

また、CDPと同様にインタフェース単位での設定も可能です。インタフェース単位でLLDPを設定するには、インタフェースコンフィグレーションモードで次のコマンドを利用します。

(config-if)#lldp [transmit | recieve]