IPv6 Deployment for the LAN ... anycast

TJ trejrco at gmail.com
Fri Oct 23 12:45:21 UTC 2009

WRT "Anycast DNS"; Perhaps a special-case of ULA, FD00::53?

>>>> You want to allow for more than one for obvious fault isolation and
>>>> load balancing reasons.  The draft suggested using <prefix>:FFFF::1
>> FWIW - I think simple anycast fits that bill.
>  I think for very small/small networks anycast requires a lot of overhead
> and understanding.  If your big enough to do anycast and/or loadbalancing
> it's not hard for you to put all three addresses onto one device.

Anycast isn't really hard - same address, multiple places, routers see what
appear to be multiple routes to same destination, they choose the least
expensive.  Only tricky part (for stateless things) is ensuring the route
announcement is implicitly tied to service availability on that device ...

> There are some protocols that anycasting doesn't work well for, they may
> require multiple instances.

Fair enough; could also standardize something like FD00::<port number>,
FD00::1:<port number>, and FD00::2:<port number> ... is three addresses
enough?  (IIRC, the Site-Local based automagic DNS used 2 or three addresses
... )

 I personally would suggest getting a well known ULA-C allocation
>>> assigned to IANA, then use <prefix>::<protocol assignment>:1
>>> <prefix>::<protocol assignment>:2 and <prefix>::<protocol
>>> assignment>:3, where <protocol assignment> could be "0035" for DNS,
>>> and "007b" for NTP, and if you're feeling adventurous you could use
>>> "0019" for outgoing SMTP relay.
> IMHO non-hex-converted port numbers works cleanly ... ?

Up to 9999, if you want to announce a service port 30,000 you're in trouble.
>  Also quite a few protocols don't have "well known" ports, so may want to
> get things assigned.  If you're doing assignment you could do nice things
> like 0x53 for DNS and then ports >9999 and protocols that don't have "well
> known" ports could get an unused one assigned to them.

OK, so the non-hex converted as above (FD00::x:53; where x=[0,1,2] -
reserving FD00::/96) covers us to port 9999 based on automatically using
port numbers (or using automatically registered port numbers, see below).

Maybe FD00::FFFF:xxxx/112 as a block within the above range to be used for
manual assignment of automatic service (potentially anycast) addresses.

>  ... Heck, start a registry (@IANA) and add in FD00::101, etc. ...
>>>> Maybe reserve FD00::/96 for this type of "ULA port-based anycast
>>>> allocation". (16bits would only reach 9999 w/o hex-conversion (if
>>>> hex-converted could reserve FD00::/112 ... But would be less
>>>> obvious))
> Thinking further, if simply based on port#s wouldn't even need a registry.
> Unless it was decided to implement the multiple-addresses-per-function
> mentioned above, then perhaps useful.
In my humble opinion I'd have them registered, linking them to port numbers
> means that it's easier on the poor admins brain at 3am while diagnosing
> faults, but may cause various hassles in the future (see above).

OK, so register them - but sign up some well-known ones at very comfortable
addresses, like DNS at 53 :).
(Or 35 if you prefer hex-conversion ...)

And I am sure some would be concerned about hosts performing any sort of
automatic service discovery anything, but this atleast has the advantage
over multicast in that it doesn't require multicast routing or group
membership / state maintenance, only delivers packets to the nearest (not
all) instances, etc.


More information about the NANOG mailing list