IP Version 6

IPv6
IPv6 stands for Internet Protocol version 6. It is the second version of the Internet Protocol to be used generally across the virtual world. The first version was IPv4. IPv5 was a protocol of a different sort, intended to support video and audio rather than all-purpose addressing. IPv6 is also known as IPng, which stands for IP Next Generation.
One of the main upgrades in IPv6 is in the number of addresses available for networked devices. For example, each mobile phone or other kind of electronic device can have its own IPv6 address. IPv6 allows 3.4x10^38 addresses. This is mainly due to the number of bits in each protocol. IPv4 addresses have 32 bits in them and so allow a maximum of four billion addresses. IPv6 addresses have 128 bits.
However, IPv4 is still the protocol of choice for most of the Internet. The transition will be a steady one, and IPv6 is the future of Internet addressing, mainly because industry experts believe that they are close to running out of available addresses altogether.
Another example of an IPv6 upgrade is multicasting, which is standard in IPv6 but only optional in IPv4. Multicasting is delivering a data stream to multiple destinations at the same time, with no duplication unless called for. Those functionalities are not supported by IPv4. The other two types of addressing that are standard practice for IPv6 are unicast and anycast. The former is a transmission from just one host to just one other host; the latter is from one host to the nearest of many hosts.
IPv6 also has two other significant advantages over IPv4. IPv6 offers a higher level of built-in security, and it has been specifically designed with mobile devices in mind. The security comes in the form of IPsec, which allows authentication, encryption, and compression. The mobility comes in the form of Mobile IP ,which allows roaming between different networks without losing an established IP address. Both of these functionalities are requirements of IPv6 and so are designed to be built into every IPv6 stack, address, and network.

Differences Between IPv4 and IPv6

The following table highlights some of the key differences between IPv4 and IPv6.
Differences between IPv4 and IPv6

IPv4

IPv6

Source and destination addresses are 32 bits (4 bytes) in length.

Source and destination addresses are 128 bits (16 bytes) in length.

IPSec support is optional.

IPSec support is required.

IPv4 header does not identify packet flow for QoS handling by routers.

IPv6 header contains Flow Label field, which identifies packet flow for QoS handling by router.

Both routers and the sending host fragment packets.

Only the sending host fragments packets; routers do not.

Header includes a checksum.

Header does not include a checksum.

Header includes options.

All optional data is moved to IPv6 extension headers.

Address Resolution Protocol (ARP) uses broadcast ARP Request frames to resolve an IP address to a link-layer address.

Multicast Neighbor Solicitation messages resolve IP addresses to link-layer addresses. For more information, see “Neighbor Discovery” in “How IPv6 Works.”

Internet Group Management Protocol (IGMP) manages membership in local subnet groups.

Multicast Listener Discovery (MLD) messages manage membership in local subnet groups.

ICMP Router Discovery is used to determine the IPv4 address of the best default gateway, and it is optional.

ICMPv6 Router Solicitation and Router Advertisement messages are used to determine the IP address of the best default gateway, and they are required. For more information, see “Neighbor

 

Broadcast addresses are used to send traffic to all nodes on a subnet.

 

IPv6 uses a link-local scope all-nodes multicast address.

Must be configured either manually or through DHCP.

Does not require manual configuration or DHCP.

Uses host address (A) resource records in Domain Name System (DNS) to map host names to IPv4 addresses.

Uses host address (AAAA) resource records in DNS to map host names to IPv6 addresses.

Uses pointer (PTR) resource records in the IN-ADDR.ARPA DNS domain to map IPv4 addresses to host names.

Uses pointer (PTR) resource records in the IP6.ARPA DNS domain to map IPv6 addresses to host names.

Must support a 576-byte packet size (possibly fragmented).

Must support a 1280-byte packet size (without fragmentation).

FEATURES OF IPv6
FEATURE - Address Space
CHANGE  - Increase from 32-bit to 128-bit address space
FEATURE - Management
CHANGE - Stateless autoconfiguration means no more need to configure IP addresses for end systems, even via DHCP
FEATURE - Performance
CHANGE - Predictable header sizes and 64-bit header alignment mean better performance from routers and bridges/switches
FEATURE - Multicast/Multimedia
CHANGE - Built-in features for multicast groups, management, and new "anycast" groups
FEATURE - Mobile IP
CHANGE - Eliminate triangular routing and simplify deployment of mobile IP-based systems
FEATURE - Virtual Private Networks
CHANGE - Built-in support for ESP/AH encrypted/authenticated virtual private network protocols; built-in support for QoS tagging

Configure IPv6 features

on FreeBSD, Windows XP, Windows Server 2003 and Linux


FreeBSD (tested on 4.9):
ADDRESS = 2001:918:fffc:12:1::2
GATEWAY= fe80::209:c0ff:fe30:4357
INTERFACE = xl0
 

Add the IPv6 address for the interface

ifconfig xl0 inet6 add 2001:918:fffc:12:1::2 prefixlen 64

Remove IPv6 address from the interface

ifconfig xl0 inet6 2001:918:fffc:12:1::10 prefixlen 64 delete

Autoconfiguration on/off

sysctl net.inet6.ip6.accept_rtadv=1
sysctl net.inet6.ip6.accept_rtadv=0

Add specific route to host

route add -inet6 2001:800:40::1 fe80::209:c0ff:fe30:4357%xl0

Add specific route to network

route add -inet6 2001:800:40::/48 fe80::209:c0ff:fe30:4357%xl0

Remove specific route

route delete -inet6 2001:800:40::/48 fe80::209:c0ff:fe30:4357%xl0

Add default IPv6 route

route add -inet6 ::/0 fe80::209:c0ff:fe30:4357%xl0

Remove default IPv6 route

route delete -inet6 ::/0 fe80::209:c0ff:fe30:4357%xl0

Display current routing table

netstat -r
netstat -nr (no address-to-name resolution)

Display current interface configuration

ifconfig
ifconfig -a (for all interfaces, also inactive)


WindowsXP/Windows Server 2003
ADDRESS = 2001:918:fffc:12:1::2
GATEWAY= fe80::209:c0ff:fe30:4357
INTERFACE = Local Area Connection

Add the IPv6 address for the interface

netsh interface ipv6 set address "Local Area Connection" 2001:918:0:12:1::2

Remove IPv6 address from the interface

netsh interface ipv6 delete address "Local Area Connection" 2001:918:0:12:1::2

Enable IPv6

Netsh interface ipv6 install

Disable IPv6

Netsh interface ipv6 uninstall

Add specific route to host

netsh interface ipv6 add route 2001:918:fffc:12::/64 "Local Area Connection"

Add specific route to network

netsh interface ipv6 add route 2001:918:fffc:12::/64 "Local Area Connection"

Remove specific route

netsh interface ipv6 delete route 2001:918:fffc:12::/64 "Local Area Connection"

Add default IPv6 route

netsh interface ipv6 add route ::/0 "Local Area Connection" fe80::209:c0ff:fe30:4357

Remove default IPv6 route

netsh interface ipv6 delete route ::/0 "Local Area Connection" fe80::209:c0ff:fe30:4357

Establish v6-in-v4 tunnel

netsh interface ipv6 add v6v4tunnel "Local Area Connection" <local IPv4 Adress> <Remote IPv4 Adress>
netsh interface ipv6 add address "<Tunnel-Name>" \\
      <IPv6-Adress>
netsh interface ipv6 add route
      <Route-prefix>/<length of prefix> \\
      "Tunnel-Name" <remote IPv6 address (next Hop)>
(Not tested)

Display current routing table

netsh interface ipv6 show route

Display current interface configuration

Ipconfig

IPv6 Firewall disable

Netsh firewall set adapter "Local Area Connection" filter=disable

IPv6 Firewall enable

Netsh firewall set adapter "Local Area Connection" filter= enable

Check connectivity

Ping www.kame.net
Ping6 www.kame.net

Trace route

Tracert www.kame.net
Tracert6 www.kame.net

Disable IPv6 privacy addresses

netsh interface ipv6 set privacy disabled

Enable IPv6 privacy addresses

netsh interface ipv6 set privacy enabled


Linux
ADDRESS = 2001:918:fffc:12:1::2 prefixlen 64
GATEWAY= fe80::209:c0ff:fe30:4357
INTERFACE = eth0
 

Add the IPv6 address for the interface

ifconfig eth0 add 2001:918:fffc:12:1::2/64

Remove IPv6 address from the interface

ifconfig eth0 del 2001:918:fffc:12:1::2/64

Autoconfiguration on

echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_ra
echo "1" > /proc/sys/net/ipv6/conf/eth0/autoconf

Autoconfiguration off

echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_ra
echo "0" > /proc/sys/net/ipv6/conf/eth0/autoconf

Enable IPv6

compile kernel with IPv6 support
or
modprobe ipv6 (if compiled as module)

Add specific route to host

route –A inet6 add 2001:800:40::1 gw fe80::209:c0ff:fe30:4357 dev eth0

Add specific route to network

route –A inet6 add 2001:800:40::/48 gw fe80::209:c0ff:fe30:4357 dev eth0

Remove specific route

route –A inet6 del 2001:800:40::1 gw fe80::209:c0ff:fe30:4357 dev eth0

Add default IPv6 route

route –A inet6 add ::/0 gw fe80::209:c0ff:fe30:4357 dev eth0

Remove default IPv6 route

route –A inet6 del ::/0 fe80::209:c0ff:fe30:4357 dev eth0

Display current routing table

netstat –nr –A inet6
netstat –r –A inet6 (with reverse name resolution)

Display current interface configuration

ifconfig

Check connectivity

ping6 www.kame.net

Trace route

traceroute6 www.kame.net