Re: Newbie to IPv6 ... Help me out .... in deploying ipv6 on linux machine

Prabhu Gurumurthy <[email protected]> Wed, 16 May 2007 10:59:27 -0700
Newsgroups gmane.os.openbsd.ipv6
Message-ID <[email protected]>
Fazlur Rahaman Naik wrote:
> Hi All,
>    I am trying to deploy the ipv6 on my Linux machine. Can any body help
> me out. I am newbie to IPv6. Help will be appreciated. Thanks in
> advance.
> 
> Thanks & Regards,
> Fazlur Rahaman Naik,
> Patni Computer Systems Ltd.
> 
> 
> 
> http://www.patni.com
> World-Wide Partnerships. World-Class Solutions.
> _____________________________________________________________________
> 
> This e-mail message may contain proprietary, confidential or legally
> privileged information for the sole use of the person or entity to
> whom this message was originally addressed. Any review, e-transmission
> dissemination or other use of or taking of any action in reliance upon
> this information by persons or entities other than the intended
> recipient is prohibited. If you have received this e-mail in error
> kindly delete  this e-mail from your records. If it appears that this
> mail has been forwarded to you without proper authority, please notify
> us immediately at [email protected] and delete this mail. 
> _____________________________________________________________________
> 
> 

There are so many primers on IPv6 so please find and read one. Important thing 
to know is IPv6 is 128 bits. There are many prefixes (networks in IPv4 parlance) 
that are being used and they all have associated RFC's

Each and every interface has an IPv6 address by default called link-local and 
the prefix is fe80::/16

2000::/3 (RFC 2450) is the one that is being used mostly by ISP's etc.
This (being 2000::/3) consists the following prefixes:

1. 2001::/16 prefix, consider this as a public address
2. 2002::/16 prefix, is for 6to4 testing and I dont think it is considered as a 
public address
3. 3ffe::/16 prefix, is for 6bone test network.

Mind you all these are specific RFC's.

By default all subnets are 64 bits or /64, although you can use less than that 
and it is not a crime.

For RFC1918 similar networks there are two in IPv6
fec0::/16 and fc00::/7

Please refrain from using fec0::/16 as it is being deprecated RFC 3487 (not sure 
on that RFC somebody can correct me on that.)

In order to use fc00::/7 you have to flip the 8 bit to get fd00::/7 and then
for the next 40 bits you need a get unique number, which is defined in another 
RFC on how to get that.

Basically use you mac address and get the date in ntp format and then hash it 
using "openssl sha" and get the last 10 characters that is your /48 subnet.

The remaining 16 bits is for subnets, that means you have close to 65500 subnets 
at your disposal to do whatever you want to

This (being fd00::/7 with its 40 bit random generation) is more commonly used 
these days

Other thing to know it there is no ARP, everything uses ICMPv6 (protocol 58)
right from neighbor discovery to router discovery. Make sure your firewall 
allows that, I went thru 2 hours of hell, simply because I forgot to put an 
entry in the firewall

All devices can use autoconfiguration to learn the prefixes and then their last 
/64 bits

By default all devices, barring Windows Vista (the one that I tried) uses its 
MAC address with U/L conversion to get its /64 bit IP address

U/L bit conversion to change MAC 48 bits to eui 64 bits:

suppose given machine's mac address: 00:0c:48:2c:34:ab
then flip the 7 bit and the insert ff fe in the middle:

so: 00:0c:48:2c:34:ab gets changed into
020c:48ff:fe2c:34ab

BSD systems, atleast OpenBSD, FreeBSD and MAC OSX already do this conversion, my 
luck ran out for Windows Vista. I have not tried Linux yet, but I think it can 
do this conversion (somebody can correct me on that)

On OpenBSD it is simple:
use ifconfig "interface" inet6 fdc3:c3dc:45ab:c800:: prefixlen 64 eui64

you may want to read about that in rtsol, rtsold, rtadvd man pages, apart from 
inet6, ip6, icmp6 man pages.

For routing OSPF v3 supports IPv6, last time I checked OpenBSD is yet to support it.

Remember all devices must accept all prefixes except for fe80, because RFC 
specifically say that there is nothing magical about a prefix, but many 
implementations think otherwise. Example Dell L3 switces do not accept anything 
but 2000::/3 prefix, which means to say their implementation is broken.

Hope this helps!
Prabhu
-