Поиск...

пятница, 24 февраля 2012 г.

Настройка Multicast на оборудовании cisco

Доброго времени суток!!!

Ну что же, по программам мониторинга немного пробежались :). Кто еще не видел этих постов, вот ссылки на них (Установка и настройка Kiwi Syslog Daemon, Установка и настройка Kiwi CatTools и Установка и настройка Cacti на Ubuntu. Смотрите, оценивайте и пользуйтесь.
А сегодня я предлагаю затронуть тему multicast. Иногда хочется послушать радио на компьютере или посмотреть какую-нибудь передачу по сети. Все это может транслироваться в сеть через multicast.
Если вы вдруг захотите настроить у себя в сети что-то похожее на оборудовании cisco, или просто попрактиковаться, то милости прошу под кат…



Как обычно, я буду эмулировать все в программе GNS. Схема у нас будет следующая:


Итак, у нас есть небольшая сеть, состоящая из 3-х роутеров (Router_1, Router_2 и Router_3 – cisco 3640, каждый имеет два FastEthernet интерфейса). Если кто-то подзабыл, как добавлять слоты к роутерам, то можно посмотреть вот тут. Так же есть клиент (Multicast Client, 10.10.10.204/24) и сервер (Multicast Server, 3.3.3.10/24), который будет транслировать сигнал в мультикастовый адрес 224.1.1.1. На Router_2 имеется еще Loopback 0 интерфейс, он нам понадобится немного позже.
Из теории видно, что принадлежность того или иного клиента к определенной группе «вещания» отслеживается протоколом IGMP (Internet Group Management Protocol). Передача multicast работает по протоколу PIM (Protocol Independent Multicast). Этот протокол составляет свою таблицу маршрутизации multicast на основе обычной таблицы маршрутизации. Есть 3 режима работы данного протокола:
  • dence mode – когда маршрут прокладывается непосредственно от источника до получателя (предложение вещания потоков, зарегистрированных на роутере, идет всем, а затем отсекаются те, кому оно не нужно);
  • sparce mode – маршрут прокладывается только до так называемой точки рандеву RP (Rendezvous point). Трансляция потока начинается, только если есть запрос от клиента;
  • sparce-dence mode – смешанный режим.
Я предлагаю рассмотреть два основных режима. В качестве источника потока я буду проигрывать .avi файл в VLC media player. Принимать поток мы будем с помощью него же.
Начнем с dence mode. Заходим на Router_1:

R1>en
R1#conf t
R1(config)#hostname Router_1
Router_1(config)#ip multicast-routing – глобально включаем маршрутизацию multicast;
Router_1(config)#int fa 0/0
Router_1(config-if)#ip address 10.10.10.1 255.255.255.0
Router_1(config-if)#ip pim dense-mode – включаем нужный режим на интерфейсе;
Router_1(config-if)#no sh
Router_1(config-if)#exit
Router_1(config)#int fa 1/0
Router_1(config-if)#ip address 1.1.1.1 255.255.255.252
Router_1(config-if)#ip pim dense-mode
Router_1(config-if)#no sh
Router_1(config-if)#exit
Router_1(config)#ip route 3.3.3.0 255.255.255.0 1.1.1.2 – прописываем статический маршрут для обеспечения обычной сетевой доступности между клиентом и сервером;
Router_1(config)#exit
Router_1#wr
Router_1# 


Теперь перейдем к Router_2:

R2>en
R2#conf t
R2(config)#hostname Router_2
Router_2(config)#ip multicast-routing
Router_2(config)#int fa 1/0
Router_2(config-if)#ip address 1.1.1.2 255.255.255.252
Router_2(config-if)#ip pim dense-mode
Router_2(config-if)#no sh
Router_2(config-if)#exit
Router_2(config)#int fa 0/0
Router_2(config-if)#ip address 2.2.2.2 255.255.255.252
Router_2(config-if)#ip pim dense-mode
Router_2(config-if)#no sh
Router_2(config-if)#exit
Router_2(config)#ip route 3.3.3.0 255.255.255.0 2.2.2.1
Router_2(config)#ip route 10.10.10.0 255.255.255.0 1.1.1.1
Router_2(config)#exit
Router_2#wr
Router_2# 


И Router_3:

R3>en
R3#conf t
R3(config)#hostname Router_3
Router_3(config)#ip multicast-routing
Router_3(config)#int fa 0/0
Router_3(config-if)#ip address 2.2.2.1 255.255.255.252
Router_3(config-if)#ip pim dense-mode
Router_3(config-if)#no sh
Router_3(config-if)#exit
Router_3(config)#int fa 1/0
Router_3(config-if)#ip address 3.3.3.1 255.255.255.0
Router_3(config-if)#ip pim dense-mode
Router_3(config-if)#no sh
Router_3(config-if)#exit
Router_3(config)#ip route 10.10.10.0 255.255.255.0 2.2.2.2
Router_3(config)#exit
Router_3#wr
Router_3# 


Вот и все :). Режим dense-mode протокола PIM настроен. Можно переходить к проверкам. Зайдем на Multicast Server и настроим вещание файла .avi в плеере VLC. Открываем программу. Появится следующее окно:


Выбираем «Медиа» -- «Потоковое вещание». Откроется следующее окно:


Здесь остаемся на вкладке «Файл». Нажимаем на «Добавить». В появившемся окне выбираем файл .avi и нажимаем «Открыть». Файл появится в списке:


Внизу справа, из выпадающего меню выбираем пункт «Поток». Откроется следующее окно:


Здесь видим путь к нашему файлу, который будет транслироваться. Нажимаем «Следующий»:


В этом окне выключаем перекодирование (оно нам не понадобится). Затем, в закладке «Пункт назначения» из выпадающего меню выбираем пункт «UDP (legasy)» и нажимаем «Добавить». Откроется новая закладка на этой же странице:


В этой закладке указываем multicast адрес, в который будет транслироваться файл. Порт можно оставить по умолчанию. Нажимаем «Следующий»:


На этой странице нас интересует параметр TTL («Время жизни»). Так как у нас на пути 3 роутера, то каждый из них «откусит» по одному значению, следовательно, нам надо поставить значение больше 3-х, чтобы поток «добежал» до адресата. Поставим 5, чтобы наверняка :). Остальные параметры можно не трогать. Нажимаем «Поток».
После этого должна пойти трансляция. Это можно видеть по самому интерфейсу VLC или в информации о медиа-файле («Инструменты» -- «Информация о медиа-файле» -- «Статистика»:


Все, поток настроен. Теперь перейдем на Multicast Client и примем его. Для этого, открываем VLC на компьютере клиента:


В пункте меню «Медиа» из выпадающего списка выбираем «Открыть URL». Появится окно:


Вводим адрес потока multicast и порт, выбираем из выпадающего меню внизу справа «воспроизвести» и по истечении небольшого времени должна появиться трансляция:


Видно, что прокручивать вперед – назад возможности нет, и адрес потока соответствует. Если вдруг у вас не появилось изображение, то наличие потока можно посмотреть на Router_1:


Командой show ip mroute можно посмотреть таблицу маршрутизации multicast. Видно, что поток присутствует (адрес 3.3.3.10 транслирует поток 224.1.1.1). Принадлежность к IGMP группам можно посмотреть командой show ip igmp group. Из рисунка видно, что наш поток просматривается на интерфейсе fa 0/0 IP адресом 10.10.10.204/24, как и положено.
Все, проверку dense-mode закончили.
Переходим к настройке sparse-mode протокола PIM. Для этого режима необходимо выбрать так называемую точку рандеву (RP (Rendezvous point)). Пусть для этих целей служит Router_2. В качестве IP-адреса точки будем использовать loopback 0. Так же нам надо будет дописать статические маршруты, чтобы другие роутеры знали, как добраться до RP.
Итак, начнем с роутера Router_2.

Router_2>en
Router_2#conf t
Router_2(config)#int loopback 0 – создаем интерфейс;
Router_2(config-if)#ip address 20.20.20.20 255.255.255.255 – назначаем ему IP-адрес;
Router_2(config-if)#exit
Router_2(config)#access-list 1 permit 224.1.1.0 0.0.0.255 – создаем список доступа, чтобы проходил только наш поток;
Router_2(config)#ip pim rp-address 20.20.20.20 1 – прописываем адрес RP и привязываем к нему список доступа;
Router_2(config)#int fa 0/0
Router_2(config-if)#ip pim sparse-mode – запускаем нужный режим на интерфейсе;
Router_2(config-if)#exit
Router_2(config)#int fa 1/0
Router_2(config-if)#ip pim sparse-mode
Router_2(config-if)#exit
Router_2(config)#exit
Router_2#wr
Router_2# 


Теперь переходим к роутеру Router_1.

Router_1>en
Router_1#conf t
Router_1(config)#ip route 20.20.20.20 255.255.255.255 1.1.1.2 – прописываем статический маршрут до RP;
Router_1(config)#access-list 1 permit 224.1.1.0 0.0.0.255
Router_1(config)#ip pim rp-address 20.20.20.20 1 – прописываем адрес RP и привязываем к нему список доступа;
Router_1(config)#int fa 0/0
Router_1(config-if)#ip pim sparse-mode
Router_1(config-if)#exit
Router_1(config)#int fa 1/0
Router_1(config-if)#ip pim sparse-mode
Router_1(config-if)#exit
Router_1(config)#exit
Router_1#wr 


И роутер Router_3.

Router_3>en
Router_3#conf t
Router_3(config)#ip route 20.20.20.20 255.255.255.255 2.2.2.2
Router_3(config)#access-list 1 permit 224.1.1.0 0.0.0.255
Router_3(config)#ip pim rp-address 20.20.20.20 1
Router_3(config)#int fa 0/0
Router_3(config-if)#ip pim sparse-mode
Router_3(config-if)#exit
Router_3(config)#int fa 1/0
Router_3(config-if)#ip pim sparse-mode
Router_3(config-if)#exit
Router_3(config)#exit
Router_3#wr
Router_3# 


Все, настройка sparse-mode закончена. Здесь мы делали все вручную, но выбор RP может происходить и автоматически. Принцип такой:
  • выбирается «кандидат на должность RP», на этом устройстве вводится команда в глобальном режиме ip pim send-rp-announce interface-id scope ttl group-list access-list-number interval seconds (scope – это время жизни пакета (количество хопов), interval – это промежуток времени между посылками). На остальных устройствах в глобальном режиме вводится команда ip pim send-rp-discovery [interface-id] [scope ttl], которая включает автоматический опрос на наличие в сети RP.
Если использовать автоматическую настройку, то просто не потребуется прописывать IP-адрес RP на каждом из устройств.
Перейдем к проверкам. Снова заходим на Multicast Server, включаем потоковое вещание, возвращаемся на Multicast Client и смотрим результат.
Multicast Server:


Multicast Client:


И еще посмотрим, что видно на роутере Router_1:


    где:
  • 1 – IP-адрес точки рандеву (RP);
  • 2 – поток приходит на интерфейс Fa 0/1;
  • 3 – режим работы sparse-mode;
  • 4 – поток выходит через интерфейс Fa 0/0.
Ну что, все получилось. Теперь вы знаете, как настроить вещание фильмов в свою сеть. Вдруг, когда-нибудь и задумаете это сделать своим пользователям :).
А на этом я заканчиваю этот пост. Как всегда надеюсь, что он был вам интересен и познавателен.

По всем возникающим вопросам обращайтесь ко мне через комментарии или лично. Координаты можно найти вот тут.


С нетерпением жду вас в следующих постах!!!

С уважением, Ant0ni0n

8 комментариев:

  1. Большое спасибо за публикацию! Можно уточнить, сколько RAM выделено каждому из маршрутизаторов для прохождения Multicast. В моём случае при начале трансляции, маршрутизаторы перестают отвечать даже на ping. Вместо облака использовано прямое соединение двух машин с VirtualBox.

    ОтветитьУдалить
    Ответы
    1. Спасибо за отзыв!!!
      По краям я сипользовал cisco 7200 с 256 RAM, а в центре 3745 с 128 RAM памяти. Попробуйте роутеры которые использовал я. Когда я ставил все 3745, то тоже все зависало почему то...

      Удалить
  2. Добрый день Антон!
    Подскажите пожалуйста, в схеме вы используете мультикаст сервер и мультикаст клиент - это виртуализированные операционные системы? Расскажите пожалуйста как вы их реализовали.

    ОтветитьУдалить
    Ответы
    1. Доброго времени суток!
      Я реализовывал системы на VMWare workstation. В них подключены виртуальные сетевые адаптеры, которые в свою очередь подключены (через соответствующие vnmnic) к GNS3 через элементы "облако" (cloud).
      В качестве ОС использовал win XP.
      В последних версиях GNS3 это можно сделать намного проще, используя VirtualBox (когда писал этот пост, поддержки virtualbox еще не было).

      Удалить
  3. Спасибо за статью, прочел с огромным интересом.
    с режимами DM и SM вроде бы понятно как строится дерево,
    а каким образом это происходит в смешанном режиме sparce-dence ?

    ОтветитьУдалить
  4. Анонимный6 мая 2013 г., 10:17

    Очень просто, те группы которые мы используем в Sparse, будут испозьвовать Sparse логику и RP, те кто будет использоваться в Dense, будут строить логику *,G относительно DR а не RP. Хороший пример смешанного режима это Auto-RP конгда RP использует D как груповую рассылку 224.1.0.39, и соотвественно нам необходимо использовать Dense логику для поддержки данного функционала

    ОтветитьУдалить
  5. Добрый день! Подскажите пожалуйста какие у вас вычислительные ресурсы для работы GNS. На моих 4-х гигабайтах памяти при запуске GNS жутко тормозит весь компьютер целиком.

    ОтветитьУдалить
  6. http://juniper.io.ua/video настройка сетевого оборудования

    ОтветитьУдалить