Step 5a. Mismatched Parameters between two OSPF neighbors¶
Goals¶
The goal of this step is to demonstrate that OSPF routers will not form a full adjacency if certain parameters are mismatched.
For OSPF neighbors to successfully form an adjacency, several parameters must match:
Area ID: Must be the same on both sides of the link.
Hello interval and Dead interval: Must match.
Authentication: Type and keys must match.
Network type: While not always required to match exactly, mismatches can prevent proper adjacency formation.
Stub area flag: Must match if the area is configured as a stub.
When these parameters mismatch, routers may get stuck in states like 2-Way or Init, unable to reach the Full state.
Configuration¶
This configuration is based on Step 5. The OSPF configuration file introduces a parameter mismatch:
R1 and R2: Mismatched Hello intervals
The configuration in omnetpp.ini is the following:
[Config Step5a]
description = "Mismatched Parameters between two OSPF neighbor"
network = InterfaceNetworkType
# R1 and R2 will not establish full adjacency because of mismatch Hello interval
*.configurator.configureIsolatedNetworksSeparatly = true
*.configurator.config = xml("<config> \
<interface hosts='**' address='10.x.x.x' netmask='255.x.x.x'/> \
<route hosts='host*' destination='*' netmask='0.0.0.0' interface='eth0' /> \
</config>")
**.visualizer.interfaceTableVisualizer.displayInterfaceTables = true
**.visualizer.interfaceTableVisualizer.nodeFilter = "not *.N*"
*.visualizer.routingTableVisualizer[0].destinationFilter = "host5"
*.visualizer.routingTableVisualizer[1].destinationFilter = "host0"
*.R*.ospf.ospfConfig = xmldoc("ASConfig_mismatch.xml")
# application parameters
*.host8.numApps = 1
*.host8.app[0].typename = "PingApp"
*.host8.app[0].destAddr = "host11"
*.host8.app[0].startTime = 60s
# TODO: full adjacency forms when it shouln't: R4 and R5 will not establish full adjacency because of mismatch OSPF network type
The OSPF configuration:
<?xml version="1.0"?>
<OSPFASConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="OSPF.xsd">
<Router name="R1" RFC1583Compatible="true">
<PointToPointInterface ifName="ppp0" interfaceOutputCost='0' helloInterval="10" />
<BroadcastInterface ifName="eth0" interfaceOutputCost='0' />
</Router>
<Router name="R2" RFC1583Compatible="true">
<PointToPointInterface ifName="ppp0" interfaceOutputCost='0' helloInterval="15" />
<PointToPointInterface ifName="ppp1" interfaceOutputCost='0' />
</Router>
<Router name="R4" RFC1583Compatible="true">
<BroadcastInterface ifName="eth0" interfaceOutputCost='0' />
<BroadcastInterface ifName="eth1" interfaceOutputCost='0' />
</Router>
<Router name="R5" RFC1583Compatible="true">
<BroadcastInterface ifName="eth0" interfaceOutputCost='0' />
<!-- <PointToPointInterface ifName="eth1" interfaceOutputCost='0' /> TODO: this should prevent full adjacency, but it doesn't-->
<BroadcastInterface ifName="eth1" interfaceOutputCost='0' />
</Router>
<Router name="**" RFC1583Compatible="true">
<BroadcastInterface ifName='eth[*]' areaID='0.0.0.0' interfaceOutputCost='0' />
<PointToPointInterface ifName='ppp[*]' areaID='0.0.0.0' interfaceOutputCost='0' />
</Router>
</OSPFASConfig>
Results¶
The simulation demonstrates adjacency formation failures:
R1 and R2: Because they have different Hello intervals, they cannot properly synchronize their neighbor discovery. They may detect each other but fail to maintain a stable adjacency or have timing issues.
The OSPF module logs show the routers detecting neighbors but failing to reach the Full state. The routing tables reflect the missing adjacencies - routes that would normally use these links are either absent or use alternative paths.
This step highlights the importance of consistent OSPF configuration across interfaces forming an adjacency.
Sources:
omnetpp.ini,
InterfaceNetworkType.ned,
ASConfig_mismatch.xml
Discussion¶
Use this page in the GitHub issue tracker for commenting on this tutorial.