Subject: RFC4291 - ff01::/16

From: Erik Hugne <[email-masked]>
Date: Wed, 6 Feb 2013 17:20:07 +0100

RFC4291 is clear that packets destined to ff01::/16 must never leave 
the local node, but what should be done if such packets are received 
as a result from a broken implementation on the other side?

//E

---

From: "Bless, Roland (TM)" <[email-masked]>
Date: Wed, 06 Feb 2013 17:59:46 +0100

Hi,

> as a result from a broken implementation on the other side?

"Be liberal in what you accept, and conservative in what you send",
Since the sending node obviously violated the 2nd part of Jon Postel's
robustness principle, it should be ignored and dropped by the receiving
system.
Moreover, report the failure to the vendor of the broken implementation
or fix it by yourself if possible ;-)

Regards,
 Roland

---

From: Michael Richardson <[email-masked]>
Date: Wed, 06 Feb 2013 13:23:57 -0500

>>>>> "TM" == TM  <Bless> writes:
    >> RFC4291 is clear that packets destined to ff01::/16 must never
    >> leave the local node, but what should be done if such packets are
    >> received as a result from a broken implementation on the other
    >> side?

    TM> "Be liberal in what you accept, and conservative in what you
    TM> send", Since the sending node obviously violated the 2nd part of
    TM> Jon Postel's robustness principle, it should be ignored and
    TM> dropped by the receiving system.  Moreover, report the failure

The key is that the packets should be dropped without generating any
errors or traffic.

-- 
Michael Richardson <[email-masked]>, Sandelman Software Works

---

From: Roland Bless <[email-masked]>
Date: Wed, 06 Feb 2013 21:54:31 +0100

Hi Michael,

On 06.02.2013 19:23, Michael Richardson wrote:
>>> leave the local node, but what should be done if such packets
>>> are received as a result from a broken implementation on the
>>> other side?
> 
> TM> send", Since the sending node obviously violated the 2nd part
> of TM> Jon Postel's robustness principle, it should be ignored and 
> The key is that the packets should be dropped without generating
> any errors or traffic.

Yep, you are right - I assumed that implicitly, but
I should have mentioned that explicitly :-)

Regards,
 Roland

---

From: Alexandru Petrescu <[email-masked]>
Date: Thu, 07 Feb 2013 11:44:22 +0100

Le 06/02/2013 21:54, Roland Bless a écrit :
> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>
> Hi Michael,
>
> Yep, you are right - I assumed that implicitly, but I should have
> mentioned that explicitly :-)

Also, the implementation of that dropping may not be that
straightforward as at a quick first sight.

A stack presented with a packet whose dst's leftmost 16bits precisely
match ff01::/16 should be dropped _only_ if the src of that packet is an
address which does not belong to that stack (in other words don't
discard packets originated by stack and addressed to self). ('be liberal
in what you accept').

A question could be raised about what should do a stack when presented
with a packet whose src==:: (unspecified address) and dst==ff01::/16

Should it drop it?  Log an error?  Accept it?

Alex

>
> Regards, Roland
>
> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iEYEARECAAYFAlESwwEACgkQ1YyfLd659kdpaACfai8zkguwd5YYIlD47K5j7CqJ
> Hl8An14AMH5Z4sWfjRNimZeEMYOaZXnn =fCgK -----END PGP SIGNATURE-----
> --------------------------------------------------------------------
> IETF IPv6 working group mailing list [email-masked] Administrative
> Requests: https://www.ietf.org/mailman/listinfo/ipv6
> --------------------------------------------------------------------
>
>

---

From: Erik Hugne <[email-masked]>
Date: Thu, 7 Feb 2013 13:49:27 +0100

> discard packets originated by stack and addressed to self). ('be liberal

FreeBSD drops any packets sent to ff01::/16 if they did not originate from the
local host.
http://fxr.watson.org/fxr/source/netinet6/ip6_input.c#L555

Linux currently accept these, regardless of who sent them.

//E

---

From: Alexandru Petrescu <[email-masked]>
Date: Thu, 07 Feb 2013 18:26:53 +0100

Le 07/02/2013 13:49, Erik Hugne a écrit :
>> A stack presented with a packet whose dst's leftmost 16bits
>> precisely match ff01::/16 should be dropped _only_ if the src of
>> that packet is an address which does not belong to that stack (in
>> other words don't discard packets originated by stack and addressed
>> to self). ('be liberal in what you accept').
>>
>
> FreeBSD drops any packets sent to ff01::/16 if they did not originate
> from the local host.

That says to me that could be clarified, so that implementers make
interoperable implementations.

In one sense, one wouldn't want a Linux to behave unexpectedly when a
FreeBSD sent it a packet whose IP dst is ff01::/64 with the right MAC
dst address.

In another sense, one wouldn't want a FreeBSD to drop packets sent by a
Linux which thinks everyone acts like him/her.

But this is speculative.  HAve you seen it in practice?  Which protocol
makes common use of ff01::/64?

Alex

---

From: Stig Venaas <[email-masked]>
Date: Thu, 07 Feb 2013 09:58:51 -0800

>> Linux currently accept these, regardless of who sent them.

To me the FreeBSD is the obviously correct behavior. They are supposed
to be interface-local, hence not arriving from somewhere else. There
could be security implications with applications using this to pass
packets between them and not expecting that a forged packet could be
arriving from the outside. Checking the source address is not sufficient
IMO.

Stig

> IETF IPv6 working group mailing list
> [email-masked]
> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6

---

From: Erik Hugne <[email-masked]>
Date: Fri, 8 Feb 2013 07:30:24 +0100

> arriving from the outside. Checking the source address is not sufficient

Submitted errata:
http://www.rfc-editor.org/errata_search.php?rfc=4291&eid=3480

> >makes common use of ff01::/64?

Yes, There's a long story originating from a Java/JDK bug, where it fails to 
bind sockets to a link-local multicast address. The desperate designer started
using ff01::/16 addresses instead, which worked on Linux.

//E

---

From: Ole Troan <[email-masked]>
Date: Fri, 8 Feb 2013 10:03:51 +0100

Erik,

> http://www.rfc-editor.org/errata_search.php?rfc=4291&eid=3480

you don't think the text in RFC4007 is clear enough?

cheers,
Ole

---

From: Erik Hugne <[email-masked]>
Date: Fri, 8 Feb 2013 10:26:21 +0100

> you don't think the text in RFC4007 is clear enough?
It doesn't explicitly say that packets sent to ff01::/16
must be dropped if originated from another host. Only that it
"is useful only for loopback delivery of multicasts within 
a single node".
'Useful' is a quite loose definition, and I was asked to file 
an errata on this.

http://marc.info/?l=linux-netdev&m=136025168507249&w=2

//E