What is IPv6?

Every device that connects to the Internet needs an address. But those addresses are rapidly being depleted. A critical point in the history of the Internet was reached today with the allocation of the last remaining IPv4 Internet addresses from a central pool. Internet Specialists foresaw the problem and back in 1996, devised a solution that would provide 340 trillion trillion trillion separate addresses, called IPv6.

Adoption of that solution has been slow. Since it is not directly
compatible with the current IPv4 system, there is inertia to the move.
However, the benefits of IPv6 are long-term. It means the future
expansion of the Internet is now dependent on the successful global
deployment of the next generation of Internet protocol.

IPv6 was started for the lack of IPv4 number and mostly used by the countries that do not have enough of IPv4, china, korea, japan etc.
The number of IPv6 is 2128. This makes 340282366920938463463374607431768211456 IP addresses. This is a really huge number.

The notation of IPv6 is different than IPv4. IPv4 is parted by 8-bit (dot) notation. However, IPv6 is parted with colon by 16-bit notation. Eg.
Also for the simplicty the leading 0s had been canceled, 2001:A98:A11:10:11:0:0:106. At last, fields that consists of 0s has been summerized as 2001:A98:A11:10:11::106.
As you can see :: symbol used for :0000:0000: , this makes IPv6 number more readable. But do not forget that the last notation can be use only one time. Therefore, 2001:A98::10::106 is strictly wrong. As you can understand that it is not clear this IPv6 address shows!

Loopback address:

::1 --> 0:0:0:0:0:0:0:1

As you may notice, there are 8 fields that consists of 16-bit HEXadecimal numbers.

IPv6 uses the CDIR notation for the MASK. It is well known from IPv4 address space usage terminology. Therefore, for the address space of 2001:98:0030::/48, you may use from 2001:98:0030:: to 2001:98:0030:ffff:ffff:ffff:ffff:ffff.

IPv6 address may be showed by 2001:98:30::1e/64. This shows us that prefix is 2001:98:30::/64 OR 2001:98:30:0::/64. The last 64-bit is for the address part.

For web addressing, you should use http://[2001:98:30::1]:8080/ address notation. Since, the colon was used in IPv6 for the port, brackets were used.


There are three type of address. Unicast, Multicast and Anycast.

An important improvement for the IPv6 is the absence of Broadcast addresses. All of the broadcast works done by the Multicast address.

Unicast: It is normal addresses that are used by the clients.

Multicast: It is a Group address space. All packets can be seen by the group members. It is like IPv4 Multicast. Since, all broadcast jobs done by multicast, more CPU power has been saved.

Unicast: It is new concept. It look like anycast but poseses unicast. Since, only one client can take the packet. This becomes usually nearest client address. You sould say that, the address is a unicast address.

Addresses may be obtained by several methods;

  • Obtained from layer 2 addresses (MAC addresses).
  • Obtained according to RFC3041.
  • Via DHCPv6.
  • By manual configuration.
  • Obtained according to RFC3972.

  • Linux for IPv6

    It is pretty simple for Linux. First you shoul give the support for the linux kernel. Most of the distributions come with the support. Mostly it is modular in the kernel. Therefore;

     # modeprobe ipv6

    will suffice for the initial setting. You may also give support from the "make menuconfig" configuration setup of kernel install. Mostly, if you are building a firewall or router, it is better to build a new kernel with your settings.

    There are some utilities which make linux know and use IPv6. For Debian:

    Manual Interface Configuration:

     # ip -6 addr add 2001:98:20::1/126 dev eth0# ip -6 addr del 2001:98:20::1/126 dev eth0OR# ifconfig eth0 inet6 add 2001:98:20::1/126# ifconfig eth0 inet6 del 2001:98:20::1/126


    # ip -6 route add default via 2001:98::1 dev eth0# ip -6 route del default via 2001:98::1 dev eth0OR# route --inet6 add 2001:a::/64 gw 2001:98::1# route --inet6 del 2001:a::/64 gw 2001:98::1

    		vi /etc/network/interfaces
    		# IPv6 settings
    		iface eth0 inet6 static
    		pre-up modprobe ipv6
    		address 2001:98:20::15
    		netmask 64
    		gateway 2001:98:20::1

    For Cisco Catalyst Series;

    First of all you should load an advance series of IOS. You may find information on www.cisco.com.

    After loading the image to your switch, you should enable it;

    		conf t sdm prefer dual-ipv4-and-ipv6 default end reload 

    Make sure that IPv6 enabled
    show sdm prefer

    If OK enable IPv6 unicast routing;

    		conf t
    		ipv6 unicast-routing

    If you use VLAN then

    		interface vlan 100
    		ipv6 address 2001:98::15/64
    		ipv6 nd prefix 2001:98::/64
    		ipv6 route ::/0 2001:98::1
    		write mem

    If you did not use vlan bu pure interfaces;


    		conf t
    		interface g1/0/1
    		no switchport
    		ipv6 address 2001:98::15/64
    		ipv6 nd prefix 2001:98::/64

    You may get full book from www.cisco.com


    Windows XP sp2

    For windows, it is pretty simple; add Microsoft TCP/IP version 6 support through interface properties or get a command prompt by START>RUN>CMD.EXE and then type netsh interface ipv6 install.

    Yes, you see correct. Microsoft added a shell to make more easy network configuration :). It will take the address automatically if you enabled prefix at the router.

    If you need more info just look at www.microsoft.com.

    By the way, if you want to use pure/native IPv6, you should upgrade to Vista or newer versions. This windows versions have not any support for DNS querries over IPv6 networks. They only support DNS querries over IPv4 :). [src: http://www.microsoft.com/technet/network/ipv6/ipv6faq.mspx#ELG]

    Windows have 3 IPv6 addresses. One is link-local address, EUI-64 derived address and temporary address. The last one was added to make more privacy, since MAC address added to the IPv6 address.

    You may look for the other examples to http://ipv6.raphnet.net/.

    NS IPv6

    NS for IPv6 are still evolving. For example, A6 and IP6.INT changed with AAAA and IP6.ARPA, respectively. (RFC 3152)

    Simply IPv6 on bind is like that;

    First, the configuration, named.conf, should have;

    	acl our-nets {; 2000:98::/32; };
    	options {
    	allow-recursion { our-nets;; };
    	listen-on-v6 { any; };
    	// locahost zone files
    	zone "localhost" IN {
            	type master;
            	file "db.localhost";
            	allow-update {none;};
    	// IPv4 zone files
    	zone "." IN {
            	type hint;
            	file "db.cache";
    	zone "0.0.127.in-addr.arpa" IN {
            	type master;
            	file "db.127.0.0";
            	allow-update {none;};
    	// IPv6 zone files
    	// ==========
    	zone "" {
                    	type master;
                    	file "localhost";
    	//      Reverse lookup zones
    	//      If you have 2000:98:1::/48 pTLA ID, you need below zone.
    	zone ""  {
                    	type master;
                    	file "2000:98:1";

    The key point here is the Reverse address definition. As you can remember we had 4x8=32 numbers (0..f). Therefore you should give all of them with dotted notation. It is really simple.

    This was for the reverse definitions. For the forward definitions it is the same with IPv4 but you should use the AAAA (4xA) instead of A in the zone file.

    	; zone fragment for example.com
    	$TTL 2d 
    	$ORIGIN example.com.
    	www        IN      AAAA      2000:db8::3
    	mail       IN      AAAA      2000:b8::2  ; round robin with the others
    	mail       IN      AAAA      2000:b8::44
    	mail       IN      AAAA      2000:b8::66
    	squat      IN      AAAA      2000:b8:1:0:1::1  ; address in another subnet
    	www	   IN	   A
    	mail       IN	   A

    As you can see that, for the forward zone files, the same files can be used. IPv4 and IPv6 forward definitions can be mixed.

    IN order to write Name Lookup using nibble format;

    	$ORIGIN   14400 IN      PTR     host.example.com.

    The above example defines the address of 2001:0b8::109. This is equal to 2001:b8:0:0:0:0:0:109. And also in a very long format 2001:00b8:0000:0000:0000:0000:0000:0109.

    Altogether, it makes;

    It is really simple. If you want to calculate the IP address or subnet masks, just look at the Subnet Calculator of CACTI (Local copy).