Project

General

Profile

Actions

Bug #13929

closed

IGMP Proxy multicast group membership query packets have an invalid checksum

Added by R. Picobello about 1 year ago. Updated 9 months ago.

Status:
Resolved
Priority:
High
Category:
IGMP Proxy
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Plus Target Version:
23.05
Release Notes:
Default
Affected Version:
2.7.0
Affected Architecture:
All

Description

Having a TV provider with multicast streams, working flawless in 22.50 when upgraded to 23.01 it starts stuttering and stopped playing. After a research with packets captures it seems that the membership query from pfSense to the LAN devices is corrupted. Therefore the STB does not report back its currently joined groups, and the proxy sends out a leave on the WAN -> TV stops.

Screenshots with debugging showed here https://forum.netgate.com/topic/177181/23-01-b-20230106-0600-igmp-proxy-stops-tv-stream/31?_=1675500284303

I don't know if this is caused due to the IGMP-Proxy or the Intel 226v NIC driver running on an intel N5105 CPU.


Files

lan_direct_22.05.pcap (4.26 KB) lan_direct_22.05.pcap working version R. Picobello, 02/04/2023 02:46 AM
lan_direct_23.01-RC.pcap (1.58 KB) lan_direct_23.01-RC.pcap buggy version R. Picobello, 02/04/2023 02:46 AM
main.c (1.18 KB) main.c Nizam Moidu, 02/17/2023 12:15 PM
patch-src_igmp.c (418 Bytes) patch-src_igmp.c Nizam Moidu, 02/17/2023 02:39 PM
igmpproxy.tar.gz (24.1 KB) igmpproxy.tar.gz Nizam Moidu, 02/17/2023 02:39 PM
igmpproxy-0.3_1.pkg (46.6 KB) igmpproxy-0.3_1.pkg Christian McDonald, 02/17/2023 03:41 PM
igmpproxy-aarch64-0.3,1.pkg (23.8 KB) igmpproxy-aarch64-0.3,1.pkg Nizam Moidu, 02/21/2023 11:06 AM
Actions #1

Updated by Jim Pingle about 1 year ago

  • Subject changed from IGMP proxy/IGMP packet bug in 23.01 RC to IGMP Proxy multicast group membership query packets have an invalid checksum
  • Target version set to 23.05

Marking as 23.05 for now so it doesn't get missed. If we find a viable solution in the meantime we can try to squeeze it in.

Actions #2

Updated by Remie van de Zande about 1 year ago

I can't upgrade to 23.01 if this issue is still active in 23.01.

Hopefully this will be fixed in 23.01 instead of 23.05

Actions #3

Updated by R. Picobello about 1 year ago

I’m also hoping this could be fixed in 23.01.

It’s going to destroy a lot of IPTV setups when people upgrade.

Actions #4

Updated by Johannes Wanink about 1 year ago

Hopefully it will be fixed in the upcoming version 23.01. Otherwise I have to skip this version. :(

Is this bug also in the version CE 2.7.0?

Actions #5

Updated by Arturo de Vries about 1 year ago

I was going to upgrade from 2.6.0 CE to plus 23.01, but this bug is a stopper for me. I've got a working IPTV setup atm so this bug prevents me from upgrading. I was so excited to be able to try out the new version, but it'll have to wait. Hopefully it can be fixed soon.

Actions #6

Updated by Nizam Moidu about 1 year ago

issue seems to be from freeBSD-14 upstream, freeBSD-13 seems to generate valid igmp query packets,
any idea pfsense plus went with unreleased/unstable freeBSD-14 rather than stable 13?

Actions #7

Updated by Christian McDonald about 1 year ago

Has a bug report been filed upstream at https://bugs.freebsd.org/ ?

If so, can you please link it here

Actions #8

Updated by Nizam Moidu about 1 year ago

Actions #9

Updated by Christian McDonald about 1 year ago

@Nizam Moidu

Thanks for the example program. This is immensely helpful. I'm looking at it now.

Actions #10

Updated by Christian McDonald about 1 year ago

Unfortunately I get the same output with the example program on 22.05 (FreeBSD 12.3) and 23.01 (FreeBSD14)

Actions #11

Updated by Christian McDonald about 1 year ago

I've tried different versions of llvm across different versions of FreeBSD... I get the same result:

check sum is 0x9bee
Actions #12

Updated by Christian McDonald about 1 year ago

  • Assignee set to Christian McDonald
Actions #13

Updated by Nizam Moidu about 1 year ago

@Christian McDonald
sorry about the different output on freebsd 14, I figured out the issue, the bug is indeed in the igmpproxy, where it calculated checksum. [[https://github.com/pali/igmpproxy/blob/master/src/igmp.c#L290]], i am little confused about the current code it passes data length out of payload length, this should work as long as the overflow bytes are all zeros, i am not sure what made this change in freebsd 14, i do have patch which is working for me now, i am attaching binary as well if someone needs

Actions #14

Updated by Christian McDonald about 1 year ago

Attached is a bundled up pkg that can be installed on amd64

pkg add -f igmpproxy-0.3_1.pkg
Actions #15

Updated by Nizam Moidu about 1 year ago

experimental arm pkg

Actions #16

Updated by Christian McDonald about 1 year ago

  • Status changed from New to Feedback

The fix has been pushed to the 23.01 ports tree. In a few hours you should be able to run: pkg upgrade igmpproxy on all architectures to obtain the updated binary.

Actions #17

Updated by Christian McDonald 12 months ago

  • Status changed from Feedback to Resolved
Actions #18

Updated by Jim Pingle 10 months ago

  • Project changed from pfSense Plus to pfSense
  • Category changed from IGMP Proxy to IGMP Proxy
  • Target version changed from 23.05 to 2.7.0
  • Affected Plus Version deleted (23.01)
  • Plus Target Version set to 23.05
Actions #19

Updated by Jim Pingle 9 months ago

  • Affected Version set to 2.7.0
Actions

Also available in: Atom PDF