CDP (англ. Cisco Discovery Protocol) — проприетарный протокол второго уровня, разработанный компанией cisco Systems, позволяющий обнаруживать подключенное (напрямую или через устройства первого уровня) сетевое оборудование cisco, его название, версию IOS и IP-адреса. Поддерживается многими устройствами компании, почти не поддерживается сторонними производителями.
Устройство посылает мультикаст анонс на MAC-адрес 01-00-0c-cc-cc-cc. В конфигурации по-умолчанию анонсы рассылаются каждые 60 с на порты Ethernet, Frame Relay и ATM. Каждое устройство, понимающее протокол, сохраняет полученную информацию в таблице и позволяет посмотреть её по команде show cdp neighbours . Если устройство трижды не прислало анонс (при значениях по-умолчанию - 3 минуты), оно удаляется из таблицы.
Формат пакета CDP (перевод документации с cisco.com)
Пакет CDP содержит информацию об устройствах Cisco, находящихся в сети. Он состоит из заголовка (header) и следующего за ним набора полей переменной длины, состоящих из троек (триплетов) тип/длина/значение (type/length/value).
Рисунок A-2 показывает формат пакета CDP:
Version Поле версии содержит используемую версию протокола CDP. В этом поле всегда содержится значение 0x01.
Time-to-Live Поле Time-to-Live (время жизни) указывает время в секундах, в течение которого получатель пакета CDP должен сохранять информацию, содержащуюся в пакете.
Checksum Поле контрольной суммы содержит стандартную для протокола IP контрольную сумму.
Type Поле типа указывает на тип тройки type/length/value. Возможны следующие значения:
- Device ID
- Address
- Port ID
- Capabilities
- Version
- Platform
- IP Prefix
Length Поле длины содержит общую длину в байтах полей type/length/value.
Value Поле значения содержит нечто, зависящее от параметра Type, варианты описаны далее:
Device ID (type 0x0001) Value содержит ID устройства, идентифицирующее его. Этот тип разрешает различные адресные ссылки ассоциировать с тем же самым устройством. По умолчанию, device ID содержит либо полное имя хоста (fully-qualified host name), включая имя домена, либо серийный номер устройства (hardware serial number) в формате ASCII.
Address (type 0x0002) Параметр Value одержит число, показывающее, сколько адресов содержит пакет, по одному представлению для каждого адреса. Адреса принедлежат интерфейсу, с которого посылается сообщение CDP. Устройство может анонсировать все адреса для выбранного протокола и дополнительно может представить один или более IP адресов loopback. если устройство может управляться по SNMP, то первое значение type/length/value является адресом, на который устройство принимает сообщения SNMP. Рисунок A-3 показывает формат каждого адреса, содержащегося в пакете:
Таблица A-1 показывает поля type/length/value в пакете.
Field |
Description |
Protocol (1 байт) |
Тип протокола. Могут быть следующие величины: 1—формат NLPID 2—формат 802.2 |
Length |
Длина поля протокола. Для протокола с типом 1 (NLPID) длина равна 1. Для протокола 2 (802.2) длина может быть 3 или 8, в зависимости от того, используется ли SNAP. |
Protocol |
Поле Protocol переменной длины содержит одну из следующих величин: 0x81—ISO CLNS (protocol type 3D 1) 0xCC—IP (protocol type 3D 1) 0xAAAA03 000000 0800—Pv6 (protocol type 3D 2) 0xAAAA03 000000 6003—DECNET Phase IV (protocol type 3D 2) 0xAAAA03 000000 809B—AppleTalk (protocol type 3D 2) 0xAAAA03 000000 8137—Novell IPX (protocol type 3D 2) 0xAAAA03 000000 80c4—Banyan VINES (protocol type 3D 2) 0xAAAA03 000000 0600— XNS (protocol type 3D 2) 0xAAAA03 000000 8019—Apollo Domain (protocol type 3D 2) |
Address length |
Длина поля адреса (Address) в байтах |
Address |
Адрес интерфейса или адрес системы, если адрес не назначен непосредственно на интерфейс. |
Port ID (type 0x0003) Содержит type/length/value, где размещена строка ASCII, идентифицирующая порт, который посылает сообщения CDP. Длина type/length/value определяется диной строки.
Capabilities (type 0x0004) Описывает функциональные возможности устройства. Может быть набором бит, которые могут быть установленый в 1. Биты описаны в Таблице A-2:
Бит |
Описание |
0x01 |
Осуществляет маршрутизацию L3 на одном из протоколов сетевого уровня |
0x02 |
Осуществляет прозрачный мост L2 |
0x04 |
Осуществляет мост L2, тип source-route. В этом случае могут быть также установлен бит 0x02 |
0x08 |
Делает коммутацию (switching) L2. Разница между битами 0x02 и 0x08 в том, что на коммутаторе не запущен протокол STP (Spanning-Tree Protocol). Подразумевается, что устройство используется в свободной от физических петель топологии. |
0x10 |
Посылает и принимает пакеты как минимум на одном протоколе сетевого уровня. Если устройство маршрутизирует протокол, этот бит должен быть сброшен. |
0x20 |
Мост или коммутатор не перенаправляют пакеты IGMP Report на немаршрутизируемые порты. |
0x40 |
Обеспечивает функциональность L1. |
Version (type 0x0005) Содержит строку, содержащую информацию о версии релиза программного обеспечения, которое работает на устройстве (обычно имеется в виду IOS). Поле длины type/length/value определяет длину строки.
Platform (type 0x0006) Содержит строку ASCII, описывающую железо устройства. Поле длины type/length/value определяет длину строки. Возможны следующие значаения в строке Platform:
- Cisco 7000
- Cisco 7010
- Cisco 4500
- Cisco 3100
- Cisco 3000
- Cisco 2500
- Cisco 2000
- Cisco 1000
- AGS+
- AGS
- MGS
- CGS
- IGS
- cs500
- Catalyst
- A100
- Synergy
IP Prefix (type 0x0007) Сожержит набор из 0 или более префиксов IP в поле значения. Префиксов нет, если величина поля Length триады type/length/value равна 0. В другом случае поле длины Length включает длину полей типа и длины, плюс 5 байт на каждый IP prefix. Каждый IP prefix состоит из 4 байт номера IP сети и 1 байта, которая определяет маску сети. Маска сети может быть числом в диапазоне 0..32, указывающим на количество установленных слева бит в маске. Каждый IP prefix представляет один из непосредственно подключенных к роутеру сегментов IP сети. Этот параметр позволяет маршрутизаторам обмениваться информацией о топологии без необходимости настройки полной IP-маршрутизации. |