Why This Book?
How badly will IPv6 break your application? What do you need to consider to make your application IPv6-ready? What questions should you ask?
In the ideal world, your application should just work on IPv6, just as it does on IPv4. However, in the real world, application issues crop up. These could be as simple as having a user interface field that only allows the input of dotted-decimal IPv4 addresses, or something more fundamental, such as an application binding exclusively to an IPv4 transport interface.
While there have been many books published about IPv6, including OReillys own IPv6 Essentials and IPv6 Network Administration , almost all existing books focus on understanding the protocol itself and using it at a network layer. They contain much discussion about using network-level tools and even about creating applications that interact directly with the network. However, the concerns related to IPv6 at the upper application layers are mentioned only briefly, if at all. The Internet Engineering Task Force (IETF) has published RFC 4038, which addresses many of these concerns, but the concerns have not found their way out into mainstream books.
This short book is designed to help you understand what you need to think about to be sure that your app will work as well with IPv6 as it does with IPv4. This book is not so much about all the solutions but rather about the questions you need to be asking.
For IPv6 to truly be adopted on a large scale, ultimately the applications running on our desktop systems, laptops, and mobile devices all need to play nice with IPv6. That is the end goal of this bookto help enable individuals, companies, and organizations to migrate their apps to IPv6 so that they can transition their networks into IPv6 networks .
Given that now, in 2011, many companies are just starting to pay attention to IPv6, and given that many apps are just now moving to IPv6, this book will continue to evolve to address issues identified as more applications make the move. Id love to receive any feedback you have on issues you encounter in migrating your apps to IPv6and I expect that youll see updates to this book come out over time.
Is This Book for You?
Are you an application developer? A product manager? A product marketing manager? A documentation author? A training instructor? A system/network architect? This book is designed to help you understand what issues you need to explore with your application .
Developers, you will come away with enough information to go through your application and make the necessary changes. Product managers, you will gain an understanding of what points you need to considerand what you need to ask of your technical teams. If you are in marketing, documentation, or training, you will get a good sense of what youll need to think about changing in your materials. And if you are a system/network architect looking at your overall IPv6 implementation, you should leave with a better sense of what changes may need to be considered across the applications that are deployed in your infrastructure.
Note
This book is not a tutorial in the details of IPv6. The focus is on IPv6 issues as they relate to application developers and the book does not get into topics such as network-layer changes between IPv4 and IPv6. If you would like to gain a deeper understanding of IPv6, I recommend also reading IPv6 Essentials by Silvia Hagen.
What Is in the Book?
To start your dive into IPv6 application migration, , explores one of the biggest ways that IPv6 may impact your application: all the many little tweaks you may need to make to your user interfaces. These could be changes to your display or input fields or something more subtle, like the fact that you may have to think about capitalization in IP addresses.
, explains the new DNS records for IPv6 addresses and explains how a happy eyeballs approach can get users the information they want in the fastest way possible.
, raises questions around APIs, both those your app provides and those your app uses, and how they treat IP addresses.
, wraps up this first bit of the book by exploring how you store the IPv6 addresses you receive from user input, DNS, or APIs. If you store them in a memory location, is the location big enough or will there be a buffer overflow? Can a configuration file accommodate both IPv4 and IPv6 address types?
, drops down briefly into the network layer to discuss issues application developers may need to think about. Does your application work in a dual-stack system? Will it bind to both addresses? Does it need to care about multiple IPv6 addresses or about IPv6 privacy extensions? And is NAT a concern at all?
, explores three areas that complement your actual applicationdocumentation, training, and testingand asks how you are handling IPv6 in those areas.
Finally, the book wraps up with , providing links to more about migrating applications and a checklist summarizing the key questions from the earlier chapters.
Conventions Used in This Book
The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and file extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names, databases, data types, environment variables, statements, and keywords.
Constant width bold
Shows commands or other text that should be typed literally by the user.
Constant width italic
Shows text that should be replaced with user-supplied values or by values determined by context.
Tip
This icon signifies a tip, suggestion, or general note.
Caution
This icon indicates a warning or caution.
Using Code Examples
This book is here to help you get your job done. In general, you may use the code in this book in your programs and documentation. You do not need to contact us for permission unless youre reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing a CD-ROM of examples from OReilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your products documentation does require permission.