Это заметка относится именно к  настольному применению FreeBSD — использованию его на рабочей станции. В последнее время многие провайдеры телекоммуникаций кроме непосредственно услуг доступа в интернет предоставляют так называемое цифровое телевидение — IPTV. Использование FreeBSD не может быть ограничением для его просмотра, вы согласны? Если да, идем ставить vlc — практически единственный плеер, способный воспроизводить IPTV под настоящей ОС.

# /usr/ports/multimedia/vlc
#  make install clean

Соглашаемся с опциями установки, менять ничего не надо.


Файл с запакованными исходниками vlc-1.0.5.tar.bz2 имеет размер примерно 20 Мбайт, кроме того требуется еще целый ряд мелких портов-зависимостей, так что приготовтесь к длительной сборке (пару часов на процессора 2 GHz).После окончания установки плеер автоматически добавляется в меню Gnome:


Практически все провайдеры осуществляют вещание по протоколу multicast, при котором копии пакетов направляются определённому подмножеству адресатов. Для того, чтобы стать членом группы, узел получателя инициирует запрос на маршрутизатор локальной сети с использованием протокола IGMP. По умолчанию vlc будет искать поток на первом интерфейсе, который не обязательно подключен к провайдеру. Многие псевдоспециалисты на просторах Рунета советуют явно прописать маршрут к сети 224/6. Однако это практически всегда бессмысленно, вот например, если поток приходит через специальный VLAN или через отдельный PVC ATM, что указывать в качестве шлюза? Для vlc необходимо явно указать интерфейс, на которых следует отправлять IGMP-пакеты (у меня в примере msk0). Эта настройка «перекрывает» таблицу маршрутизации.

Вот, собственно и всё. Скачиваем список каналов, запускаем канал.

Вот так выглядит IGMP-запрос:

23:14:33.091026 00:13:77:61:23:34 > 01:00:5e:00:02:02, ethertype IPv4 (0×0800), length 46: (tos 0×0, ttl 1, id 35347, offset
0, flags [none], proto IGMP (2), length 32, options (RA))

Вот мы уже мультикаст-группе:

23:19:36.564825 00:13:77:61:23:34 > 01:00:5e:00:02:06, ethertype IPv4 (0×0800), length 46: (tos 0×0, ttl 1, id 56656, offset
0, flags [none], proto IGMP (2), length 32, options (RA))
0.0.0.1 > 232.0.2.6: igmp v2 report 232.0.2.6

А вот уже пошел udp-поток:

23:19:36.609281 00:11:20:85:19:80 > 01:00:5e:00:02:06, ethertype IPv4 (0×0800), length 1358: (tos 0×0, ttl 5, id 25, offset
0, flags [DF], proto UDP (17), length 1344)
10.253.2.110.3000 > 232.0.2.6.3000: [no cksum] UDP, length 1316
23:19:36.611492 00:11:20:85:19:80 > 01:00:5e:00:02:06, ethertype IPv4 (0×0800), length 1358: (tos 0×0, ttl 5, id 25, offset
0, flags [DF], proto UDP (17), length 1344)
10.253.2.110.3000 > 232.0.2.6.3000: [no cksum] UDP, length 1316
23:19:36.613463 00:11:20:85:19:80 > 01:00:5e:00:02:06, ethertype IPv4 (0×0800), length 1358: (tos 0×0, ttl 5, id 25, offset
0, flags [DF], proto UDP (17), length 1344)

А это смена канала:

23:17:13.294157 00:13:77:61:23:34 > 01:00:5e:00:02:1b, ethertype IPv4 (0×0800), length 46: (tos 0×0, ttl 1, id 1447, offset
0, flags [none], proto IGMP (2), length 32, options (RA))
0.0.0.1 > 232.0.2.27: igmp v2 report 232.0.2.27

Как видно, настроить просмотр IPTV на хосте, подключенном непосредственно к провайдеру, довольно просто. В последующих статьях рассмотрим более сложную и всегда проблемную задачу — проброс IPTV через сервер на FreeBSD. Сразу предупреждаю, что проблемная она только для любителей «несетевых» систем, а-ля Windows/Linux, для настоящей системы нет нереализуемых задач.