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.
Used in
| 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 | |
| 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.ifOut --> ml.in++; ml.out++ --> mpls.ifIn; nm.out++ --> mpls.netwIn; mpls.netwOut --> nm.in++; }File: src/inet/node/mpls/RsvpMplsRouter.ned