LINUX.ORG.RU
ФорумAdmin

multicast для IPTV

 


0

1

Привет

Есть dir-615 с которым IPTV приставка дружит из коробки. Через OpenWrt 23.05.4 r24012-d8dd03c46f IPTV работать не хочет.

Есть мануал https://openwrt.org/docs/guide-user/network/wan/udp_multicast Что делал:

cat /etc/config/igmpproxy
config igmpproxy
        option quickleave 1
        option verbose 3

config phyint
        option network wan
        option zone wan
        option direction upstream
        list altnet 0.0.0.0/0

config phyint
        option network lan
        option zone lan
        option direction downstream

cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd17:ec76:f140::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        option igmp_snooping 1
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config device
        option name 'wan'
        option macaddr '4c:c6:4c:a2:40:77'

config interface 'wan'
        option device 'wan'
        option proto 'dhcp'

config interface 'wan6'
        option device 'wan'
        option proto 'dhcpv6'
cat /sys/devices/virtual/net/br-lan/bridge/multicast_snooping
1
ps | grep igmp
 4377 root       972 S    /usr/sbin/igmpproxy -n -v -v /var/etc/igmpproxy.conf
 4678 root      1316 S    grep igmp
nft list ruleset | grep 224
meta l4proto udp ip daddr 224.0.0.0/4 counter packets 0 bytes 0 jump accept_to_lan comment "!fw4: ubus:igmpproxy[instance1] rule 2"
nft list ruleset | grep 239
meta l4proto udp ip daddr 239.255.255.250 counter packets 0 bytes 0 jump drop_to_lan comment "!fw4: ubus:igmpproxy[instance1] rule 1"
logread | grep igmpproxy
Fri Jan  3 14:50:46 2025 user.debug igmpproxy[4377]: No routes in table...
Fri Jan  3 14:50:46 2025 user.debug igmpproxy[4377]: -----------------------------------------------------
Fri Jan  3 14:50:47 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.22
Fri Jan  3 14:50:47 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
Fri Jan  3 14:50:50 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.2
Fri Jan  3 14:50:50 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
Fri Jan  3 14:50:51 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.106
Fri Jan  3 14:50:51 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: About to call timeout 42 (#0)
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: SENT Membership query   from 192.168.1.1     to 224.0.0.1
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: Sent membership query from 192.168.1.1 to 224.0.0.1. Delay: 10
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: Created timeout 43 (#0) - delay 10 secs
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: (Id:43, Time:10)
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: Created timeout 44 (#1) - delay 115 secs
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: (Id:43, Time:10)
Fri Jan  3 14:50:54 2025 user.debug igmpproxy[4377]: (Id:44, Time:115)
Fri Jan  3 14:50:54 2025 user.notice igmpproxy[4377]: RECV Membership query   from 192.168.1.1     to 224.0.0.1
Fri Jan  3 14:50:56 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.106
Fri Jan  3 14:50:56 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]: About to call timeout 43 (#0)
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]: Aging routes in table.
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]:
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]: Current routing table (Age active routes):
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]: -----------------------------------------------------
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]: No routes in table...
Fri Jan  3 14:50:59 2025 user.debug igmpproxy[4377]: -----------------------------------------------------
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: About to call timeout 44 (#0)
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: SENT Membership query   from 192.168.1.1     to 224.0.0.1
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: Sent membership query from 192.168.1.1 to 224.0.0.1. Delay: 10
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: Created timeout 45 (#0) - delay 10 secs
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: (Id:45, Time:10)
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: Created timeout 46 (#1) - delay 115 secs
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: (Id:45, Time:10)
Fri Jan  3 14:51:02 2025 user.debug igmpproxy[4377]: (Id:46, Time:115)
Fri Jan  3 14:51:02 2025 user.notice igmpproxy[4377]: RECV Membership query   from 192.168.1.1     to 224.0.0.1
Fri Jan  3 14:51:03 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.22
Fri Jan  3 14:51:03 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
Fri Jan  3 14:51:03 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.106
Fri Jan  3 14:51:03 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
Fri Jan  3 14:51:03 2025 user.notice igmpproxy[4377]: RECV V2 member report   from 192.168.1.1     to 224.0.0.2
Fri Jan  3 14:51:03 2025 user.notice igmpproxy[4377]: The IGMP message was from myself. Ignoring.
cat /proc/net/ip_mr_cache
Group    Origin   Iif     Pkts    Bytes    Wrong Oifs

tcp дапм (192.168.1.57 - ip приставки)

tcpdump -i br-lan igmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), snapshot length 262144 bytes
14:51:57.403111 IP 192.168.1.1 > igmp.mcast.net: igmp v2 report igmp.mcast.net
14:51:59.323140 IP 192.168.1.1 > all-routers.mcast.net: igmp v2 report all-routers.mcast.net
14:52:02.326495 IP 192.168.1.1 > all-systems.mcast.net: igmp query v2
14:52:05.346346 IP 192.168.1.57 > mdns.mcast.net: igmp v2 report mdns.mcast.net
14:52:05.643106 IP 192.168.1.1 > all-routers.mcast.net: igmp v2 report all-routers.mcast.net
14:52:06.203129 IP 192.168.1.1 > igmp.mcast.net: igmp v2 report igmp.mcast.net
14:52:07.243121 IP 192.168.1.1 > 224.0.0.106: igmp v2 report 224.0.0.106
14:52:12.232443 IP 192.168.1.1 > all-systems.mcast.net: igmp query v2
14:52:12.246675 IP 192.168.1.57 > mdns.mcast.net: igmp v2 report mdns.mcast.net
14:52:13.403079 IP 192.168.1.1 > 224.0.0.106: igmp v2 report 224.0.0.106
14:52:19.409756 IP 192.168.1.1 > all-systems.mcast.net: igmp query v2
14:52:19.603094 IP 192.168.1.1 > igmp.mcast.net: igmp v2 report igmp.mcast.net
14:52:22.123117 IP 192.168.1.1 > all-routers.mcast.net: igmp v2 report all-routers.mcast.net
14:52:23.483278 IP 192.168.1.1 > 224.0.0.106: igmp v2 report 224.0.0.106
14:52:26.356390 IP 192.168.1.57 > mdns.mcast.net: igmp v2 report mdns.mcast.net
14:52:29.489725 IP 192.168.1.1 > all-systems.mcast.net: igmp query v2
tcpdump -i wan net 224.0.0.0/4
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on wan, link-type EN10MB (Ethernet), snapshot length 262144 bytes
15:14:09.797449 IP 172.16.33.1 > all-systems.mcast.net: igmp query v2
15:15:09.802222 IP 172.16.33.1 > all-systems.mcast.net: igmp query v2

Так же это

sysctl net.ipv4.conf.all.force_igmp_version
net.ipv4.conf.all.force_igmp_version = 2

Телодвижения результата не дали, есть идеи куда копать? IPTV нужно только по проводу, для wi-fi не нужен.


Надо посмотреть, как от провайдера мультикаст идет - в отдельном VLAN или нет. Если в отдельном, то нужно еще тегированный VLAN добавлять на WAN порт. Ну и сама приставка может быть воткнута в LAN порт, который либо входит в VLAN с остальными LAN портами, либо входит в отдельный VLAN, куда входит также WAN порт (с тегом или без). Если порт приставки в отдельном VLAN, то igmpproxy не нужен, даже igmpsnooping, наверное, не нужен, т.к. только 1 клиент предполагается. Если порт приставки - обычный LAN порт, то тогда действительно нужен igmpproxy.

Ну и в любом случае все это будет тормозить и разваливаться при небольшой нагрузке посторонним трафиком, если мультикаст через полудохлый CPU пойдет. В дефолтных прошивках его по этой причине часто на слабых домашних роутерах пускают аппаратно через свич/asic (если они это поддерживают).

zent
()