Simple Module NetworkConfigurator

Package: inet.networklayer.autorouting
File: src/networklayer/autorouting/NetworkConfigurator.ned

C++ definition

Configures IP addresses and routing tables for a network.

This module does't connect to any other modules (it has no gates), and should have only one instance in the whole model. The module will only run once, at the beginning of the simulation. When it runs, it will:

  1. assign IP addresses to hosts and routers.
  2. then it'll discover the topology of the network (using OMNeT++'s cTopology class), and calculate shortest paths;
  3. finally, it will add routes which correspond to the shortest paths to the routing tables (see RoutingTable::addRoutingEntry()).

How does it know which modules are routers, hosts, et.c that need to be configured, and what is the network topology? The configurator picks all modules which have a @node property and their connections, and builds a graph from it. Then it runs Dijstra's shortest path algorithm on it.

To avoid interference with the above algorithm, it's recommended that no host or router should have its address set explicitly, and no routes are set up manually. Practically, routing files (.irt, .mrt) should be absent or empty.

All the above takes place in initialization stage 2. (In stage 0, interfaces register themselves in the InterfaceTable modules, and in stage 1, routing files are read.)

NetworkConfigurator

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Networks:

Name Type Description
R37 network (no description)
R37orig network (no description)
RSVPTE4 network

Example network to demonstrate RSVP-TE.

Properties:

Name Value Description
display i=block/cogwheel_s

Source code:

//
// Configures \IP addresses and routing tables for a network.
//
// This module does't connect to any other modules (it has no gates),
// and should have only one instance in the whole model. The module
// will only run once, at the beginning of the simulation.
// When it runs, it will:
//
//   -#  assign \IP addresses to hosts and routers.
//   -#  then it'll discover the topology of the network (using OMNeT++'s
//       cTopology class), and calculate shortest paths;
//   -#  finally, it will add routes which correspond to the shortest
//       paths to the routing tables (see RoutingTable::addRoutingEntry()).
//
// How does it know which modules are routers, hosts, et.c that need to
// be configured, and what is the network topology? The configurator
// picks all modules which have a @node property and their connections,
// and builds a graph from it. Then it runs Dijstra's shortest path
// algorithm on it.
//
// To avoid interference with the above algorithm, it's recommended that
// no host or router should have its address set explicitly, and
// no routes are set up manually. Practically, routing files (.irt, .mrt)
// should be absent or empty.
//
// All the above takes place in initialization stage 2. (In stage 0,
// interfaces register themselves in the InterfaceTable modules, and
// in stage 1, routing files are read.)
//
simple NetworkConfigurator
{
    parameters:
        @display("i=block/cogwheel_s");
}