USC CSD Home


Exercise #1

Intra-domain Route Oscillations

Due 11:45PM (firm)
 
In this example, you will reproduce a recently-discovered convergence problem with BGP. You will set up some routers and workstations (the latter acting as routers) and show that, in some scenarios, BGP routing computation never converges, resulting in significant routing message traffic.

What you will get out of this exercise:

  • configuring low-level networking on a modern OS, and on modern router OSs
  • a hands on understanding of how backbone routing in the Internet works today
Electronic submissions only.
 
Resources
Read and be familiar with as many of these resources as you can:
 
Output
[BC: Changed 1/30/2007]
You will submit a lab report. The lab report should contain answers to the questions listed in the exercise description. The lab report should be in ASCII, PostScript, PDF or HTML. You should name the file ex1.* with the appropriate file extension. You may prepare the report using any good word processing software (MS Word, Latex, Lyx).

[BC: Changed 1/30/2007]
In addition, you will be asked to submit data files and other kinds of files. To do this, put your report and all required files into a directory named ex1. Then tar and gzip this directory into a file called ex1.tar.gz and submit it electronically. (Read the documentation for the Unix "tar" command on how to do this).

Even if you are not able to complete the exercise, be sure to submit a partial lab report. You will get partial credit for your efforts.

 
Steps in the Exercise

The Physical Topology

In the first step, you will connect two Cisco routers and four Linux workstations to set up the following physical topology.
In this topology, A and B are Cisco routers and the other machines are Linux workstations. In addition, you will use the hub on the rack of the routers. You will connect these machines according to the following instructions.

First, designate one Cisco 7000 router as node A, and one Cisco 4000 as B. Nodes C, D and E are Linux machines with at least 2 Ethernet ports. Node F is a Linux machine with at least one Ethernet port.

Then connect direct links using cross-over cables. The following links are direct links between two Ethernet ports on two machines: A-B, A-C, A-D and B-E.

Finally, connect shared links to the hub using straight-through cables. You will connect another Ethernet port on machine C, D and E to the hub. You will also connect an Ethernet port on F to the hub.

Now you are done with the physical topology. Note that you are not able to ping any connected machines before setting up their interfaces.

Logging onto the Machines

Log onto each Cisco router. Answer these questions in your lab report.
  1. How many interfaces does each Cisco router have?
  2. What command did you use to determine this?
Log onto each of the Unix boxes. Answer these questions in your lab report.
  1. How many interfaces does each Linux box have?
  2. What command did you use to determine this?

Setting up the Interfaces

For this step, you will need to set up an address assignment plan for the topology. This plan will assign addresses for different IP interfaces. In particular, this plan also calls for creating virtual interfaces on box F, so that the resulting IP-level topology looks like this:
For this, you will need to refresh your memory of IP addresses, interfaces, subnets and addressing and virtual interfaces. Use Web resources or any system administration book to find out this information.

Setup the first two bytes of all addresses according to the last four digits of your USC ID. If your USC ID is abcdefghij, then all addresses must begin with 1gh.ij. For example, if your USC ID is xxxxxx1234, then all addresses must be in the form of 112.34.x.x.

Answer these questions in your lab report.

  1. How many subnets are there in your topology?
  2. Call each subnet by the names of the machines on that subnet in alphabetical order (e.g. if you think machines A, C and F are on one subnet, call that subnet ACF). List the names of all the subnets.
  3. For each subnet, list the IP address prefix and netmask that you assigned.
  4. What commands did you use to configure the virtual interfaces on F?

Setting up Routing on the Topology

The next step in the exercise would be to configure the boxes A, B, C, D and E to be in one BGP autonomous system (AS). In this step, you will also configure boxes A and B to be route reflectors, and boxes C and D will be clients of A, and box E will be a client of B. This configuration is shown below.
By the time you get to this step, you should have become quite familiar with BGP, with route reflectors and how they can cause route oscillations, and with configuring bgpd in Zebra. Use the resources listed above and any others you find on the Internet.

Answer these questions in your lab report.

  1. Include the zebra configuration files for routers C, D and E. Call these files c.zebra.conf, d.zebra.conf etc. You should also include the zebra bgpd files from C, D and E. Call these files c.bgpd.conf, d.bgpd.conf etc.
  2. Ask the routers A and B to display their routing tables, BGP routing tables, and BGP neighbor information. List the commands you use and the output.
  3. Do the same for the "routers" C, D and E. List the commands you use and the output.
As part of this step, you will also need to configure intra-domain routing within the AS consisting of routers A-E. For this you should use OSPF. You will need to figure out how to configure OSPF on a Cisco box and on Zebra. So that you can get route oscillations to work, you will also need to assign link costs to some of the links in the topology. Figure out how to do this.

Answer these questions in your lab report.

  1. Include the running-config of routers A and B. Call these files a.conf and b.conf.
  2. Include the zebra OSPF configuration files for routers C, D and E. Call these files c.ospf.conf, d.ospf.conf etc.
  3. Which links did you assign costs to, and what costs did you assign?
  4. Ask the routers A and B to display their routing tables and BGP routing tables. List the commands you use and the output.
  5. Do the same for the "routers" C, D and E. List the commands you use and the output.

The Final Step

As a final step, you will "feed" some routes from "router" F to C, D and E. For this, you will run an instance of Zebra on F and cause Zebra's bgpd to export some routes.

To do this final step, you will need to figure out what routes F will export to each of C, D and E to cause BGP oscillations to happen (see RFC 3345 BGP Persistent Route Oscillation Condition).

Answer the following questions in your lab report.

  1. What routes did you want the box F to export? When you specify the routes, you should include any other relevant information, such as BGP attribute values etc.
  2. Include the zebra bgpd configuration file that you used on F. Call it f.bgpd.conf.
  3. Did you observe a routing oscillation? To observe this, you will have to enable tracing in the zebra daemons running on C, D and E. Include the resulting trace files in your submission. Call these trace files c.bgp.trace, d.bgp.trace, etc. You will also need to enable BGP message dumping in the zebra daemons to store the BGP routing messages received by C, D, and E. Include the resulting trace files in your submission. Call these trace files c.bgp.packets, d.bgp.packets, etc.
You're done! Submit the report electronically as outlined above.
 

   [Please see copyright regarding copying.]