Transcript
Page 1: Software tools for networking

IEEE Network • November/December 20044

Routing DaemonsSince the first days of the Internet, sev-eral open source routing daemons havebeen developed. Some of the early dae-mons are still used and new projectshave started during the last years. Threeactive open source projects are develop-ing routing daemons that support differ-ent routing protocols. Zebra [1] is todayamong the most mature routing dae-mons and has formed the basis for theQuagga [2] project that appears to bemore actively developed today. Zebraand Quagga use an architecture of coop-erating processes. One process isresponsible for the maintenance of therouting table and managing the kernelrouting table.

Other processes implementing rout-ing protocols interact with this processto modify the routing and forwardingtables. There is also one daemon thatcan be used as a proxy to interactivelyconfigure the other processes with acommand line interface as in produc-tion routers. Quagga currently supportsboth IPv4 and IPv6. It supports bothintra- and interdomain unicast routingprotocols: RIPv1, RIPv2, RIPng,OSPFv2, OSPFv3, and BGP-4. ForBGP, Quagga can also be used as aroute reflector or route server. An IS-IS daemon is also being developed forQuagga. Quagga is written in C andworks on GNU/Linux, BSD variants,and Solaris. IPv6 support is not avail-able on all platforms.

The BIRD Internet Routing Daemon(BIRD) [3] is another open source pro-ject developing routing daemons. LikeQuagga, BIRD aims to support bothIPv4 and IPv6. The current BIRDrelease contains a BGP daemon, a RIPdaemon, and an Open Shortest PathFirst (OSPF) daemon (but OSPF onlysupports IPv4). BIRD includes a simpleprogramming language that allows theoperator to define filters. Those filtersare interpreted when a route is beingpassed between protocols and routingtables. The filters can decide whetherthe route is allowed to pass or not andcan optionally change some attributes ofthe route. BIRD is written in C and has

been developed on GNU/Linux withkernels 2.0–2.4.

The eXtensible Open Router Plat-form (XORP) [4] is a recent opensource project whose goal is to imple-ment the main IPv4 and IPv6 unicastand multicast routing protocols. XORPis written in C++, and is being devel-oped on FreeBSD and GNU/Linux.XORP supports the main IPv4 and IPv6unicast routing protocols: RIP, OSPF,and BGP. XORP also supports multicastrouting with implementations of IGMP,MLD, and PIM-SM. Some processesare responsible for the routing protocolsand their configuration, while others areresponsible for maintenance of therouting tables. XORP includes a novelinterprocess communication mechanismto allow these processes to coordinatetheir tasks. In addition to the code,XORP also provides extensive documen-tation including design note documents.A live CD allows one to easily testXORP.

Emulation EnvironmentsWhen developing new implementationsof routing protocols or extending exist-ing implementations, it is important tobe able to perform tests in realistic envi-ronments. One solution is to have adedicated testbed with several worksta-tions and use it as a test platform. How-ever, such a testbed can be expensiveand may be difficult to use. An alterna-tive to real testbeds is to run severalinstances of the routing protocols on anemulated network running on oneworkstation.

User Mode Linux (UML) [5] is a mod-ification to the Linux kernel that allowsa Linux kernel to run as a normal pro-cess on a workstation running Linux.For this, UML virtualizes the hardwareso that the kernel running as a processinteracts with the normal kernel toaccess the hardware. UML allows sever-al Linux kernels to run, each supportingits own processes, as different processeson a single workstation. Furthermore,UML provides several types of commu-nication facilities that allow the process-es running on the virtual kernels to

exchange packets. This can be very use-ful when testing routing protocol dae-mons. However, starting several virtualkernels, each running a routing protocoldaemon with its own configuration, andsetting the virtual links between thosevirtual kernels may require a lot ofmanual operations. Fortunately, thistask can be simplified by using the Vir-tual Network User Mode Linux(VNUML) [6] or Netkit [12]. VNUML isa set of scripts that allow one to easilybuild and configure a virtual networktopology of interconnected virtual ker-nels on one Linux workstation. Thistopology is written in XML format, anda special tool creates the correspondingtopology by interacting with UML. Netk-it also relies on UML to build emulatednetwork topologies composed of Linuxkernels and the necessary routing dae-mons. Netkit also contains a graphicaleditor to build the network topologies.Furthermore, the Netkit Website con-tains several laboratory experimentsthat would be a good complement tonetworking courses.

Another approach to emulate a net-work is the one chosen for the Integrat-ed Multiprotocol Network Emulator/Simulator (IMUNES) [7]. Instead ofrunning entire kernels as processes,IMUNES chose to use a single FreeBSDkernel and virtualize the networkingstack. This kernel-level emulationallows efficient traffic manipulation,since packets can be moved throughoutthe virtual network topology only by ref-erence, whereas in a user-level imple-mentation performance and throughputwould be constrained by frequent pack-et copying and context switching. Byusing this virtualization, IMUNES canattach different applications (e.g., rout-ing protocol daemons) to differentTCP/IP stacks. Each application canthus have the illusion of running on asingle workstation with its own networkinterfaces. IMUNES is also able to sim-ulate the transmission delays on linksand can be used to build large emulatednetwork topologies. IMUNES also con-tains a GUI that allows the user to cre-ate and interconnect emulated routers,switches, or workstations. InsideIMUNES, each router runs Zebra on avirtualized networking stack, and workis ongoing to support XORP as well.Inside the GUI, it is possible to changethe configuration parameters of theequipment and also manually updatethe configuration of routers.

SimulatorsNetwork simulators are often used byresearchers to evaluate the performance

SOFTWARE TOOLS for NETWORKING/Edited by Olivier Bonaventure

Routing protocols are essential in most networks as they allow the routers to buildtheir routing tables. The development of efficient routing protocols has been and isstill an important problem being addressed by the networking community. In this col-umn, we describe a set of open-source tools that can be used to develop test or utilizerouting protocols. Comments and suggestions about tools that could be described inthis column should be sent by email to Olivier Bonaventure ([email protected]).

Olivier BonaventureDept. of Computing Science and Engineering

Université Catholique de Louvain (UCL), Belgium

Page 2: Software tools for networking

IEEE Network • November/December 2004 IEEE Network • September/October 2004

SOFTWARE TOOLS for NETWORKING

of existing mechanisms or propose newones. The NS simulator [8] is widelyused in the networking community.Until recently, there was no model ofBGP inside NS. The BGP++ module[9] solves this limitation and allows NSusers to perform interdomain routingsimulations. Instead of developing amodel of BGP from scratch in NS, theauthors of BGP++ choose to port anexisting BGP daemon, Zebra, to NS.This allows BGP++ to support most ofZebra. Thus, it is possible to use it tobuild complex routing scenarios withroute reflectors or confederations.BGP++ is open source and written inC++.

Another discrete event simulator isSSFNet [10]. SSFNet took a differentapproach than BGP++. Besides staticrouting, SSFNet supports the OSPF andBGP routing protocols. In both cases,an implementation of each protocol wasdeveloped from scratch and validated.In SSFNet a simulated router runningBGP and OSPF maintains its own for-

warding table. It is thus possible to per-form simulation with both TCP/IP traf-fic and routing protocols to evaluate theimpact of a change in routing (e.g., alink failure) on the performance of TCPas seen from the end systems.

Another approach to simulating net-works is the one chosen by the author ofC-BGP[11]. C-BGP was designed toreproduce how interdomain routes arechosen in the Internet. In C-BGP a net-work is modeled as a set of routers andlinks. Each link can be configured withdelay information and its IGP cost forintradomain links. Each router is con-figured by specifying the eBGP andiBGP sessions attached to the router aswell as the BGP routing policies to beapplied. When a simulation starts, therouters will exchange BGP messages,and each router applies the BGP deci-sion process to determine its best routeto reach each destination. C-BGP canthus be used to predict the impact of alink failure or the addition of the newlink on the interdomain routes chosen

by an autonomous system (AS). C-BGPcan also be used to study the impact ofpolicy changes on the routes exchangedwith other ASes. C-BGP is open sourceand written in C. It runs on GNU/Linux, FreeBSD, and Solaris.

References[1] Zebra, http://www.zebra.org[2] Quagga Routing Suite, http://www.quagga.

net[3] BIRD Internet Routing Daemon (BIRD),

http://bird.network.cz[4] eXtensible Open Router Platform (XORP),

http://www.xorp.org[5] User Mode Linux (UML), http://user-mode-

linux.sourceforge.net/[6] Virtual Network User Mode Linux (VNUML),

http://www.dit.upm.es/vnuml[7] Integrated Multiprotocol Network Emulator/

Simulator (IMUNES), http://www.tel.fer.hr/imunes/

[8] Virtual InterNetwork Testbed (NS and NAM)http://www.isi.edu/nsnam/vint/

[9] BGP++, http://www.ece.gatech.edu/research/labs/MANIACS/BGP++/

[10] SSFNet, http://www.ssfnet.org/[11] C-BGP, http://cbgp.info.ucl.ac.be[12] Netkit, http://www.netkit.org


Top Related