Использование iperf для тестирования мультикаста

Для того, чтобы проверить, приходит ли на наш сервер/рабочую машину/ПК мультикаст, можно использовать и tcpdump:

tcpdump -i bond0.666 udp -nn port 4444

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

Лучше использовать утилиту iperf. Она служит для анализа быстродействия сети, и для наших целей отлично подходит.

 
Итак, на Debian устанавливаем просто: 
 
aptitude install iperf
 
А для RHEL дистрибутивов (RedHat, Oracle Linux, CentOS etc.) нужно или добавить репозиторий RepoForge или посмотреть пакет для своей версии ОС тут http://pkgs.repoforge.org/iperf/ и установить, например:
 

yum install http://pkgs.repoforge.org/iperf/iperf-2.0.4-1.el6.rf.x86_64.rpm

или

rpm -Uhv http://pkgs.repoforge.org/iperf/iperf-2.0.4-1.el6.rf.x86_64.rpm

Далее, если адрес мультикаст группы 239.200.1.1, а порт 4444, то делаем команду и смотрим результат:

iperf -s -u -B 239.200.1.1 -i 1 -p 4444

здесь

  • -s -режим сервера, 
  • -u – использовать UDP, 
  • -i 1 – выводить информацию каждую секунду, 
  • -B и -p – адрес нашего мультикаста.
 

Полезные команды для мультикаста:

Посмотреть подписку по группам:

netstat -gn

или

ip maddr show

Дамп по интерфейсу и группе мультикаста:

tcpdump -n -nn -i eth0 host 239.31.82.10
tcpdump -i p1p1.1302 -s0 -vv net 224.0.0.0/4

Иногда необходимо поменять системные перменные:

sysctl -ar '.rp_filter'
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.em1.rp_filter = 0
net.ipv4.conf.em2.rp_filter = 0
net.ipv4.conf.em3.rp_filter = 0
>net.ipv4.conf.em4.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.p1p1.rp_filter = 0
net.ipv4.conf.p1p1/1302.rp_filter = 0
net.ipv4.conf.p1p1/2202.rp_filter = 0
net.ipv4.conf.p1p2.rp_filter = 0
net.ipv4.conf.p1p2/1402.rp_filter = 0
net.ipv4.conf.p1p2/2202.rp_filter = 0

Изменить значение переменной sysctl:

sysctl -w net.ipv4.conf.em3.rp_filter=0

Включить маршрутизацию пакетов:

sysctl -w net.ipv4.ip_forward=1

Кофиги sysctl могут быть в:

  1. /run/sysctl.d/*.conf
  2. /etc/sysctl.d/*.conf
  3. /usr/local/lib/sysctl.d/*.conf
  4. /usr/lib/sysctl.d/*.conf
  5. /lib/sysctl.d/*.conf
  6. /etc/sysctl.conf

RHEL выключить мультикаст на интерфейсе:

ip link set multicast off dev br0

RHEL включить мультикаст на интерфейсе:

ip link set multicast oт dev br0

Проверить включен ли мультикаст:

ip link show br0
8: br0: mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000

Включить мультикаст на фаерволле (по-умолчанию выключен):

firewall-cmd --zone=zone-name --add-protocol=igmp

Выключить SELinux:

nano /etc/selinux/config

Источники:

  1. https://www.cyberciti.biz/faq/reload-sysctl-conf-on-linux-using-sysctl/
  2. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-enabling_ip_multicast_with_igmp
  3. https://unix.stackexchange.com/questions/299163/app-cannot-receive-multicast-packets-on-centos-7
  4. https://superuser.com/questions/324824/linux-built-in-or-open-source-program-to-join-multicast-group
  5. https://serverfault.com/questions/163244/linux-kernel-not-passing-through-multicast-udp-packets/216568
  6. https://support.citrix.com/article/CTX116493

Leave a Reply

Your email address will not be published. Required fields are marked *