December 2, 2013

OSPF: Open Shortest Path First


A Routing Protocol Based on the Link-State Algorithm
Objective
The objective of this lab is to configure and analyze the performance of the Open Shortest Path First (OSPF) routing protocol.
Overview
In Lab 6 we discussed RIP, which is the canonical example of a routing protocol built on the distance-vector algorithm. Each node constructs a vector containing the distances (costs) to all other nodes and distributes that vector to its immediate neighbors. Link-state routing is the second major class of intra-domain routing protocol. The basic idea behind link-state protocols is very simple: Every node knows how to reach its directly connected neighbors, and if we make sure that the totality of this knowledge is disseminated to every node, then every node will have enough knowledge of the network to build a complete map of the network.
Once a given node has a complete map for the topology of the network, it is able to decide the best route to each destination. Calculating those routes is based on a well-known algorithm from graph theory—Dijkstra’s shortest-path algorithm.
OSPF introduces another layer of hierarchy into routing by allowing a domain to be partitioned into areas. This means that a router within a domain does not necessarily need to know how to reach every network within that domain—it may be sufficient for it to know how to get to the right area. Thus, there is a reduction in the amount of information that must be transmitted to and stored in each node. In addition, OSPF allows multiple routes to the same destination to be assigned the same cost and will cause traffic to be distributed evenly over those routers.
In this lab, you will set up a network that utilizes OSPF as its routing protocol. You will analyze the routing tables generated in the routers and will observe how the resulting routes are affected by assigning areas and enabling load balancing.
Procedure
Create a New Project
1. Start OPNET IT Guru Academic Edition ⇒ Choose New from the File menu.
2. Select Project and click OK ⇒ Name the project <your initials>_OSPF, and the scenario No_Areas ⇒ Click OK.
3. In the Startup Wizard: Initial Topology dialog box, make sure that Create Empty Scenario is selected Click Next Select Campus from the Network Scale list ⇒ Click Next three times ⇒ Click OK.
Create and Configure the Network
The slip8_gtwy node model represents an IP-based gateway supporting up to eight serial line interfaces at a selectable data rate. The RIP or OSPF protocols may be used to automatically and dynamically create the gateway's routing tables and select routes in an adaptive manner.
The PPP_DS3 link has a data rate of 44.736 Mbps.
Initialize the Network:
  1. The Object Palette dialog box should now be on top of your project workspace. If it is not there, open it by clicking clip_image004. Select the routers item from the pull-down menu on the object palette.
a. Add to the project workspace eight routers of type slip8_gtwy. To add an object from a palette, click its icon in the object palette ⇒ Move your mouse to the workspace and click to place the object ⇒ You can keep on left-clicking to create additional objects. Right-click when you are finished placing the last object.
  1. Switch the palette configuration so it contains the internet_toolbox. Use bidirectional PPP_DS3 links to connect the routers. Rename the routers as shown below.
  1. Close the Object Palette and then save your project.
clip_image006

Configure the Link Costs:
1. We need to assign link costs to match the following graph:









2. Like many popular commercial routers, OPNET router models support a parameter called a reference bandwidth to calculate the actual cost, as follows:
Cost = (Reference bandwidth) / (Link bandwidth)
where the default value of the reference bandwidth is 1,000,000 Kbps.
3. For example, to assign a cost of 5 to a link, assign a bandwidth of 200,000 Kbps to that link. Note that this is not the actual bandwidth of the link in the sense of transmission speed, but merely a parameter used to configure link costs.
  1. To assign the costs to the links of our network, do the following:
i. Select all links in your network that correspond to the links with a cost of 5 in the above graph by shift-clicking on them.
ii. Select the Protocols menu ⇒ IPRoutingConfigure Interface Metric Information.
iii. Assign 200000 to the Bandwidth (Kbps) field ⇒ Check the Interfaces across selected links radio button, as shown Click OK. 

clip_image010

  1. Repeat step 4 for all links with a cost of 10 but assign 100,000 Kbps to the
Bandwidth (Kbps) field.
  1. Repeat step 4 for all links with a cost of 20 but assign 50,000 Kbps to the
Bandwidth (Kbps) field.
  1. Save your project.
Configure the Traffic Demands:
  1. Select both RouterA and RouterC by shift-clicking on them.
i. Select the Protocols menu ⇒ IPDemandsCreate Traffic Demands
⇒ Check the From RouterA radio button as shown ⇒ Keep the color as blue ⇒ Click Create. Now you should see a blue-dotted line representing the traffic demand between RouterA and RouterC.


clip_image012

2. Select both RouterB and RouterH by shift-clicking on them.
i. Select the Protocols menu ⇒ IPDemandsCreate Traffic Demands
⇒ Check the From RouterB radio button ⇒ Change the color to red ⇒ Click
OK Click Create.
Now you can see the lines representing the traffic demands as shown.

clip_image014

3. To hide these lines: Select the View menu ⇒ Select Demand Objects ⇒ Select
Hide All.
  1. Save your project.
Configure the Routing Protocol and Addresses:
Auto-Assign IP Addresses assigns a unique IP address to connected IP interfaces whose IP address is currently set to auto-assigned. It does not change the value of manually set IP addresses.
1. Select the Protocols menu ⇒ IPRoutingConfigure Routing Protocols.
2. Check the OSPF check box ⇒ Uncheck the RIP check box ⇒ Uncheck the
Visualize Routing Domains check box, as shown:


clip_image016

3. Click OK.
4. Select RouterA and RouterB only ⇒ Select the Protocols menu ⇒ IPRouting Select Export Routing Table for Selected Routers Click OK on
the Status Confirm dialog box.
5. Select the Protocols menu ⇒ IPAddressing ⇒ Select Auto-Assign IP Addresses.
6. Save your project.
Configure the Simulation
Here we need to configure some of the simulation parameters:
1. Click on clip_image018 and the Configure Simulation window should appear.
2. Set the duration to be 10.0 minutes.
3. Click OK and then save your project.
Duplicate the Scenario
In the network we just created, all routers belong to one level of hierarchy (i.e., one area). Also, we didn’t enforce load balancing for any routes. Two new scenarios will be created. The first new scenario will define two new areas in addition to the backbone area. The second one will be configured to balance the load for the traffic demands between RouterB and RouterH.

The Areas Scenario:

Loopback interface allows a client and a server on the same host to communicate with each other using TCP/IP.
1. Select Duplicate Scenario from the Scenarios menu and give it the name
Areas Click OK.
2. Area 0.0.0.1:
i. Select the three links that connect RouterA, RouterB, and RouterC by shift-clicking on them ⇒ Select the Protocols menu ⇒ OSPFConfigure Areas ⇒ Assign the value 0.0.0.1 to the Area Identifier, as shown ⇒ Click OK.

clip_image020

ii. Right-click on RouterCEdit Attributes ⇒ Expand the OSPF Parameters hierarchy ⇒ Expand the Loopback Interfaces hierarchy ⇒ Expand the row0 hierarchy ⇒ Assign 0.0.0.1 to the value of the Area ID attribute ⇒ Click OK.
3. Area 0.0.0.2:
i. Click somewhere in the project workspace to disable the selected links and then repeat step 2-i for the three links that connect RouterF, RouterG, and RouterH but assign the value 0.0.0.2 to their Area Identifier.

OPNET provides two types of IP load balancing:

With Destination Based, load balancing is done on a per-destination basis. The route chosen from the source router to the destination network is the same for all packets. With Packet Based, load balancing is done on a per-packet basis. The route chosen from the source router to the destination network is redetermined for every individual packet.
4. To visualize the areas we just created, select the Protocols menu ⇒ OSPFVisualize Areas Click OK. The network should look like the following one with different colors assigned to each area (you may get different colors though).
Note:
- The area you did not configure is the backbone area and its Area Identifier = 0.0.0.0.
- The figure shows the links with a thickness of 3.


clip_image022
The Balanced Scenario:
  1. Under the Scenarios menu, Switch to Scenario ⇒ Select No_Areas.
  1. Select Duplicate Scenario from the Scenarios menu, and give it the name
Balanced Click OK.
3. In the new scenario, select both RouterB and RouterH by shift-clicking on them.
  1. Select the Protocols menu ⇒ IPRoutingConfigure Load Balancing Options Make sure that the option is Packet-Based and the radio button Selected Routers is selected as shown Click OK.
clip_image024

5. Save your project.
Run the Simulation
To run the simulation for the three scenarios simultaneously:
1. Go to the Scenarios menu ⇒ Select Manage Scenarios.
2. Click on the row of each scenario and click the Collect Results button. This should change the values under the Results column to <collect> as shown.

clip_image026

3. Click OK to run the three simulations. Depending on the speed of your processor, this may take several seconds to complete.
4. After the three simulation runs complete, one for each scenario, click Close and then save your project.
View the Results
The No_Areas Scenario:
1. Go back to the No_Areas scenario.
2. To display the route for the traffic demand between RouterA and RouterC: Select the Protocols menu ⇒ IPDemandsDisplay Routes for Configured Demands Expand the hierarchies as shown and select RouterA Æ RouterC ⇒ Go to the Display column and pick Yes ⇒ Click Close.

clip_image028

3. The resulting route will appear on the network as shown:

clip_image030

4. Repeat step 2 to show the route for the traffic demand between RouterB and RouterH. The route is as shown below. (Note: Depending on the order in which you created the network topology, the other “equal-cost” path can be used, that is, the RouterB-RouterA-RouterD-RouterF-RouterH path).
clip_image032

The Areas Scenario:
  1. Go to scenario Areas.
  1. Display the route for the traffic demand between RouterA and RouterC. The route is as shown:
clip_image034

3. Save your project.
The Balanced Scenario:
  1. Go to scenario Balanced.
  1. Display the route for the traffic demand between RouterB and RouterH. The route is as shown:
clip_image036

3. Save your project.

2 comments:

C program to Read From a File

#include <stdio.h> #include <stdlib.h> void main() {     FILE *fptr;     char filename[15];     char ch;   ...