Package: inet.node.mpls
RSVP_LSR
compound moduleAn 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.
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
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 | ||
networkLayer.ipsec.networkProtocolModule | string | "^.ip" | |
networkLayer.ipsec.spdModule | string | "^.spd" | |
networkLayer.ipsec.sadModule | string | "^.sad" | |
networkLayer.ipsec.spdConfig | xml | ||
networkLayer.ipsec.defaultProtection | string | "" |
if not "": value to use where <Protection> element is absent from the configuration |
networkLayer.ipsec.defaultEspMode | string | "" |
if not "": value to use where <EspMode> element is absent from the configuration |
networkLayer.ipsec.defaultEncryptionAlg | string | "" |
if not "": value to use where <EncryptionAlg> element is absent from the configuration |
networkLayer.ipsec.defaultAuthenticationAlg | string | "" |
if not "": value to use where <defaultAuthenticationAlg> element is absent from the configuration |
networkLayer.ipsec.defaultMaxTfcPadLength | int | 0 |
value to use where <MaxTfcPadLength> element is absent from the configuration |
networkLayer.ipsec.ahProtectOutDelay | double | 0.0s | |
networkLayer.ipsec.ahProtectInDelay | double | 0.0s | |
networkLayer.ipsec.espProtectOutDelay | double | 0.0s | |
networkLayer.ipsec.espProtectInDelay | double | 0.0s | |
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 = parent.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 = parent.peers; @display("p=254,115"); } rsvp: RSVP { parameters: peers = parent.peers; classifierModule = "^.classifier"; @display("p=156,67"); } classifier: SimpleClassifier { parameters: @display("p=330,67"); } networkLayer: IPv4NetworkLayer { parameters: @display("p=192,195"); gates: ifIn[sizeof(parent.pppg)+1]; ifOut[sizeof(parent.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(parent.pppg)+1]; netwOut[sizeof(parent.pppg)+1]; ifIn[sizeof(parent.pppg)+1]; ifOut[sizeof(parent.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]; } }File: src/inet/node/mpls/RSVP_LSR.ned