
- •For Web Developers
- •Contents at a Glance
- •Table of Contents
- •List of Figures
- •List of Tables
- •Foreword
- •Why Does Microsoft Care About IPv6?
- •Preface
- •Acknowledgments
- •Introduction
- •Who Should Read This Book
- •What You Should Know Before Reading This Book
- •Organization of This Book
- •Appendices of This Book
- •About the Companion CD-ROM
- •System Requirements
- •IPv6 Protocol and Windows Product Versions
- •A Special Note to Teachers and Instructors
- •Disclaimers and Support
- •Technical Support
- •Limitations of IPv4
- •Consequences of the Limited IPv4 Address Space
- •Features of IPv6
- •New Header Format
- •Large Address Space
- •Stateless and Stateful Address Configuration
- •IPsec Header Support Required
- •Better Support for Prioritized Delivery
- •New Protocol for Neighboring Node Interaction
- •Extensibility
- •Comparison of IPv4 and IPv6
- •IPv6 Terminology
- •The Case for IPv6 Deployment
- •IPv6 Solves the Address Depletion Problem
- •IPv6 Solves the Disjoint Address Space Problem
- •IPv6 Solves the International Address Allocation Problem
- •IPv6 Restores End-to-End Communication
- •IPv6 Uses Scoped Addresses and Address Selection
- •IPv6 Has More Efficient Forwarding
- •IPv6 Has Support for Security and Mobility
- •Testing for Understanding
- •Architecture of the IPv6 Protocol for Windows Server 2008 and Windows Vista
- •Features of the IPv6 Protocol for Windows Server 2008 and Windows Vista
- •Installed, Enabled, and Preferred by Default
- •Basic IPv6 Stack Support
- •IPv6 Stack Enhancements
- •GUI and Command-Line Configuration
- •Integrated IPsec Support
- •Windows Firewall Support
- •Temporary Addresses
- •Random Interface IDs
- •DNS Support
- •Source and Destination Address Selection
- •Support for ipv6-literal.net Names
- •LLMNR
- •PNRP
- •Literal IPv6 Addresses in URLs
- •Static Routing
- •IPv6 over PPP
- •DHCPv6
- •ISATAP
- •Teredo
- •PortProxy
- •Application Support
- •Application Programming Interfaces
- •Windows Sockets
- •Winsock Kernel
- •Remote Procedure Call
- •IP Helper
- •Win32 Internet Extensions
- •Windows Filtering Platform
- •Manually Configuring the IPv6 Protocol
- •Configuring IPv6 Through the Properties of Internet Protocol Version 6 (TCP/IPv6)
- •Configuring IPv6 with the Netsh.exe Tool
- •Disabling IPv6
- •IPv6-Enabled Tools
- •Ipconfig
- •Route
- •Ping
- •Tracert
- •Pathping
- •Netstat
- •Displaying IPv6 Configuration with Netsh
- •Netsh interface ipv6 show interface
- •Netsh interface ipv6 show address
- •Netsh interface ipv6 show route
- •Netsh interface ipv6 show neighbors
- •Netsh interface ipv6 show destinationcache
- •References
- •Testing for Understanding
- •The IPv6 Address Space
- •IPv6 Address Syntax
- •Compressing Zeros
- •IPv6 Prefixes
- •Types of IPv6 Addresses
- •Unicast IPv6 Addresses
- •Global Unicast Addresses
- •Topologies Within Global Addresses
- •Local-Use Unicast Addresses
- •Unique Local Addresses
- •Special IPv6 Addresses
- •Transition Addresses
- •Multicast IPv6 Addresses
- •Solicited-Node Address
- •Mapping IPv6 Multicast Addresses to Ethernet Addresses
- •Anycast IPv6 Addresses
- •Subnet-Router Anycast Address
- •IPv6 Addresses for a Host
- •IPv6 Addresses for a Router
- •Subnetting the IPv6 Address Space
- •Step 1: Determining the Number of Subnetting Bits
- •Step 2: Enumerating Subnetted Address Prefixes
- •IPv6 Interface Identifiers
- •EUI-64 Address-Based Interface Identifiers
- •Temporary Address Interface Identifiers
- •IPv4 Addresses and IPv6 Equivalents
- •References
- •Testing for Understanding
- •Structure of an IPv6 Packet
- •IPv4 Header
- •IPv6 Header
- •Values of the Next Header Field
- •Comparing the IPv4 and IPv6 Headers
- •IPv6 Extension Headers
- •Extension Headers Order
- •Hop-by-Hop Options Header
- •Destination Options Header
- •Routing Header
- •Fragment Header
- •Authentication Header
- •Encapsulating Security Payload Header and Trailer
- •Upper-Layer Checksums
- •References
- •Testing for Understanding
- •ICMPv6 Overview
- •Types of ICMPv6 Messages
- •ICMPv6 Header
- •ICMPv6 Error Messages
- •Destination Unreachable
- •Packet Too Big
- •Time Exceeded
- •Parameter Problem
- •ICMPv6 Informational Messages
- •Echo Request
- •Echo Reply
- •Comparing ICMPv4 and ICMPv6 Messages
- •Path MTU Discovery
- •Changes in PMTU
- •References
- •Testing for Understanding
- •Neighbor Discovery Overview
- •Neighbor Discovery Message Format
- •Neighbor Discovery Options
- •Source and Target Link-Layer Address Options
- •Prefix Information Option
- •Redirected Header Option
- •MTU Option
- •Route Information Option
- •Neighbor Discovery Messages
- •Router Solicitation
- •Router Advertisement
- •Neighbor Solicitation
- •Neighbor Advertisement
- •Redirect
- •Summary of Neighbor Discovery Messages and Options
- •Neighbor Discovery Processes
- •Conceptual Host Data Structures
- •Address Resolution
- •Neighbor Unreachability Detection
- •Duplicate Address Detection
- •Router Discovery
- •Redirect Function
- •Host Sending Algorithm
- •References
- •Testing for Understanding
- •MLD and MLDv2 Overview
- •IPv6 Multicast Overview
- •Host Support for Multicast
- •Router Support for Multicast
- •MLD Packet Structure
- •MLD Messages
- •Multicast Listener Query
- •Multicast Listener Report
- •Multicast Listener Done
- •Summary of MLD
- •MLDv2 Packet Structure
- •MLDv2 Messages
- •The Modified Multicast Listener Query
- •MLDv2 Multicast Listener Report
- •Summary of MLDv2
- •MLD and MLDv2 Support in Windows Server 2008 and Windows Vista
- •References
- •Testing for Understanding
- •Address Autoconfiguration Overview
- •Types of Autoconfiguration
- •Autoconfigured Address States
- •Autoconfiguration Process
- •DHCPv6
- •DHCPv6 Messages
- •DHCPv6 Stateful Message Exchange
- •DHCPv6 Stateless Message Exchange
- •DHCPv6 Support in Windows
- •IPv6 Protocol for Windows Server 2008 and Windows Vista Autoconfiguration Specifics
- •Autoconfigured Addresses for the IPv6 Protocol for Windows Server 2008 and Windows Vista
- •References
- •Testing for Understanding
- •Name Resolution for IPv6
- •DNS Enhancements for IPv6
- •LLMNR
- •Source and Destination Address Selection
- •Source Address Selection Algorithm
- •Destination Address Selection Algorithm
- •Example of Using Address Selection
- •Hosts File
- •DNS Resolver
- •DNS Server Service
- •DNS Dynamic Update
- •Source and Destination Address Selection
- •LLMNR Support
- •Support for ipv6-literal.net Names
- •Peer Name Resolution Protocol
- •References
- •Testing for Understanding
- •Routing in IPv6
- •IPv6 Routing Table Entry Types
- •Route Determination Process
- •Strong and Weak Host Behaviors
- •Example IPv6 Routing Table for Windows Server 2008 and Windows Vista
- •End-to-End IPv6 Delivery Process
- •IPv6 on the Sending Host
- •IPv6 on the Router
- •IPv6 on the Destination Host
- •IPv6 Routing Protocols
- •Overview of Dynamic Routing
- •Routing Protocol Technologies
- •Routing Protocols for IPv6
- •Static Routing with the IPv6 Protocol for Windows Server 2008 and Windows Vista
- •Configuring Static Routing with Netsh
- •Configuring Static Routing with Routing and Remote Access
- •Dead Gateway Detection
- •References
- •Testing for Understanding
- •Overview
- •Node Types
- •IPv6 Transition Addresses
- •Transition Mechanisms
- •Using Both IPv4 and IPv6
- •IPv6-over-IPv4 Tunneling
- •DNS Infrastructure
- •Tunneling Configurations
- •Router-to-Router
- •Host-to-Router and Router-to-Host
- •Host-to-Host
- •Types of Tunnels
- •PortProxy
- •References
- •Testing for Understanding
- •ISATAP Overview
- •ISATAP Tunneling
- •ISATAP Tunneling Example
- •ISATAP Components
- •Router Discovery for ISATAP Hosts
- •Resolving the Name “ISATAP”
- •Using the netsh interface isatap set router Command
- •ISATAP Addressing Example
- •ISATAP Routing
- •ISATAP Communication Examples
- •ISATAP Host to ISATAP Host
- •ISATAP Host to IPv6 Host
- •Configuring an ISATAP Router
- •References
- •Testing for Understanding
- •6to4 Overview
- •6to4 Tunneling
- •6to4 Tunneling Example
- •6to4 Components
- •6to4 Addressing Example
- •6to4 Routing
- •6to4 Support in Windows Server 2008 and Windows Vista
- •6to4 Host/Router Support
- •6to4 Router Support
- •6to4 Communication Examples
- •6to4 Host to 6to4 Host/Router
- •6to4 Host to IPv6 Host
- •Example of Using ISATAP and 6to4 Together
- •Part 1: From ISATAP Host A to 6to4 Router A
- •Part 2: From 6to4 Router A to 6to4 Router B
- •Part 3: From 6to4 Router B to ISATAP Host B
- •References
- •Testing for Understanding
- •Introduction to Teredo
- •Benefits of Using Teredo
- •Teredo Support in Microsoft Windows
- •Teredo and Protection from Unsolicited Incoming IPv6 Traffic
- •Network Address Translators (NATs)
- •Teredo Components
- •Teredo Client
- •Teredo Server
- •Teredo Relay
- •Teredo Host-Specific Relay
- •The Teredo Client and Host-Specific Relay in Windows
- •Teredo Addresses
- •Teredo Packet Formats
- •Teredo Data Packet Format
- •Teredo Bubble Packets
- •Teredo Indicators
- •Teredo Routing
- •Routing for the Teredo Client in Windows
- •Teredo Processes
- •Initial Configuration for Teredo Clients
- •Maintaining the NAT Mapping
- •Initial Communication Between Teredo Clients on the Same Link
- •Initial Communication Between Teredo Clients in Different Sites
- •Initial Communication from a Teredo Client to a Teredo Host-Specific Relay
- •Initial Communication from a Teredo Host-Specific Relay to a Teredo Client
- •Initial Communication from a Teredo Client to an IPv6-Only Host
- •Initial Communication from an IPv6-Only Host to a Teredo Client
- •References
- •Testing for Understanding
- •IPv6 Security Considerations
- •Authorization for Automatically Assigned Addresses and Configurations
- •Recommendations
- •Protection of IPv6 Packets
- •Recommendations
- •Host Protection from Scanning and Attacks
- •Address Scanning
- •Port Scanning
- •Recommendations
- •Control of What Traffic Is Exchanged with the Internet
- •Recommendations
- •Summary
- •References
- •Testing for Understanding
- •Introduction
- •Planning for IPv6 Deployment
- •Platform Support for IPv6
- •Application Support for IPv6
- •Unicast IPv6 Addressing
- •Tunnel-Based IPv6 Connectivity
- •Native IPv6 Connectivity
- •Name Resolution with DNS
- •DHCPv6
- •Host-Based Security and IPv6 Traffic
- •Prioritized Delivery for IPv6 Traffic
- •Deploying IPv6
- •Set Up an IPv6 Test Network
- •Begin Application Migration
- •Configure DNS Infrastructure to Support AAAA Records and Dynamic Updates
- •Deploy a Tunneled IPv6 Infrastructure with ISATAP
- •Upgrade IPv4-Only Hosts to IPv6/IPv4 Hosts
- •Begin Deploying a Native IPv6 Infrastructure
- •Connect Portions of Your Intranet over the IPv4 Internet
- •Connect Portions of Your Intranet over the IPv6 Internet
- •Summary
- •References
- •Testing for Understanding
- •Basic Structure of IPv6 Packets
- •LAN Media
- •Ethernet: Ethernet II
- •Ethernet: IEEE 802.3 SNAP
- •Token Ring: IEEE 802.5 SNAP
- •FDDI
- •IEEE 802.11
- •WAN Media
- •Frame Relay
- •ATM: Null Encapsulation
- •ATM: SNAP Encapsulation
- •IPv6 over IPv4
- •References
- •Added Constants
- •Address Data Structures
- •in6_addr
- •sockaddr_in6
- •sockaddr_storage
- •Wildcard Addresses
- •in6addr_loopback and IN6ADDR_LOOPBACK_INIT
- •Core Sockets Functions
- •Name-to-Address Translation
- •Address-to-Name Translation
- •Using getaddrinfo
- •Address Conversion Functions
- •Socket Options
- •New Macros
- •References
- •General
- •Addressing
- •Applications
- •Sockets API
- •Transport Layer
- •Internet Layer
- •Network Layer Security
- •Link Layer
- •Routing
- •IPv6 Transition Technologies
- •Chapter 1: Introduction to IPv6
- •Chapter 2: IPv6 Protocol for Windows Server 2008 and Windows Vista
- •Chapter 3: IPv6 Addressing
- •Chapter 4: The IPv6 Header
- •Chapter 5: ICMPv6
- •Chapter 6: Neighbor Discovery
- •Chapter 8: Address Autoconfiguration
- •Chapter 9: IPv6 and Name Resolution
- •Chapter 10: IPv6 Routing
- •Chapter 11: IPv6 Transition Technologies
- •Chapter 12: ISATAP
- •Chapter 13: 6to4
- •Chapter 14: Teredo
- •Chapter 15: IPv6 Security Considerations
- •Chapter 16: Deploying IPv6
- •IPv6 Test Lab Setup
- •CLIENT1
- •ROUTER1
- •ROUTER2
- •CLIENT2
- •IPv6 Test Lab Tasks
- •Performing Link-Local Pings
- •Enabling Native IPv6 Connectivity on Subnet 1
- •Configuring ISATAP
- •Configuring Native IPv6 Connectivity for All Subnets
- •Using Name Resolution
- •Configuring an IPv6-Only Routing Infrastructure
- •Overview
- •Mobile IPv6 Components
- •Mobile IPv6 Transport Layer Transparency
- •Mobile IPv6 Messages and Options
- •Mobility Header and Messages
- •Type 2 Routing Header
- •Home Address Option for the Destination Options Header
- •ICMPv6 Messages for Mobile IPv6
- •Modifications to Neighbor Discovery Messages and Options
- •Mobile IPv6 Data Structures
- •Binding Cache
- •Binding Update List
- •Home Agents List
- •Correspondent Registration
- •Return Routability Procedure
- •Detecting Correspondent Nodes That Are Not Mobile IPv6–Capable
- •Mobile IPv6 Message Exchanges
- •Data Between a Mobile Node and a Correspondent Node
- •Binding Maintenance
- •Home Agent Discovery
- •Mobile Prefix Discovery
- •Mobile IPv6 Processes
- •Attaching to the Home Link
- •Moving from the Home Link to a Foreign Link
- •Moving to a New Foreign Link
- •Returning Home
- •Mobile IPv6 Host Sending Algorithm
- •Mobile IPv6 Host Receiving Algorithm
- •References
- •Glossary
- •Index
- •About the Author
- •System Requirements

Introduction
This book is a straightforward discussion of the concepts, principles, and processes of Internet Protocol version 6 (IPv6) and how it is supported by the Microsoft Windows Server 2008 and Windows Vista operating systems. Note that this book does not contain programming code-level details of the IPv6 protocol for Windows Server 2008 and Windows Vista, such as structures, tables, buffers, or coding logic. These details are highly guarded Microsoft intellectual property that is of interest only to a relative handful of software developers. However, this book does contain details of how the Microsoft implementation of IPv6 in Windows Server 2008 and Windows Vista works for described processes and how to modify default behaviors with Netsh.exe tool commands and registry values.
The purpose of this book is to provide an educational vehicle that will enable you to learn IPv6 to a fair level of technical depth—the terms, the addresses, the protocols, and the processes. This book is not intended to be a breezy marketing overview of IPv6 and how it “provides integrated and interoperable technologies to enable exciting new scenarios for personal and enterprise computing.” I will leave that type of documentation to those who are much better at it than I am. The bottom line is that I am a protocols and processes person. My main concern and interest is how the protocols work and what one sees on the wire (what packets are exchanged), and these topics account for the bulk of this book.
Note The contents of this book reflect the Internet standards for IPv6 and the feature set of the IPv6 protocol for Windows Server 2008 and Windows Vista as of Release Candidate 0 (RC0) of Windows Server 2008. For information about changes in Internet standards and the IPv6 protocol for Windows Server 2008 and Windows Vista past Windows Server 2008 RC0, see the Microsoft Windows IPv6 Web site at http://www.microsoft.com/ipv6.
Direct from the Source: Why This Book Is Relevant
A global debate is currently in session regarding IPv6. The debate is not intense, but its frequency seems to be increasing at many technical conferences. Some are claiming that IPv6 has been under development for more than 10 years and no deployments of significance have occurred. Network Address Translator (NAT) and Classless Inter-Domain Routing (CIDR) are referenced as an indication that IPv4 will not be exhausted until some distant future date. However, the evidence at http://www.potaroo.net/tools/ipv4 and http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_8-3/ipj_8-3.pdf now suggests that the IPv4-only nature of the Internet will soon come to an end. At the time of printing this edition, recent announcements by two of the five Regional
xxxvii

xxxviii Introduction
Internet Registries (RIRs) (which you can read about at http://lacnic.net/ipv6/en/ and http://www.arin.net/announcements/20070521.html) have requested that enterprises begin planning for IPv6. This is important because the Internet registries are dispassionate third parties in any technology debate. The RIRs have a problem to solve: maintain a large pool of unique addresses to meet the demand of Internet expansion. As IPv4 addresses are depleted from this reserve, IPv6 is the only viable alternative. This book should give you an understanding of IPv6 technology and the components that make it work. In light of the current trends, this will be essential knowledge for anyone who is involved in next-generation networks.
Ben Schultz
IPv6 Program Manager
Who Should Read This Book
This book is intended for the following audiences:
■ |
Windows Server 2008 and Windows Vista networking consultants and planners This |
|
group includes anyone who will be planning for an eventual IPv6 migration with |
|
Windows Server 2008 and Windows Vista. |
■ |
Microsoft Windows network administrators This group includes anyone who |
|
manages an IPv4-based network and wants to gain technical knowledge about IPv6 and |
|
its implementation in Windows Server 2008 and Windows Vista. |
■Microsoft Certified Systems Engineers (MCSEs) and Microsoft Certified Trainers (MCTs) Regardless of the eventual IPv6 content for Microsoft Official Curriculum (MOC) courseware for Windows Server 2008, this book can be a standard reference for MCSEs and MCTs for IPv6 technology.
■General technical staff Because this book is mostly about IPv6 protocols and processes, independent of its implementation in Windows Server 2008, general technical staff can use this book as an in-depth primer on IPv6 technologies.
■Information technology students This book originated as courseware for internal Microsoft software developers, testers, and program managers and retains its capability to be a textbook for IPv6 courses taught at an organization or educational institution.
What You Should Know Before Reading This Book
This book assumes a foundation of networking knowledge that includes basic networking concepts, widely used networking technologies, and sound knowledge of the TCP/IP suite. Wherever possible, I try to facilitate the reader’s transition to IPv6 by comparing it with the corresponding feature, behavior, or component of IPv4.
Introduction xxxix
For a firm foundation of knowledge of the TCP/IP protocol suite, I cannot recommend a better resource as a prerequisite for this book than Windows Server 2008 TCP/IP Protocols and Services by Joseph Davies (Microsoft Press, 2008). Like this book, this resource is mostly about implementation-independent protocols and processes. As the author of this resource, I may be a bit biased. However, this book was written with Windows Server 2008 TCP/IP Protocols and Services in mind and builds upon it. In fact, this book and Windows Server 2008 TCP/IP Protocols and Services are written as companion volumes. I recommend that Windows Server 2008 TCP/IP Protocols and Services be part of your standard TCP/IP reference library, whether you use Microsoft software or not.
Organization of This Book
Because IPv6 is a replacement for the Internet layer of the widely used TCP/IP protocol suite, there were no convenient sublayers with which to organize the material. Instead, I have ordered the chapters so that they build upon each other in a logical fashion. For example, it is difficult to understand Neighbor Discovery processes without first understanding IPv6 addressing, the IPv6 header, and Internet Control Message Protocol for IPv6 (ICMPv6), and it’s almost impossible to understand IPv6 transition technologies without first understanding IPv6 addressing, Neighbor Discovery processes, name resolution, and routing.
Appendices of This Book
This book contains the following appendices:
■ |
Appendix A: Link-Layer Support for IPv6 A discussion of link-layer encapsulation |
|
of IPv6 packets for typical local area network (LAN) and wide area network (WAN) |
|
technologies. |
■ |
Appendix B: Windows Sockets Changes for IPv6 A description of the enhancements |
|
to Windows Sockets to support both IPv6 and IPv4 at the same time. |
■Appendix C: IPv6 RFC Index A listing of the RFCs and Internet drafts for IPv6 that are the most relevant to the IPv6 implementation in Windows Server 2008 and Windows Vista at the time of this book’s publication. This appendix is not designed to be an exhaustive list and will certainly be obsolete at some level soon after this book is printed.
■ Appendix D: Testing for Understanding Answers At the end of each chapter is a “Testing for Understanding” section with a series of review questions pertaining to the material in the chapter. This appendix provides answers to those review questions.
■Appendix E: Setting Up an IPv6 Test Lab This appendix answers the question, “How do I get it going so that I can play with it?” By using the instructions in this appendix, you can take five computers and create an IPv6 test lab to test address autoconfiguration, routing, and name resolution. At the end, you are left with a working IPv4 and IPv6 or IPv6-only network with which you can experiment on your own.

xl Introduction
■Appendix F: Mobile IPv6 An in-depth discussion of Mobile IPv6, a protocol that allows an IPv6 host to change locations and addresses while maintaining existing transport layer connections.
■Appendix G: IPv6 Reference Tables A reprinting of the most relevant IPv6 tables of IPv6 protocol field values and other parameters.
About the Companion CD-ROM
The companion CD-ROM included with this book contains the following:
■eBook form of this book Adobe Portable Document Format (PDF) version of this book, which allows you to view it online and perform text searches.
■Network Monitor captures Throughout the book, packet structure and protocol processes are illustrated with actual IPv6 packets displayed using Microsoft Network Monitor 3.1, a frame capturing and viewing program (also known as a network sniffer) provided for free by Microsoft. The display of the frames within the capture files depends on the version of Network Monitor you are using. Some capture files cannot be viewed by versions of Network Monitor prior to version 3.1. You can install Network Monitor 3.1 from a link on the companion CD-ROM or from http://go.microsoft.com/fwlink/ ?LinkID=92844. For the latest information about Network Monitor, see the Network Monitor blog at http://blogs.technet.com/netmon/.
■IPv6 RFCs and Internet drafts The Internet Engineering Task Force (IETF) Request for Comments (RFCs) and Internet drafts for IPv6 that are referenced in the chapters and appendices of the book and for understanding the IPv6 implementation in Windows Server 2008 and Windows Vista.
■Training slides A set of Microsoft Office PowerPoint 2003 files that can be used to teach IPv6 using this book. For more information, see “A Special Note to Teachers and Instructors.” To view the training slides, you need Microsoft Office PowerPoint 2003 or later or the PowerPoint Viewer 2003. You can install PowerPoint Viewer 2003 from http://go.microsoft.com/fwlink/?LinkID=59771.
Digital Content for Digital Book Readers If you bought a digital-only edition of this book, you can enjoy select content from the print edition’s companion CD. Visit http://go.microsoft.com/fwlink/?LinkId=105451 to get your downloadable content. This content is always up-to-date and available to all readers.
The CD that accompanies the print edition of this book is not available with this eBook edition, although select CD content is available for download at http://go.microsoft.com/fwlink/?LinkId=105451.