netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Subnet router anycast for FE80/10 ?
@ 2011-10-31 20:22 Andreas Hofmeister
  2011-11-02 15:38 ` David Lamparter
  2011-11-02 17:33 ` David Stevens
  0 siblings, 2 replies; 6+ messages in thread
From: Andreas Hofmeister @ 2011-10-31 20:22 UTC (permalink / raw)
  To: netdev

Hi,

I noticed that once forwarding has been enabled on an interface, there 
is a "subnet router anycast address" for the link-local address prefix 
FE80/10.

This address seems not to be explicitly mentioned in any RFC, but RFC 
4291 says "All routers are required to support the Subnet-Router anycast 
addresses for the subnets to which they have interfaces."

In the sense that a Linux router actually has an address FE80/10 on each 
ipv6 enabled interface, it seems to be correct to also have FE80:: as an 
anycast address on all interfaces which have ipv6 and forwarding enabled.

But then, FE80/10 is not actually supposed to be routed at all and so a 
router cannot not really be a router for that particular subnet ?

Or is "FE80::" just supposed to be the anycast equivalent for the "all 
routers" multicast address ff02::2 ?

Maybe someone on this list could enlighten me.

Ciao
  Andi

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Subnet router anycast for FE80/10 ?
  2011-10-31 20:22 Subnet router anycast for FE80/10 ? Andreas Hofmeister
@ 2011-11-02 15:38 ` David Lamparter
  2011-11-02 17:52   ` David Stevens
  2011-11-02 17:33 ` David Stevens
  1 sibling, 1 reply; 6+ messages in thread
From: David Lamparter @ 2011-11-02 15:38 UTC (permalink / raw)
  To: Andreas Hofmeister; +Cc: netdev

On Mon, Oct 31, 2011 at 09:22:41PM +0100, Andreas Hofmeister wrote:
> I noticed that once forwarding has been enabled on an interface, there 
> is a "subnet router anycast address" for the link-local address prefix 
> FE80/10.

(Please note that it is fe80::/64 is used, not /10)

> This address seems not to be explicitly mentioned in any RFC, but RFC 
> 4291 says "All routers are required to support the Subnet-Router anycast 
> addresses for the subnets to which they have interfaces."

That this directly contradicts RFC 2526 which specifies the
subnet-router anycast address to be either ::ffff:ffff:ffff:ff80 or
::fcff:ffff:ffff:ff80 depending on the phase of the moon (well,
interface type actually, but same thing. Also, the /64 <> /10
distinction would matter here.)

For even more confusion, look at
http://www.iana.org/assignments/ipv6-anycast-addresses/ipv6-anycast-addresses.xml

but the only point why I'm mentioning this at all is that if someone
implemented this, they might've noticed the colliding specifications,
and there would be an Errata.

> In the sense that a Linux router actually has an address FE80/10 on each 
> ipv6 enabled interface, it seems to be correct to also have FE80:: as an 
> anycast address on all interfaces which have ipv6 and forwarding enabled.
> 
> But then, FE80/10 is not actually supposed to be routed at all and so a 
> router cannot not really be a router for that particular subnet ?

This question isn't really relevant, because...

> Or is "FE80::" just supposed to be the anycast equivalent for the "all 
> routers" multicast address ff02::2 ?

... it's actually fairly hard to implement this at all. The idea of
"Anycast" is that even if you have 1000 routers, only one router will
receive the packet. The network is supposed to magically take care of
that, but in reality this only works with Layer 3/IPv6 routing.

So, if you're /actually on/ the subnet yourself, the RFC
- either expects the ethernet switch to implement anycast (...)
- or implies the need for some anycast resolution protocol
  (which is possible of course, but there would first need to actually
  /be/ some such protocol; while some quick googling tells me such
  things exist, they certainly belong in the esoterics drawer).

... which turns this entire thing into a really bad joke.


I would recommend forgetting that these anycast addresses exist at all.
If you need to reach a local on-subnet router, just use ff02::2 and
randomly pick one that answers.


-David

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Subnet router anycast for FE80/10 ?
  2011-10-31 20:22 Subnet router anycast for FE80/10 ? Andreas Hofmeister
  2011-11-02 15:38 ` David Lamparter
@ 2011-11-02 17:33 ` David Stevens
  1 sibling, 0 replies; 6+ messages in thread
From: David Stevens @ 2011-11-02 17:33 UTC (permalink / raw)
  To: Andreas Hofmeister; +Cc: netdev, netdev-owner

netdev-owner@vger.kernel.org wrote on 10/31/2011 01:22:41 PM:

> But then, FE80/10 is not actually supposed to be routed at all and so a 
> router cannot not really be a router for that particular subnet ?
> 
> Or is "FE80::" just supposed to be the anycast equivalent for the "all 
> routers" multicast address ff02::2 ?
> 
> Maybe someone on this list could enlighten me.

I think it's just a matter of not making an exception for LL addresses.
Forwarding is for the interface, not for individual prefixes.
If forwarding is enabled on the interface, anycast addresses for all
its prefixes are added.

It could be used to send to "any router" on a subnet, of course.

                                                        +-DLS

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Subnet router anycast for FE80/10 ?
  2011-11-02 15:38 ` David Lamparter
@ 2011-11-02 17:52   ` David Stevens
  2011-11-02 21:53     ` David Lamparter
  0 siblings, 1 reply; 6+ messages in thread
From: David Stevens @ 2011-11-02 17:52 UTC (permalink / raw)
  To: David Lamparter; +Cc: Andreas Hofmeister, netdev, netdev-owner

netdev-owner@vger.kernel.org wrote on 11/02/2011 08:38:09 AM:

> From: David Lamparter <equinox@diac24.net>

> > This address seems not to be explicitly mentioned in any RFC, but RFC 
> > 4291 says "All routers are required to support the Subnet-Router 
anycast 
> > addresses for the subnets to which they have interfaces."
> 
> That this directly contradicts RFC 2526 which specifies the
> subnet-router anycast address to be either ::ffff:ffff:ffff:ff80 or
> ::fcff:ffff:ffff:ff80 depending on the phase of the moon (well,
> interface type actually, but same thing. Also, the /64 <> /10
> distinction would matter here.)

        The subnet-router anycast address is defined in section 2.6.1 of 
RFC 4291
to be "all 0's" for the prefix. The definition above is for reserved 
anycast
addresses. RFC 2526 says "IPv6 defines a required Subnet-Router anycast 
address [3]
for all routers within a subnet prefix, and allows additional anycast 
addresses to
be taken from the unicast address space. This document defines an 
additional set
of reserved anycast addresses...".

> 
> ... it's actually fairly hard to implement this at all. The idea of
> "Anycast" is that even if you have 1000 routers, only one router will
> receive the packet. The network is supposed to magically take care of
> that, but in reality this only works with Layer 3/IPv6

        The host implementation is very straightforward. Not every host
on a segment has to use the *same* host for an anycast address (it's
kind of the point that it won't, in fact). A host simply needs to
do a solicitation for the anycast address and keep the first one that
answers (by definition, the "closest").

                                                                +-DLS

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Subnet router anycast for FE80/10 ?
  2011-11-02 17:52   ` David Stevens
@ 2011-11-02 21:53     ` David Lamparter
  2011-11-02 23:27       ` David Stevens
  0 siblings, 1 reply; 6+ messages in thread
From: David Lamparter @ 2011-11-02 21:53 UTC (permalink / raw)
  To: David Stevens; +Cc: David Lamparter, Andreas Hofmeister, netdev, netdev-owner

On Wed, Nov 02, 2011 at 10:52:57AM -0700, David Stevens wrote:
> > > This address seems not to be explicitly mentioned in any RFC, but RFC 
> > > 4291 says "All routers are required to support the Subnet-Router 
> anycast 
> > > addresses for the subnets to which they have interfaces."
> > 
> > That this directly contradicts RFC 2526 which specifies the
> > subnet-router anycast address to be either ::ffff:ffff:ffff:ff80 or
> > ::fcff:ffff:ffff:ff80 depending on the phase of the moon (well,
> > interface type actually, but same thing. Also, the /64 <> /10
> > distinction would matter here.)
>
>         The subnet-router anycast address is defined in section 2.6.1 of 
> RFC 4291 to be "all 0's" for the prefix. The definition above is for
> reserved anycast addresses. RFC 2526 says "IPv6 defines a required
> Subnet-Router anycast address [3] for all routers within a subnet prefix,
> and allows additional anycast addresses to be taken from the unicast
> address space. This document defines an additional set of reserved
> anycast addresses...".

Argh. I got thoroughly confused. Please ignore everything I said.

> > [...] only one router will receive the packet [...]
> 
>         The host implementation is very straightforward. Not every host
> on a segment has to use the *same* host for an anycast address (it's
> kind of the point that it won't, in fact). A host simply needs to
> do a solicitation for the anycast address and keep the first one that
> answers (by definition, the "closest").

Right. Sorry. I was half-asleep when I wrote my previous mail and
clearly didn't think through the entire problem. I should probably stop
writing mails when not at least 80% awake :).

Neighbor Discovery can indeed select one of the anycast hosts and talk
to it using its lower-layer address, and no other host should
receive/process the packet.

Going back to Andreas's original question about Subnet-Router Anycast
for fe80::/64 (or /10), RFC 4291 says
   +------------------------------------------------+----------------+
   |                   subnet prefix                | 00000000000000 |
   +------------------------------------------------+----------------+

   The "subnet prefix" in an anycast address is the prefix that
   identifies a specific link.

But fe80::/64 does not identify a specific link, as it is link-local and
would specify all links but not one specifically. So, fe80:: is not a
Subnet-Router anycast address, I'd say.


Hoping I was awake enough this time...


-David

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Subnet router anycast for FE80/10 ?
  2011-11-02 21:53     ` David Lamparter
@ 2011-11-02 23:27       ` David Stevens
  0 siblings, 0 replies; 6+ messages in thread
From: David Stevens @ 2011-11-02 23:27 UTC (permalink / raw)
  To: David Lamparter; +Cc: Andreas Hofmeister, David Lamparter, netdev, netdev-owner

netdev-owner@vger.kernel.org wrote on 11/02/2011 02:53:59 PM:

> From: David Lamparter <equinox@diac24.net>

> Going back to Andreas's original question about Subnet-Router Anycast
> for fe80::/64 (or /10), RFC 4291 says
>    +------------------------------------------------+----------------+
>    |                   subnet prefix                | 00000000000000 |
>    +------------------------------------------------+----------------+
> 
>    The "subnet prefix" in an anycast address is the prefix that
>    identifies a specific link.
> 
> But fe80::/64 does not identify a specific link, as it is link-local and
> would specify all links but not one specifically. So, fe80:: is not a
> Subnet-Router anycast address, I'd say.

fe80:: is in fact a subnet-router anycast address because it's a valid
prefix with all-0's host part. Adding it, as linux does,  simply means
a host can use "fe80::" to get an answer from any router on a particular
link. That might be useful, e.g., if a host wants routing protocol 
information
from a directly attached router.

It isn't unique on a host, but all LL addresses require a scope_id to
identify an interface, anyway, so there is no ambiguity. Any multihomed
v6 host will have multiple fe80/10 routes -- one for each interface--
too, used for receiving packets. Those routes and those anycast addresses
only matter for input processing, as is true for all LL addresses.

So, there's no particular reason I see to treat LL as a special case and
exclude them. I haven't seen any RFC wording that forbids it, though the
implementation predates RFC4291.

You certainly don't have to use them in any application if you don't like 
it. :-)

                                                                +-DLS

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-11-02 23:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-31 20:22 Subnet router anycast for FE80/10 ? Andreas Hofmeister
2011-11-02 15:38 ` David Lamparter
2011-11-02 17:52   ` David Stevens
2011-11-02 21:53     ` David Lamparter
2011-11-02 23:27       ` David Stevens
2011-11-02 17:33 ` David Stevens

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).