You are previewing IPv6 Core Protocols Implementation.
O'Reilly logo
IPv6 Core Protocols Implementation

Book Description

IPv6 was introduced in 1994 and has been in development at the IETF for over 10 years. It has now reached the deployment stage. KAME, the de-facto open-source reference implementation of the IPv6 standards, played a significant role in the acceptance and the adoption of the IPv6 technology. The adoption of KAME by key companies in a wide spectrum of commercial products is a testimonial to the success of the KAME project, which concluded not long ago.

This book is the first and the only one of its kind, which reveals all of the details of the KAME IPv6 protocol stack, explaining exactly what every line of code does and why it was designed that way. Through the dissection of both the code and its design, the authors illustrate how IPv6 and its related protocols have been interpreted and implemented from the specifications. This reference will demystify those ambiguous areas in the standards, which are open to interpretation and problematic in deployment, and presents solutions offered by KAME in dealing with these implementation challenges.



  • Covering a snapshot version of KAME dated April 2003 based on FreeBSD 4.8
  • Extensive line-by-line code listings with meticulous explanation of their rationale and use for the KAME snapshot implementation, which is generally applicable to most recent versions of the KAME IPv6 stack including those in recent releases of BSD variants
  • Numerous diagrams and illustrations help in visualizing the implementation
  • In-depth discussion of the standards provides intrinsic understanding of the specifications

Table of Contents

  1. Cover
  2. Title Page
  3. Copyright
  4. Dedication
  5. Foreword
  6. Preface
  7. About the Authors
  8. Table of Contents
  9. Chapter 1: Introduction
    1. 1.1 Introduction
    2. 1.2 A Brief History of IPv6 and KAME
    3. 1.3 Overview of the KAME Distribution
    4. 1.4 Overview of BSD Network Implementation
    5. 1.5 Source Code Narrations
    6. 1.6 Mbufs and IPv6
  10. Chapter 2: IPv6 Addressing Architecture
    1. 2.1 Introduction
    2. 2.2 IPv6 Addresses
    3. 2.3 Textual Representation of IPv6 Addresses
    4. 2.4 Address Scopes
    5. 2.5 IPv6 Address Format
    6. 2.6 Node Address Requirements
    7. 2.7 IPv6 Address Space Management
    8. 2.8 Code Introduction
    9. 2.9 Handling Scope Zones
    10. 2.10 Interface Address Structures
    11. 2.11 IPv6 Prefix Structure
    12. 2.12 Overview of Address Manipulation Routines
    13. 2.13 Interface Initialization for IPv6
    14. 2.14 IPv6 Interface Address Configuration
    15. 2.15 Deleting an IPv6 Address
    16. 2.16 Operation with Address Configuration Utility
  11. Chapter 3: Internet Protocol Version 6
    1. 3.1 Introduction
    2. 3.2 IPv6 Header Format`
    3. 3.3 IPv6 Extension Headers
    4. 3.4 Source Address Selection
    5. 3.5 Code Introduction
    6. 3.6 IPv6 Packet Address Information in Mbuf
    7. 3.7 Input Processing: ip6_input() Function
    8. 3.8 Processing Hop-by-Hop Options Header: ip6_hopopts_input() Function
    9. 3.9 Processing Destination Options Header: dest6_input() Function
    10. 3.10 Reassembling Fragmented Packets
    11. 3.11 Processing Routing Header: route6_input() Function
    12. 3.12 Forwarding: ip6_forward() Function
    13. 3.13 Output Processing
  12. Chapter 4: Internet Control Message Protocol for IPv6
    1. 4.1 Introduction
    2. 4.2 ICMPv6 Messages
    3. 4.3 Path MTU Discovery Mechanism
    4. 4.4 Node Information Query
    5. 4.5 Code Introduction
    6. 4.6 ICMPv6 Input Processing
    7. 4.7 Path MTU Discovery Implementation
    8. 4.8 ICMPv6 Output Processing
    9. 4.9 Node Information Query Implementation
    10. 4.10 Node Information Operation
  13. Chapter 5: Neighbor Discovery and Stateless Address Autoconfiguration
    1. 5.1 Introduction
    2. 5.2 Neighbor Discovery Protocol Overview
    3. 5.3 Stateless Address Autoconfiguration Overview
    4. 5.4 ND Protocol Messages
    5. 5.5 Example Exchanges of ND Protocol Messages
    6. 5.6 ND Protocol Packet Types and Formats
    7. 5.7 Neighbor Discovery Option Types and Formats
    8. 5.8 Next-Hop Determination and Address Resolution
    9. 5.9 Neighbor Unreachability Detection Algorithm
    10. 5.10 Stateless Address Autoconfiguration
    11. 5.11 Router Specific Operation
    12. 5.12 Host Specific Operation
    13. 5.13 Code Introduction
    14. 5.14 Initialization Functions
    15. 5.15 Neighbor Cache Management Functions
    16. 5.16 ND Protocol Messages Processing Functions
    17. 5.17 ND Protocol Message Options Processing Functions
    18. 5.18 Default Router Management Functions
    19. 5.19 Prefix Management Functions
    20. 5.20 Stateless Address Autoconfiguration Functions
    21. 5.21 Duplicate Address Detection Functions
    22. 5.22 Miscellaneous Functions
  14. Chapter 6: Transport Layer Implications
    1. 6.1 Introduction
    2. 6.2 TCP and UDP over IPv6
    3. 6.3 Pseudo Header for IPv6
    4. 6.4 Checksum Difference between IPv4 and IPv6
    5. 6.5 IPv4-mapped IPv6 Address Usage
    6. 6.6 Code Introduction
    7. 6.7 General Operations on PCBs and Sockets
    8. 6.8 TCP-over-IPv6
    9. 6.9 UDP-over-IPv6
    10. 6.10 Raw IPv6
    11. 6.11 Summary of Operation with IPv4-mapped IPv6 Addresses
    12. 6.12 Viewing IPv6 Connections with netstat
    13. 6.13 Configuring IPv4-mapped IPv6 Address Support
  15. Chapter 7: Socket API Extensions
    1. 7.1 Introduction
    2. 7.2 The Basic Socket API–[RFC3493]
    3. 7.3 The Advanced Socket API–[RFC3542]
    4. 7.4 Kernel Implementation of IPv6 Socket APIs
    5. 7.5 Socket Options and Ancillary Data Examples
    6. 7.6 Implementation of Library Functions—libinet6
  16. References
  17. Index
    1. A
    2. B
    3. C
    4. D
    5. E
    6. F
    7. G
    8. H
    9. I
    10. J
    11. K
    12. L
    13. M
    14. N
    15. O
    16. P
    17. Q
    18. R
    19. S
    20. T
    21. U
    22. V
    23. W
    24. Z
  18. Instructions for online access