Compound Module AccessRouter

File: Underlay/IPv4Underlay/AccessRouter.ned

Access router connects the access nets to the network backbone

notificationBoard: NotificationBoard interfaceTable: InterfaceTable routingTable: RoutingTable accessNet: AccessNet networkLayer: NetworkLayer ppp: PPPInterface eth: EthernetInterface

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.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

AccessNet

Access net connects participating hosts over an access router with the backbone

NotificationBoard (unknown -- not in documented files)
InterfaceTable (unknown -- not in documented files)
RoutingTable (unknown -- not in documented files)
NetworkLayer (unknown -- not in documented files)
PPPInterface (unknown -- not in documented files)
EthernetInterface (unknown -- not in documented files)

Used in compound modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

IPv4Underlay

The IPv4Underlay ned-file

See also: IPv4UnderlayConfigurator

Parameters:

Name Type Description
routingFile string

use predefined routing file if given

Gates:

Name Direction Description
in [ ] input

incoming gates from overlay

out [ ] output

outgoing gates to router

ethIn [ ] input

placeholder for zero-size vector

ethOut [ ] output

placeholder for zero-size vector

Unassigned submodule parameters:

Name Type Description

Source code:

module AccessRouter
    parameters:
        routingFile: string; // use predefined routing file if given
    gates:
        in: in[]; // incoming gates from overlay
        out: out[]; // outgoing gates to router
        in: ethIn[]; // placeholder for zero-size vector
        out: ethOut[]; // placeholder for zero-size vector
    submodules:
        notificationBoard: NotificationBoard;
            display: "p=60,60;i=block/control";
        interfaceTable: InterfaceTable;
            display: "p=150,60;i=block/table";
        routingTable: RoutingTable;
            parameters:
                IPForward = true, // true if ip packets should be forwarded
                routerId = "auto", // id of the router
                routingFile = routingFile; // use predefined routing file if given
            display: "p=240,60;i=block/table";
        accessNet: AccessNet;
            display: "p=330,60;i=block/cogwheeli";
        networkLayer: NetworkLayer;
            gatesizes:
                ifIn[sizeof(out)+sizeof(ethOut)],
                ifOut[sizeof(out)+sizeof(ethOut)];
            display: "p=199,141;i=block/fork;q=queue";
        ppp: PPPInterface[sizeof(out)];
            display: "p=90,257,row,110;q=queue;i=block/ifcard";
        eth: EthernetInterface[sizeof(ethOut)];
            display: "p=286,268,row,110;q=queue;i=block/ifcard";
    connections nocheck:
        // connections to network outside
        for i=0..sizeof(out)-1 do
            in[i] --> ppp[i].physIn;
            out[i] <-- ppp[i].physOut;
            ppp[i].netwOut --> networkLayer.ifIn[i];
            ppp[i].netwIn <-- networkLayer.ifOut[i];
        endfor;

        for i=0..sizeof(ethOut)-1 do
            ethIn[i] --> eth[i].physIn;
            ethOut[i] <-- eth[i].physOut;
            eth[i].netwOut --> networkLayer.ifIn[sizeof(out)+i];
            eth[i].netwIn <-- networkLayer.ifOut[sizeof(out)+i];
        endfor;
endmodule