Table Of Contents
Table Of Contents

Step 14. Hierarchical OSPF topology and summary LSA

Goals

[explanation]

Configuration

This step uses the following network:

../../../_images/step141516.png
network OSPF_AreaTest
{
    @display("bgb=1153.1,510.9");

    types:
        channel PppLink100M extends DatarateChannel
        {
            delay = 5us;
            datarate = 100Mbps;
        }

    submodules:
        configurator: Ipv4NetworkConfigurator {
            @display("p=760.5,65");
        }
        visualizer: IntegratedCanvasVisualizer {
            @display("p=893.1,65");
        }
        scenarioManager: ScenarioManager {
            @display("p=1055.6,65");
        }
        host1: StandardHost {
            @display("p=102.7,67.6");
        }
        host2: StandardHost {
            @display("p=92.299995,445.9");
        }
        R1: Router {
            @display("p=392.6,157.3");
        }
        R2: Router {
            @display("p=392.6,336.69998");
        }
        R3: Router {
            @display("p=542.1,245.7");
        }
        switch1: EtherSwitch {
            @display("p=243.09999,66.299995");
        }
        switch2: EtherSwitch {
            @display("p=243.09999,445.9");
        }
        host3: StandardHost {
            @display("p=1085.5,245.7");
        }
        R4: Router {
            @display("p=678.6,245.7");
        }
        R5: Router {
            @display("p=821.6,245.7");
        }
        switch3: EtherSwitch {
            @display("p=955.5,244.4");
        }

    connections:
        host1.ethg++ <--> Eth100M <--> switch1.ethg++;
        switch1.ethg++ <--> Eth100M <--> R1.ethg++;
        R1.pppg++ <--> PppLink100M <--> R3.pppg++;
        switch2.ethg++ <--> Eth100M <--> host2.ethg++;
        R1.pppg++ <--> PppLink100M <--> R2.pppg++;
        R2.pppg++ <--> PppLink100M <--> R3.pppg++;
        R2.ethg++ <--> Eth100M <--> switch2.ethg++;
        R4.pppg++ <--> PppLink100M <--> R5.pppg++;
        R5.ethg++ <--> Eth100M <--> switch3.ethg++;
        switch3.ethg++ <--> Eth100M <--> host3.ethg++;
        R3.pppg++ <--> PppLink100M <--> R4.pppg++;
}

The configuration in omnetpp.ini is the following:

[Config Step14]
description = "Hierarchical OSPF topology and summary LSA"
network = OSPF_AreaTest

*.configurator.config = xml("<config> \
                                <interface hosts='R3' towards='R4' address='192.168.0.x' netmask='255.255.255.x' /> \
                                <interface hosts='R4' towards='R3' address='192.168.0.x' netmask='255.255.255.x' /> \
                                \
                                <interface among='host1 host2 R1 R2 R3' address='192.168.11.x' netmask='255.255.255.x' /> \
                                <interface among='R3 R4 R5 host3' address='192.168.22.x' netmask='255.255.255.x' /> \
                                \
                                <route hosts='host*' destination='*' netmask='0.0.0.0' interface='eth0' /> \
                             </config>")

*.R*.ospf.ospfConfig = xmldoc("ASConfig_Area.xml")

The OSPF configuration:

<?xml version="1.0"?>
<OSPFASConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="OSPF.xsd">

  <!-- Areas -->
  <Area id="0.0.0.0">
    <AddressRange address="R3>R4" mask="R3>R4" />
    <AddressRange address="R4>R3" mask="R4>R3" />
  </Area>

  <Area id="0.0.0.1">
    <AddressRange address="R1>switch1" mask="R1>switch1" />
    <AddressRange address="R1>R2" mask="R1>R2" />
    <AddressRange address="R1>R3" mask="R1>R3" />        
    
    <AddressRange address="R2>switch2" mask="R2>switch2" />
    <AddressRange address="R2>R1" mask="R2>R1" />
    <AddressRange address="R2>R3" mask="R2>R3" />        

    <AddressRange address="R3>R1" mask="R3>R1" />
    <AddressRange address="R3>R2" mask="R3>R2" />
  </Area>

  <Area id="0.0.0.2">
    <AddressRange address="R4>R5" mask="R4>R5" />
    
    <AddressRange address="R5>R4" mask="R5>R4" />
    <AddressRange address="R5>switch3" mask="R5>switch3" />
  </Area>

  <!-- Routers -->
  <Router name="R1" RFC1583Compatible="true">
    <BroadcastInterface ifName="eth0" areaID="0.0.0.1" interfaceMode="Passive" />
    <PointToPointInterface ifName="ppp0" areaID="0.0.0.1" />
    <PointToPointInterface ifName="ppp1" areaID="0.0.0.1" />
  </Router>

  <Router name="R2" RFC1583Compatible="true">
    <BroadcastInterface ifName="eth0" areaID="0.0.0.1" interfaceMode="Passive" />
    <PointToPointInterface ifName="ppp0" areaID="0.0.0.1" />
    <PointToPointInterface ifName="ppp1" areaID="0.0.0.1" />
  </Router>

  <Router name="R3" RFC1583Compatible="true">
    <PointToPointInterface ifName="ppp0" areaID="0.0.0.1" />
    <PointToPointInterface ifName="ppp1" areaID="0.0.0.1" />
    <PointToPointInterface ifName="ppp2" areaID="0.0.0.0" />
  </Router>

  <Router name="R4" RFC1583Compatible="true">
    <PointToPointInterface ifName="ppp0" areaID="0.0.0.2" />
    <PointToPointInterface ifName="ppp1" areaID="0.0.0.0" />
  </Router>

  <Router name="R5" RFC1583Compatible="true">
    <BroadcastInterface ifName="eth0" areaID="0.0.0.2" interfaceMode="Passive" />
    <PointToPointInterface ifName="ppp0" areaID="0.0.0.2" />
  </Router>

</OSPFASConfig>

Results

[explanation]

Sources: omnetpp.ini, OSPF_AreaTest.ned, ASConfig_Area.xml

Discussion

Use this page in the GitHub issue tracker for commenting on this tutorial.