Пользователь
0,0
рейтинг
6 января 2011 в 17:55

Администрирование → Организация IPTV-трансляции из песочницы

Началось все с того, что сеть начала расти и нужно было предоставлять пользователям ресурсы, кроме как доступ в интернет. Так как, наша компания кроме предоставления услуг доступа в интернет, занимается еще кабельным аналоговым и цифровым телевидением, то было решено организовать вещание телевидения в IP-сеть.

Итак, Дано:
В качестве источника потока использовались спутниковые ресиверы DCH-4000P китайской фирмы PBI.

image

image

Так как, один такой ресивер позволяет получать на выходе только 6 мультикастовых каналов, купили IP Streamer IPS-01 одесской фирмы Спец-ТВ. Поэтому, поток будем брать не через IP, а с ASI выхода.

image

У него 6 ASI входов, на которые мы будем подавать потоки с шести ресиверов PBI. Так как выходной порт у стримера гигабитный и в потоке находятся все наши каналы, нужно было сделать так, чтобы к клиенту на сетевой интерфейс попадали не все 60 каналов, и занимали всю пропускную способность сети (поток около 300Мбит/с), а только тот канал, который он запросит. В принципе можно было реализовать такую функцию на коммутаторах D-Link, но знакомые твердили что D-Link-и плохо себя показывают в качестве querier'ов. Вообщем было решено купить управляемый L2 коммутатор FoxGate S-6224-S2.

image

Передавать абонентам будем через коммутатор D-Link DES-3526.

image

Схема коммутации следующая, нарисована на скорую руку:

image

Итак, приступим к настройке.

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

Начнем с конфига querier'а Foxgate S6224-S2, IP-адрес нашего коммутатора 10.0.0.10:

1. Создаем отдельный vlan:

vlan 229

2. Включаем контроль мультикаст-потока:

multicast destination-control

3. Настраиваем порты:

Interface Ethernet0/0/2
switchport access vlan 229
...
...
...
!
Interface Ethernet0/0/24
switchport access vlan 229


4. 25 порт смотрит в сторону стримера, а 26 в сторону коммутатора, поэтому 26 порт делаем транковым:

Interface Ethernet0/0/25
switchport access vlan 229
!
Interface Ethernet0/0/26
switchport mode trunk


5. Включаем igmp snooping и говорим, что наш vlan является мультикастовым:

ip igmp snooping
ip igmp snooping vlan 229

6. Включаем функцию querier'а и говорим, что источником является сам коммутатор:
ip igmp snooping vlan 229 l2-general-querier
ip igmp snooping vlan 229 l2-general-querier-source 10.0.0.10


Все, на этом настройка querier'а завершена.

Перейдем к D-Link'у (25-26 порты в качестве аплинка):

1. Включаем igmp snooping и говорим, что наш vlan 229 является мультикастовым:

enable igmp_snooping
create igmp_snooping multicast_vlan multicast 229


2. Говорим, что абонентские порты 1-24, а в качестве источника используем 25 и 26:

config igmp_snooping multicast_vlan multicast state enable replace_source_ip 0.0.0.0 member_port 1-24 source_port 25-26

3. Данная опция нужна, чтобы мультикаст не шел на все порты подряд:

config igmp_snooping multicast host_timeout 260 router_timeout 260 leave_timer 2 state enable
config igmp_snooping querier multicast query_interval 125 max_response_time 10 robustness_variable 2
config igmp_snooping querier multicast last_member_query_interval 1 state disable


4. Выключаем фильтеринг на магистральных портах (на всякий случай):

config limited_multicast_addr ports 25-26 access deny state disable

5. Запрещаем клиентам вещать свои каналы, вернее просто никто не сможет их смотреть:

config multicast port_filtering_mode 1-24 filter_unregistered_groups
config multicast port_filtering_mode 25-26 forward_unregistered_groups


На данном этапе настройка коммутатора завершена.

Создаем плейлист channels.m3u со следующим содержанием:

#EXTM3U
#EXTINF:0,РТР-Планета
udp://@239.255.1.1:1234
#EXTINF:0,НТВ-Мир
udp://@239.255.1.2:1234
#EXTINF:0,ТНТ
udp://@239.255.1.3:1234
#EXTINF:0,СТС-Москва
udp://@239.255.1.4:1234
#EXTINF:0,Премьера
udp://@239.255.1.5:1234
.
.
.
#EXTINF:0,Дом Кино
udp://@239.255.1.60:1234


Открываем его например vlc и наслаждаемся просмотром.

Позже я столкнулся с проблемой, у меня дома стоит сервер с Ubuntu на борту и внешним IP-адресом + точка доступа, который используется в качестве роутера для домашней сети, и встал вопрос о том, как собственно смотреть IPTV. Решение нашлось быстро с помощью igmproxy, однако разочарование не долго заставило себя ждать. Картинка рассыпалась, а про просмотр через wi-fi вообще можно было не мечтать, т.к. поток мультикаста перегружал мою 54Мбит/с точку доступа. Погуглив стало понятно, что будет лучше поток преобразовывать из UDP в HTTP. Это можно осуществить с помощью программы udpxy.

Устанавливаем ее и создаем стартовый скрипт:

#!/bin/sh

if [ -n "`pidof udpxy`" ] ;then
/usr/bin/killall udpxy > /dev/null 2>&1
fi
/usr/local/bin/udpxy -a eth0 -m eth1 -p 8888
#eth0 - смотрит в локальную сеть
#eth1 - в сторону провайдера
#8888 - порт на котором будет идти трансляция, можно выбрать любой свободный


Осталось положить наш скрипт в /etc/init.d/.

Запускаем:

/usr/local/bin/udpxy -a eth0 -m eth1 -p 8888

Проверим:

zeleniy@promeline:~$ ps ax | grep udp
1970 ? S 0:00 /usr/local/bin/udpxy -a eth0 -m eth1 -p 8888
15231 pts/0 D+ 0:00 grep --color=auto udp


Статистика доступна по адресу:

http://172.16.0.1:8888/status


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

#EXTM3U
#EXTINF:0,RTR-PLANETA
http://172.16.0.1:8888/udp/239.255.1.1:1234
#EXTINF:0,DOM KINO
http://172.16.0.1:8888/udp/239.255.1.2:1234
#EXTINF:0,TVCI
http://172.16.0.1:8888/udp/239.255.1.3:1234
#EXTINF:0,BIBIGON
http://172.16.0.1:8888/udp/239.255.1.4:1234
#EXTINF:0,RBK-TV
http://172.16.0.1:8888/udp/239.255.1.5:1234


Теперь даже по wi-fi можно с комфортом посмотреть любимые передачи.
Андрей @zeleniy87
карма
7,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (26)

  • 0
    Не так давно наш провайдер тоже добавил такую услугу, так потом я прошил роутер, теперь постоянно смотрю с телевизора :)
  • +1
    Полагаю, можно было написать и так:

    Interface Ethernet0/0/2
    switchport access vlan 229
    !
    Interface Ethernet0/0/3
    switchport access vlan 229



    !
    Interface Ethernet0/0/24
    switchport access vlan 229
    • 0
      ну, первая статья сорри, поправим
  • 0
    А в чем смысл мультикаста по сравнению с обычно http/udp соединением с сервером?
    • 0
      вклиниваешься в нужный мультикаст поток и получаешь тоже что и все.

      Dlink'и крутые на них вся корбина\билайн построена, на выходе получаем, что абонент может смотреть одновременно 4 HD канала и качать торренты не мешая друг другу.
    • +1
      В том, что сеть оператора не нагружается лишним трафиком. При юникаст вещании — если на свиче 24 абонента и все смотрят ОРТ — передается 24 отдельных потока. При мультикаст вещании — всего один.
    • 0
      Была статья, в которой, в частности, был ответ на этот вопрос.
      Вот она: habrahabr.ru/blogs/cisconetworks/61466/
  • 0
    В свое время писал веб-сервис для информационной поддержки IPTV (тв-программа, обратная связь), к сожалению показать не могу (интранет все таки), если есть интерес обращайтесь.
  • 0
    Дома провайдер транслирует IPTV. Захотелось иметь возможность смотреть его и на работе (например, футбол вечером, что б домой не так спешить).
    Поставил дома виндовый UdpProxy и пошел на работу смотреть, что получилось. Канал и дома и в офисе 15 мегабит. По идее должно хватать, но нет. Смотреть можно было только пару каналов, передающих видео в самом низком качестве ( Все остальные затыкались через пару секунд просмотра и смотреть дальше было не возможно.
    В UdpProxy вроде как есть возможность использовать транскодер, для сжатия потока. Но гугление и ковыряние успехов не дали. Может подскажет кто?
    • –1
      Я бы начал с игр на комбайне VLC Media Player
    • +1
      в моем случае один канал занимает от 2 до 5 мегабит, по идее должно хватать, mpeg 2 720x526, ну начнем с того что http не udp, когда возникает ошибка при передаче пакета от отправителя до получателя, происходит повтор запроса (поэтому стопорится картинка), в udp такого не будет, когда произойдет ошибка при передаче на картинке не покажет какой нибудь пиксель, но передача не прервется
      • 0
        Это понятно. Но, видимо, «реальных» 15 мегабит один (или оба) из провайдеров не дает, вот и не успевают все пакеты прийти во время. Наверное стоит попробовать UDP прокси поставить и не заморачиваться пока с транскодером
    • 0
      Я так на работе смотрю iptv своего домашнего провайдера. Правда, у меня udpxy запущен на роутере Asus WL-500G Premium.

      Для начала попробуйте размером буфера udpxy поиграть, сделать ключ -B побольше. У меня запущен с -B 1Mb.
  • 0
    А сколько каналов DCH-4000P отдает через ASI одновременно?
    DCH-4000P что ли умеет со спутниковой тарелки несколько сигналов сразу читать и отдавать?
    • 0
      ну существуют разные ресиверы, некоторые могут смешивать сигнал с тюнера и со входа ASI, затем все это передавать на ASI выход. Количество зависит от заполнения, ну примерно 16 каналов максимум среднего качества, однако все зависит от контента, могут и 8 каналов заполнить на 100%. Насчет нескольких сигналов: вы принимаете поток (например 10 каналов), т.е. это по существу как один сигнал, есть железки двухканальные, которые позволяют принимать сигнал с двух транспондеров и смешивать их на выходе
      • 0
        Ну вот например Триколор (опустим тему шифрования) все каналы идут одним потоком или как? Я к тому что надо ли на один канал свою железку или можно на одной железке все каналы с транспондера забрать? (Я не в теме как это работает, поэтому вопрос может звучат глупо =) )
        НУ проще говоря, подрубив эту железку к спутниковой антенне, смогу ли я забрать 15 обычных открытых каналов со спутника и передать их по ASI дальше или потребуется установка по одной такой железке для каждого открытого канала.
        У вас получается 96 каналов забирается. Все в открытом виде или стоят платы дешифрации?
        • 0
          сможете забрать и передать все разом, на каждом транспондере разное количество каналов, поэтому не 96. В PBI стоят CAM-модули для декодирования зашифрованных программ
  • 0
    Так же интересно откуда берется контент и как подключается к DCH-4000P.
    И почему не стали делать все на писюке.
    • 0
      контент принимается со спутника, ресивер подключается к тарелке обычным коаксиальным кабелем
      • 0
        ну во-первых тут мы передаем все через один гигабитный порт, а во вторых, что выключить или добавить несколько каналов мы управляем одной железкой через веб интерфейс, а если бы на китайцах, то нужно к каждому подключать композитный провод и телевизор и руками на лицевой панели извращаться с нажатиями
  • 0
    На ночь глядя что-то плохо соображаю, но тем не менее:

    1) Если вы используете PBI только для вывода потока на ASI, то на фига надо было тратить деньги на 4000? Это можно и 3000-ми делать без проблем.

    2) Насчет 6 мультикастовых каналов у 4000 на выходе — это клевета на доброе имя PBI. :-) 4000, если мне не изменяет память, может хоть целый транспондер нешифрованный наружу выводить. Ограничения на количество выводимых каналов накладывает в общем-то не сам 4000, а используемые для расшифровки CAM'ы. Т.е. вы явно не все рассказали — нужно как минимум знать, что именно ретранслируете и какие CAM'ы используете. :-) Нормальные CAM'ы одновременно расшифровывают до 12 каналов. Поэтому у всех стандартная схема — 4000 с двумя CAM'ами, из которых один расшифровывает транспондер получаемый с тарелки самим 4000, а второй — другой транспондер, получаемый через ASI с чего-нибудь дешевого, типа 3000. Итого имеем 24 расшифрованных канала в мультикасте по цене меньше 2 штук баксов — чего, собственно, и хотелось и ради чего все и затевалось…

    3) Знакомые врут про Длинк — нормально у него все. :-) Роутил как раз около 300Мбит мультикаста по PIM-SM через 3610 и через старенький 3326GSR — все ништяк (т.е. были, разумеется, нюансы в настройке — но где их нет?). Правда, 3326 могу рекомендовать только в режиме L2, но он сейчас в общем-то и неактуален — другие модели уже есть…

    4) Проксирование мультикаста в юникаст — зло, т.к. это все нельзя будет смотреть на set-top-box'ах — они сейчас все только мультикаст поддерживают.

    5) Если под рукой есть IPTV-приставка D-Link DIB-120 и есть желание поиграться — на tiptv.ru/ можете скачать соответствующую прошивку, сделать свой список каналов на сайте и смотреть свое IPTV на телевизоре. Пока функционал совершенно базовый, но для личного использования или если не планируете полноценную платную услугу для клиентов делать — вполне сойдет. Скоро и VoD ожидается…
    • 0
      1) 4000 мы не только для IPTV используем, они задествованы в цифре
      2) 4000 серия, модели разные. На декодировании не останавливался, думал будет понятно, что за контент необходимо платить, так что с камами согласен. Насчет вашей схемы описаной во 2 пункте, идеально подходит ресивер PBI DCH-4000P 42S2, кстати трудно найти мануал на отдельную модель.
      3) Мне объясняли так, что длинки начинают конфликтовать между собой, когда находятся в режиме querier'ов и начинается бардак в сети, каждый начинает объявлять себя главным. Может они и решили уже эту проблему в новых прошивках, но тут не подскажу, т.к. не настраивал
      4) Согласен, но это делалось для домашнего использования и для просмотра на компах и ноуте через wi-fi
      5) Приставки ставить совсем не будем, мы для таких случаев транслируем цифру, там и картинка получше и приставки не нужно для современных телеков (например Samsung LEC530P1W,) ставим абонентам свой кам-модуль в телевизор с поддержкой DVB-C.
      IPTV просто как дополнительный сервис на бесплатной основе в нашем случае.
      • 0
        ОК, ясно. Если у вас DVB-C, то, конечно, морочиться с IPTV смысла особого нет…
        Чем шифруете свой DVB-C? А то, например, для московского Акадо найти CAM тяжко, полноценно он не поддерживается (акадо периодически обновляет ключи, а CAM'ы этого не умеют) и в любом случае — приходится брать ихнее оборудование (а для HD они его заставляют покупать за полную стоимость). При том что действительно во всех современных телевизорах это дело есть…
        • 0
          кодировка присутствует внутри модуляторов QTX-1, кодируем контроллером SCR-1 (http://stv.odessa.ua/index.php?option=com_content&view=article&id=18&Itemid=5), среди аналогов по цене и качеству отличная штука, камы берем у них же

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.