Compound Module RSVP_LSR

Package: inet.node.mpls
File: src/inet/node/mpls/RSVP_LSR.ned

An RSVP-TE capable router.

RSVP occupies the Transport layer; however, it is not a transport protocol itself. RSVP uses transport protocols to route packets. TED is used to calculate shortest paths.

NodeStatus IPv4RoutingTable InterfaceTable TED LinkStateRouting RSVP SimpleClassifier IPv4NetworkLayer IWiredNic MPLS LIBTable LoopbackInterface

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.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

Parameters:

Name Type Default value Description
hasStatus bool false
peers string
routerId string "auto"

Properties:

Name Value Description
networkNode
labels node
display i=abstract/router

Gates:

Name Direction Size Description
pppg [ ] inout

Unassigned submodule parameters:

Name Type Default value Description
status.initialStatus string "UP"

TODO @signal, @statistic

routingTable.interfaceTableModule string

The path to the InterfaceTable module

routingTable.netmaskRoutes string "*"

maintain netmask routes for interfaces

routingTable.multicastForwarding bool false

turns multicast forwarding on/off

routingTable.useAdminDist bool false

Use Cisco like administrative distances

routingTable.routingFile string ""

routing table file name

interfaceTable.displayAddresses bool false

whether to display IP addresses on links

ted.interfaceTableModule string

The path to the InterfaceTable module

ted.routingTableModule string
linkStateRouting.interfaceTableModule string

The path to the InterfaceTable module

linkStateRouting.routingTableModule string
linkStateRouting.tedModule string
rsvp.interfaceTableModule string

The path to the InterfaceTable module

rsvp.routingTableModule string
rsvp.libTableModule string
rsvp.tedModule string
rsvp.traffic xml xml("")

specifies paths to set up

rsvp.helloInterval double
rsvp.helloTimeout double
classifier.routingTableModule string
classifier.libTableModule string
classifier.rsvpModule string
classifier.config xml xml("")
networkLayer.configurator.interfaceTableModule string

The path to the InterfaceTable module

networkLayer.configurator.networkConfiguratorModule string "configurator"

TODO: eventually rename to networkConfigurator

networkLayer.configurator.configureRoutingTable bool true

add routing entries to routing table (uses the configurator module)

networkLayer.ip.interfaceTableModule string

The path to the InterfaceTable module

networkLayer.ip.routingTableModule string
networkLayer.ip.arpModule string
networkLayer.ip.icmpModule string
networkLayer.ip.procDelay double 0s
networkLayer.ip.timeToLive int 32
networkLayer.ip.multicastTimeToLive int 32
networkLayer.ip.fragmentTimeout double 60s
networkLayer.ip.forceBroadcast bool false
networkLayer.icmp.interfaceTableModule string

The path to the InterfaceTable module

networkLayer.icmp.routingTableModule string
mpls.interfaceTableModule string

The path to the InterfaceTable module

mpls.libTableModule string
libTable.config xml xml("")

table contents to be loaded on startup

lo0.lo.interfaceTableModule string

The path to the InterfaceTable module

lo0.lo.mtu int 4470B

Source code:

//
// An RSVP-TE capable router.
//
// RSVP occupies the Transport layer; however, it is not a transport protocol
// itself. RSVP uses transport protocols to route packets. ~TED is used
// to calculate shortest paths.
//
module RSVP_LSR
{
    parameters:
        @networkNode();
        @labels(node,mpls-node);
        @display("i=abstract/router");
        bool hasStatus = default(false);
        string peers;
        string routerId = default("auto");
        *.interfaceTableModule = default(absPath(".interfaceTable"));
        *.routingTableModule = default(absPath(".routingTable"));
        *.tedModule = default(absPath(".ted"));
        *.rsvpModule = default(absPath(".rsvp"));
        *.libTableModule = default(absPath(".libTable"));
    gates:
        inout pppg[] @labels(PPPFrame-conn);
    submodules:
        status: NodeStatus if hasStatus {
            @display("p=58,50");
        }
        routingTable: IPv4RoutingTable {
            parameters:
                forwarding = true;
                routerId = routerId;
                @display("p=58,174;is=s");
        }
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=58,242;is=s");
        }
        ted: TED {
            parameters:
                @display("p=312,203");
        }
        linkStateRouting: LinkStateRouting {
            parameters:
                peers = peers;
                @display("p=254,115");
        }
        rsvp: RSVP {
            parameters:
                peers = peers;
                classifierModule = "^.classifier";
                @display("p=156,67");
        }
        classifier: SimpleClassifier {
            parameters:
                @display("p=330,67");
        }
        networkLayer: IPv4NetworkLayer {
            parameters:
                @display("p=192,195");
            gates:
                ifIn[sizeof(pppg)+1];
                ifOut[sizeof(pppg)+1];
        }
        ppp[sizeof(pppg)]: <default("PPPInterface")> like IWiredNic {
            parameters:
                @display("p=132,345,row,90;q=l2queue");
        }
        mpls: MPLS {
            parameters:
                classifierModule = "^.classifier";
                @display("p=192,270");
            gates:
                netwIn[sizeof(pppg)+1];
                netwOut[sizeof(pppg)+1];
                ifIn[sizeof(pppg)+1];
                ifOut[sizeof(pppg)+1];
        }
        libTable: LIBTable {
            parameters:
                @display("p=312,268");
        }
        lo0: LoopbackInterface {
            @display("p=50,345");
        }
    connections allowunconnected:
        linkStateRouting.ipOut --> networkLayer.transportIn++;
        linkStateRouting.ipIn <-- networkLayer.transportOut++;

        rsvp.ipOut --> networkLayer.transportIn++;
        rsvp.ipIn <-- networkLayer.transportOut++;

        lo0.upperLayerOut --> networkLayer.ifIn[0];
        networkLayer.ifOut[0] --> lo0.upperLayerIn;

        for i=0..sizeof(pppg)-1 {
            pppg[i] <--> ppp[i].phys;

            ppp[i].upperLayerOut --> mpls.ifIn[i+1];
            ppp[i].upperLayerIn <-- mpls.ifOut[i+1];

            mpls.netwOut[i+1] --> networkLayer.ifIn[i+1];
            mpls.netwIn[i+1] <-- networkLayer.ifOut[i+1];
        }
}