Ospfv2¶
Package: inet.routing.ospfv2
simple module Ospfv2
Implements the OSPFv2 routing protocol.
The ospfConfig parameter can specify an XML file describing the
configuration of all OSPF routers and their interfaces in the network.
The XML configuration must contain exactly one <OSPFASConfig> root element which
describes an OSPF autonomous system with its areas and its routers. The
Area IDs, Router IDs and area Address Ranges must be unique within the
autonomous system. Various OSPF parameters can be specified for the network
interfaces in the XML file. If those parameters are not specified in the XML file,
the module parameters of the OSPF module are used instead.
<Area>- defines an area in the network.@id- Mandatory attribute containing the area ID in dotted decimal notation.The backbone is ‘0.0.0.0’. (NOTE: This is not an IP address though it looks like one.)
<AddressRange>- Describes an address range of an OSPF area.@address- A string which is resolvable byIPvXAddressResolverclass. (e.g. Area1.R1>Area1.N1)@mask- A string which is resolvable byIPvXAddressResolverclass. (e.g. Area1.R1>Area1.N1)@status- Decides whether an address range will be advertised in Summary LSAs. (Advertise orDoNotAdvertise)
<Stub>- Any OSPF area (except the backbone) can be configured as a stub area.``@defaultCost``- A required attribute that defines the default route cost (>=0 and <1000) advertised for the area.
<Router>- Describes an OSPF router with its interfaces. InterfaceifNameand ‘toward’ valuesmust be unique within the same router and only one of them must be specified. A router is identified by its Router ID, which is given as an IPv4 address (but isn’t necessarily one). It may contain various child elements.
@name- A required string containing a node path specifying the router to which this configuration belongs to.@RFC1583Compatible- optional true or false value (defined in RFC 3101)@DistributeDefaultRoute- optional true or false value (distribute the default route, if exists, using AS-External LSA)<PointToPointInterface>- Describes the parameters of a point-to-point interface. It is identifiedin the router by its
ifNamevalue, or name of toward module.
@ifName- A unique name of the interface (e.g. eth0) or …@toward- a string containing a node path, for example “Area1.Router2”@areaID- An optional attribute containing the area ID in dotted decimal notation@interfaceOutputCost- An optional attribute specifying the associated cost (>=0 and <1000)@retransmissionInterval- An optional integer@interfaceTransmissionDelay- An optional integer@helloInterval- An optional integer that must be the same for all router interfaces attached to the same network@routerDeadInterval- An optional integer that must be the same for all router interfaces attached to the same network@authenticationType- Optional OSPF packet authentication protocol (SimplePasswordType|CryptographicType|NullType)@authenticationKey- Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
<BroadcastInterface>- Describes the parameters of a broadcast interface. It is identified inthe router by its
ifNamevalue, or name of toward module.HelloIntervalandRouterDeadIntervalmust be the same for all router interfaces attached to the same network.
@ifName- A unique name of the interface (e.g. eth0) or …@toward- a string containing a node path, for example “Area1.Router2”@areaID- An optional attribute containing the area ID in dotted decimal notation@interfaceOutputCost- An optional attribute specifying the associated cost (>=0 and <1000)@retransmissionInterval- An optional integer@interfaceTransmissionDelay- An optional integer@helloInterval- An optional integer that must be the same for all router interfaces attached to the same network@routerDeadInterval- An optional integer that must be the same for all router interfaces attached to the same network@authenticationType- Optional OSPF packet authentication protocol (SimplePasswordType|CryptographicType|NullType)@authenticationKey- Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE@routerPriority- Optional integer specifying the priority in DR/BDR election. Set to 0 to exclude the router from the election.
<PointToMultiPointInterface>- Describes the parameters of a point-to-multipoint interface. It isidentified in the router by its
ifNamevalue, or name of toward module.HelloIntervalandRouterDeadIntervalmust be the same for all router interfaces attached to the same network.
@ifName- A unique name of the interface (e.g. eth0) or …@toward- a string containing a node path, for example “Area1.Router2”@areaID- An optional attribute containing the area ID in dotted decimal notation@interfaceOutputCost- An optional attribute specifying the associated cost (>=0 and <1000)@retransmissionInterval- An optional integer@interfaceTransmissionDelay- An optional integer@helloInterval- An optional integer that must be the same for all router interfaces attached to the same network@routerDeadInterval- An optional integer that must be the same for all router interfaces attached to the same network@authenticationType- Optional OSPF packet authentication protocol (SimplePasswordType|CryptographicType|NullType)@authenticationKey- Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE<PointToMultiPointNeighborList><PointToMultiPointNeighbor>- the content of the element is a string resolvable to an IPv4 address
<HostInterface>@ifName- A unique name of the interface (e.g. eth0) or …@toward- a string containing a node path, for example “Area1.Router2”@areaID- An optional attribute containing the area ID in dotted decimal notation@attachedHost- IPv4 address of attached host@linkCost- An optional attribute specifying the associated cost (>=0 and <1000)
<LoopbackInterface>@ifName- A unique name of the loopback interface (e.g. lo1)@areaID- An optional attribute containing the area ID in dotted decimal notation@linkCost- An optional attribute specifying the associated cost (>=0 and <1000)
<NBMAInterface>@ifName- A unique name of the interface (e.g. eth0) or …@toward- a string containing a node path, for example “Area1.Router2”@areaID- An optional attribute containing the area ID in dotted decimal notation@interfaceOutputCost- An optional attribute specifying the associated cost (>=0 and <1000)@retransmissionInterval- An optional integer@interfaceTransmissionDelay- An optional integer@helloInterval- An optional integer that must be the same for all router interfaces attached to the same network@routerDeadInterval- An optional integer that must be the same for all router interfaces attached to the same network@authenticationType- Optional OSPF packet authentication protocol (SimplePasswordType|CryptographicType|NullType)@authenticationKey- Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE@routerPriority- Optional integer specifying the priority in DR/BDR election. Set to 0 to exclude the router from the election.@pollInterval- Optional integer that specifies the length of time, in seconds, betweenOSPF packets that the router send before adjacency is established with a neighbor
<NBMANeighborList><NBMANeighbor>@networkInterfaceAddress- A string which is resolvable byIPvXAddressResolverclass. (e.g. Area1.R1>Area1.N1)@neighborPriority- neighbor’s priority in the DR/BDR election process.
<ExternalInterface>@ifName- A unique name of the interface (e.g. eth0) or …@toward- a string containing a node path, for example “R2”@advertisedExternalNetworkAddress- Network address of the external network@advertisedExternalNetworkMask- Network mask of the external network@externalInterfaceOutputCost- The associated cost to reach the external network@externalInterfaceOutputType- Type1 (no external metric) or Type2 (external metric)@forwardingAddress- Optional (set 0.0.0.0 by default)@externalRouteTag- Optional (set 0 by default)
<VirtualLink>@endPointRouterID- the router ID of the endpoint of the virtual link (required)@transitAreaID- the ID of the area which is used for transit@retransmissionInterval- An optional integer@interfaceTransmissionDelay- An optional integer@helloInterval- An optional integer that must be the same for all router interfaces attached to the same network@routerDeadInterval- An optional integer that must be the same for all router interfaces attached to the same network@authenticationType- Optional OSPF packet authentication protocol (SimplePasswordType|CryptographicType|NullType)@authenticationKey- Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
compound module |
A network router device with support for multiple routing protocols and network interfaces. Provides the foundation for simulating various types of routers in both wired and wireless networks. |
Extends¶
Name |
Type |
Description |
|---|---|---|
simple module |
Base module for all INET simple modules. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
interfaceTableModule |
string |
||
routingTableModule |
string |
||
checksumMode |
string |
“declared” |
|
startupTime |
double |
0s |
Delay before starting OSPF |
ospfConfig |
xml |
xml(“<OSPFASConfig> \ <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>”) |
xml containing the full OSPF AS configuration |
routerPriority |
int |
1 |
Priority in DR/BDR election (Specify 0 to exclude the router from the election) |
areaID |
string |
“0.0.0.0” |
|
RFC1583Compatible |
bool |
false |
If ‘false’, prune the set of routing table entries for the ASBR (RFC 3101) |
DistributeDefaultRoute |
bool |
false |
Distribute the default route (if exists) using AS-External LSA |
helloInterval |
int |
10s |
Specifies the time in seconds between hello packets that the other router sends on an interface |
pollInterval |
int |
120s |
Specifies the length of time, in seconds, between OSPF packets that the router send before adjacency is established with a neighbor |
routerDeadInterval |
int |
40s |
The interval during which at least one hello packet must be received from a neighbor before the router declares that neighbor as down |
retransmissionInterval |
int |
5s |
The time between OSPF LSA retransmissions for adjacencies that belongs to the interface |
interfaceTransmissionDelay |
int |
1s |
The number of seconds required to transmit a link state update packet. Valid values are 1 to 65535 |
interfaceMode |
string |
“Active” |
NoOSPF: the interface is not advertised by OSPF |
referenceBandwidth |
int |
1e8bps |
Reference bandwidth for cost calculation |
interfaceOutputCost |
int |
0 |
Cost of link on the interface (1-1000), 0 means use reference bandwidth |
externalInterfaceOutputCost |
int |
1 |
Cost of link (1-1000) |
externalInterfaceOutputType |
string |
“Type2” |
Type1|Type2 |
forwardingAddress |
string |
“0.0.0.0” |
|
linkCost |
int |
1 |
Cost of link (1-1000) for HostInterface and LoopbackInterface only |
authenticationType |
string |
“NullType” |
|
authenticationKey |
string |
“0x00” |
0xnn..nn |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
Ospfv2 |
|
display |
i=block/network2 |
|
selfMessageKinds |
inet::ospfv2::Ospfv2TimerType |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
ipIn |
input |
||
ipOut |
output |
Source code¶
//
// Implements the OSPFv2 routing protocol.
//
// The `ospfConfig` parameter can specify an XML file describing the
// configuration of all OSPF routers and their interfaces in the network.
//
// The XML configuration must contain exactly one `<OSPFASConfig>` root element which
// describes an OSPF autonomous system with its areas and its routers. The
// Area IDs, Router IDs and area Address Ranges must be unique within the
// autonomous system. Various OSPF parameters can be specified for the network
// interfaces in the XML file. If those parameters are not specified in the XML file,
// the module parameters of the OSPF module are used instead.
//
// - `<Area>` - defines an area in the network.
// - `@id` - Mandatory attribute containing the area ID in dotted decimal notation.
// The backbone is '0.0.0.0'. (NOTE: This is not an IP address though it looks like one.)
// - `<AddressRange>` - Describes an address range of an OSPF area.
// - `@address` - A string which is resolvable by `IPvXAddressResolver` class. (e.g. Area1.R1>Area1.N1)
// - `@mask` - A string which is resolvable by `IPvXAddressResolver` class. (e.g. Area1.R1>Area1.N1)
// - `@status` - Decides whether an address range will be advertised in Summary LSAs. (Advertise or `DoNotAdvertise`)
// - `<Stub>` - Any OSPF area (except the backbone) can be configured as a stub area.
// - ``@defaultCost`` - A required attribute that defines the default route cost (>=0 and <1000) advertised for the area.
//
// - `<Router>` - Describes an OSPF router with its interfaces. Interface `ifName` and 'toward' values
// must be unique within the same router and only one of them must be specified. A router is
// identified by its Router ID, which is given as an IPv4 address (but isn't necessarily one).
// It may contain various child elements.
// - `@name` - A required string containing a node path specifying the router to which this configuration belongs to.
// - `@RFC1583Compatible` - optional true or false value (defined in RFC 3101)
// - `@DistributeDefaultRoute` - optional true or false value (distribute the default route, if exists, using AS-External LSA)
//
// - `<PointToPointInterface>` - Describes the parameters of a point-to-point interface. It is identified
// in the router by its `ifName` value, or name of toward module.
// - `@ifName` - A unique name of the interface (e.g. eth0) or ...
// - `@toward` - a string containing a node path, for example "Area1.Router2"
// - `@areaID` - An optional attribute containing the area ID in dotted decimal notation
// - `@interfaceOutputCost` - An optional attribute specifying the associated cost (>=0 and <1000)
// - `@retransmissionInterval` - An optional integer
// - `@interfaceTransmissionDelay` - An optional integer
// - `@helloInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@routerDeadInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@authenticationType` - Optional OSPF packet authentication protocol (`SimplePasswordType` | `CryptographicType` | `NullType`)
// - `@authenticationKey` - Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
//
// - `<BroadcastInterface>` - Describes the parameters of a broadcast interface. It is identified in
// the router by its `ifName` value, or name of toward module. `HelloInterval` and `RouterDeadInterval`
// must be the same for all router interfaces attached to the same network.
// - `@ifName` - A unique name of the interface (e.g. eth0) or ...
// - `@toward` - a string containing a node path, for example "Area1.Router2"
// - `@areaID` - An optional attribute containing the area ID in dotted decimal notation
// - `@interfaceOutputCost` - An optional attribute specifying the associated cost (>=0 and <1000)
// - `@retransmissionInterval` - An optional integer
// - `@interfaceTransmissionDelay` - An optional integer
// - `@helloInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@routerDeadInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@authenticationType` - Optional OSPF packet authentication protocol (`SimplePasswordType` | `CryptographicType` | `NullType`)
// - `@authenticationKey` - Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
// - `@routerPriority` - Optional integer specifying the priority in DR/BDR election. Set to 0 to exclude the router from the election.
//
// - `<PointToMultiPointInterface>` - Describes the parameters of a point-to-multipoint interface. It is
// identified in the router by its `ifName` value, or name of toward module.
// `HelloInterval` and `RouterDeadInterval` must be the same for all router
// interfaces attached to the same network.
// - `@ifName` - A unique name of the interface (e.g. eth0) or ...
// - `@toward` - a string containing a node path, for example "Area1.Router2"
// - `@areaID` - An optional attribute containing the area ID in dotted decimal notation
// - `@interfaceOutputCost` - An optional attribute specifying the associated cost (>=0 and <1000)
// - `@retransmissionInterval` - An optional integer
// - `@interfaceTransmissionDelay` - An optional integer
// - `@helloInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@routerDeadInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@authenticationType` - Optional OSPF packet authentication protocol (`SimplePasswordType` | `CryptographicType` | `NullType`)
// - `@authenticationKey` - Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
// - `<PointToMultiPointNeighborList>`
// - `<PointToMultiPointNeighbor>` - the content of the element is a string resolvable to an IPv4 address
//
// - `<HostInterface>`
// - `@ifName` - A unique name of the interface (e.g. eth0) or ...
// - `@toward` - a string containing a node path, for example "Area1.Router2"
// - `@areaID` - An optional attribute containing the area ID in dotted decimal notation
// - `@attachedHost` - IPv4 address of attached host
// - `@linkCost` - An optional attribute specifying the associated cost (>=0 and <1000)
//
// - `<LoopbackInterface>`
// - `@ifName` - A unique name of the loopback interface (e.g. lo1)
// - `@areaID` - An optional attribute containing the area ID in dotted decimal notation
// - `@linkCost` - An optional attribute specifying the associated cost (>=0 and <1000)
//
// - `<NBMAInterface>`
// - `@ifName` - A unique name of the interface (e.g. eth0) or ...
// - `@toward` - a string containing a node path, for example "Area1.Router2"
// - `@areaID` - An optional attribute containing the area ID in dotted decimal notation
// - `@interfaceOutputCost` - An optional attribute specifying the associated cost (>=0 and <1000)
// - `@retransmissionInterval` - An optional integer
// - `@interfaceTransmissionDelay` - An optional integer
// - `@helloInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@routerDeadInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@authenticationType` - Optional OSPF packet authentication protocol (`SimplePasswordType` | `CryptographicType` | `NullType`)
// - `@authenticationKey` - Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
// - `@routerPriority` - Optional integer specifying the priority in DR/BDR election. Set to 0 to exclude the router from the election.
// - `@pollInterval` - Optional integer that specifies the length of time, in seconds, between
// OSPF packets that the router send before adjacency is established with a neighbor
// - `<NBMANeighborList>`
// - `<NBMANeighbor>`
// - `@networkInterfaceAddress` - A string which is resolvable by `IPvXAddressResolver` class. (e.g. Area1.R1>Area1.N1)
// - `@neighborPriority` - neighbor's priority in the DR/BDR election process.
//
// - `<ExternalInterface>`
// - `@ifName` - A unique name of the interface (e.g. eth0) or ...
// - `@toward` - a string containing a node path, for example "R2"
// - `@advertisedExternalNetworkAddress` - Network address of the external network
// - `@advertisedExternalNetworkMask` - Network mask of the external network
// - `@externalInterfaceOutputCost` - The associated cost to reach the external network
// - `@externalInterfaceOutputType` - Type1 (no external metric) or Type2 (external metric)
// - `@forwardingAddress` - Optional (set 0.0.0.0 by default)
// - `@externalRouteTag` - Optional (set 0 by default)
//
// - `<VirtualLink>`
// - `@endPointRouterID` - the router ID of the endpoint of the virtual link (required)
// - `@transitAreaID` - the ID of the area which is used for transit
// - `@retransmissionInterval` - An optional integer
// - `@interfaceTransmissionDelay` - An optional integer
// - `@helloInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@routerDeadInterval` - An optional integer that must be the same for all router interfaces attached to the same network
// - `@authenticationType` - Optional OSPF packet authentication protocol (`SimplePasswordType` | `CryptographicType` | `NullType`)
// - `@authenticationKey` - Optional 8 byte hexadecimal value e.g. 0x5D8ABDAEDFCB8BEE
//
simple Ospfv2 extends SimpleModule like IOspf
{
parameters:
@class(Ospfv2);
string interfaceTableModule;
string routingTableModule;
string checksumMode @enum("declared", "computed") = default("declared");
volatile double startupTime @unit(s) = default(0s); // Delay before starting OSPF
// xml containing the full OSPF AS configuration
xml ospfConfig = default(xml("<OSPFASConfig> \
<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>"));
// default values for attributes of interface xml entries:
int routerPriority = default(1); // Priority in DR/BDR election (Specify 0 to exclude the router from the election)
string areaID = default("0.0.0.0");
bool RFC1583Compatible = default(false); // If 'false', prune the set of routing table entries for the ASBR (RFC 3101)
bool DistributeDefaultRoute = default(false); // Distribute the default route (if exists) using AS-External LSA
int helloInterval @unit(s) = default(10s); // Specifies the time in seconds between hello packets that the other router sends on an interface
int pollInterval @unit(s) = default(120s); // Specifies the length of time, in seconds, between OSPF packets that the router send before adjacency is established with a neighbor
int routerDeadInterval @unit(s) = default(40s); // The interval during which at least one hello packet must be received from a neighbor before the router declares that neighbor as down
int retransmissionInterval @unit(s) = default(5s); // The time between OSPF LSA retransmissions for adjacencies that belongs to the interface
int interfaceTransmissionDelay @unit(s) = default(1s); // The number of seconds required to transmit a link state update packet. Valid values are 1 to 65535
string interfaceMode @enum("Active","Passive","NoOSPF") = default("Active"); // NoOSPF: the interface is not advertised by OSPF
// Passive: the interface is advertised, but no OSPF message is sent out
int referenceBandwidth @unit(bps) = default(1e8bps); // Reference bandwidth for cost calculation
int interfaceOutputCost = default(0); // Cost of link on the interface (1-1000), 0 means use reference bandwidth
int externalInterfaceOutputCost = default(1); // Cost of link (1-1000)
string externalInterfaceOutputType = default("Type2"); // Type1|Type2
string forwardingAddress = default("0.0.0.0");
int linkCost = default(1); // Cost of link (1-1000) for HostInterface and LoopbackInterface only
string authenticationType @enum("SimplePasswordType","CryptographicType","NullType") = default("NullType");
string authenticationKey = default("0x00"); // 0xnn..nn
@display("i=block/network2");
@selfMessageKinds(inet::ospfv2::Ospfv2TimerType);
gates:
input ipIn @labels(Ipv4ControlInfo/up);
output ipOut @labels(Ipv4ControlInfo/down);
}