FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.27k stars 1.24k forks source link

PIM6d:- MLD join not process when join packet has global IPv6 source address #12152

Closed vijaykug closed 1 year ago

vijaykug commented 1 year ago

Issue:- Anvl test sending MLD join with source address of packet is global address ( below is the packet details) , this MLD packet is discarded , because of that ( *,G) join not created and ANVL tests are failing

ETHER: ---- Ethernet Header ----
ETHER:
ETHER: Destination = 33:33:00:00:00:01
ETHER: Source      = 00:50:56:B7:EF:80
ETHER: Type        = 0x86DD (IPV6)
ETHER:
IPv6: ---- IPv6 Packet ----
IPv6: 
IPv6: Version              = 6
IPv6: Traffic Class        = 0
IPv6:  |01234567
IPv6:  |000000..           = 0 DSCP (Differentiated Services Codepoint)
IPv6:  |......00           = 0 ECN (Explicit Congestion Notification)
IPv6: Flow Label           = 0
IPv6: Payload Length       = 32 (bytes)
IPv6: Next Header          = Hop-by-Hop Header (0)
IPv6: Hop Limit            = 1
IPv6: Source Address       = 2001::10       <<<<<<<<<<<<<<<<<<. Global IPv6 source  address 
IPv6: Destination Address  = ffaa::1
IPv6: 
IPv6: ---- Hop-by-Hop Extention Header ----
IPv6: 
IPv6: Next Header          = ICMPV6 (58)
IPv6: Hdr Ext Len          = 0 (in unit of 8 octets)
IPv6: 
IPv6: ---- Option ---- 
IPv6: 
IPv6: Type         = 5(Router Alert)
IPv6: Data Len     = 2
IPv6: Option Value = 0
IPv6:
IPv6: ---- PadN Option ----
IPv6: 
IPv6: Type                 = 1
IPv6: Data Len             = 0
IPv6: --- PadN Data [0 bytes] ---
IPv6: --- PadN Data End ---
IPv6: 
ICMPv6: ---- ICMPv6 Packet ----
ICMPv6: 
ICMPv6: Type               = 131 (MLD Report)
ICMPv6: Code               = 0 (0)
ICMPv6: Checksum           = 0x5D44 (Correct)
ICMPv6: 
ICMPv6: ---- MLD Report Packet ----
ICMPv6: 
ICMPv6: Max Response Delay = 0
ICMPv6: Reserved           = 0
ICMPv6: Multicast Address  = ffaa::1
ICMPV6: ---- End of MLD Report Packet ----
ICMPV6: 
ICMPv6: ---- End of ICMPv6 Packet ----

33 33 00 00 00 01 00 50 56 B7 EF 80 86 DD 60 00   33.....PV.....`.
00 00 00 20 00 01 20 01 00 00 00 00 00 00 00 00   ... .. .........
00 00 00 00 00 10 FF AA 00 00 00 00 00 00 00 00   ................
00 00 00 00 00 01 3A 00 05 02 00 00 01 00 83 00   ......:.........
5D 44 00 00 00 00 FF AA 00 00 00 00 00 00 00 00   ]D..............
00 00 00 00 00 01                                  ......

DUT should create (*,G) entry for <mcast-router-a>
with oif-list containing DIface-1 and ifaceIn set to DIface-0
P> 4.15000;0;1;ICMPv6 Router Advertisement;ff02::1;1001::10;0 161 644;0

Build - Master Ubuntu - 18.04 Kernel -4.20

patrasar commented 1 year ago

Fixing as part of https://github.com/FRRouting/frr/pull/12008

vijaykug commented 1 year ago

pacp.zip

mobash-rasool commented 1 year ago

As per RFC https://datatracker.ietf.org/doc/html/rfc3810, Secion 5

MLDv2 is a sub-protocol of ICMPv6, that is, MLDv2 message types are a
subset of ICMPv6 messages, and MLDv2 messages are identified in IPv6
packets by a preceding Next Header value of 58. All MLDv2 messages
described in this document MUST be sent with a link-local IPv6 Source address

RFC mandates it as a must for the source address to be link-local.

Also MLDv1 RFC mandates the same https://datatracker.ietf.org/doc/html/rfc2710, section 5

"report received" occurs when the node receives a valid MLD Report
      message.  To be valid, the Report message MUST come from a link-
      local IPv6 Source Address, be at least 24 octets long, and have a
      correct MLD checksum.  
mobash-rasool commented 1 year ago

This is not an issue. Hence closing the issue.