Постановка задачи: В наличии источник multicast-трафика, имеются также  потребители multicast траффика. По разным причинам, потребителям требуется постоянное multicast-вещание  определённых каналов от источника, а не всех сразу. Дополнительным условием является независимость потребителей друг от друга, т.е. чтобы от потребителей не приходило постороннего трафика друг другу и источнику. Потребители также ставят условия: никакой PIM-маршрутизации, только уровень L2.

Настройку я буду описывать для коммутаторов D-Link: DGS-1024C и DGS-3420-24TC. В данной схеме можно использовать и другие коммутаторы. Опишу особенности использования:

-                    коммутаторы должны быть гигабитными, если скорость multicast потока больше или равно 100Мб/сек;

-                    первый коммутатор может быть и управляемым;

-                    второй коммутатор должен поддерживать функции traffic segmetion и ACL по ip-address.

1.     Соединяем элементы тракта согласно схеме:

 

2.     IPTV сервер непрерывно вещает следующие multicast группы: 234.0.0.1, 234.0.0.2, 234.0.0.3, порт вещания стандартный: 1234. Пользователь 1 будет получать группу 234.0.0.1, Пользователь 2 будет получать группы 234.0.0.1 и 234.0.0.2, Пользователь 3 будет получать все группы от сервера IPTV.

3.     Подключаемся к DGS-3120-24TC по консольному кабелю.

4.     Считаем, что все настройки на DGS-3120-24TC сброшены в дефолт.

5.     Создаём три VLAN:

#create vlan vlanid 100

#create vlan vlanid 200

#create vlan vlanid 300

 

6.     Удаляем все порты из vlan по-умолчанию:

#config vlan default delete 1-26

 

7.     Добавляем соответствующие порты в соответствующие vlan:

#config vlan vlanid 100 add untagged 1-2

#config vlan vlanid 200 add untagged 3-4

#config vlan vlanid 300 add untagged 5-6

 

Можно обойтись и без vlan.

 

8.     Настраиваем сегментацию траффика:

#config traffic_segmentation all forward_list null – запрещаем всем портам передавать какой-либо траффик между собой

#config traffic_segmentation 1 forward_list 2 – разрешаем порту 1 передавать траффик на порт 2

#config traffic_segmentation 3 forward_list 4 – разрешаем порту 3 передавать траффик на порт 4

#config traffic_segmentation 5 forward_list 6 – разрешаем порту 5 передавать траффик на порт 6

 

9.   Создаём два профиля, одним профилем мы будем разрешать мультикаст трафик, а другим мы полностью запретил не разрешённый мультикаст трафик.

#create access_profile profile_id 1 profile_name multicast01 ip destination_ip_mask 255.255.255.255 udp dst_port_mask 0x0     – создаём профиль ACL для разрешения мультикаста

 

#create access_profile profile_id 2 profile_name multicast02 ip destination_ip_mask 240.0.0.0 udp dst_port_mask 0x0 – создаём профиль ACL для запрета неразрешённого мультикаста

 

 

Настраиваем фильтрацию multicast траффика. Правила фильтрации нужно применять к «входящим» портам DGS-3120-24TC. В нашем случае это порты 1, 3, 5.

Для пользователя 1:

#config access_profile profile_id 1 add access_id auto_assign ip destination 234.0.0.1 udp dst_port 1234 port 1 permit

#config access_profile profile_id 2 add access_id auto_assign ip destination 224.0.0.0 udp dst_port 1234 port 1 deny

 

Для пользователя 2:

#config access_profile profile_id 1 add access_id auto_assign ip destination 234.0.0.1 udp dst_port 1234 port 3 permit

#config access_profile profile_id  1 add access_id auto_assign ip destination 234.0.0.2 udp dst_port 1234 port 3 permit

#config access_profile profile_id 2 add access_id auto_assign ip destination 224.0.0.0 udp dst_port 1234 port 3 deny 

 

Для пользователя 3:

#config access_profile profile_id 1 add access_id auto_assign ip destination 234.0.0.1 udp dst_port 1234 port 5 permit

#config access_profile profile_id  1 add access_id auto_assign ip destination 234.0.0.2 udp dst_port 1234 port 5 permit

#config access_profile profile_id  1 add access_id auto_assign ip destination 234.0.0.3 udp dst_port 1234 port 5 permit

#config access_profile profile_id 2 add access_id auto_assign ip destination 224.0.0.0 udp dst_port 1234 port 5 deny 

 

 

10.  Сохраняем всё: # save all

 

Заключение: данный материал не претендует на оригинальность, кто-то может сделать и по-другому, это всего лишь то, что сделал лично я для себя J