2. Agenda
• IPv6 features overview
• IPv6 addressing
• Integration and co-existing strategies
• IPv6 application development
• A Big Picture
• References
3. History
• 1974 Cerf and Kahn developed TCP/IP for
ARPA.
• NSF (end of 70-th)
• 1992 – RFC 1550. 21 response. 7 left. CLNP.
• 1993. 3 proposals left (Deering, Francis, Katz
and Ford). SIPP.
• SIPP IPv6 (IPv5 – already allocated)
6. Why NAT is bad
• This was a temporary solution from the beginning
• NAT keep us away from transparent connection
• NAT violates security and principle of packets
consistency
• NAT was blocking development of transparent
applications
• Double/triple NAT translation is very ugly thing
7. Requirements
• Larger address space
• Simpler protocol for faster routing processing
• Better security
• Better QoS
• Extensibility
• Auto configuration
• Better Multicast and Anycast abilities
• Better support for mobile devices
• Coexisting
9. IPv6 Header Fields
• Version – always 6 for IPv6
• Traffic class – similar to ToS in IPv4. Each traffic class
can be managed differently, ensuring preferential
treatment for higher-priority traffic on the network.
Not widely used.
• Flow label. Experimental. Idea reserve throughput for
flow between two hosts. Virtual channel.
• Next header – tells which one from 6 extension
headers follows
• HOP Limit – ex TTL.
• Source/Destination addresses
10. Comparing IPv4 and IPv6 headers
• IHL – removed
• Protocol – removed
• Removed all fields related to fragmentation
• TTL replaced by Hop limit field.
• Header checksum - deprecated (upper level checksum can do it).
12. Extension Headers
Header Type Purpose
Hop-By-Hop Optional data that each host must examine(Deprecated)
Routing Causes packet to visit specific hosts on its way to destination
Fragment Contains fragment identification, offset flags
Destination Options Processed only by destination host
Authentication Sender verification
Encapsulating Security
Indicates that the rest of payload is encrypted
Payload
13. Stateless and Stateful Address
Configuration
• Statefull address configuration
– DHCP for IPv6
• Stateless address configuration
– No DHCP server
– Automatic link-local address configuration
14. IPv6 Address format
RFC 2373
2001:05c0:1000:000b:0000:0000:0000:9eaf
2001:5c0:1000:b::9eaf
http://[2620:0:1cfe:face:b00c::3]
15. IPv6 address types
- Unicast – address for single interface
- Global
- Site-local
- Link-local
- Anycast – address of set of interfaces
- Multicast – scoped address of group of
interfaces
RFC 4291
19. Multicast address format
• ff02::1 - all nodes in local segment
• ff02::2 - all routers in local network segment
• FF01::2 - node local scope all routers
• FF02::2 - link-local scop all-routers
27. Teredo*
Idea:
- encapsulate IPv6 into UDP
- encapsulate UDP port and ipv4 into ipv6
address
RFC 4380 . Example
2001:0:5ef5:79fd:34a0:3750:e0e0:8ed1
30. IPv6 Application development
IPv6 Guide for Windows Sockets Applications
Checkv4.exe
Main idea: make your application dual stack
- use agnostic data structures
- change function calls
- remove hardcoded addresses
- change UI
RFC 4038
31. IPv6 Application development
Data structures
Data structures
sockaddr_in sockaddr_storage
Shims: getPort, getSockAddrBytes, getAddrLen, etc.
int getPort(sockaddr_storage& addr) {
switch(addr.ss_family) {
case AF_INET:
return ntohs ( reinterpret_cast<sockaddr_in*>(&addr)->sin_port );
case AF_INET6:
return ntohs ( reinterpret_cast<sockaddr_in6*>(&addr)->sin6_port );
default:
throw exception;
}
38. References
• IPv6 Learning Roadmap
• IPv6 Guide for Windows Sockets Applications
• www.ipv6.com
• Test your IPv6 connectivity
• Google IPv6 Conference 2008: What will the IPv6
Internet look like?
• SixXS - IPv6 Deployment & Tunnel Broker
• Cool IPv6 stuff
• icmpv6x
Hinweis der Redaktion
Picture taken from: http://www.twcableuntangled.com/2011/02/ipv4-ipv6-and-world-ipv6-day-the-asteroid-is-coming-but-well-blow-it-up-together/
History RFC 1550. 21 PROPOSAL. INTERESTING proposal CLNP – 160 BIT ADDRESS. 7 LEFT 3 LEFT
48-bit global routing prefix
16-bit subnet id
Higher 10 bits of first two 2 bytes used to identify message purpose
16 bits of the subnet id field are available to the network administrator to define subnets within the given network
64 bit is automatically generated based on MAC, randomly generated or assigned by DHCPv6
Used to restrict communication in specific domain
The 54 zeroes that follow make the total network prefix the same for all link-local addresses, rendering them non-routable
Used in in the neighbor discover protocol and stateless auto configuration process
Nodes on the same link can communicate each with other without router. Router does not forward packet with link-local addresses
Dual stack host serving IPV4 and ipv6 clients
Receiving datalink looks at Ethernet type field and pass packet to the appropriate IP module
The IPv4 client calls gethostbyname and finds an A record for the server (Fig-
ure 9.5). The server host will have both an A record and a AAAA record, since
it supports both protocols but the lPv4 client asks for only an A record.