Package: inet.node.mpls
RsvpMplsRouter
compound moduleAn RSVP-TE capable router.
RsvpTe occupies the Transport layer; however, it is not a transport protocol itself. RsvpTe 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 | |
numLoInterfaces | int | 1 | |
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 |
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 | ||
tn.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
tn.forwardServiceRegistration | bool | true | |
tn.forwardProtocolRegistration | bool | true | |
ipv4.routingTable.interfaceTableModule | string |
The path to the InterfaceTable module |
|
ipv4.routingTable.routerId | string | "auto" |
for routers, the router id using IPv4 address dotted notation; specify "auto" to select the highest interface address; should be left empty ("") for hosts |
ipv4.routingTable.netmaskRoutes | string | "*" |
maintain netmask routes for interfaces |
ipv4.routingTable.forwarding | bool | true |
turns IP forwarding on/off |
ipv4.routingTable.multicastForwarding | bool | false |
turns multicast forwarding on/off |
ipv4.routingTable.useAdminDist | bool | false |
Use Cisco like administrative distances |
ipv4.routingTable.routingFile | string | "" |
routing table file name |
ipv4.natTable.networkProtocolModule | string | "^.ip" | |
ipv4.natTable.config | xml | xml(" |
XML configuration parameters for network address translation |
ipv4.up.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
ipv4.up.forwardServiceRegistration | bool | true | |
ipv4.up.forwardProtocolRegistration | bool | true | |
ipv4.icmp.interfaceTableModule | string |
The path to the InterfaceTable module |
|
ipv4.icmp.routingTableModule | string | ||
ipv4.icmp.crcMode | string | "declared" | |
ipv4.icmp.quoteLength | int | 8B |
Number of bytes from original packet to quote in ICMP reply |
ipv4.mp.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
ipv4.mp.forwardServiceRegistration | bool | true | |
ipv4.mp.forwardProtocolRegistration | bool | true | |
ipv4.lp.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
ipv4.lp.forwardServiceRegistration | bool | true | |
ipv4.lp.forwardProtocolRegistration | bool | true | |
nm.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
nm.forwardServiceRegistration | bool | true | |
nm.forwardProtocolRegistration | bool | true | |
mpls.interfaceTableModule | string |
The path to the InterfaceTable module |
|
mpls.libTableModule | string | ||
libTable.config | xml | xml(" |
table contents to be loaded on startup |
ml.displayStringTextFormat | string | "processed %p pk (%l)" |
determines the text that is written on top of the submodule |
ml.forwardServiceRegistration | bool | true | |
ml.forwardProtocolRegistration | bool | true |
Source code
// // An RSVP-TE capable router. // // ~RsvpTe occupies the Transport layer; however, it is not a transport protocol // itself. ~RsvpTe uses transport protocols to route packets. ~Ted is used // to calculate shortest paths. // module RsvpMplsRouter { parameters: @networkNode(); @labels(node,mpls-node); @display("i=abstract/router"); bool hasStatus = default(false); int numLoInterfaces = default(1); string peers; string routerId = default("auto"); *.forwarding = true; *.routingTable.routerId = this.routerId; *.interfaceTableModule = default(absPath(".interfaceTable")); *.routingTableModule = default(absPath(".ipv4.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=100,400;is=s"); } interfaceTable: InterfaceTable { parameters: @display("p=100,200;is=s"); } ted: Ted { parameters: @display("p=100,500;is=s"); } linkStateRouting: LinkStateRouting { parameters: peers = parent.peers; @display("p=600,80"); } rsvp: RsvpTe { parameters: peers = parent.peers; classifierModule = "^.classifier"; @display("p=300,80"); } classifier: <default("RsvpClassifier")> like IIngressClassifier { parameters: @display("p=100,100;is=s"); } tn: MessageDispatcher { parameters: @display("p=450,160;b=500,5,,,,1"); } ipv4: Ipv4NetworkLayer { parameters: @display("p=450,240"); } nm: MessageDispatcher { parameters: @display("p=450,320;b=500,5,,,,1"); } lo[numLoInterfaces]: <default("LoopbackInterface")> like ILoopbackInterface { @display("p=250,560"); } ppp[sizeof(pppg)]: <default("PppInterface")> like IPppInterface { parameters: @display("p=400,560,row,150;q=l2queue"); } mpls: Mpls { parameters: classifierModule = "^.classifier"; @display("p=450,400"); } libTable: LibTable { parameters: @display("p=100,300;is=s"); } ml: MessageDispatcher { parameters: @display("p=450,480;b=500,5,,,,1"); } connections allowunconnected: linkStateRouting.ipOut --> tn.in++; tn.out++ --> linkStateRouting.ipIn; ipv4.transportOut --> tn.in++; tn.out++ --> ipv4.transportIn; rsvp.ipOut --> tn.in++; rsvp.ipIn <-- tn.out++; ipv4.ifOut --> nm.in++; nm.out++ --> ipv4.ifIn; for i=0..numLoInterfaces-1 { lo[i].upperLayerOut --> nm.in++; nm.out++ --> lo[i].upperLayerIn; } for i=0..sizeof(pppg)-1 { pppg[i] <--> ppp[i].phys; ppp[i].upperLayerOut --> ml.in++; ml.out++ --> ppp[i].upperLayerIn; } mpls.lowerLayerOut --> ml.in++; ml.out++ --> mpls.lowerLayerIn; nm.out++ --> mpls.upperLayerIn; mpls.upperLayerOut --> nm.in++; }File: src/inet/node/mpls/RsvpMplsRouter.ned