This paper presents a comprehensive review of the ARPANET routing algorithm, from its original implementation to our plans for future modifications. We hope that by collecting this information, and by providing considerable details, we can provide others with a useful reference document concerning some of the practical problems of network algorithm design. Much of the discussion below assumes a basic familiarity with the principles of packet switching, the ARPANET implementation, and some of the relevant terminology, information which can be found, for example, in [4]. Sections 1 and 2 give a brief summary of basic routing concepts and of the original routing algorithm, respectively. The following two sections describe in detail subsequent modifications and the actual implementation currently in use. Section 5 then discusses some problems that have developed over the past few years, as network usage has grown considerably. The final sections outline some explanations for these problems and some mechanisms for improving performance. We are in the process of implementing these and other changes to the routing algorithm.