Step 18e. Address Forwarding¶
Goals¶
[explanation]
Configuration¶
This step uses the following network:
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>
Results¶
[explanation]
Sources:
omnetpp.ini
,
OSPF_Area_External_Forwarding.ned
,
ASConfig_Area_ExternalRoute_Forwarding.xml