IPv6 Core Protocols Implementationby Qing Li, Tatuya Jinmei, Keiichi Shima
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
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
Meet the Author
Qing Li is a senior architect at Blue Coat Systems, Inc. leading the design and development efforts of the next-generation IPv6 enabled secure proxy appliances. Qing holds multiple US patents. Qing is a contributing author of the book titled Handbook of Networked and Embedded Control Systems published in June 2005. He is the author of the embedded systems development book titled Real-Time Concepts for Embedded Systems published in April 2003.
Tatuya Jinmei, Ph.D,a senior software architect at Internet Systems Consortium, Inc. He had been a core developer of the KAME project since the launch of the project through its conclusion. In 2003, he received the Ph.D degree from Keio University, Japan, based on his work at KAME.
Keiichi Shima is a senior researcher at Internet Initiative Japan Inc. He was a core developer of the KAME project from 2001 to the end of the project and developed Mobile IPv6/NEMO Basic Support protocol stack. He is now working on the new mobility stack (the SHISA stack) for BSD operating systems.
and post it to your social network
Most Helpful Customer Reviews
See all customer reviews >
This book is an essential addition to your library if you want to understand IPv6 networking beyond just the surface. Initially the book will serve as a detailed introduction to IPv6, but the biggest value is later when it serves as a trusted reference book in your networking library. As the authors intended, it will serve as an implementation reference for IPv6 like how the Stevens¿ book on TCP/IP from the nineties served as the bible for TCP/IP (and IPv4) implementations. I still go back to that book when I want to understand some aspects of the BSD TCP/IP stack (which is the ancestor to many contemporary TCP/IP stacks.) I expect to use this book as a reference in the same way for many years as we start migrating to IPv6. Who better to write an implementation-oriented book on IPv6 than the developers involved in the KAME project and the lead architect on the IPv6 stack of VxWorks? The KAME developers wrote their code in close sync with the evolution of IPv6 in the IETF and were privy to not just the authoring of IPv6 RFCs but the hundreds of invaluable side discussions that typically happen at the IETF conferences and mailing lists. When reading the book you can make this out easily from the interesting insights the authors provide on various aspects of the IPv6 protocols design as well as reasons for some implementation choices versus others. I also like the several places in the book where the IPv6 design is compared and contrasted with similar aspects of IPv4. This is very useful since most of us that buy this book have been working for a while with IPv4 and understand its design. The book assumes that the reader is reasonably familiar with TCP/IP IPv4 and BSD Sockets programming. If you¿re already familiar with IPv6 then you can jump straight into almost any place in the book. If you are new to IPv6 and want to use this book initially as an introduction I suggest that you read the book in two passes. In the first pass you should read all the chapters, stopping in each chapter before the ¿Code Introduction¿ subsection. This first pass will give you an introduction to the IPv6 protocol, IPv6 addressing, ICMPv6, Neighbor Discovery (ND), Autoconfiguration and the Sockets API for IPv6 ¿ these constitute the core of what you need to know about IPv6. You could stop with this pass and then use the rest of the book as a reference. Or you could keep going and do a second pass of all chapters and go through the code sections. This second pass will now be much easier since you now have a good overall grasp of IPv6. When it comes to the code walk-throughs and explanation of data structures I found that the authors have done a very meticulous job. Every interesting line of code is explained in detail and as I mentioned before there are many useful insights into ¿why¿s of the code¿ rather than dry comments on what it does. The book also comes with 2 CDROMs which contain all the referenced KAME source code and the FreeBSD 4.8 release. However, if you¿re like me and want only the latest/greatest release, I suggest going to the latest release of your choice of a BSD-based OS and browsing those source files instead. As a Mac guy I went with the latest kernel sources for Mac OS X 10.4. The Mac OS X Darwin kernel (a.k.a. XNU, not to be confused with Xinu OS from Comers' TCP/IP books) is a derivative of BSD built on top of a MACH microkernel. You can find the Darwin/XNU sources at Apple's open source website. The IPv6 stack in Darwin/XNU is a port from KAME. I found it relative easy to follow the code explanations in the book with the XNU version of the IPv6 code. As you would expect, the line numbers from the book don¿t match the XNU line numbers, but the filenames are identical and it is relatively easy to find the corresponding code snippets referenced in the book. There were definitely some differences between the two code trees, but I did not run into anything that was substantially different in the sections I read. All in al