Simple Module NetworkConfigurator

File: Network/AutoRouting/NetworkConfigurator.ned

C++ definition: click here

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 of types listed in the moduleTypes parameter 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 missing 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.)

Usage diagram:

The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.

Parameters:

Name Type Description
moduleTypes string

space-separated list of module types to be considered part of the topology

Source code:

simple NetworkConfigurator
    parameters:
        moduleTypes: string; // space-separated list of module types to be
                             // considered part of the topology
endsimple