Problems with Multicast (IGMP) since upgrade from 11.3 to 12.1
Guido van Rooij
guido at gvr.org
Mon Nov 25 18:46:59 UTC 2019
I am using a STB with muticast based TV.
When I use my firewall with igmpproxy in 11.3, I see the following when I am not
watching TV:
# netstat -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 10.59.161.237 2251 0
1 1 192.168.100.1 0 2251
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
213.75.167.58 224.3.2.6 1435 0 1:1
When I switch on the STB, I see:
# netstat -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 10.59.161.237 22450 0
1 1 192.168.100.1 0 22450
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
217.166.226.126 224.0.252.126 18986 0 1:1
213.75.167.58 224.3.2.6 1918 0 1:1
When I swicth it off, we see, again:
# netstat -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 10.59.161.237 50108 0
1 1 192.168.100.1 0 50108
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
213.75.167.58 224.3.2.6 2215 0 1:1
Here is the IGMP trace:
# No TV
18:55:47.172531 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.252.126 to_ex { }]
# Switch on STB
18:55:49.773534 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.252.126 to_ex { }]
18:56:47.094853 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [none], proto IGMP (2), length 36, options (RA))
10.60.140.9 > 224.0.0.1: igmp query v3
18:56:53.287526 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 48, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 2 group record(s) [gaddr 224.0.252.126 is_ex { }] [gaddr 224.3.2.6 is_ex { }]
# Switch off STB
18:56:57.887515 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.252.126 to_in { }]
18:56:58.717053 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.252.126 to_in { }]
Now in 12.1 we see:
STB off:
# netstat -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 10.59.161.237 158 0
1 1 192.168.100.1 0 158
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
213.75.167.58 224.3.2.6 158 0 1:1
STB on:
# netstat -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 10.59.161.237 10674 0
1 1 192.168.100.1 0 10674
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
217.166.226.126 224.0.252.126 9584 0 1:1
213.75.167.58 224.3.2.6 1091 0 1:1
STB back off again:
# netstat -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 10.59.161.237 41404 0
1 1 192.168.100.1 0 41404
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
217.166.226.126 224.0.252.126 0 65535
213.75.167.58 224.3.2.6 1342 0 1:1
IGMP trace:
# No TV
19:05:07.103731 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [none], proto IGMP (2), length 36, options (RA))
10.60.140.9 > 224.0.0.1: igmp query v3
19:05:12.203438 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.3.2.6 is_ex { }]
# Switch on STB
19:06:30.522147 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.252.126 to_ex { }]
19:06:31.740782 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.252.126 to_ex { }]
# Switch off STB
19:07:12.107851 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [none], proto IGMP (2), length 36, options (RA))
10.60.140.9 > 224.0.0.1: igmp query v3
19:07:21.605196 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 48, options (RA))
10.59.161.237 > 224.0.0.22: igmp v3 report, 2 group record(s) [gaddr 224.0.252.126 is_ex { }] [gaddr 224.3.2.6 is_ex { }]
So we never see the IGMP_CHANGE_TO_INCLUDE_MODE packet.
I did a ktr trace and in it I only saw the following entries that I think are interesting (first number is a timestamp)
Nov 20 19:14:25 in_joingroup_locked: join 0xe000fc7e on 0xfffff8000f4d6000(vlan4))
Nov 20 19:14:25 igmp_initial_join: initial join 0xe000fc7e on ifp 0xfffff8000f4d6000(vlan4)
Nov 20 19:14:25 igmp_v3_enqueue_group_record: queueing TO_EX for 0xe000fc7e/vlan4
Nov 20 19:15:30 in_leavegroup_locked: leave inm 0xfffff8003a448c00, 0xe000fc7e/vlan4, imf 0xfffff8003a609d40
Nov 20 19:15:30 igmp_handle_state_change: state change for 0xe000fc7e on ifp 0xfffff8000f4d6000(vlan4)
Nov 20 19:15:30 igmp_v3_enqueue_group_record: nothing to do for 0xe000fc7e/vlan4
Nov 20 19:15:30 igmp_v3_enqueue_group_record: queueing MODE_EX for 0xe000fc7e/vlan4
I am somewhat lost on how to further debug this. Any hint would be appreciated.
Thanks,
Guido van Rooij
More information about the freebsd-net
mailing list