BGP4: Inter-Domain Routing in the Internet
Authors: John W. Stewart,  III
Venue:  (1998)

From the Book:This book is about Border Gateway Protocol Version 4 (BGP4). At the time of this writing, BGP4, the latest version of BGP, has been deployed extensively on routers within the Internet. BGP is a routing protocol for the Internet Protocol (IP). A routing protocol is defined by a set of message formats for describing the reachability and preference for network addresses along with rules for processing information learned through these messages. The role played by routing protocols in networks is to ensure that information can be sent between computers connected to the network. For example, an individual dialing into the Internet from home probably wants to access information, make a purchase, or communicate with friends or colleagues. These resources may be far away from the user's computer, and it is the routing protocols that are responsible for making sure that information can be exchanged between the user and the resources. BGP is an inter-domain routing protocol. The Internet is a collection of many thousands of networks--from the largest backbones to the smallest dial-up providers and from multinational corporations to an individual dentist's office. Routing protocols are run completely internally to each of these networks as well as between a network and its neighbor. Inter-domain routing protocols such as BGP are the glue that ties the various networks together to make sure that a user of one network can reach a resource no matter where it connects to the network. The number of people who either need or want to know about BGP has increased dramatically in the past few years, for two reasons. First, the growth in the number of Internet service providers has been explosive in the recent past. Second, many companies depend on the Internet for mission-critical exchange of information or for revenue stream either through Internet sales or through the sale of advertising space on Web pages. Such organizations often need to understand and use BGP either because of their sheer size or as a way of maximizing the efficiency or reliability of their Internet connection(s). This book presents a practical introduction to BGP and is structured so that it can serve as a reference for people who need to use BGP. Chapter 1 gives an introduction to the TCP/IP protocol suite and to routing in general. Chapter 2 describes the protocol itself, including the messages and the rules for processing information learned through the protocol. Chapter 3 describes how BGP is used and explains the operational details that are important to know to use BGP. Chapter 4 describes the major extensions that have been made to the original specification to increase the protocol's usability, stability, and scope of operation. The intended audience is people who have a solid understanding of general computing and at least a cursory familiarity with networks. The background presented in Chapter 1 is as brief as possible, although it attempts to give enough information so that someone who is not an expert in IP can understand the operational details of BGP as well as the reasons for some of the design choices. For readers who are curious about either TCP/IP in general, routing in general, or some particular area of BGP, the Appendix lists a number of references for further reading. Acknowledgments This is a short book, but it created more than its fair share of stress in my life for several months. Trying to tackle the project of writing a book for the first time shortly after moving across the country, starting a new job with a Bay Area networking start-up, and starting a new relationship certainly presented some challenges. Given this set of challenges, there are a number of people I need to thank for helping me start and, more important, finish the project. First, I should thank Mary Hart (nee Harrington) of Addison Wesley Longman, Inc., who is responsible for the overall project. She was patient, persistent, and, amazingly, pleasant in her periodic requests for status updates. Next, I should thank John Fuller of Addison Wesley Longman, Inc.'s production department. He was extremely professional and reliable in seeing the book through to publication. Next, I should thank Allison Mankin of the University of Southern California's Information Sciences Institute. Allison was my boss for a year and suggested to Mary Hart that she check with me to see whether I had an interest in writing a book on BGP. Allison has been a friend to me in many ways for most of my career, and I appreciate everything she has done for me. Next, I should thank my professional friends and colleagues. It is certainly they, and not I, who are responsible for my knowing enough about BGP to write this book. My jobs at the Corporation for National Research Initiatives, MCI, USC/ISI, and now Juniper Networks, along with my associated involvement in the IETF, have given me a chance to meet and learn from some incredibly talented people. It's impossible to list everyone, but some of the people I'd like to mention are Roy Alcala, Tony Bates, Scott Bradner, Vint Cerf, Ravi Chandra, Enke Chen, Bruce Cole, Dennis Ferguson, Scott Huddle, Joe Lawrence, Tony Li, Allison Mankin, Yakov Rekhter, John Scoggin, Rob Sparre, and Paul Traina. Next, I should thank the people who reviewed both the proposal for this book and an early draft of the full manuscript. Their comments were helpful and insightful and definitely improved the final product. Many thanks to Jeffrey Burgan (@Home Network), Joe Furgerson (Juniper Networks), Gerald L. Hopkins (Bell Atlantic), Barry Margolin, Robert Minnear, and Yakov Rekhter (Cisco Systems). Finally, I should thank my family. My mother, father, and sister were very supportive, albeit from 3,000 miles away. My partner, Tim Houston, struck an unbelievable balance of encouraging me to keep working while simultaneously being a pleasant distraction. He dealt with my being absent for quite a while, and I really appreciate his patience. John W. Stewart III jstewart@juniper.net San Francisco