Becoming autonomous

What is an Autonomous System?

The Internet is a collection of arbitrarily connected Autonomous Systems. An Autonomous System (AS), is classically defined as a set of routers under a single technical administration. Those routers use an interior gateway protocol to route packets within the AS, and then use an exterior gateway protocol to route packets to other Autonomous Systems. Even when multiple interior configurations are constructed, the administration of an AS appears to other ASs to have a single, coherent interior routing plan and presents a consistent picture of what destinations are reachable through it.

AS’s are assumed to be administered by a single administrative entity, at least for the purposes of representation of routing information to systems outside of the AS.

How are Autonomous Systems connected?

Autonomous systems are connected in two ways. The first way is physically, there is a direct connection between two AS’s. The second way is through a BGP connection, which is a protocol that travels over a TCP connection (port 179) between the two AS’s BGP daemons. An AS communicates to another AS over a BGP session. This BGP session communicates routes taht can be reached through the advertising AS.

The primary function of a system that speaks BGP is to exchange network reachability information with other BGP systems.


routing daemons

  • bird
    Bird is internet routing daemons which manages TCP/IP based routing
     protocols with full support of all modern routing protocols, easy to use
     configuration interface and powerful route filtering language.
     It supports OSPF, RIPv2 (No v1), BGP and redistribution between the
     protocols with a powerful configuration syntax.
  • mrt
     MRT uses novel approaches to routing architecture design, and
     incorporates features such as parallel lightweight processes, multiple
     processor support, and shared memory. The object-oriented, modular
     design of the software encourages the rapid addition and prototyping
     of experimental routing protocol and inter-domain policy algorithms.
     You can use MRT applications and libraries to:
       * Serve as the backbone routing software for your IPv6 or IPv4
         network connection.
       * Simultaneously handle tasks such as routing policy communication,
         routing policy calculation, and maintenance of a RIB, and
         distribute these tasks over multiple processors or multiple
       * Generate and analyze route flap statistics
       * Generate real-time graphical maps of Internet routing
       * Capture a BGP peering session and monitor it in real time
       * Record and replay sequences of events, such as routing failures
  • quagga
     GNU Quagga is free software which manages TCP/IP based routing protocols.
     It supports BGP4, BGP4+, OSPFv2, OSPFv3, IS-IS, RIPv1, RIPv2, and RIPng as
     well as the IPv6 versions of these.
     As the precessor Zebra has been considered orphaned, the Quagga project
     has been formed by members of the zebra mailing list and the former
     zebra-pj project to continue developing.
     Quagga uses threading if the kernel supports it, but can also run on
     kernels that do not support threading. Each protocol has its own daemon.
     It is more than a routed replacement, it can be used as a Route Server and
     a Route Reflector.
  • routed
    fill in the blank
  • xorp
    Description: eXtensible Open Router Platform
     XORP is the eXtensible Open Router Platform. It implements a number of
     routing protocols for IPv4 and IPv6 and a unified means to configure them. It
     is stable and fully featured enough for production use, and flexible and
     extensible enough to enable network research.
     The following network protocols are currently
     supported: BGP, OSPF, RIP/RIPng, IGMP/MLD and PIM-SM.
  • zebra
    Zebra turned into Quagga
  • openbpd
    OpenBGPD is an OpenBSD BGP implementation. It allows ordinary machines to be used as routers exchanging routes with other systems speaking the BGP protocol.
    Started out of dissatisfaction with other implementations, OpenBGPD nowadays is a fairly complete BGP implementation, powering many sites. Users often praise its ease of use and high performance, as well as its reliability. 
    There is no fully functional linux port, but there is a [partially functional one->] that is full of hacks and just commented out code. it seems to be faster than quagga for the author's needs

Learning BGP

One way to figure out BGP would be to setup a routing daemon in a simulated environment. Doing this in the production environment would be ill-advised, but maybe it could be done locally on a pair of home machines that talk to each other over the internet, or perhaps over a shared VPN connection.

Another possibility would be to try marionnet which is a virtual network laboratory and simulation tool. The description reads, “It allows users to define, configure and run complex computer networks without any need for physical setup. Only a single, possibly even non-networked GNU/Linux host machine is required to simulate a whole Ethernet network complete with computers,
routers, hubs, switchs, cables, and more. As Marionnet is meant to be used also by inexperienced people, it features a very intuitive graphical user interface (using GTK2).”