Постановка задачи: В наличии источник 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