Tunnel-AT Documentation

Section 1: Overview
Section 2: How to Install
Section 3: System Configuration
Section 4: System Orgnization
Section 5: Changes to Oringnal code
Section 6: Reference

Section 1: Overview

Tunnel-AT system is a reference implementation of draft-xu-ipfrr-tunnelat. Tunnel-AT mechanism improves the Tunnel IP fast re-route mechanism. It provides 100% node protection coverage in a symmetric biconnected network at a computational cost of less than one full SPT.

Section 2: How to Install

1. Preparation

1.1. Fetch source tarballs

1.2. Fetch related Tunnle-AT patchs.

    [Download All]

1.3 Patch source code

1.3.1 Patch kernel source code

Put the kernel tarball in a directory where you have permission (eg. /home/name) and then unpack it:

tar xvf linux-2.6.30.9.tar.gz

Apply linux-2.6.30.9-tunat.patch to it:

patch -p1 -i linux-2.6.30.9-tunat.patch
1.3.2 Patch Quagga source code

Put the Quagga tarball in directory /home/name and unpack it:

tar xvf quagga.0.99.15.tar.gz

Apply quagga-0.99.15-tunat.patch to it:

patch -p1 -i quagga-0.99.15-tunat.patch
1.3.3 Patch Iproute2 source code

Put the Iproute2 tarball in directory /home/name and unpack it:

tar xvf iproute2-2.6.31.tar.gz

Apply iproute2-2.6.31-tunat.patch to it:

patch -p1 -i iproute2-2.6.31-tunat.patch
1.3.4 Patch linux system header files

Before complile source files of quaaga and iproute2, we need to modify a linux system header:

         /usr/include/rtnetlink.h

Let's add two route message attribution RTA_TE and RTA_DF to the data type:

         enum rtattr_type_t

the patch file is linux-header.patch. Perform following line with administrator privileges:

patch -p0 -i linux-header

You should now have the sources correctly installed.

2. Install Linux kernel

Make sure you have no stale .o files and dependencies lying around:

cd linux-2.6.30.9-tunat
make mrproper

2.1. Configuring the kernel:

Before you configure kernel make sure you have development tools (gcc compilers and related tools) are installed on your system. Make sure you have at least gcc 3.2 available.

make config

You have to select different options as per your need. To enable Tunnel-AT routing, "IP: Tunnel-AT routing" option should be selected. The option is located in

Networking Support -> Networking Options -> IP: Tunnel-AT routing

2.2. Compiling the kernel:

Start compiling to create a compressed kernel image, enter:

make

Start compiling kernel modules:

make modules

2.3. Installing the kernel:

It is also possible to do "make install" if you have grub installed to suit the kernel makefiles:

make install

To do the actual install you have to be root, but none of the normal build should require that.

If you configured any of the parts of the kernel as `modules', you will also have to do "make modules_install".

make modules_install

Keep a backup kernel handy in case something goes wrong. Make sure you keep a backup of the modules corresponding to that kernel, as well. If you are installing a new kernel with the same version number as your working kernel, make a backup of your modules directory before you do a "make modules_install".

2.4. Create an initrd image

Type the following command in a shell prompt:

cd /boot
mkinitramfs -o initrd.img-2.6.30.9-tunat 2.6.30.9-tunat

2.5. Update grub configuration file

update-grub

Reboot with the new kernel and enjoy.

3. Install Quagga

3.1 Configuration

./configure --prefix=/usr/local --sysconfdir=/etc/quagga \
--localstatedir=/var/run/quagga \
--enable-user=quagga --enable-group=quagga --enable-vty-group=quagga

3.2 Complie

After configuring Quagga, you will need to compile it for your system. Simply issue the command make in the root of the source directory and the software will be compiled.

make

3.3 Install

Installing the software to your system consists of copying the compiled programs and supporting files to a standard location. After the installation process has completed, these files have been copied from your work directory to `/usr/local/bin', and `/usr/local/etc'.

To install the Quagga suite, issue the following command with administrator privileges at your shell prompt:

make install

4. Install Iproute2

4.1 Configuration

./configure

4.2 Complie

make

4.3 Install

make install

Section 3: System Configuration

1. Configuring System

1.1 Create quagga user account.

addusr quagga

Complete the following steps according to the output tips.

2. Configuring Zebra

2.1 required configration option

hostname HOSTNAME
Set hostname of the router.
password PASSWORD
Set password for vty interface. If there is no password. a vty won't accept connections
enable password PASSWORD
Set passowrd for enable mood.
interface IFNAME
Enable the interface IFNAME.
ip address ADDRESS/PREFIX
Set ip address for the interface.
log file FILENAME LEVEL
Specify FILENAME as log file. If the optional second argument LEVEL specifying the logging level is not present, the default logging level debugging will be used.

2.2 An example

For a host A, it connects to two network 192.168.5.0/24 and 192.168.2.0/24.
      +------------+           +--------+          +------------+
     /              \       .1 |        | .2      /              \
    | 192.168.2.0/24 |---------+ host A +--------| 192.168.5.0/24 |
     \              /          |        |         \              / 
      +------------+           +--------+          +------------+  
		
The configurtion file is:
   	+------------------------------------+
   	|                                    |
	|   !                                |
	|   ! zebra configuration file       |
	|   !                                |
	|   ! Route-A                        |
	|   !                                |
	|                                    |
	|   hostname Router-A                |
	|   password zebra                   |
	|   enable password zebra            |
	|                                    |
	|   ! Interface setting              |
	|   interface eth0                   |
	|   	ip address 192.168.5.2/24    |
	|                                    |
	|   interface eth1                   |
	|   	ip address 192.168.2.1/24    |
	|                                    |
	|   interface lo                     |
	|                                    |
	|   line vty                         |
	|                                    |
	|   log file /root/zebra.log         |
	|                                    |
	+------------------------------------+
		

3. Configuring OSPFd

3.1 required configration option

hostname HOSTNAME
Set hostname of the router.
password PASSWORD
Set password for vty interface. If there is no password. a vty won't accept connections
interface IFNAME
Enable the interface IFNAME.
router ospf
Enable ospf process.
network A.B.C.D/M area A.B.C.D
Specifies the OSPF enabled interface(s). If the interface has an address from range A.B.C.D/M then ospf is enabled on this interface so router can provide network information to the other ospf routers via this interface.

3.2 An example

The configurtion file is:

	+------------------------------------+
	|                                    |
	|   !                                |
	|   ! OSPFd configuration file       |
	|   !                                |
	|   ! Route-A                        |
	|   !                                |
	|                                    |
	|   hostname ospfd                   |
	|   password zebra                   |
	|                                    |
	|   ! Interface                      |
	|   interface eth0                   |
	|   interface eth1                   |
	|                                    |
	|   ! Route                          |
	|   router ospf                      |
	|     network 192.168.2.0/24 area 0  |
	|   router ospf                      |
	|     network 192.168.5.0/24 area 0  |
	|                                    |
	|   line vty                         |
	|   log file /root/ospfd.log         |
	|                                    |
	+------------------------------------+
		

Section 4: System Orgnization

Section 5: Changes to Oringnal code

5.1 Quagga

5.1.1 Ospfd

5.1.2 Zebra

5.1.3 Lib

5.2 Linux Kernel

5.3 Iproute2

Section 6: Reference

  1. draft-xu-ipfrr-tunnelat
  2. Lightweight IP Fast Reroute with Tunnel-AT: Algorithm and Implementation
  3. Quagga-http://www.quagga.net
  4. Linux kernel-http://www.kernel.org
  5. Iproute2-http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2

2009-2010