File: Nodes/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.
The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.
If a module type shows up more than once, that means it has been defined in more than one NED file.
InterfaceTable | Keeps the table of network interfaces. |
LIBTable | Stores the LIB (Label Information Base), accessed by MPLS and its associated control protocols (RSVP, LDP) via direct C++ method calls. |
LinkStateRouting | This module implements a very minimalistic link state routing protcol. Apart from the basic topology information, the current link usage is distributed to all participants in the network (by means of flooding). |
MPLS | Implements the MPLS protocol. |
NAMTraceWriter | When placed inside a host or router, it writes a NAM trace, based on notifications it receives via the NotificationBoard. Expects to find a NAMTrace module named "nam" at network level. |
NetworkLayer | Network layer of an IP node. |
NotificationBoard | Using NotificationBoard, modules can now notify each other about "events" such as routing table changes, interface status changes (up/down), interface configuration changes, wireless handovers, changes in the state of the wireless channel, mobile node position changes, etc. |
PPPInterface | (no description) |
RSVP | Implements RSVP-TE, a signalling protocol for MPLS. The module processes RSVP-TE messages, installs labels and does the reservation along LSP paths. |
RoutingTable | Stores the routing table. (Per-interface configuration is stored in InterfaceTable.) |
SimpleClassifier | TODO documentation |
TED | Traffic Engineering Database. Stores network topology with detailed link information, including total and reserved bandwidths. |
Name | Type | Description |
---|---|---|
namid | numeric | |
peers | string | |
routerId | string | |
routingFile | string |
Name | Direction | Description |
---|---|---|
in [ ] | input | |
out [ ] | output |
Name | Type | Description |
---|---|---|
rsvp.traffic | xml | specifies paths to set up |
rsvp.helloInterval | numeric | |
rsvp.helloTimeout | numeric | |
classifier.conf | xml | |
networkLayer.proxyARP | bool | |
networkLayer.ip.procDelay | numeric const | |
networkLayer.arp.retryTimeout | numeric | number seconds ARP waits between retries to resolve an IP address |
networkLayer.arp.retryCount | numeric | number of times ARP will attempt to resolve an IP address |
networkLayer.arp.cacheTimeout | numeric | number seconds unused entries in the cache will time out |
ppp[*].queueType | string | |
libTable.conf | xml | table contents to be loaded on startup |
module RSVP_LSR parameters: namid : numeric, peers: string, routerId: string, routingFile: string; gates: in: in[]; out: out[]; submodules: notificationBoard: NotificationBoard; display: "p=74,57;i=block/control"; routingTable: RoutingTable; parameters: IPForward = true, routerId = routerId, routingFile = routingFile; display: "p=68,138;i=block/table"; interfaceTable: InterfaceTable; display: "p=68,208;i=block/table"; ted: TED; display: "i=block/table;p=312,203"; linkStateRouting: LinkStateRouting; parameters: peers = peers; display: "i=block/network2;p=254,115"; rsvp: RSVP; parameters: peers = peers; display: "i=block/control;p=156,67"; classifier: SimpleClassifier; display: "i=block/classifier;p=330,67"; networkLayer: NetworkLayer; gatesizes: ifIn[sizeof(out)], ifOut[sizeof(out)]; display: "p=192,195;i=block/fork"; ppp: PPPInterface[sizeof(out)]; display: "p=88,329,row,90;q=l2queue;i=block/ifcard"; mpls: MPLS; parameters: //peers = peers; classifier = "classifier"; gatesizes: netwIn[sizeof(out)], netwOut[sizeof(out)], ifIn[sizeof(out)], ifOut[sizeof(out)]; display: "o=#ff8000;p=192,270;b=66,14"; libTable: LIBTable; display: "i=block/table2;p=312,268"; namTrace: NAMTraceWriter; parameters: namid = namid; display: "p=70,270;i=old/floppy1"; connections nocheck: linkStateRouting.to_ip --> networkLayer.OSPFIn; linkStateRouting.from_ip <-- networkLayer.OSPFOut; rsvp.to_ip --> networkLayer.RSVPIn; rsvp.from_ip <-- networkLayer.RSVPOut; for i=0..sizeof(out)-1 do in[i] --> ppp[i].physIn; out[i] <-- ppp[i].physOut; ppp[i].netwOut --> mpls.ifIn[i]; ppp[i].netwIn <-- mpls.ifOut[i]; mpls.netwOut[i] --> networkLayer.ifIn[i]; mpls.netwIn[i] <-- networkLayer.ifOut[i]; endfor; endmodule