| List of Figures | xix |
| List of Tables | xxv |
| Preface | xxvii |
| Acknowledgments | xxix |
| Introduction | xxxi |
| CHAPTERS | |
| 1 Introduction to IPv6 | 1 |
| Limitations of IPv4 | 1 |
| Consequences of the Limited IPv4 Address Space | 3 |
| Features of IPv6 | 7 |
| New Header Format | 7 |
| Large Address Space | 7 |
| Efficient and Hierarchical Addressing and Routing Infrastructure | 8 |
| Stateless and Stateful Address Configuration | 8 |
| Built-in Security | 8 |
| Better Support for QoS | 9 |
| New Protocol for Neighboring Node Interaction | 9 |
| Extensibility | 9 |
| Comparison of IPv4 and IPv6 | 9 |
| IPv6 Terminology | 11 |
| The Case for IPv6 Deployment | 14 |
| IPv6 Solves the Address Depletion Problem | 14 |
| IPv6 Solves the International Address Allocation Problem | 14 |
| IPv6 Restores End-to-End Communication | 15 |
| IPv6 Uses Scoped Addresses and Address Selection | 15 |
| IPv6 has More Efficient Forwarding | 16 |
| IPv6 has Built-in Security and Mobility | 16 |
| Testing for Understanding | 16 |
| 2 IPv6 Protocol for the Windows .NET Server 2003 Family | 17 |
| Architecture of the IPv6 Protocol for the Windows .NET Server 2003 Family | 17 |
| Features of the IPv6 Protocol for the Windows .NET Server 2003 Family | 19 |
| Basic Stack Support | 19 |
| 6to4 | 20 |
| ISATAP | 20 |
| 6over4 | 20 |
| PortProxy | 20 |
| Temporary Addresses | 20 |
| DNS Support | 21 |
| IPSec Support | 21 |
| Static Router Support | 22 |
| Address Selection | 22 |
| Site Prefixes in Router Advertisements | 23 |
| Application Support | 23 |
| Internet Explorer | 23 |
| Telnet Client | 24 |
| FTP Client | 24 |
| Web Server | 24 |
| File and Print Sharing | 25 |
| Windows Media Services | 25 |
| Network Monitor | 25 |
| SNMP MIB Support | 25 |
| Application Programming Interfaces | 26 |
| Windows Sockets | 26 |
| Remote Procedure Call | 27 |
| IP Helper | 27 |
| Win32 Internet Extensions | 27 |
| .NET Framework | 28 |
| Installing and Configuring the IPv6 Protocol | 28 |
| IPv6-enabled Utilities | 28 |
| Ipconfig | 29 |
| Route | 29 |
| Ping | 31 |
| Tracert | 33 |
| Pathping | 34 |
| Netstat | 35 |
| IPv6 Command Line Utilities | 38 |
| Netsh.exe | 39 |
| Ipsec6.exe | 43 |
| Testing for Understanding | 43 |
| 3 IPv6 Addressing | 45 |
| The IPv6 Address Space | 45 |
| Current Allocation | 46 |
| IPv6 Address Syntax | 48 |
| Compressing Zeros | 49 |
| IPv6 Prefixes | 50 |
| Types of IPv6 Addresses | 51 |
| Unicast IPv6 Addresses | 52 |
| Aggregatable Global Unicast Addresses | 52 |
| Topologies Within Global Addresses | 54 |
| Local-Use Unicast Addresses | 54 |
| Special IPv6 Addresses | 56 |
| Compatibility Addresses | 57 |
| NSAP Addresses | 57 |
| Multicast IPv6 Addresses | 58 |
| Recommended Multicast IPv6 Addresses | 60 |
| Solicited-Node Address | 60 |
| Anycast IPv6 Addresses | 61 |
| Subnet-Router Anycast Address | 62 |
| IPv6 Addresses for a Host | 62 |
| IPv6 Addresses for a Router | 62 |
| Subnetting the IPv6 Address Space | 63 |
| Subnetting for NLA IDs | 64 |
| Subnetting for SLA IDs/Subnet IDs | 69 |
| IPv6 Interface Identifiers | 73 |
| EUI-64 Address-based Interface Identifiers | 74 |
| Temporary Address Interface Identifiers | 78 |
| Mapping IPv6 Multicast Addresses to Ethernet Addresses | 79 |
| IPv4 Addresses and IPv6 Equivalents | 80 |
| References | 81 |
| Testing for Understanding | 81 |
| 4 The IPv6 Header | 85 |
| Structure of an IPv6 Packet | 85 |
| IPv4 Header | 86 |
| IPv6 Header | 89 |
| Values of the Next Header Field | 92 |
| Comparing the IPv4 and IPv6 Headers | 93 |
| IPv6 Extension Headers | 96 |
| Extension Headers Order | 97 |
| Hop-by-Hop Options Header | 97 |
| Destination Options Header | 102 |
| Routing Header | 110 |
| Fragment Header | 112 |
| Authentication Header | 117 |
| Encapsulating Security Payload Header and Trailer | 118 |
| IPv6 MTU | 118 |
| Upper-Layer Checksums | 119 |
| References | 120 |
| Testing for Understanding | 120 |
| 5 ICMPv6 | 123 |
| Overview of ICMPv6 | 123 |
| Types of ICMPv6 Messages | 124 |
| ICMPv6 Header | 124 |
| ICMPv6 Error Messages | 125 |
| Destination Unreachable | 126 |
| Packet Too Big | 128 |
| Time Exceeded | 129 |
| Parameter Problem | 129 |
| ICMPv6 Informational Messages | 131 |
| Echo Request | 131 |
| Echo Reply | 132 |
| Comparing ICMPv4 and ICMPv6 Messages | 133 |
| Path MTU Discovery | 135 |
| Changes in PMTU | 136 |
| References | 137 |
| Testing for Understanding | 137 |
| 6 Neighbor Discovery | 139 |
| Neighbor Discovery Overview | 139 |
| Neighbor Discovery Message Format | 141 |
| Neighbor Discovery Options | 142 |
| Source and Target Link-Layer Address Options | 143 |
| Prefix Information Option | 144 |
| Redirected Header Option | 148 |
| MTU Option | 149 |
| Advertisement Interval Option | 152 |
| Home Agent Information Option | 152 |
| Route Information Option | 153 |
| Neighbor Discovery Messages | 156 |
| Router Solicitation | 156 |
| Router Advertisement | 158 |
| Neighbor Solicitation | 162 |
| Neighbor Advertisement | 165 |
| Redirect | 168 |
| Summary of Neighbor Discovery Messages and Options | 171 |
| Neighbor Discovery Processes | 172 |
| Conceptual Host Data Structures | 173 |
| Address Resolution | 174 |
| Neighbor Unreachability Detection | 178 |
| Duplicate Address Detection | 182 |
| Router Discovery | 186 |
| Redirect Function | 191 |
| Host Sending Algorithm | 195 |
| IPv4 Neighbor Messages and Functions and IPv6 Equivalents | 197 |
| References | 197 |
| Testing for Understanding | 198 |
| 7 Multicast Listener Discovery | 201 |
| Overview of Multicast Listener Discovery | 201 |
| IPv6 Multicast Overview | 202 |
| Host Support for Multicast | 202 |
| Router Support for Multicast | 204 |
| MLD Packet Structure | 207 |
| MLD Messages | 208 |
| Multicast Listener Query | 208 |
| Multicast Listener Report | 210 |
| Multicast Listener Done | 212 |
| Summary of MLD | 214 |
| References | 214 |
| Testing for Understanding | 214 |
| 8 Address Autoconfiguration | 217 |
| Address Autoconfiguration Overview | 217 |
| Autoconfigured Address States | 218 |
| Types of Autoconfiguration | 219 |
| Autoconfiguration Process | 220 |
| IPv6 Protocol for the Windows .NET Server 2003 Family and Windows XP Autoconfiguration Specifics | 221 |
| Autoconfigured Addresses for the IPv6 Protocol for the Windows .NET Server 2003 Family and Windows XP | 224 |
| References | 227 |
| Testing for Understanding | 228 |
| 9 IPv6 and Name Resolution | 229 |
| Name Resolution for IPv6 | 229 |
| DNS Enhancements for IPv6 | 229 |
| Name Resolution Support in the Windows .NET Server 2003 Family | 231 |
| Hosts File | 231 |
| DNS Server Service | 232 |
| DNS Resolver | 232 |
| DNS Dynamic Update | 232 |
| Address Selection Rules | 233 |
| References | 234 |
| Testing for Understanding | 234 |
| 10 IPv6 Routing | 235 |
| Routing in IPv6 | 235 |
| IPv6 Routing Table | 235 |
| End-to-End IPv6 Delivery Process | 239 |
| IPv6 on the Sending Host | 239 |
| IPv6 on the Router | 240 |
| IPv6 on the Destination Host | 243 |
| IPv6 Routing Protocols | 246 |
| Overview of Dynamic Routing | 246 |
| Routing Protocol Technologies | 248 |
| Routing Protocols for IPv6 | 249 |
| Static Routing with the IPv6 Protocol for the Windows .NET Server 2003 Family and Windows XP | 253 |
| References | 257 |
| Testing for Understanding | 258 |
| 11 Coexistence and Migration | 261 |
| Coexistence and Migration Overview | 262 |
| Node Types | 262 |
| Compatibility Addresses | 263 |
| Coexistence Mechanisms | 265 |
| Dual IP Layer | 265 |
| IPv6 over IPv4 Tunneling | 266 |
| DNS Infrastructure | 268 |
| Tunneling Configurations | 269 |
| Router-to-Router | 269 |
| Host-to-Router and Router-to-Host | 270 |
| Host-to-Host | 271 |
| Types of Tunnels | 272 |
| 6over4 | 274 |
| 6to4 | 277 |
| 6to4 Support in Windows XP and the Windows .NET Server 2003 Family | 280 |
| ISATAP | 283 |
| Using an ISATAP Router | 285 |
| Configuring the IPv6 Protocol for Windows XP and the Windows .NET Server 2003 Family as an ISATAP Router | 291 |
| ISATAP and 6to4 Example | 292 |
| PortProxy | 296 |
| Migrating to IPv6 | 299 |
| References | 299 |
| Testing for Understanding | 299 |
| 12 IPv6 Mobility | 303 |
| IPv6 Mobility Overview | 303 |
| IPv6 Mobility Components | 304 |
| IPv6 Mobility Messages and Options | 307 |
| Destination Options Header Options | 307 |
| ICMPv6 Messages | 310 |
| Modifications to Neighbor Discovery Messages and Options | 312 |
| IPv6 Mobility Data Structures | 313 |
| Binding Cache | 314 |
| Binding Update List | 315 |
| Home Agents List | 316 |
| IPv6 Mobility Communication | 316 |
| Communication Between a Mobile Node and a Correspondent Node | 317 |
| Communication Between a Mobile Node and Its Home Agent | 325 |
| IPv6 Mobility Processes | 331 |
| Attaching to the Home Link | 331 |
| Moving From the Home Link to a Foreign Link | 332 |
| Moving from a Foreign Link to Another Foreign Link | 341 |
| Returning Home | 344 |
| IPv6 Mobility Host Sending Algorithm | 347 |
| IPv6 Mobility Host Receiving Algorithm | 349 |
| References | 352 |
| Testing for Understanding | 352 |
| APPENDIXES | |
| A Link-Layer Support for IPv6 | 355 |
| Basic Structure of IPv6 Packets | 355 |
| LAN Media | 356 |
| Ethernet: Ethernet II | 356 |
| Ethernet: IEEE 802.3 SNAP | 358 |
| Token Ring: IEEE 802.5 SNAP | 360 |
| FDDI | 362 |
| WAN Media | 364 |
| PPP | 365 |
| X.25 | 367 |
| Frame Relay | 369 |
| ATM: Null Encapsulation | 370 |
| ATM: SNAP Encapsulation | 372 |
| IPv6 over IPv4 | 373 |
| References | 374 |
| B Windows Sockets Changes for IPv6 | 375 |
| Added Constants | 375 |
| Address Data Structures | 376 |
| in6_addr | 376 |
| sockaddr_in6 | 376 |
| sockaddr_storage | 377 |
| Wildcard Addresses | 377 |
| in6addr_loopback and IN6ADDR_LOOPBACK_INIT | 378 |
| Core Sockets Functions | 378 |
| Name-to-Address Translation | 378 |
| Address-to-Name Translation | 381 |
| Using getaddrinfo | 382 |
| Address Conversion Functions | 383 |
| Socket Options | 383 |
| New Macros | 384 |
| Unsupported APIs | 385 |
| References | 385 |
| C IPv6 RFC Index | 387 |
| General | 387 |
| Addressing | 387 |
| Applications | 388 |
| Sockets API | 389 |
| Transport Layer | 389 |
| Network Layer | 389 |
| Network Layer Security | 391 |
| Link Layer | 391 |
| Routing | 392 |
| Coexistence and Migration | 393 |
| D Testing for Understanding Answers | 395 |
| Chapter 1: Introduction to IPv6 | 395 |
| Chapter 2: IPv6 Protocol for the Windows .NET Server 2003 Family | 396 |
| Chapter 3: IPv6 Addressing | 398 |
| Chapter 4: The IPv6 Header | 402 |
| Chapter 5: ICMPv6 | 403 |
| Chapter 6: Neighbor Discovery | 404 |
| Chapter 7: Multicast Listener Discovery | 408 |
| Chapter 8: Address Autoconfiguration | 409 |
| Chapter 9: IPv6 and Name Resolution | 410 |
| Chapter 10: IPv6 Routing | 411 |
| Chapter 11: Coexistence and Migration | 413 |
| Chapter 12: IPv6 Mobility | 415 |
| E Setting Up an IPv6 Test Lab | 419 |
| Setting Up the Infrastructure | 419 |
| DNS1 | 421 |
| CLIENT1 | 421 |
| ROUTER1 | 422 |
| ROUTER2 | 422 |
| CLIENT2 | 423 \ |
| IPv6 Test Lab Tasks | 424 |
| Link-Local Ping | 424 |
| Creating an IPv6 Static Routing Infrastructure | 425 |
| Using Name Resolution | 427 |
| Using IPSec | 428 |
| Using Temporary Addresses | 433 |
| F IPv6 Reference Tables | 435 |
| GLOSSARY | 441 |
| INDEX | 461 |