Compound Module PSRouter

Package: pubsub_sim
File: src/PSRouter.ned

The Publish-Subscribe Router

The PSRouter, may support any number of Ethernet interfaces, which on the other hand, all have to be connected to the Forwarder. There is no other protocol able to operate in the PSRouter, apart from the Publish-Subscribe scheme.

See also: Forwarder, FwTable, LinkMon.

Author: Nikolaos Vastardis

NotificationBoard InterfaceTable EthernetInterfaceThrMtr Forwarder FwTable LinkMon

Networks:

ICN_Net (network)

The ICN Simulation Ground

ICN_Network (network)

The ICN Simulation Ground

Parameters:

Name Type Default value Description
routingFile string ""
numIf int 0

Properties:

Name Value Description
node
labels node
display i=abstract/router;bgb=538,330

Gates:

Name Direction Size Description
pppg [ ] inout
ethg [ ] inout

Unassigned submodule parameters:

Name Type Default value Description
eth.mac.promiscuous bool false

if true, all packets are received, otherwise only the ones with matching destination MAC address

eth.mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

eth.mac.mtu int 1500
eth.thruputMeter.startTime double 0s
eth.thruputMeter.batchSize int 10000
eth.thruputMeter.maxInterval double 1s
forwarder.procDelay double 0s
fwTable.routerId string "auto"

for routers, the router id using IP address dotted notation; specify "auto" to select the highest interface address; should be left empty ("") for hosts

fwTable.IPForward bool true

turns IP forwarding on/off

fwTable.routingFile string ""

routing table file name

linkMon.pollInt double uniform(1s,2s)

Interval between polling for statistics

linkMon.reportInt double 5s

Interval between sending reports to the TM

Source code:

//
// <b> The Publish-Subscribe Router </b>
//
// The PSRouter, may support any number of Ethernet interfaces, which
// on the other hand, all have to be connected to the Forwarder. There
// is no other protocol able to operate in the PSRouter, apart from the
// Publish-Subscribe scheme. 
//
// @see Forwarder, FwTable, LinkMon.
//
// @author Nikolaos Vastardis
//
module PSRouter
{
    parameters:
        @node();
        @labels(node,ethernet-node);
        @display("i=abstract/router;bgb=538,330");
        string routingFile = default("");
        int numIf = 0;
    gates:
        inout pppg[] @labels(PPPFrame-conn);
        inout ethg[] @labels(EtherFrame-conn);
    submodules:
        notificationBoard: NotificationBoard {
            parameters:
                @display("p=60,60");
        }
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=257,60");
        }
        eth[sizeof(ethg)]: EthernetInterfaceThrMtr {
            parameters:
                @display("p=57,277,row;q=l2queue");
        }
        forwarder: Forwarder {
            parameters:
                @display("p=257,143;i=block/fork");
            gates:
                ifIn[sizeof(ethg)];
                ifOut[sizeof(ethg)];
        }
        fwTable: FwTable {
            @display("p=447,60");
        }
        linkMon: LinkMon {
            @display("p=60,149");
        }
    connections allowunconnected:
        for i=0..sizeof(ethg)-1 {
            ethg[i] <--> eth[i].phys;
            eth[i].netwOut --> forwarder.ifIn[i];
            eth[i].netwIn <-- forwarder.ifOut[i];
        }
}