Table Of Contents
Table Of Contents

Step 18e. Address Forwarding

Goals

[explanation]

Configuration

This step uses the following network:

../../../_images/step18e.png
network OSPF_Area_External_Forwarding
{
    @display("bgb=1064.7,561.6");
    types:
        channel PppLink100M extends DatarateChannel
        {
            delay = 5us;
            datarate = 100Mbps;
        }

    submodules:
        configurator: Ipv4NetworkConfigurator {
            @display("p=618.8,49.399998");
        }
        visualizer: IntegratedCanvasVisualizer {
            @display("p=750.1,49.399998");
        }
        scenarioManager: ScenarioManager {
            @display("p=913.89996,49.399998");
        }
        host1: StandardHost {
            @display("p=92.299995,120.9");
        }
        host2: StandardHost {
            @display("p=92.299995,500.5");
        }
        R1: Router {
            @display("p=382.19998,210.59999");
        }
        R2: Router {
            @display("p=382.19998,390");
        }
        R3: Router {
            @display("p=531.7,299");
        }
        switch1: EtherSwitch {
            @display("p=232.7,118.299995");
        }
        switch2: EtherSwitch {
            @display("p=232.7,499.19998");
        }
        R4: Router {
            @display("p=683.8,299");
        }
        R5: Router {
            @display("p=845,410.8");
        }
        R6: Router {
            @display("p=845,183.3");
        }
        switch3: EtherSwitch {
            @display("p=845,297.69998");
        }
        host3: StandardHost {
            @display("p=683.8,183.3");
        }

    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++;
        R5.ethg++ <--> Eth100M <--> switch3.ethg++;
        R3.pppg++ <--> PppLink100M <--> R4.pppg++;
        switch3.ethg++ <--> Eth100M <--> R4.ethg++;
        R6.ethg++ <--> Eth100M <--> switch3.ethg++;
        host3.ethg++ <--> Eth100M <--> R6.ethg++;
}

The configuration in omnetpp.ini is the following:

[Config Step18e]
description = "Address Forwarding"
network = OSPF_Area_External_Forwarding

# R6 is not an OSPF router.
# forwardingAddress is set to 192.168.22.3 in R5. Other routers forward packets with destination 192.168.22.8
# to R6. If forwardingAddress is unset, packets are forwarded to R5 and then to R6 (packet delivery takes one extra hop).

*.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 R6 host3' address='192.168.22.x' netmask='255.255.255.x' /> \
                                \
                                <route hosts='host*' destination='*' netmask='0.0.0.0' interface='eth0' /> \
                                <route hosts='R6' destination='*' netmask='0.0.0.0' interface='eth0' gateway='192.168.22.1' /> \
                             </config>")

*.R6.hasOspf = false
*.R*.ospf.ospfConfig = xmldoc("ASConfig_Area_ExternalRoute_Forwarding.xml")

# application parameters
*.host1.numApps = 1
*.host1.app[0].typename = "PingApp"
*.host1.app[0].destAddr = "host3"
*.host1.app[0].startTime = 60s

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>switch3" mask="R4>switch3" />
    <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.0" />
    <BroadcastInterface ifName="eth0" areaID="0.0.0.2" />
  </Router>

  <Router name="R5" RFC1583Compatible="true">
    <BroadcastInterface ifName="eth0" areaID="0.0.0.2" />
    <ExternalInterface ifName="eth0" advertisedExternalNetworkAddress="192.168.22.8" advertisedExternalNetworkMask="255.255.255.252" externalInterfaceOutputCost="10" externalInterfaceOutputType="Type1" forwardingAddress="192.168.22.3" />
  </Router>

</OSPFASConfig>

Discussion

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