Что такое udp прокси. установка и настройка iptv на android

Введение (можно пропустить)

Отличие Source Specific Multicast от “обычного”(Any Source Multicast(ASM)) в его сигнализации и фильтрации. Формально, существует 3 модели распространения multicast – ASM, SFM(source filtered multicast) и SSM. Но в действительности, с точки зрения запроса мультикаст-трафика со стороны клиента, SSM можно рассматривать как частный случай SFM. Модель SSM подразумевает, что мультикаст группы принадлежат к диапазону адресов 232.0.0.0/8, а IGMPv3 exclude mode запросы не отправляются клиентом и игнорируются свитчами и роутерами, их обрабатывающими.

В классическом варианте, внутри сети оператора используется протокол PIM для распространения мультикаста между роутерами, при этом задействуются RP(точка(и) рандеву) для регистрации источников (S,G) и получения информации о них роутерами, у которых клиенты запросили мультикаст. Использование IGMPv3 в режиме include mode и отказ от exclude mode позволяет избавиться от этих RP, что упрощает конфигурацию сети и, вообще говоря, повышает надёжность(за счёт понижения сложности). Использование адресов 232.0.0.0/8 позволяет роутерам понять что от них хотят, когда вещают или запрашивают мультикаст от них. Получая такой мультикаст(data-трафик), роутер знает, что его не надо регистрировать на RP (сеть может быть смешанная и использовать 1, 2 или 3 модели распространения multicast), а получая IGMPv3 запрос от клиента(include mode) на запрос канала из сети 232.0.0.0/8, роутер не пытается его интерпретировать как ASM с фильтром(т.е. SFM), а сразу шлёт PIM JOIN для построения SPT, если канал (S,G) ранее не был подключен. В терминологии SSM канал определён как (S,G). В общем случае(в зависимости от оборудования) можно изменить диапазон адресов, относящийся к SSM.

Що таке UDP-проксі?

Проксі-сервер UDP був створений для перетворення многоадресного трафіку UDP IP-телебачення в одноадресний ТСР. Якщо ви хочете комфортно дивитися IPTV на телефонах з ОС Андроїд, планшетах, смарт-TB і ігрових консолях за допомогою Wi-Fi, ця функція буде дуже корисна.
У цієї програми існують дві мети:

  • передача IP-ТВ в локальній мережі на базі OC Windows;
  • безперервна передача IP-ТВ через роутер як НТТР-трафіку.

Проксі UDP з’явився в Мікропрограми з версії V2.02 (ХХХ.1) В2, де була додана функція для перегляду інтерактивного TB на домашніх пристроях і плеєрах, що не підтримують мультікастового потоки. Якщо в звичайному плеєрі є IPTV, абонент може його дивитися, але трансляція буде здійснюватися через НТТР. Тому і був розроблений проксі UDP. Великою перевагою використання UDP-проксі на роутерах і ПК є надійність передачі пакетів трафіку IP-ТВ, можливість перегляду фактично на будь-якому пристрої і якісне телебачення високої чіткості. Канал також більш стабільний.

Як дізнатися свою адресу проксі-сервера і порт?

Є 3 поширених способу визначити ці дані:

  • 1 спосіб – сервіс Socproxy.ru/ip. Скористайтеся звичайно використовуваним браузером на своєму телефоні або персональному комп’ютері, і перейдіть за посиланням: https://socproxy.ru/ip . Відкриється домашня сторінка, на якій буде відображатися діючий мережеву адресу і проксі.
  • 2 спосіб – утиліта SocialKit Proxy Checker. Завантажити та встановити програму для перевірки проксі SocialKit. Після повного завантаження запустіть утиліту на комп’ютері. Клацніть “Інформація про підключення за замовчуванням”. З’явиться необхідна вам інформація.
  • 3 спосіб – через браузер (Гугл Хром, Опера і т.д.). Коли проксі використовується в браузері, параметри можна подивитися там же. Щоб це зробити, відкрийте в настройках розділ «Додатково» і натисніть «Система». Далі натисніть «Відкрити параметри проксі ПК» .Перед вами відкриється вікно, в якому вказані IP-адреса і порт (відобразиться після двокрапки). За умови, якщо присутні ім’я користувача і пароль, вони таким же чином будуть відображатися тут.

Що таке непроксірованний UDP?

Непроксірованний UDP – це проксі, захищений від витоку реального IP-адреси через WebRTC. WebRTC (від англійського real-time communications – комунікації в реальному часі) – це технологія, що забезпечує організацію потокової передачі даних між додатками в режимі реального часу. Використання цієї техніки може виявити ваш реальний IP-адресу.

Реализация

А теперь встаём следующая проблема – как это организовать. Представьте себе, что в сети у провайдера очень много узлов, коммутаторов, маршутизаторов, серверов и есть центральный сервер того же IPTV. Задача сервера отправить трафик таким образом, чтобы он максимально быстро через минимальное количество узлов дошёл до пользователя.

При этом нужно это сделать так, чтобы не образовалось кольцо – когда трафик начинает ходить по кругу и бесконечно. Поэтому путь пакетов будет выглядеть как дерево, да и топология будет использоваться подобная. То есть выходя пакет от сервера он подходит к одному из узлов. Дальше узел должен определить куда дальше отправлять пакет.

А теперь мы подобрались к протоколу IGMP (Internet Group Management Protocol) — это такой протокол, который позволяет быстро подключаться клиенту к ближайшему маршрутизатору. Он сообщает ему, что нужен трафик по тому или иному каналу. Если же запроса к маршрутизатору нет, то он просто простаивает и тем самым высвобождает ресурсы сети.

Также используется PIM (Protocol Independent Multicast) протокол – эта такая система, которая выстраивает адрес от сервера к конечному получателю через одну ветвь дерева. При этом система постоянно мониторит путь, чтобы менять его, если какой-то сегмент выключен или был перемещён.

Проще говоря, сервер транслирует только один сигнал каждого телевизионного канала. И пользователи получают только сигнал того канала, который запросили. Одновременно один сигнал могут получать и несколько приёмников. Именно для этого и нужен протокол IGMP.

Настройка IPTV на Андроид

Смотреть IP-телевидение можно разными способами. Сейчас мы расскажем, как это делать через приложение IPTV для Android-устройств, с помощью которого можно смотреть IPTV своего Интернет-провайдера или другого Интернет-источника. Через эту программу возможно загрузить плейлист имеющихся каналов в формате m3u, а затем смотреть выбранный канал через видеоплеер, установленный на аппарат.

Итак, загружаем приложение. Поле установки, настраиваем его. Для этого, открыв программу, переходим в «Настройки», выбираем «Список каналов» и вводим, предоставленный провайдером, интернет-адрес файла с плейлистом:

Пока, к сожалению, программа не может загрузить плейлист из памяти Андроид-устройства, поэтому, если потребуется загрузить непосредственно в приложение собственный плейлист, то мы можем для этого использовать на ПК сервис Dropbox, чтобы затем выполнить загрузку файла в публичную библиотеку (англ. Public). После этого, получаем его адрес, скопировав в буфер обмена. Что мы для этого делаем: правой кнопкой мышки кликаем по файлу и выбираем пункт Copy Public Link:

Если ваш Wi-Fi роутер оснащён встроенным UDP прокси, то это, собственно и есть вся процедура настройки. То есть, вернувшись теперь на основной экран программы, мы уже сможем выбрать канал из списка и смотреть его трансляцию на смартфоне/планшете.

Однако, не исключено, что просмотр программ по IPTV может сопровождаться проблемами в виде изображения, содержащего множество артефактов или выпадения фрагментов видеопотока. Это, с большой долей вероятности означает, что у используемого роутера отсутствует UDP прокси. В этом случае нам нужно будет организовать свой собственный прокси. Делать это мы будем, используя любой компьютер, подключённый к роутеру с помощью LAN разъема.

igmp proxy в роутере что это?

За что отвечает опция igmp proxy в настройках роутера?

Те, кто хоть раз заходил в настройки своего Wi-Fi роутера наверняка мог обратить внимание на наличие опции под названием igmp proxy. У кого-то она включена, а у кого — то выключена

В данной статье вы узнаете для чего нужна данная настройка и когда ее нужно включать.

За что отвечает igmp proxy?

Наверняка многие используют или хотя бы слышали о IPTV. Это технология просмотра телевидения через интернет на компьютере и других устройствах.

Вот так выглядит просмотр IPTV

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

Так вот опция igmp proxy разрешает или запрещает роутеру пропускать пакеты данных IPTV. Говоря более простыми словами, включает или отключает работу IPTV для устройств, подключенных к данному роутеру.

Включать или нет?

Если вы не используете IPTV на компьютере или на телевизоре через приставку, то igmp proxy можно оставить в положении «Отключено» (Disabled).

Пример опции в настройках роутера TP-Link

В противном случае отключение данной опции сделает просмотр телевидения IPTV через интернет невозможным.

Читать дальше →

/routing igmp-proxy

General configuration.

  • query-interval (time, 00:00:01 — 01:00:00) : how often to send out IGMP Query messages over downstream interfaces.
  • query-response-interval (time, 00:00:01 — 01:00:00) : how long to wait for responses to an IGMP Query message.
  • quick-leave (yes|no) : specifies action on IGMP Leave message. If quick-leave is on, then an IGMP Leave message is sent upstream as soon as a leave is received from the first client on the downstream interface. Use set to yes only in case there is only one subscriber behind the proxy.

Note: use quick leave only if there is one subscriber behind the proxy

IGMPv3 клиент и генератор multicast

Рассмотрим IGMPv3 в контексте CE-устройства, т.е. как запросить SSM по IGMPv3 и как его обработать.

Сначала речь пойдёт о кроссплатформенных средствах, будет написано простейшее приложение на python (клиент) и использован iperf как генератор мультикаста. Это должно работать в современных версиях Linux, Windows, MacOS, FreeBSD и, возможно, в других ОС. Проверялось на Ubuntu Linux 14.04.

Для того, чтобы нагенерировать трафик с ip.src=192.0.2.1, ip.dst=232.252.0.100, dst.udp_port=12345 можно запустить iperf:

iperf -c 232.252.0.100 -B 192.0.2.1 -u -p 12345 -t 0.2 -l 12

Код приложения-клиента:

#!/usr/bin/env python

import socket

if not hasattr(socket, 'IP_ADD_SOURCE_MEMBERSHIP'):
    setattr(socket, 'IP_ADD_SOURCE_MEMBERSHIP', 39)

group = '232.252.0.100'
port = 12345
bind = '0.0.0.0'
source = '192.0.2.1'

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

imr = (socket.inet_pton(socket.AF_INET, group) +
        socket.inet_pton(socket.AF_INET, bind) +
        socket.inet_pton(socket.AF_INET, source))

s.setsockopt(socket.SOL_IP, socket.IP_ADD_SOURCE_MEMBERSHIP, imr)
s.bind((group,port))

for i in range(0, 3):
    msg = s.recv(16384)
    print ":".join("{:02x}".format(ord(c)) for c in msg)
    #print msg

Это приложение подключается (строки 13-20) к каналу (192.0.2.1, 232.252.0.100), ожидая данные на порту udp/12345 (строки 9 и 20), ждёт 3 таких пакета (строки 22-23), распечатывая их в шестнадцатеричной форме (строка 24). На C это будет выглядеть аналогично, только с кучей кода, не относящегося к бизнес логике(работа с памятью), пример реализации можно подсмотреть в коде VLC-плеера.

Examples

IGMP-proxy

Will forward stream unconditionally if it comes in from ether1 with set source and will be sent out to ether2, clients that will try to get stream on interface ether3 will not receive that stream.

/routing igmp-proxy interface add comment="" disabled=no interface=ether1 threshold=1 upstream=yes
/routing igmp-proxy interface add comment="" disabled=no interface=ether2 threshold=1
/routing igmp-proxy interface add comment="" disabled=no interface=ether3 threshold=1
/routing igmp-proxy mfc add source=192.168.0.1 upstream-interface=ether1 \
downstream-interface=ether2 group=224.10.10.11 disabled=no

MFC static entry

224.10.10.10 group will not be sent at all

/routing igmp-proxy mfc add source=192.168.0.1 upstream-interface=ether1 \
group=224.10.10.11 disabled=no

SSM

ASM — Any Source MulticastSSM — Source Specific Multicast

  • Поиска RP (протоколы Bootstrap и Auto-RP),
  • Регистрации источника на мультикасте (а это лишнее время, двойное использование полосы пропускания и туннелирование)
  • Переключения на SPT.
  • Запрашивать подключение к просто группе, без указания источников. То есть работает как типичный ASM.
  • Запрашивать подключение к группе с определённым источником. Источников можно указать несколько — до каждого из них будет построено дерево.
  • Запрашивать подключение к группе и указать список источников, от которых клиент не хотел бы получать трафик

SSM MappingOne-to-Many

Configuring IGMP Proxy

To configure a downstream interface, enable IGMP on that interface. To configure IGMP proxy on the system, complete the following tasks:

  1. Enable IP multicasting.
  2. Identify the interface that you want to act as the upstream interface.
  3. Enable IGMP proxy on that interface.
  4. (Optional) Specify how often the system should send unsolicited reports to routers on the upstream interface.
  5. (Optional) Specify how long the system should assume that there is an IGMPv1 querier router on the subnet after the system receives an IGMP V1 query on this interface.

    ip igmp-proxy

Use to enable IGMP proxy on an interface.

Note: You can enable only one upstream interface.

  • The interface for which you enable IGMP proxy is the upstream interface.
  • Example
host1(config)#ip multicast-routing
host1(config-if)#ip igmp-proxy

Use the no version to disable IGMP proxy on an interface.

    ip igmp-proxy unsolicited-report-interval

Use to specify how often the upstream interface should transmit unsolicited reports.

Note: Issue this command only on the upstream interface. Otherwise, this command will have no effect.
host1(config-if)#ip igmp-proxy unsolicited-report-interval 
600

Use the no version to transmit unsolicited reports using the default value, 400 seconds.

    ip igmp-proxy V1-router-present-time

Use to specify how long the system assumes that there is an IGMPv1 querier router on the subnet after the system receives an IGMP V1 query on this interface.

Note: Issue this command only on the upstream interface. Otherwise, this command will have no effect.
host1(config-if)#ip igmp-proxy V1-router-present-time 600

Use the no version to set the time to the default value, 10 seconds.

Overview

shows a system in an IGMP proxy configuration. You enable IGMP proxy on one interface, which connects to a router closer to the root of the tree. This interface is the upstream interface. The router on the upstream interface should be running IGMP.

You enable IGMP on the interfaces that connect the system to its hosts that are farther away from the root of the tree. These interfaces are known as downstream interfaces.

Figure 4-3 Upstream and downstream interfaces

As described in , earlier in this chapter, hosts interact with the system through the exchange of IGMP messages. Similarly, when you configure IGMP proxy, the system interacts with the router on its upstream interface through the exchange of IGMP messages. However, when acting as the proxy, the system performs the host portion of the IGMP task on the upstream interface as follows:

  • When queried, sends group membership reports to the group.
  • When one of its hosts joins a multicast address group to which none of its other hosts belong, sends unsolicited group membership reports to that group.
  • When the last of its hosts in a particular multicast group leaves the group, sends an unsolicited leave group membership report to the all-routers group (244.0.0.2).

Что такое и зачем нужна функция IGMP snooping

Для начала дадим определение IGMP, чтобы понять принцип работы технологии. Internet Group Management Protocol – протокол управления сетью мультивещания, который организует несколько устройств в группы. Он основан на протоколе IP и применяется в интернете повсеместно, эффективно используя ресурсы сети.

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

Таким образом snooping исключает передачу пользователю ненужных данных через multicast каналы

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

Без отслеживания и анализа данных, конечные потребители в виде конкретных IP-адресов, будут вынуждены «переваривать» дополнительную бесполезную для них информацию. IGMP snooping не только избавит пользователей от лишнего трафика, но и сделает обмен информацией более безопасным. Включенный режим отслеживания вовремя пресечёт попытки DDoS-атаки на сеть или конкретные адреса, к которым уязвим протокол Internet Group Management.

Proxy checker online: способы проверки

Выполнить проверку прокси сервера можно одним способам:

  1. Воспользоваться бесплатными универсальным онлайн чекером на нашем сайте

Этот метод показывает точные результаты и позволяют определить проблемы, возникающие при работе с прокси – говорить о том, что какой-то вариант лучше или хуже, бессмысленно. Однако продвинутые пользователи чаще выбирают онлайн чекеры – это быстрее и проще, особенно, если необходимо оперативно проверить большое количество серверов.

Благодаря разнообразию бесплатных софтов вы легко найдете удобное решение с учетом личных требований к интерфейсу и функционалу сервиса. Достаточно вбить в строку поисковика «proxy checker online».

Бесплатные онлайн чекеры прокси подходят и для проверки скорости айпи адресов. Это важный фактор безопасной и комфортной работы в сети. Показатели зависят от способа получения proxy – так, платные сервера загружают веб-сайты намного оперативнее, особенно при условии выдачи клиенту в одни руки. Перед онлайн проверкой прокси на валидность и скорость потребуется ввести адрес и номер порта в соответствующие поля. Как быстро вы получите результат – зависит от количества обрабатываемых IP.

Обновление RouterOS (добавление пакета для IPTV)

Обновление необходимо для того, чтобы установить дополнительный пакет для IPTV.

Заходим на сайт Mikrotik, ищем в списках линейку вашей модели и скачиваем последнюю версию прошивки для нее

Обратите внимание, выбираем не прошивку с основными пакетами (main), а с дополнительными (extra):

Открываем WinBox

, заходим на роутер (советуем заходить изначально по мак-адресу, это облегчит дальнейший процесс настройки). Чтобы обновить ПО роутера, идем в менюFiles .

Открываем его и перетаскиваем в окно Files

наш скачанный файл из распакованного архива под названиемmulticast-x.xx-mipsbe.npk .

Пакет добавлен и после этого мы перезагружаем оборудование в меню SystemReboot. Роутер перезагрузится и обновит прошивку. Процесс может занять до 5-ти минут. Питание в это время отключать не следует!

После перезагрузки открываем System — Packages

и смотрим, появился ли модульmulticast .

Если таковой имеется, значит, вы все сделали правильно.

IGMP — Internet Group Management Protocol

Как и ICMP, IGMP представляет расширение протокола IP и должен быть реализован модулем IP. IGMP используется приложениями групповой рассылки. При отправке широковещательного сообщения в локальной сети каждый узел этой сети анализирует сообщение вплоть до транспортного уровня, чтобы проверить, хочет ли какое-либо приложение получать сообщения от порта широковещательной передачи. Если ожидающие приложения отсутствуют, сообщение уничтожается и не передается выше транспортного уровня. Это означает, что каждому хосту нужно затратить несколько циклов центрального процессора (ЦП) независимо от того, интересует его широковещательное сообщение или нет.

При групповой рассылке этот момент учитывается, и сообщения отправляются не всем узлам локальной сети, а только группе узлов. Сетевая интерфейсная плата может определить, интересуется ли система данным сообщением, анализируя широковещательный МАС-адрес и не прибегая к помощи ЦП.

Заинтересованность в сообщениях групповой рассылки регистрируется отправкой запроса на членство в группе через IGMP-сообщение. Аналогично можно использовать IGMP, чтобы отказаться от членства.

Общее понимание Multicast

4 примере три хоста, расположенные в разных подсетях, принадлежат к одной группе вещания

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

на самом деле, задача распространения трафика группового вещания (так же как и в случае одноадресной маршрутизации) в условиях межсетевого взаимодействия решается на уровне маршрутизаторов.

рис. 4. групповое вещание

рассматривая процесс распространения группового трафика в корпоративной сети, следует различать пересылку группового трафика (multicast forwarding) и групповую маршрутизацию (multicast routing). под групповой пересылкой понимается процесс перенаправления маршрутизатором трафика группового вещания в подсети, в которых присутствуют хосты, принадлежащие к требуемой группе вещания. при этом групповой трафик не передается маршрутизатором в те подсети, в которых подобные хосты отсутствуют. под групповой маршрутизацией понимается процесс распространения информации о составе групп вещания между маршрутизаторами. фактически, в данном случае, речь идет о работе протоколов маршрутизации применительно к групповому вещанию.

Предыдущая45678910111213141516171819Следующая

Date: 2016-05-15; view: 111; Нарушение авторских прав

Понравилась страница? Лайкни для друзей:

IGMPv1 vs IGMPv2 vs IGMPv3

FEATURE IGMPv1 IGMPv2 IGMPv3
1st Octet value for Query message 0x11 0x11 0x11
Group address for General query 0.0.0.0 0.0.0.0 0.0.0.0
Destination address for General query 224.0.0.1 224.0.0.1 224.0.0.1
Default Query Interval 60 sec 125 sec 125 sec
1st octet value for Report 0x12 0x16 0x22
Group address for the report Joining multicast group address Joining multicast group address Joining multicast group address and source address
Is report suppression mechanism available Yes Yes No
Can max response time be configured No , fixed at 10 sec Yes,0 to 25.5 sec Yes,0 to 53 min
Can a host send a leave group message No Yes Yes
Destination address for leave group message 224.0.0.2 224.0.0.22
Can a Router send Group-specific query? No Yes Yes
Can a Host send Source and group specific reports? No No Yes
Can router end Source and Group specific Queries? No No Yes
Rule for Electing a Querier? None (depends on multicast routing protocol) Router with the lowest IP address on the subnet Router with the lowest IP address on the subnet
Compatible with other Versions of IGMP? No Yes, only with IGMP v1 Yes, with both IGMP v1 and v2

Unicast

Тип передачи данных Unicast (индивидуальный) используется для обычной передачи данных от хоста к хосту. Способ Unicast работает в клиент-серверных и пиринговых (peer-to-peer, от равного к равному) сетях.

В unicast пакетах в качестве IP адреса назначения используется конкретный IP адрес устройства, для которого этот пакет предназначен. IP адрес конкретного устройства состоит из порции адреса сети (в которой находится это устройство) и порции адреса хоста (порции, определяющей это конкретное устойчиво в его сети). Это все приводит к возможности маршрутизации unicast пакетов по всей сети.

Multicast и broadcast пакеты, в отличие от unicast пакетов, имеют свои собственные специальные (зарезервированные) IP адреса для использования их в заголовке пакетов в качестве пункта назначения. Из-за этого, broadcast пакеты в основном ограничены пределами локальной сети. Multicast трафик также может быть ограничен границами локальной сети, но с другой стороны также может и маршрутизироваться между сетями.

В IP сетях unicast адрес является адресом, то есть адресом конечного устройства (например, компьютера). Для типа передачи данных unicast, адреса хостов назначаются двум конечным устройствам и используются (эти адреса) как IP адрес источника и IP адрес получателя.

В течение процесса инкапсуляции передающий хост размещает свой IP адрес в заголовок unicast пакета в виде адреса источника, а ИП адрес принимающего хоста размещается в заголовке в виде адреса получателя. Используя эти два IP адреса, пакеты unicast могут передаваться через всю сеть (т.е. через все подсети).

Запуска клиента и генератора multicast в Linux

Существует несколько нюансов, относительно запуска клиента и генератора. Например, генератор должен отправлять трафик в нужный интерфейс, клиент же должен отправлять IGMP-запросы в интерфейс в сторону генератора, требуется unicast маршрут для прохождения RPF-проверки или она должна быть отключена. Схема проверки выглядит следующим образом:

Чтобы это сконфигурировать нужно выполнить следующие команды:

// создание nets, интерфейсов и конфигурирование IP-адресов
# ip netns add G
# ip link add veth0 type veth peer name veth1
# ip link set dev veth1 netns G
# ip netns exec G ifconfig veth1 192.0.2.1/30 up
# ip netns exec G ifconfig veth1:1 192.0.2.2/30 up
# ifconfig veth0 198.51.100.1/30 up

//маршрут для прохождения RPF-проверки при получении data-трафика
# ip route add 192.0.2.0/30 dev veth0

//маршрут для отправки IGMP-запроса клиентом в нужный интерфейс
# ip route add 232.252.0.100/32 dev veth0

//маршрут для отправки data-трафика генератором мультикаста
# ip netns exec G ip route add 232.252.0.100/32 dev veth1

Теперь запускаем tcpdump на интерфейсе veth1 и клиентское приложение:

// терминал 1 (вывод появится после запуска приложения из терминала 2)
# ip netns exec G tcpdump -i veth1 -n -nn -v -vv -s 0
21:48:58.687747 IP (tos 0xc0, ttl 1, id 0, offset 0, flags , proto IGMP (2), length 56, options (RA))
    198.51.100.1 > 224.0.0.22: igmp v3 report, 2 group record(s)  

// терминал 2 (запуска приложения)
$ ./ssm-client.py

// терминал 3 (просмотр multicast фильтра, заданного include mode-ом)
# cat /proc/net/mcfilter
Idx Device        MCA        SRC    INC    EXC
  7  veth0 0xe8fc0064 0xc0000201      1      0
# echo 'e8 fc 00 64' | perl -ne 'printf "%d.%d.%d.%d\n", map { hex($_)} split unless /^\s$/'
232.252.0.100
# echo 'c0 00 02 01' | perl -ne 'printf "%d.%d.%d.%d\n", map { hex($_)} split unless /^\s$/'
192.0.2.1

И, наконец, запускам генератор и смотрим что выдаст клиент в терминал:

//терминал 3
# ip netns exec G iperf -c 232.252.0.100 -B 192.0.2.1 -u -p 12345 -t 0.2 -l 12
WARNING: option -l has implied compatibility mode
------------------------------------------------------------
Client connecting to 232.252.0.100, UDP port 12345
Binding to local address 192.0.2.1
Sending 12 byte datagrams
Setting multicast TTL to 1
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
 local 192.0.2.1 port 12345 connected with 232.252.0.100 port 12345
 Interval       Transfer     Bandwidth
  0.0- 0.2 sec  25.3 KBytes  1.04 Mbits/sec
 Sent 2158 datagrams

//терминал 2 (ssm-client.py был запущен ранее, см. выше)
$ ./ssm-client.py 
00:00:00:00:53:cc:07:9a:00:0d:fc:de
00:00:00:01:53:cc:07:9a:00:0e:02:01
00:00:00:02:53:cc:07:9a:00:0e:02:63

Всё ок. Теперь попробуем отправить мультикаст с другого ip.src(192.0.2.2), при этом запрашивать (192.0.2.1, 232.252.0.100), чтобы посмотреть как работает mcfilter:

//терминал 2
$ ./ssm-client.py 

//терминал 3
# ip netns exec G iperf -c 232.252.0.100 -B 192.0.2.2 -u -p 12345 -t 0.2 -l 12
WARNING: option -l has implied compatibility mode
------------------------------------------------------------
Client connecting to 232.252.0.100, UDP port 12345
Binding to local address 192.0.2.2
Sending 12 byte datagrams
Setting multicast TTL to 1
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
 local 192.0.2.2 port 12345 connected with 232.252.0.100 port 12345
 Interval       Transfer     Bandwidth
  0.0- 0.2 sec  25.7 KBytes  1.05 Mbits/sec
 Sent 2193 datagrams

Трафик отправлен, но не прошёл через mcfiler, приложение его не видит, как и ожидалось.

В идеальном случае, клиент не должен получать незапрашиваемого трафика, однако в случае наличия в сети 2ух каналов вида (S1, G1) и (S2, G1) и подключения двух клиентов(которые запрашивают эти группы) к свитчу, умеющему только L2-мультикаст(на уровне dataplane), такая ситуация будет иметь место, поэтому фильтр трафика на стороне клиента, в общем случае, нужен.

В одной из следующих статей будет рассмотрена маршрутизации мультикаст с помощью IGMPv3-сигнализации, в продолжение предыдущей статьи о статической мультикаст маршрутизации в Linux.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий