Коммутаторы : Коммутаторы Cisco Catalyst серии 6500

Многоадресная рассылка в кампусной сети: : Функции отслеживания CGMP и IGMP

5 апреля 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Отзыв


Содержание


Введение

Целью протокола CGMP (Cisco Group Management Protocol) и отслеживания IGMP (Internet Group Management Protocol) является ограничение многоадресного трафика в коммутируемой сети. По умолчанию коммутатор локальной сети выполняет массовую рассылку многоадресного трафика внутри широковещательного домена. Это может потреблять значительный объем ресурсов полосы пропускания, если несколько серверов многоадресной рассылки передают потоки данных в сегмент.

Перед началом работы

Условные обозначения

Дополнительные сведения об условных обозначениях см. в документе Технические рекомендации Cisco. Условные обозначения.

Предварительные условия

Для данного документа отсутствуют предварительные условия.

Используемые компоненты

Настоящий документ не имеет жесткой привязки к каким-либо конкретным версиям программного обеспечения и оборудования.

Общие сведения

Многоадресный трафик становится перенасыщенным, так как коммутатор обычно определяет MAC-адреса на основе поля адреса источника всех принимаемых кадров. МАС-адрес многоадресной рассылки никогда не используется в качестве адреса источника пакета. Такие адреса не отображаются в таблице МАС-адресов, и коммутатор не имеет возможности узнать их.

Первый вариант решения этой проблемы заключается в настройке статических MAC-адресов для каждой группы и каждого клиента. Это решение работает нормально, однако не является динамическим и не допускает масштабирования. Для использования такого решения на коммутаторах Catalyst 4000, 5000 или 6000 выполните одну из следующих команд:

  • set cam static <МАС-адрес_многоадресной_рассылки> <модуль/порт>

  • set cam permanent <МАС-адрес_многоадресной_рассылки> <модуль/порт>

Результат выполнения этих двух команд одинаковый за исключением того, что статические записи исчезают при перезагрузке, а постоянные записи — нет.

Вторым решением является использование CGMP — собственного протокола Cisco, функционирующего между многоадресным маршрутизатором и коммутатором. CGMP позволяет многоадресному маршрутизатору Cisco интерпретировать IGMP-сообщения, отправленные хостами, и сообщает коммутатору о содержимом пакетов IGMP.

Последним (и наиболее действенным) решением является отслеживание IGMP. При использовании отслеживания IGMP коммутатор перехватывает IGMP-сообщения от самого хоста и соответствующим образом обновляет свою таблицу MAC-адресов. Для поддержки отслеживания IGMP требуется дополнительное аппаратное обеспечение.

Конфигурации CGMP, представленные в этом документе, предназначены для коммутаторов Catalyst 4000 и 5000, работающих под управлением CatOS (CGMP не поддерживается на коммутаторах Catalyst 6000), а конфигурации отслеживания IGMP предназначены для коммутаторов Catalyst 5000 и 6000 под управлением CatOS. Дополнительные сведения о настройке возможности многоадресной рассылки на других платформах коммутации см. в таблице поддержки многоадресных коммутаторов Catalyst, которую можно использовать в качестве инструкции по настройке конкретных коммутаторов.

Следующий раздел содержит краткое описание адреса многоадресной рассылки, объяснение функций протокола IGMP и дополнительные сведения о протоколе CGMP и отслеживании IGMP.

Адрес многоадресной рассылки

  1. IP-адреса многоадресной рассылки являются IP-адресами класса D. Поэтому все IP-адреса от 224.0.0.0 до 239.255.255.255 являются IP-адресами многоадресной рассылки. Они также называются групповыми адресами назначения (Group Destination Address — GDA).

  2. С каждым GDA связан MAC-адрес. Этот MAC-адрес состоит из значения 01-00-5e, за которым следуют последние 23 бита GDA, переведенные в шестнадцатеричный формат, как показано ниже.

    • 239.20.20.20 соответствует МАС-адресу 01-00-5e-14-14-14.

    • 239.10.10.10 соответствует MAC-адресу 01-00-5e-0a-0a-0a.

    Таким образом, здесь используется сопоставление не «один-к-одному», а «один-ко-многим». Из этих двух адресов видно, что первый октет (239) не используется в МАС-адресе. Таким образом, адреса многоадресной рассылки с одинаковыми последними тремя октетами, но разным первым октетом, имеют перекрывающиеся МАС-адреса.

  3. Некоторые IP-адреса многоадресной рассылки зарезервированы для особых целей, как показано ниже.

    • 224.0.0.1 — все узлы, допускающие многоадресную рассылку.

    • 224.0.0.2 – все маршрутизаторы, допускающие многоадресную рассылку.

    • 224.0.0.5 и 224.0.0.6 используются протоколом OSPF (Open Shortest Path First).

В общем случае адреса в диапазоне от 224.0.0.1 до 224.0.0.255 являются зарезервированными и используются различными протоколами (стандартными или специальными, например протоколом HSRP (Hot Standby Router Protocol)). Cisco не рекомендует использовать эти адреса для GDA в многоадресной сети. CGMP и отслеживание IGMP не работают вместе с этим зарезервированным диапазоном адресов.

Протокол IGMP

IGMP (Internet Group Management Protocol) — это стандарт, определенный в документах RFC1112 (IGMPv1), RFC2236 (IGMPv2) и RFC3376 (IGMPv3). IGMP указывает, как узел может зарегистрировать маршрутизатор, чтобы получать конкретный многоадресный трафик. В следующем разделе приведено краткое описание IGMP.

IGMPv1

Сообщения IGMP версии 1 (IGMPv1) передаются в IP-датаграммах и содержат следующие поля:

  • Version : 1

  • Введите : Существует два типа IGMP-сообщений, запрос участия и отчет участия.

  • Контрольная сумма

  • GDA

Отчеты участия создаются хостами, которым нужно получить определенную группу многоадресной рассылки (GDA). Запросы участия генерируются маршрутизаторами через регулярные интервалы для проверки наличия хоста, которому требуется GDA в данном сегменте.

Хосты рассылают отчеты участия либо по своей инициативе (если хост хочет сначала получить трафик GDA), либо в ответ на запрос участия. Отчеты содержат следующие поля:

Сведения уровня 2

  • MAC-адрес отправителя: MAC-адрес хоста

  • MAC-адрес получателя : MAC-адрес назначения для GDA

Сведения уровня 3

  • IP-адрес источника: IP-адрес хоста

  • IP-адрес получателя: GDA

Пакет IGMP

  • Кроме того, данные IGMP содержат GDA и ряд других полей.

Запросы участия хоста отправляются маршрутизатором на общий адрес многоадресной рассылки: 224.0.0.1. Эти запросы используют значение 0.0.0.0 в поле GDA IGMP. Хост для каждой группы должен ответить на этот запрос, иначе маршрутизатор перестает пересылать трафик на данный сегмент для этого GDA (после трех попыток). Маршрутизатор сохраняет запись многоадресной маршрутизации для каждого источника и связывает его со списком исходящих интерфейсов (интерфейсов, от которых поступает отчет IGMP). Если после трех попыток на запрос IGMP не поступил ответ, этот интерфейс удаляется из списка исходящих интерфейсов для всех записей, связанных с данным GDA.

Примечание: IGMPv1 не имеет никакого механизма выхода. Если хосту больше не требуется получать трафик, он просто завершает работу. Если это последний хост в подсети, маршрутизатор не получает ответ на свой запрос и удаляет GDA для этой подсети.

IGMPv2

В протоколе IGMP версии 2 (IGMPv2) поле версии удалено, а в поле типа теперь можно вводить различные значения. Типы перечислены ниже.

  • Запрос участия

  • Отчет участия IGMPv1

  • Отчет участия версии 2

  • Выход из группы

Описания наиболее важных новых функций, добавленных в IGMPv2, приведены ниже.

  • IGMP-сообщение о выходе: когда хост желает выйти из группы, он должен послать IGMP-сообщение о выходе из группы на адрес 224.0.0.2 (вместо того, чтобы покинуть группу без оповещения, как при работе с протоколом IGMPv1).

  • Теперь маршрутизатор может отправить запрос определенной группы, отправив запрос участия на адрес GDA группы вместо того, чтобы отправлять его по адресу 0.0.0.0.

IGMPv3

В протоколе IGMP версии 3 (ICMPv3) поле типа может принимать следующие значения:

  • Запрос участия

  • Отчет об участии версии 3

Реализация протокола IGMPv3 должна также поддерживать следующие три типа сообщений для взаимодействия с предыдущими версиями IGMP:

  • Отчет участия версии 1 [RFC1112]

  • Отчет участия версии 2 [RFC2236]

  • Выход из группы версии 2 [RFC2236]

IGMPv3 предусматривает дополнительную поддержку фильтрации источников, то есть, возможности системы сообщать о своей заинтересованности в получении пакетов с определенных исходных адресов или со всех адресов кроме определенных исходных адресов, данные с которых поступают на конкретный адрес многоадресной рассылки. Эта функция также называется Source Specific Multicast (SSM).

Чтобы компьютер поддерживал SSM, он должен поддерживать IGMPv3. Однако, относительно мало операционных систем поддерживают IGMPv3. Windows XP поддерживает IGMPv3, также существуют исправления поддержки IGMPv3 для FreeBSD и Linux.

Администраторы должны различать поддержку IGMPv3 на уровне маршрутизатора и отслеживание IGMPv3 на уровне коммутатора. Это две разные возможности.

Поддержка IGMPv3 на коммутаторах Catalyst уровня 2

  • Catalyst 6000 рабочее программное обеспечение в смешанном режиме (CatOS на Супервизоре и Cisco программное обеспечение IOS� на MSFC) официально поддерживает IGMPv3, snooping, запускаясь в версии 7.5 (1).

  • В версиях до 7.5(1) коммутатор Catalyst 6000 официально не поддерживал IGMPv3, но обычно мог обрабатывать пакеты IGMPv3.

  • Коммутаторы Catalyst 6000, работающие под управлением программного обеспечения интегрированной IOS, поддерживают IGMPv3 на уровне маршрутизатора (интерфейс уровня 3), начиная с версии 12.1(8a)E.

  • Коммутатор Catalyst 4000 поддерживает IGMPv3 только на уровне маршрутизатора в модулях Supervisor III и IV. Он не поддерживает отслеживание IGMPv3.

Поддержка IGMPv3 на маршрутизаторах Cisco уровня 3

IGMPv3 поддерживается на всех платформах рабочий Cisco выпуск ПО IOS� 12.1 (5) T и более поздние версии. Дополнительные сведения см. в документации по IGMP версии 3. Дополнительные сведения об использовании функции SSM с протоколами IGMPv3, IGMP v3lite и URL Rendezvous Directory (URD) см. в документации по использованию функции Source-Specific Multicast с протоколами IGMPv3, IGMP v3lite и URD.

Предупреждения

Когда на коммутаторе работает отслеживание IGMP, он перехватывает все пакеты IGMP и на основании их содержимого заполняет статическую таблицу пересылки уровня 2. Если в сети присутствуют хосты IGMPv1 или v2, коммутатор считывает информацию о присоединениях и выходах IGMP, чтобы определить, какие хосты должны принимать или прекратить принимать конкретные многоадресные потоки.

Протокол IGMPv3 более сложен, поскольку он использует не только групповой адрес (адрес многоадресной рассылки), но и источники, с которых предполагается поступление трафика. Кроме коммутатора Catalyst 6000, использующего операционную систему CatOS 7.5 или более поздней версии и собственное программное обеспечение IOS версии 12.1(8a)E или выше, на данный момент ни один коммутатор не может эффективно отслеживать такие пакеты и строить на основе этих данных таблицу пересылки. Поэтому, если на коммутаторе существует хост IGMPv3, отслеживание IGMP следует отключить. Когда отслеживание IGMP отключено, коммутатор не может динамически строить таблицу пересылки уровня 2 для многоадресных потоков. Другими словами, коммутатор лавинообразно рассылает многоадресные потоки.

Когда отслеживание IGMP отключено, одно из возможных решений — ручная настройка многоадресных динамических записей ассоциативной памяти (Content-Addressable Memory — CAM), позволяющая предотвратить переполнение подсети многоадресным трафиком. Это административная задача, но не динамическое решение. Когда клиент отказывается от получения трафика, запись CAM не удаляется из коммутатора (это можно сделать только вручную). Поэтому сетевой трафик по-прежнему направляется хосту.

При использовании IGMPv3 в сети коммутаторы с CGMP функционируют нормально за исключением того, что не работает функция CGMP Fast-Leave. Если функция CGMP Fast-Leave нужна, лучше вернуться к версии IGMPv2.

Предупреждения о нерешенных проблемах, связанных с отдельными платформами, можно найти в комментариях к выпуску соответствующих коммутаторов.

Взаимодействие между IGMPv1 и IGMPv2

В случае с IGMPv1 и IGMPv2 только один маршрутизатор для каждой IP-подсети отправляет запросы. Данный маршрутизатор называется маршрутизатором запросов. В IGMPv1 маршрутизатор запросов выбирается с помощью протокола многоадресной маршрутизации. В IGMPv2 маршрутизатор выбирается по наименьшему IP-адресу среди всех маршрутизаторов. Ниже представлены некоторые возможные случаи:

Сценарий 1: Маршрутизатор IGMPv1 с комбинацией хостов IGMPv1 и IGMPv2

Маршрутизатор не поддерживает отчет IGMPv2, поэтому все хосты должны использовать только отчет IGMPv1.

Сценарий 2: Маршрутизатор IGMPv2 с комбинацией хостов IGMPv2 и IGMPv3

Хосты IGMPv1 не могут интерпретировать запрос IGMPv2 или запрос участия в группе IGMPv2. Маршрутизатор должен использовать только IGMPv1 и приостановить операцию выхода.

Сценарий 3: Маршрутизаторы IGMPv1 и IGMPv2, расположенные в одном сегменте

Маршрутизатор IGMPv1 не может обнаружить маршрутизатор IGMPv2. Следовательно, маршрутизатор IGMPv2 должен быть настроен администратором так же, как маршрутизатор IGMPv1. В любом случае возможно, что не удастся согласованно выбрать маршрутизатор запросов.

Взаимодействие между IGMPv1/IGMPv2 и IGMPv3

Во всех версиях IGMP только один маршрутизатор для каждой IP-подсети посылает запросы. Данный маршрутизатор называется маршрутизатором запросов. В IGMPv1 маршрутизатор запросов выбирается с помощью протокола многоадресной маршрутизации. В IGMPv2 и IGMPv3 маршрутизатор выбирается по наименьшему IP-адресу среди всех маршрутизаторов. Ниже представлены некоторые возможные варианты взаимодействия.

Сценарий 1: Маршрутизатор IGMPv1/IGMPv2 с комбинацией хостов IGMPv1/IGMPv2 и IGMPv3

Поскольку маршрутизатор не может интерпретировать отчеты IGMPv3, все хосты используют отчеты IGMPv1/IGMPv2.

Сценарий 2: Маршрутизатор IGMPv3 с комбинацией хостов IGMPv1/IGMPv2 и IGMPv3

Хосты IGMPv1/IGMPv2 не могут интерпретировать запрос IGMPv3 или запрос участия IGMPv3. Маршрутизатор должен использовать только ту версию IGMP, которая соответствует наименьшей версии клиента IGMP из всех имеющихся. В случае клиентов IGMPv3 и IGMPv2 маршрутизатор использует IGMPv2. В случае клиентов IGMPv1, IGMPv2 и IGMPv3 маршрутизатор использует IGMPv1.

Сценарий 3: Маршрутизаторы разных версий, расположенные в одном сегменте

Когда маршрутизаторы разных версий находятся в одном сегменте, маршрутизаторы более низкой версии не могут обнаруживать маршрутизаторы более высоких версий. Таким образом, различные маршрутизаторы должны быть настроены администратором на основе одной версии. Эта версия должна совпадать с наименьшей версией на любом маршрутизаторе запросов.

IGMP на маршрутизаторе

Если по умолчанию нет ни одного пользователя, зарегистрированного в определенной группе в подсети, маршрутизатор не пересылает многоадресный трафик для этой группы в данную подсеть. Это означает, что маршрутизатору необходимо получить отчет IGMP для GDA, чтобы добавить его в таблицу многоадресной маршрутизации и начать пересылку трафика для этой группы.

На маршрутизаторе необходимо выполнить следующие действия:

  1. Подключите многоадресную маршрутизацию в глобальном режиме, как показано ниже.

    ip multicast-routing
    
  2. Настройте протокол многоадресной маршрутизации на связанном интерфейсе, как показано ниже.

    ip pim dense-mode  
    
  3. Для мониторинга IGMP следуйте процедуре, описанной ниже.

    show ip igmp interface
    show ip igmp group
    show ip mroute
    
  4. Настройте маршрутизатор для отправки отчета IGMP (на интерфейсе), как показано ниже.

    ip igmp join-group [GDA_ip_address]
    ip igmp version [1 | 2 | 3]
    

Практический пример для маршрутизатора

Маршрутизатор настроен на перенаправление трафика между двумя субинтерфейсами, Fast-Ethernet 0.2 и Fast-Ethernet 0.3. Оба интерфейса также настроены для использования протокола IGMP. Из приведенных внизу выходных данных можно узнать версию IGMP, группу, к которой выполнено присоединение, и т.п.

Конфигурация

ip multicast-routing 
 

interface FastEthernet0 
 no ip address 
 no ip directed-broadcast 
! 
interface FastEthernet0.2 
 encapsulation isl 2 
 ip address 10.2.2.1 255.255.255.0 
 no ip redirects 
 no ip directed-broadcast 
 ip pim dense-mode 
! 
interface FastEthernet0.3 
 encapsulation isl 3 
 ip address 10.3.3.1 255.255.255.0 
 no ip redirects 
 no ip directed-broadcast 
 ip pim dense-mode 
!

show ip igmp interface

 Fa0.2 is up, line protocol is up 
 Internet address is 10.2.2.1/24 
 IGMP is enabled on interface 
 Current IGMP version is 2 
 CGMP is disabled on interface 
 IGMP query interval is 60 seconds 
 IGMP querier timeout is 120 seconds 
 IGMP max query response time is 10 seconds 
 Inbound IGMP access group is not set 
 IGMP activity: 3 joins, 2 leaves 
 Multicast routing is enabled on interface 
 Multicast TTL threshold is 0 
 Multicast designated router (DR) is 10.2.2.1 (this system) 
 IGMP querying router is 10.2.2.1 (this system) 
 Multicast groups joined: 224.0.1.40 
 
 Fa0.3 is up, line protocol is up 
 Internet address is 10.3.3.1/24 
 IGMP is enabled on interface 
 Current IGMP version is 2 
 CGMP is disabled on interface 
 IGMP query interval is 60 seconds 
 IGMP querier timeout is 120 seconds 
 IGMP max query response time is 10 seconds 
 Inbound IGMP access group is not set 
 IGMP activity: 1 joins, 1 leaves 
 Multicast routing is enabled on interface 
 Multicast TTL threshold is 0 
 Multicast designated router (DR) is 10.3.3.1 (this system) 
 IGMP querying router is 10.3.3.1 (this system) 
 No multicast groups joined

show ip mroute и show ip igmp group

 Router_A#show ip mroute 
 IP Multicast Routing Table 
 Flags: D - Dense, S - Sparse, C - Connected, L - Local, P - Pruned 
        R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT 
 Timers: Uptime/Expires 
 Interface state: Interface, Next-Hop or VCD, State/Mode 
   

 (*, 239.10.10.10), 00:01:15/00:02:59, RP 0.0.0.0, flags: DJC 
   Incoming interface: Null, RPF nbr 0.0.0.0 
   Outgoing interface list: 
     FastEthernet0.3, Forward/Dense, 00:01:16/00:00:00 

 (10.2.2.2, 239.10.10.10), 00:00:39/00:02:20, flags: CT 
   Incoming interface: FastEthernet0.2, RPF nbr 0.0.0.0 
   Outgoing interface list: 
     FastEthernet0.3, Forward/Dense, 00:00:39/00:00:00 

 Router_A#show ip igmp groups 
 IGMP Connected Group Membership 
 Group Address    Interface            Uptime    Expires   Last Reporter 
 239.10.10.10     Fa0.3                00:02:48  00:02:04  10.3.3.2 
 Router_A#

Протокол CGMP

Для поддержки протокола CGMP (Cisco Group Management Protocol) на коммутаторах Catalyst используйте таблицу поддержки многоадресных коммутаторов Catalyst.

Кадры CGMP и типы сообщений

Протокол CGMP был впервые внедрен компанией Cisco для ограничения многоадресного трафика в сетях уровня 2. Так как коммутатор по своей природе не может просматривать пакеты третьего уровня, он не может отличить IGMP-пакет. С помощью протокола CGMP маршрутизатор предоставляет интерфейс между хостами. Маршрутизаторы «говорят» на языке протокола IGMP, а коммутаторы — на языке протокола CGMP.

Кадры CGMP — это кадры Ethernet с MAC-адресом назначения 01-00-0c-dd-dd-dd и заголовком протокола SNAP (Subnetwork Access Protocol), имеющим значение 0x2001. Кадры CGMP содержат следующие поля:

  • Version : 1 или 2.

  • Тип сообщения: Присоединение или выход.

  • Количество: Количество пар адресов многоадресной/одноадресной рассылки в сообщении.

  • GDA: 48-битный МАС-адрес группы многоадресной рассылки.

  • Адрес источника одноадресной рассылки (Unicast Source Address — USA): 48-битный MAC-адрес одноадресной рассылки устройств, который присоединяется к GDA.

Примечание: Значение поля счетчика определяет количество отображений двух последних полей.

По умолчанию процессоры коммутатора (называются NMP в Catalyst) прослушивают адреса многоадресной рассылки, только когда выполняется команда show cam system. При включении CGMP на коммутаторе адрес 01-00-0c-dd-dd-dd добавляется в вывод команды show cam system.

В приведенной ниже таблице перечислены все возможные CGMP-сообщения.

GDA USA Присоединение/Выход Значение
MAC-адрес групповой адресации MAC-адрес клиента Соединение Добавление порта в группу.
MAC-адрес групповой адресации MAC-адрес клиента Выход Удаление порта из группы.
00-00-00-00-00-00 MAC-адрес маршрутизатора Соединение Назначение порта маршрутизатора.
00-00-00-00-00-00 MAC-адрес маршрутизатора Выход Отмена назначения порта маршрутизатора.
MAC-адрес групповой адресации 00-00-00-00-00-00 Выход Удаление группы.
00-00-00-00-00-00 00-00-00-00-00-00 Выход Удаление всех групп.

Получение сведений о портах маршрутизатора

Коммутатор должен обладать сведениями обо всех портах маршрутизатора, чтобы они автоматически добавлялись к заново созданным многоадресным записям. Коммутатор получает сведения о портах маршрутизатора при получении CGMP-сообщения о присоединении к адресу GDA 00-00-00-00-00-00 с MAC-адресом источника одноадресной рассылки этого маршрутизатора (третий тип сообщений в таблице). Эти сообщения генерируются маршрутизатором на всех интерфейсах, настроенных для использования CGMP. Это также статический метод для настройки портов маршрутизатора на коммутаторе.

Присоединение к группе с использованием протокола CGMP

  • Новый клиент отправляет запрос на получение трафика для GDA, поэтому клиент посылает IGMP-сообщение с отчетом участия.

  • Маршрутизатор получает отчет IGMP, обрабатывает его и отправляет CGMP-сообщение коммутатору. Маршрутизатор копирует МАС-адрес назначения в поле GDA CGMP-сообщения о присоединении, а МАС-адрес источника — в поле USA CGMP-сообщения о присоединении. Затем он посылает сообщение назад коммутатору.

  • Коммутатор с подключенным протоколом CGMP должен прослушивать адреса CGMP 01-00-0c-dd-dd-dd. Процессор коммутатора ищет USA в таблице CAM. Найдя в таблице CAM адрес USA, коммутатор определяет, на каком порту находится USA, и выполняет одно из следующих действий:

    • Создает новую статическую запись для GDA и связывает с ней порт USA вместе со всеми портами маршрутизатора.

    • Добавляет порт USA в список портов для данного GDA (если статическая запись уже существует).

Выход из группы с использованием протокола CGMP

Статические записи, полученные с помощью CGMP, являются постоянными, пока не произойдет изменение топологии связующего дерева во VLAN или маршрутизатор не отправит одно из последних CGMP-сообщений о выходе в предыдущей таблице.

Если IGMPv1 является хостом, не отправляйте IGMP-сообщения о выходе из группы. Маршрутизатор передает сообщения о выходе, только если он не получает ответа на три последовательных запроса IGMP. Это означает, что никакие порты не удаляются из группы, если каким-либо пользователям нужна эта группа.

С введением IGMPv2 и механизма выхода из группы IGMP Cisco внесла дополнения в исходную спецификацию CGMP (CGMPv2). Это дополнение называется CGMP Fast-Leave (ускоренный выход).

Обработка CGMP Fast-Leave позволяет коммутатору обнаружить сообщения IGMPv2 о выходе, которые хосты любых портов модуля Supervisor Engine отправили на адрес многоадресной рассылки для всех маршрутизаторов (224.0.0.2). Если модуль Supervisor Engine получает сообщение о выходе, он запускает таймер запроса-ответа и посылает сообщение на порт, на котором было получено сообщение о выходе, чтобы определить, есть ли еще хост, готовый принять эту многоадресную группу на данном порту. Если срок таймера истекает до получения CGMP-сообщения о присоединении, порт удаляется из дерева многоадресной передачи для группы многоадресной рассылки, указанной в исходном сообщении о выходе. Если это последний порт в группе многоадресной рассылки, он перенаправляет IGMP-сообщение о выходе на все порты маршрутизатора. После этого маршрутизатор запускает стандартный процесс удаления с помощью запроса к определенной группе. Так как ответ не получен, эта группа будет удалена маршрутизатором из таблицы многоадресной маршрутизации для данного интерфейса. Маршрутизатор также пересылает CGMP-сообщение о выходе на коммутатор, который удаляет эту группу из статической таблицы. Функция Fast-Leave гарантирует оптимальное управление полосой пропускания для всех хостов в коммутируемой сети, даже когда несколько групп многоадресной рассылки используются одновременно.

Когда используется механизм выхода CGMP, в вывод команды show cam system добавляются две записи, как показано ниже.

01-00-5e-00-00-01
01-00-5e-00-00-02

Механизм выхода IGMP использует адрес 224.0.0.2, а запрос IGMP — 224.0.0.1.

Выполните следующие действия, чтобы устранить неполадки CGMP:

  1. Из-за конфликта с протоколом HSRP обработка выхода CGMP по умолчанию отключена. HSRP использует MAC-адрес 01-00-5e-00-00-02, который совпадает с адресом, используемым механизмом выхода IGMP версии 2. При использовании функции CGMP Fast-Leave все пакеты HSRP поступают на процессор коммутатора. Поскольку сообщение HSRP не является пакетом IGMP, коммутатор заново генерирует все такие сообщения и пересылает их на все порты маршрутизатора. Маршрутизаторы, получающие пакеты hsrp hello или hsrp peers, теряют подключение. Таким образом, при устранении неполадок протокола HSRP стоит попробовать отключить функцию CGMP Fast-Leave.

    Чтобы включить обработку выхода CGMP, выполните команду set cgmp leave enable.

  2. Когда обработка выхода CGMP включена, коммутатор семейства Catalyst 5000 определяет порты маршрутизатора при помощи сообщений PIM-v1, HSRP и CGMP о рефлексивном присоединении. Когда обработка выхода CGMP отключена, коммутатор серии Catalyst 5000 получает сведения о портах маршрутизатора только из сообщений CGMP о рефлексивном присоединении.

  3. CGMP не удаляет многоадресный трафик для какого-либо IP-адреса многоадресной рассылки, который соответствует диапазону MAC-адресов от 01-00-5E-00-00-00 до 01-00-5E-00-00-FF. Зарезервированные IP-адреса многоадресной рассылки в диапазоне от 224.0.0.0 до 224.0.0.255 используются для пересылки локального многоадресного IP-трафика на отдельном участке маршрута уровня 3.

CGMP и сеть, состоящая только из источников

Сеть, состоящая только из источников, — это сегмент только с источником для многоадресной рассылки без реального клиента. Поэтому возможно, что в данном сегменте не будет создан ни один отчет IGMP. Впрочем, CGMP также необходим для ограничения лавинной передачи трафика с этого источника (используется только для маршрутизатора). Если маршрутизатор обнаруживает многоадресный трафик на одном интерфейсе без отчета IGMP, он идентифицирует его как сеть, состоящую только из источников многоадресной рассылки. Маршрутизатор генерирует CGMP-сообщение о присоединении к группе самого себя, а коммутатор просто добавляет эту группу (только с портом маршрутизатора).

Настройка маршрутизаторов и коммутаторов Cisco для включения CGMP

Приведенные ниже команды действительны только для серий Catalyst 4000 и 5000 (а также для моделей 2901, 2902, 2926, 2948G и 4912).

  • Многоадресный маршрутизатор

    Включите многоадресную IP-рассылку (глобальная команда):

    • ip multicast-routing

    Включите каждый интерфейс, использующий CGMP (режим интерфейса), с помощью следующих команд:

    • ip pim <sparse-mode/dense-mode>

    • ip igmp

    • ip cgmp

    Устраните проблему многоадресной рассылки уровня 2 с помощью следующих команд:

    • debug ip igmp

    • debug ip cgmp

  • Коммутаторы Catalyst серии 4000 или 5000

    Включите/отключите CGMP с помощью следующих команд:

    • set cgmp <enable/disable>

    Включите/отключите функцию CGMP Fast-Leave с помощью следующих команд:

    • set cgmp leave <enable/disable>

    Настройте многоадресный маршрутизатор (статический) при помощи следующих команд:

    • set multicast router <слот/порт>

    Очистите многоадресный маршрутизатор при помощи следующих команд:

    • clear multicast router <слот/порт>

    Ниже перечислены различные команды для проверки работы CGMP.

    • show cam static

    • show cgmp statistic <идентификатор_VLAN>

    • show cgmp leave

    • show multicast router

    • show multicast group

    • show multicast group cgmp

    • show multicast group count

Практический пример использования CGMP, команды отладки и ее выходных данных

Ниже приведен пример реальной конфигурации с маршрутизатором Cisco и коммутаторами Catalyst.

/image/gif/paws/10559/22a.gif

В данной конфигурации показаны операции, выполняемые в процессе присоединения хоста к группе. В данной конфигурации показаны операции, выполняемые в процессе выхода хоста из группы с включенной функцией Fast-Leave. Также приведены записи журнала анализатора трафика и конфигурации коммутатора и маршрутизатора.

Присоединение к группе с использованием протокола CGMP

Руководствуйтесь следующими действиями при присоединении к группе с использованием протокола CGMP.

  1. Включите CGMP на коммутаторе, как показано ниже.

    Switch_B (enable) set cgmp en 
    MCAST-CGMP: Set CGMP Sys Entrie 
    MCAST-CGMP: Set CGMP Sys Entrie 
    MCAST-CGMP: Set CGMP Sys Entrie 
    CGMP support for IP multicast enabled. 
    Switch_B (enable)
    
    

    Как показано ниже, запись 01-00-0c-dd-dd-dd включена в вывод команды show cam system для всех VLAN. Кроме того, поскольку в сети используется функция CGMP Fast-Leave, также отображаются записи для 01-00-5e-00-00-01 и 01-00-5e-00-00-02.

    Switch_B (enable) show cgmp leave 
    
    CGMP:       enabled 
    CGMP leave: enabled 
    Switch_B (enable) show cam system 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    
    VLAN  Dest MAC/Route Des [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------ -----  ------------------------------------------- 
    1     00-10-2f-00-14-00  #          7/1 
    1     00-e0-fe-4b-f3-ff  #          1/9 
    1     01-00-0c-cc-cc-cc  #          1/9 
    1     01-00-0c-cc-cc-cd  #          1/9 
    1     01-00-0c-dd-dd-dd  #          1/9 
    1     01-00-0c-ee-ee-ee  #          1/9 
    1     01-80-c2-00-00-00  #          1/9 
    1     01-80-c2-00-00-01  #          1/9 
    2     00-10-2f-00-14-00  #          7/1 
    2     01-00-0c-cc-cc-cc  #          1/9 
    2     01-00-0c-cc-cc-cd  #          1/9 
    2     01-00-0c-dd-dd-dd  #          1/9 
    2     01-80-c2-00-00-00  #          1/9 
    2     01-80-c2-00-00-01  #          1/9 
    3     01-00-0c-cc-cc-cc  #          1/9 
    3     01-00-0c-cc-cc-cd  #          1/9 
    3     01-00-0c-dd-dd-dd  #          1/9 
    3     01-80-c2-00-00-00  #          1/9 
    3     01-80-c2-00-00-01  #          1/9 
    Total Matching CAM Entries Displayed = 19
  2. Маршрутизатор отправляет CGMP-сообщение о присоединении к GDA 00-00-00-00-00-00 с MAC-адресом источника одноадресной рассылки этого маршрутизатора. Таким образом, порт этого маршрутизатора добавляется в список портов маршрутизатора (см. первый пример внизу).

    Для маршрутизатора

    6d01h: CGMP: Sending self Join on Fa0.3 
    6d01h:       GDA 0000.0000.0000, USA 0060.70cd.83c9

    На коммутатор

    MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 
    MCAST-CGMP-JOIN: join GDA 00-00-00-00-00-00 MCAST-CGMP-JOIN:USA
                     00-60-70-cd-83-c9 
    MCAST-ROUTER: Adding QUERIER port 3/1, vlanNo 2 
    MCAST-ROUTER: Creating RouterPortTimer for  port 3/1, vlanNo 2 
    
    Switch_B (enable) show multi router 
    CGMP enabled 
    IGMP disabled 
    
    Port       Vlan 
    ---------  ---------------- 
     3/1       2-3 
    
    Total Number of Entries = 1 
    '*' - Configured
    
    
  3. ПК на 3/1 посылает IGMP отчет, содержащий GDA: 239.10.10.10 (см. кадр 2 ниже). Ниже приведен вывод команды show ip igmp group на маршрутизаторе А.

    Он показывает, что маршрутизатор теперь направляет трафик для 224.10.10.10 на fa0.3. Это следствие приема отчета IGMP от узла 3.3.3.2, который является клиентским ПК.

    Router_A#show ip igmp groups 
    IGMP Connected Group Membership 
    Group Address    Interface            Uptime    Expires   Last Reporter 
    239.10.10.10     Fa0.3                00:02:48  00:02:04  10.3.3.2 
    Router_A#
  4. Маршрутизатор получает отчет и отправляет CGMP-сообщение о присоединении вместе со следующей информацией:

    • MAC-адрес отправителя: MAC-адрес маршрутизатора

    • МАС-адрес назначения: 01-00-cc-dd-dd-dd

    • Содержание

      : MAC-адрес клиентского ПК (USA): 00-00-0c-07-ac-00 МАС-адрес группы многоадресной рассылки: 01-00-5e-0a-0a-0a (см. кадр 3 ниже)

    Для маршрутизатора

    6d01h: IGMP: Received v2 Report from 10.3.3.2 (Fa0.3) for 239.10.10.10 
    6d01h: CGMP: Received IGMP Report on Fa0.3 
    6d01h:       from 10.3.3.2 for 239.10.10.10 
    6d01h: CGMP: Sending Join on Fa0.3  
    
    
  5. На коммутаторе с адресом 01-00-cc-dd-dd-dd в выводе команды show cam system протокол CGMP включен. Коммутатор может обработать пакет.

    Коммутатор выполняет поиск в динамической таблице CAM, чтобы определить порт, на котором расположен MAC-адрес клиентского ПК. Адрес располагается на порту 3/2, и коммутатор создает статическую запись в таблице CAM для адреса 01-00-5e-0a-0a-0a с привязкой к порту 3/2. Коммутатор также добавляет порт 3/1 маршрутизатора в статическую запись для этого GDA.

    На коммутатор

    MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 3 
    MCAST-CGMP-JOIN: join GDA 01-00-5e-0a-0a-0a MCAST-CGMP-JOIN:USA 00-60-5c-f4-bd-e2 
    MCAST-CGMP-JOIN: 3/2/3: index 81 
    MCAST-CGMP-JOIN: recvd CGMP JOIN msg on port 3/1 vlanNo 2 
    MCAST-CGMP-JOIN: join GDA 01-00-5e-00-01-28 MCAST-CGMP-JOIN:USA 00-60-70-cd-83-c9 
    MCAST-CGMP-JOIN: 3/1/2: index 80
    
    
  6. Весь последующий трафик для группы многоадресной рассылки 239.10.10.10 перенаправляется только на этот порт в данной VLAN. Ниже приведена статическая запись на коммутаторе Catalyst, где 3/1 является портом маршрутизатора, а 3/2 — клиентским портом.

    Switch_B (enable) show cam static
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    3     01-00-5e-0a-0a-0a             3/1-2 
    Total Matching CAM Entries Displayed = 3 
    Switch_B (enable)
    
    

Выход из группы с включенной функцией CGMP Fast-Leave

В приведенном ниже примере требуется, чтобы клиент был клиентом IGMP версии 2 и чтобы на коммутаторе была включена функция Fast-Leave.

  1. Следующая процедура активирует функцию CGMP Fast-Leave. Рассмотрим вывод команды show cgmp leave, чтобы узнать, включена ли функция. Также рассмотрим вывод команды show cam system , чтобы определить, прослушивает ли коммутатор адреса 01-00-5e-00-00-01 и 01-00-5e-00-00-02 (адреса, используемые для выхода из группы).

    Switch_B (enable) show cgmp leave 
    
    CGMP:       enabled 
    CGMP leave: enabled 
    Switch_B (enable) show cam sys 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    
    VLAN  Dest MAC/Route Des    [CoS]  Destination Ports or VCs / [Protocol Type] 
    ----  ------------------    -----  ------------------------------------------- 
    1     00-10-2f-00-14-00  #          7/1 
    1     00-e0-fe-4b-f3-ff  #          1/9 
    1     01-00-0c-cc-cc-cc  #          1/9 
    1     01-00-0c-cc-cc-cd  #          1/9 
    1     01-00-0c-dd-dd-dd  #          1/9 
    1     01-00-0c-ee-ee-ee  #          1/9 
    1     01-80-c2-00-00-00  #          1/9 
    1     01-80-c2-00-00-01  #          1/9 
    2     00-10-2f-00-14-00  #          7/1 
    2     01-00-0c-cc-cc-cc  #          1/9 
    2     01-00-0c-cc-cc-cd  #          1/9 
    2     01-00-0c-dd-dd-dd  #          1/9 
    2     01-00-5e-00-00-01  #          1/9 
    2     01-00-5e-00-00-02  #          1/9 
    2     01-80-c2-00-00-00  #          1/9 
    2     01-80-c2-00-00-01  #          1/9 
    3     01-00-0c-cc-cc-cc  #          1/9 
    3     01-00-0c-cc-cc-cd  #          1/9 
    3     01-00-0c-dd-dd-dd  #          1/9 
    3     01-00-5e-00-00-01  #          1/9 
    3     01-00-5e-00-00-02  #          1/9 
    3     01-80-c2-00-00-00  #          1/9 
    Do you wish to continue y/n [n]?  y 
    Total Matching CAM Entries Displayed = 22 
    
    
  2. Клиент отправляет IGMP-сообщение о выходе на адрес 224.0.0.2. Коммутатор перехватывает это сообщение и отправляет запрос IGMP на порт, на котором было принято сообщение о выходе. Ниже приводится вывод команды debug на коммутаторе:

    MCAST-IGMP-LEAVE:Recvd leave on port 3/2 vlanNo 3 
    MCAST-IGMP-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 
    MCAST-IGMP-LEAVE:deletion_timer = 1 
    MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 
    MCAST-SEND:  Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3
    
    
  3. Поскольку ответ не был получен, Catalyst пересылает на маршрутизатор IGMP-сообщение о выходе, как показано ниже.

    MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a 
    MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 vlanNo 3 
    MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 
    MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 vlanNo 3
    
    
  4. Маршрутизатор получает IGMP-сообщение о выходе, отправляет коммутатору CGMP-сообщение о выходе, а также удаляет группу из списка групп IGMP. Ниже приведен вывод команды debug на маршрутизаторе.

    Для маршрутизатора

    IGMP: Received Leave from 10.200.8.108 (Fa0.3) for 239.10.10.10 
    IGMP: Send v2 Query on Fa0.3 to 239.10.10.10 
    IGMP: Send v2 Query on Fa0.3 to 239.10.10.10 
    CGMP: Sending Leave on Fa0.3 
          GDA 0100.5e0a.0a0a, USA 0000.0000.0000 
    IGMP: Deleting 239.10.10.10 on Fa0.3
    
    

Трассировка и конфигурация CGMP

Кадр 1

Кадр 1 — это кадр присоединения CGMP к GDA 00-00-00-00-00-00. Он используется для добавления порта маршрутизатора в список портов маршрутизатора.

ISL: ----- ISL Protocol Packet ----- 
     ISL: 
     ISL: Destination Address               = 01000C0000 
     ISL: Type                              = 0 (Ethernet) 
     ISL: User                              = 0 (Normal) 
     ISL: Source Address                    = 8C958B7B1000 
     ISL: Length                            = 76 
     ISL: Constant value                    = 0xAAAA03 
     ISL: Vendor ID                         = 0x8C958B 
     ISL: Virtual LAN ID (VLAN)             = 2 
     ISL: Bridge Protocol Data Unit (BPDU)  = 0 
     ISL: Port Index                        = 193 
     ISL: Reserved 
     ISL: 
ETHER: ----- Ethernet Header ----- 
     ETHER: 
     ETHER: Destination = Multicast 01000CDDDDDD     


!--- Send to the  CGMP 
!--- macaddress present in show cam sys 
!--- command output.
 
     ETHER: Source      = Station Cisco11411E1 
     ETHER: 802.3 length = 24 
     ETHER: 
LLC:  ----- LLC Header ----- 
     LLC: 
     LLC:  DSAP Address = AA, DSAP IG Bit = 00 (Individual Address) 
     LLC:  SSAP Address = AA, SSAP CR Bit = 00 (Command) 
     LLC:  Unnumbered frame: UI 
     LLC: 
SNAP: ----- SNAP Header ----- 
     SNAP: 
     SNAP: Vendor ID = Cisco1 
     SNAP: Type = 2001 (CGMP) 
     SNAP: 
CGMP: ----- CGMP ----- 
     CGMP: 
     CGMP: Version   = 16 
     CGMP: Type      = 0 (Join) 
     CGMP: Reserved 
     CGMP: Count     = 1 
     CGMP: 
     CGMP: Group Destination Address and Unicast Source Address 
     CGMP: 
     CGMP:    GDA    =0000.0000.0000 
     CGMP:    USA    =0000.0C14.11E1          


!--- MAC address of the router.

     CGMP:

Результат для кадра 1 находится на коммутаторе, а 3/1 — это порт, подключенный к маршрутизатору:

Кадр 2

Кадр 2 — это отчет участия IGMP, отправленный хостом, чтобы узнать (или подтвердить), хотят ли пользователи получать трафик для группы 224.10.10.10.

ISL: ----- ISL Protocol Packet ----- 
     ISL: 
     ISL: Destination Address               = 01000C0000 
     ISL: Type                              = 0 (Ethernet) 
     ISL: User                              = 0 (Normal) 
     ISL: Source Address                    = 8C958B7B1000 
     ISL: Length                            = 76 
     ISL: Constant value                    = 0xAAAA03 
     ISL: Vendor ID                         = 0x8C958B 
     ISL: Virtual LAN ID (VLAN)             = 2 
     ISL: Bridge Protocol Data Unit (BPDU)  = 0 
     ISL: Port Index                        = 195 
     ISL: Reserved 
     ISL: 
ETHER: ----- Ethernet Header ----- 
     ETHER: 
     ETHER: Destination = Multicast 01005E0A0A0A      


!---  Destination is the GDA MAC.
 
     ETHER: Source      = Station Cisco176DCCA        


!---  Sourced by the PC connected in 3/1.
 
     ETHER: Ethertype  = 0800 (IP) 
     ETHER: 
IP: ----- IP Header ----- 
     IP: 
     IP: Version = 4, header length = 20 bytes 
     IP: Type of service = C0 
     IP:       110. ....   = internetwork control 
     IP:       ...0 .... = normal delay 
     IP:       .... 0... = normal throughput 
     IP:       .... .0.. = normal reliability 
     IP: Total length    = 28 bytes 
     IP: Identification  = 0 
     IP: Flags           = 0X 
     IP:       .0.. .... = may fragment 
     IP:       ..0. .... = last fragment 
     IP: Fragment offset = 0 bytes 
     IP: Time to live    = 1 seconds/hops 
     IP: Protocol        = 2 (IGMP) 
     IP: Header checksum = CC09 (correct) 
     IP: Source address      = [10.1.1.2] 
     IP: Destination address = [224.10.10.10] 
     IP: No options 
     IP: 
IGMP: ----- IGMP header ----- 
     IGMP: 
     IGMP: Version       = 1 
     IGMP: Type          = 6 (Ver2 Membership Report) 
     IGMP: Unused        = 0x00 
     IGMP: Checksum      = FFEA (correct) 
     IGMP: Group Address = [224.10.10.10] 
     IGMP: 

Кадр 3

Кадр 3 – кадр CGMP, отправленный маршрутизатором коммутатору, чтобы тот добавил статическую запись для 01-00-5e-0a-0a-0a.

ISL: ----- ISL Protocol Packet ----- 
     ISL: 
     ISL: Destination Address               = 01000C0000 
     ISL: Type                              = 0 (Ethernet) 
     ISL: User                              = 0 (Normal) 
     ISL: Source Address                    = 8C958B7B1000 
     ISL: Length                            = 76 
     ISL: Constant value                    = 0xAAAA03 
     ISL: Vendor ID                         = 0x8C958B 
     ISL: Virtual LAN ID (VLAN)             = 2 
     ISL: Bridge Protocol Data Unit (BPDU)  = 0 
     ISL: Port Index                        = 193 
     ISL: Reserved 
     ISL: 
ETHER: ----- Ethernet Header ----- 
     ETHER: 
     ETHER: Destination = Multicast 01000CDDDDDD 
     ETHER: Source      = Station Cisco11411E1 
     ETHER: 802.3 length = 24 
     ETHER: 
LLC:  ----- LLC Header ----- 
     LLC: 
     LLC:  DSAP Address = AA, DSAP IG Bit = 00 (Individual Address) 
     LLC:  SSAP Address = AA, SSAP CR Bit = 00 (Command) 
     LLC:  Unnumbered frame: UI 
     LLC: 
SNAP: ----- SNAP Header ----- 
     SNAP: 
     SNAP: Vendor ID = Cisco1 
     SNAP: Type = 2001 (CGMP) 
     SNAP: 
CGMP: ----- CGMP ----- 
     CGMP: 
     CGMP: Version   = 16 
     CGMP: Type      = 0 (Join) 
     CGMP: Reserved 
     CGMP: Count     = 1 
     CGMP: 
     CGMP: Group Destination Address and Unicast Source Address 
     CGMP: 
     CGMP:    GDA    =0100.5E0A.0A0A      


!--- GDA MAC added in show cam static
!--- command output.
 
     CGMP:    USA    =0000.0C76.DCCA      


!--- MAC of the PC in 3/1.
 
     CGMP:

Ниже представлена конфигурация маршрутизатора и коммутатора.

 Router_A (router) Configuration: 

 Router_A#write terminal
 Building configuration... 

 Current configuration: 
 ! 
 version 12.0 
 service timestamps debug uptime 
 service timestamps log uptime 
 no service password-encryption 
 ! 
 hostname Router_A 
 ! 
 ! 
 ip subnet-zero 
 ip multicast-routing 
 ip dvmrp route-limit 20000 
   

 interface FastEthernet0 
  no ip address 
  no ip directed-broadcast 
 ! 
 interface FastEthernet0.1 
  encapsulation isl 1 
  ip address 10.1.1.1 255.255.255.0 
  no ip redirects 
  no ip directed-broadcast 
 ! 
 interface FastEthernet0.2 
  encapsulation isl 2 
  ip address 10.2.2.1 255.255.255.0 
  no ip redirects 
  no ip directed-broadcast 
  ip pim dense-mode 
  ip cgmp 
 ! 
 interface FastEthernet0.3 
  encapsulation isl 3 
  ip address 10.3.3.1 255.255.255.0 
  no ip redirects 
  no ip directed-broadcast 
  ip pim dense-mode 
  ip cgmp 
 !

 Switch_B configuration for CGMP: 

 #cgmp 
 set cgmp enable 
 set cgmp leave enable 
 !

 CGMP statistics for VLAN 3: 

 Switch_B (enable) show cgmp sta 3 
 CGMP enabled 

 CGMP statistics for vlan 3: 
 valid rx pkts received           109 
 invalid rx pkts received         0 
 valid cgmp joins received        108 
 valid cgmp leaves received       1 
 valid igmp leaves received       1 
 valid igmp queries received      63 
 igmp gs queries transmitted      1 
 igmp leaves transmitted          1 
 failures to add GDA to EARL      0 
 topology notifications received  0 
 Switch_B (enable)

Отслеживание IGMP

Отслеживание IGMP — это еще одна функция, которая позволяет непосредственно захватывать кадры IGMP. Сведения о поддержке функции отслеживания IGMP на коммутаторах Catalyst см. в таблице поддержки многоадресных коммутаторов Catalyst.

Общие сведения об отслеживании IGMP

Отслеживание IGMP, как следует из названия, позволяет коммутатору «прослушивать» обмен данными по протоколу IGMP между хостами и маршрутизаторами. Когда коммутатор фиксирует отчет IGMP с хоста для конкретной группы многоадресной рассылки, коммутатор добавляет номер порта этого хоста в список GDA для данной группы. А когда коммутатор фиксирует IGMP-сообщение о выходе, он удаляет порт хоста из таблицы САМ.

Получение сведений о портах маршрутизатора

Коммутатор прослушивает следующие сообщения с целью определить порты маршрутизатора с использованием функции прослушивания IGMP:

  • Запрос участия IGMP, отправленный на адрес 01-00-5e-00-00-01

  • Приветствие PIMv1, отправленное на адрес 01-00-5e-00-00-02

  • Приветствие PIMv2, отправленное на адрес 01-00-5e-00-00-0d

  • Пробные сообщения DVMRP, отправленные на адрес 01-00-5e-00-04

  • Сообщение MOSPF, отправленное на адрес 01-00-5e-00-05 или 06

При включении отслеживания IGMP на коммутаторе все указанные выше записи MAC-адресов добавляются в вывод команды show cam system этого коммутатора. После того, как порт маршрутизатора будет определен, он добавляется в список портов всех GDA в данной VLAN.

Присоединение к группе с использованием отслеживания IGMP

Ниже приведены два сценария присоединения:

Сценарий А: Хост A – это первый хост, предназначенный для присоединения к группе в этом сегменте.

  1. Хост A отправляет незатребованный отчет участия IGMP.

  2. Коммутатор перехватывает отчет участия IGMP, отправленный хостом, который желает присоединиться к группе.

  3. Коммутатор создает запись многоадресной рассылки для этой группы и связывает ее с портом, на котором был получен отчет, и со всеми портами маршрутизатора.

  4. Коммутатор рассылает отчет IGMP на все порты маршрутизатора. Таким образом, маршрутизатор также получает отчет IGMP и соответствующим образом обновляет таблицу многоадресной маршрутизации.

Сценарий B: Хост B — второй узел, предназначенный для присоединения к той же группе.

  1. Хост В отправляет незатребованный отчет участия IGMP.

  2. Коммутатор перехватывает отчет участия IGMP, отправленный хостом, который хочет присоединиться к группе.

  3. В этом случае коммутатор необязательно рассылает отчет IGMP на все порты маршрутизатора. Фактически коммутатор отправляет отчеты IGMP на порты маршрутизатора при помощи функции отчетов прокси и за 10 с передает только один отчет на каждую группу.

Примечание: Для поддержания состава группы маршрутизатор групповой адресации передает запрос IGMP каждые 60 секунд. Этот запрос перехватывается коммутатором и направляется всем портам коммутатора. Все хосты, входящие в группу, отвечают на этот запрос. Но, поскольку коммутатор также перехватывает отчет с ответом, другой хост не может обнаружить все остальные отчеты и, следовательно, отчет отправляют все хосты (вместо одного отчета на каждую группу). Затем коммутатор также использует функцию отчетов прокси для пересылки только одного отчета на каждую группу для всех принятых ответов.

Предположим, что хост А желает выйти из группы, а хост В хочет по-прежнему получать группу.

  • Коммутатор перехватывает IGMP-сообщение о выходе от хоста A.

  • Коммутатор выполняет IGMP-запрос для определенной группы на этом порту (и только на нем).

  • Если коммутатор не получает отчет, данный порт удаляется из записи. Если коммутатор получает ответ от этого порта, то он не выполняет никаких действий и отменяет выход.

  • Хост В по-прежнему заинтересован в этой группе на данном коммутаторе. Это не последний порт без привязки к маршрутизатору в данной записи. Поэтому коммутатор не пересылает сообщение о выходе.

Предположим теперь, что хост B хочет покинуть группу и является последним пользователем, заинтересованным в этой группе в данном сегменте.

  • Коммутатор перехватывает IGMP-сообщение о выходе от хоста A.

  • Коммутатор выполняет IGMP-запрос для данной группы на этом порту.

  • Если коммутатор не получает отчет, данный порт удаляется из записи.

  • Это последний порт без привязки к маршрутизатору для данного GDA. Коммутатор пересылает IGMP-сообщение о выходе на все порты маршрутизатора и удаляет запись из таблицы.

Взаимодействие между IGMP и CGMP

В некоторых сетях из-за аппаратных ограничений отслеживание IGMP может поддерживаться не на всех коммутаторах. В таком случае возможно, что на некоторых коммутаторах одной сети необходимо будет использовать протокол CGMP.

Обратите внимание, что это особый случай. Коммутатор, на котором включено отслеживание IGMP, выявляет CGMP-сообщения и коммутаторы сети, использующие CGMP. Таким образом, он переходит в особый режим IGMP-CGMP и отключает отчеты прокси. Это абсолютно необходимо для правильной работы протокола CGMP, поскольку маршрутизаторы используют МАС-адрес источника отчета IGMP для создания присоединения CGMP. Маршрутизаторы, использующие CGMP, должны видеть все отчеты IGMP, поэтому отчеты прокси должны быть отключены. Маршрутизатору должны отсылаться только отчеты, необходимые для отслеживания IGMP.

Сеть, состоящая только из многоадресных источников

Если сегмент содержит только один сервер многоадресной рассылки (многоадресный источник) и не содержит клиента, можно столкнуться с ситуацией, когда в сегменте нет пакетов IGMP, но имеется большой объем многоадресного трафика. В таком случае коммутатор просто пересылает трафик от этой группы на все узлы сегмента. К счастью, коммутатор, использующий отслеживание IGMP, может обнаружить эти многоадресные потоки и добавляет многоадресную запись для данной группы только с портом маршрутизатора. Эти записи помечаются флагами внутри устройства как mcast_source_only и устаревают каждые 5 минут или при закрытии порта маршрутизатора. Обратите внимание, что, даже устарев, адрес переопределяется за несколько секунд, если трафик продолжает поступать. В течение периода переопределения в сети VLAN может произойти мгновенное переполнение. Чтобы избежать этого и сохранить записи, используйте команду set igmp flooding enable | disable. После деактивации переполнения коммутатор не будет иметь устаревающих записей с пометкой «source-only».

Ограничения

Как и в случае с CGMP, адреса GDA, соответствующие MAC-адресам, которые находятся в диапазоне 01-00-5e-00-00-xx, никогда не отсекаются отслеживанием IGMP.

Настройка отслеживания IGMP на коммутаторах Cisco

Чтобы включить или отключить отслеживание IGMP, выполните следующую команду:

  • set igmp <enable/disable>

Для настройки многоадресного маршрутизатора (статического) выполните следующую команду:

  • set multicast router <модуль/порт>

  • clear multicast router <модуль |порт | all>

Мониторинг и сбор статистики IGMP выполняются при помощи следующих команд:

  • show igmp statistics <идентификатор_VLAN>

  • show multicast router

Практический пример отслеживания IGMP

Процедура настройки для данного примера совпадает с процедурой, которая использовалась при тестировании CGMP ранее в этом документе. Единственное различие заключается в том, что порты 3/2 и 3/3 оба подключены к одной и той же VLAN и настроены клиентом на присоединение к группе 224.10.10.10.

Следующий пример объясняет некоторые действия, содержит обзор функций коммутатора и анализ выходных данных. В следующем примере Switch_B — это коммутатор Catalyst 5500, использующий отслеживание IGMP, а Router_A — многоадресный маршрутизатор, подключенный к порту 3/1.

  1. Подключите отслеживание IGMP на коммутаторе и просмотрите результаты с помощью команды debug. Обратите внимание, что каждый набор записей добавлен в вывод команды show cam sys, что позволяет обнаружить порт маршрутизатора при помощи протоколов PIM, MOSPF и т. д.

      Switch_B (enable)  set igmp en 
    
      MCAST-IGMP: Set Sys Entries 
      MCAST-SYS-ENTRIES: Add system Entries in vlan 1 
      MCAST-IGMP: Set Sys Entries 
      MCAST-SYS-ENTRIES: Add system Entries in vlan 2 
      MCAST-IGMP: Set Sys Entries 
      MCAST-SYS-ENTRIES: Add system Entries in vlan 3 
    
      IGMP feature for IP multicast enabled 
    
      Switch_B (enable) show cam sys 
      * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
      X = Port Security Entry 
    
      VLAN  Dest MAC/Route Des [CoS]  Destination Ports or VCs / [Protocol Type] 
      ----  ------------------ -----  ------------------------------------------- 
      1     00-10-2f-00-14-00  #          7/1 
      1     00-e0-fe-4b-f3-ff  #          1/9 
      1     01-00-0c-cc-cc-cc  #          1/9 
      1     01-00-0c-cc-cc-cd  #          1/9 
      1     01-00-0c-dd-dd-dd  #          1/9 
      1     01-00-0c-ee-ee-ee  #          1/9 
      1     01-00-5e-00-00-01  #          1/9 
      1     01-00-5e-00-00-04  #          1/9 
      1     01-00-5e-00-00-05  #          1/9 
      1     01-00-5e-00-00-06  #          1/9 
      1     01-00-5e-00-00-0d  #          1/9 
      1     01-80-c2-00-00-00  #          1/9 
      1     01-80-c2-00-00-01  #          1/9 
      2     00-10-2f-00-14-00  #          7/1 
      2     01-00-0c-cc-cc-cc  #          1/9 
      2     01-00-0c-cc-cc-cd  #          1/9 
      2     01-00-0c-dd-dd-dd  #          1/9 
      2     01-00-5e-00-00-01  #          1/9 
      2     01-00-5e-00-00-04  #          1/9 
      2     01-00-5e-00-00-05  #          1/9 
      2     01-00-5e-00-00-06  #          1/9 
      2     01-00-5e-00-00-0d  #          1/9
    
    
  2. Коммутатор получает пакет PIMv2 от маршрутизатора Router_A и добавляет его порт.

    MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 2 
    MCAST-ROUTER: Adding port 3/1, vlanNo 2 
    MCAST-ROUTER: Creating RouterPortTimer for  port 3/1, vlanNo 2 
    MCAST-IGMPQ:recvd a PIM V2 packet of type HELLO on the port 3/1 vlanNo 3 
    MCAST-ROUTER: Adding port 3/1, vlanNo 3 
    MCAST-ROUTER: Creating RouterPortTimer for  port 3/1, vlanNo 3 
    
    Switch_B (enable) show multi router 
    CGMP disabled 
    IGMP enabled 
    
    Port       Vlan 
    ---------  ---------------- 
     3/1       2-3 
    
    Total Number of Entries = 1 
    '*' - Configured 
    Switch_B (enable)
    
    
  3. Установите соединение с новым хостом в группе 224.10.10.10 (на порту 3/2). Этот хост отправляет отчет участия IGMP. Отчет получен, проконтролирован коммутатором, запись добавлена, и отчет IGMP пересылается на маршрутизатор.

    На коммутаторе Switch_B

    MCAST-IGMPQ:recvd an IGMP V2 Report on the port 3/2 vlanNo 3 
          GDA 224.10.10.10 
    MCAST-RELAY:Relaying packet on port 3/1 vlanNo 3 
    MCAST-SEND: Inband Transmit Succeeded for IGMP RELAY msg on port 3/1 
          vlanNo 3 
    
    Switch_B (enable) show cam static 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    
    VLAN  Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] 
    ----  ------------------ ----- ------------------------------------------- 
    3     01-00-5e-0a-0a-0a         3/1-2
    
    
  4. Добавьте еще одного пользователя в сеть VLAN 3 на порту 3/3, как показано ниже.

    Switch_B (enable) show cam static
    
      * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry.
    
      X = Port Security Entry 
    
      VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] 
      ---- ------------------ ----- ------------------------------------------- 
      3    01-00-5e-0a-0a-0a         3/1-3
    
    
  5. Удалите порт 3/2. Порт 3/2 отправляет IGMP-сообщение о выходе; коммутатор возвращает запрос IGMP для конкретной группы на порт 3/2 и запускает таймер. Если таймер заканчивает работу без получения ответа, он удаляет порт из группы.

    MCAST-IGMPQ:recvd an IGMP Leave on the port 3/2 vlanNo 3 GDA 224.10.10.10 
    MCAST-IGMPQ-LEAVE:router_port_tbl[vlanNo].QueryTime = 0 
    MCAST-DEL-TIMER: Deletion Timer Value set to Random Value  1 
    MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/2 vlanNo 3 
    MCAST-SEND:  Transmit Succeeded for IGMP Group Specific Query msg on port 3/2 vlanNo 3 
    MCAST-TIMER:IGMPLeaveTimer expired on port 3/2 vlanNo 3 GDA 01-00-5e-0a-0a-0a 
    MCAST-TIMER:IGMPLeaveTimer:delete leave timer 
      
    
    Switch_B (enable) show cam static 
    * = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry. 
    X = Port Security Entry 
    
    VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type] 
    ---- ------------------ ----- ------------------------------------------- 
    3    01-00-5e-0a-0a-0a         3/1,3/3
    
    
  6. Хост на порту 3/3 выходит из группы и отправляет IGMP-сообщение о выходе. Единственное отличие от предыдущего пункта заключается в том, что IGMP-сообщение о выходе в итоге пересылается на порт маршрутизатора.

    MCAST-IGMPQ:recvd an IGMP Leave on the port 3/3 vlanNo 3 GDA 224.10.10.10 
    MCAST-SEND:Transmitting IGMP Mac Based GS Query msg on port 3/3 vlanNo 3 
    MCAST-SEND:  Transmit Succeeded for IGMP Group Specific Query msg on 
                 port 3/3 vlanNo 3 
    MCAST-TIMER:IGMPLeaveTimer expired on port 3/3 vlanNo 3 GDA 
                 01-00-5e-0a-0a-0a 
    MCAST-TIMER:IGMPLeaveTimer expiry: Transmit IGMP Leave on port 3/1 
                 vlanNo 3 
    MCAST-SEND:Transmitting IGMP Leave msg on port 3/1 vlanNo 3 
    MCAST-SEND: Inband Transmit Succeeded for IGMP Leave Message on port 3/1 
                 vlanNo 3 
    MCAST-TIMER:IGMPLeaveTimer:delete leave timer
    
    

Конфигурация подсети вернулась в начальное состояние, которое было на шаге 1. Многоадресная запись исчезла из вывода команды show cam static.

И наконец, посмотрите приведенный ниже пример вывода команды show igmp static.

Switch_B (enable) show igmp stat 2 
IGMP enabled 

IGMP statistics for vlan 2: 
Total valid pkts rcvd:           329 
Total invalid pkts recvd         0 
General Queries recvd            82 
Group Specific Queries recvd     0 
MAC-Based General Queries recvd  0 
Leaves recvd                     0 
Reports recvd                    82 
Queries  Xmitted                 0 
GS Queries Xmitted               0 
Reports Xmitted                  0 
Leaves Xmitted                   0 
Failures to add GDA to EARL      0 
Topology Notifications rcvd      0 

Switch_B (enable) show igmp stat 3 
IGMP enabled 

IGMP statistics for vlan 3: 
Total valid pkts rcvd:           360 
Total invalid pkts recvd         0 
General Queries recvd            93 
Group Specific Queries recvd     6 
MAC-Based General Queries recvd  0 
Leaves recvd                     11 
Reports recvd                    64 
Queries  Xmitted                 0 
GS Queries Xmitted               14 
Reports Xmitted                  0 
Leaves Xmitted                   10 
Failures to add GDA to EARL      0 
Topology Notifications rcvd      1 
Switch_B (enable) 

Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


Дополнительные сведения