Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Nov 2019 19:46:50 +0100
From:      Guido van Rooij <guido@gvr.org>
To:        freebsd-net@freebsd.org
Subject:   Problems with Multicast (IGMP) since upgrade from 11.3 to 12.1
Message-ID:  <20191125184650.GA79855@gvr.gvr.org>

next in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20191125184650.GA79855>