Package: inet.networklayer.ldp
Ldp
simple moduleHandles and processes LDP messages.
The LDP protocol is used by one LSR (Label Switched Router) to inform another LSR of the label bindings it has made. The LSR uses this protocol to establish label switched paths through a network by mapping network layer routing information directly to data-link layer switched paths.
Operations
All LDP message types are subclassed from LdpPacket, and include LdpHello, LdpNotify, LdpLabelRequest, LdpIni and LdpAddress.
Message processing in the Ldp module is explained in LDP Message Processing
Author: Vojta Janota
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Used in compound modules
Name | Type | Description |
---|---|---|
LdpMplsRouter | compound module |
An LDP-capable router. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string |
The path to the InterfaceTable module |
|
routingTableModule | string | ||
libTableModule | string | ||
tedModule | string | ||
holdTime | double | 15s | |
helloInterval | double | 5s | |
stopOperationExtraTime | double | -1s |
extra time after lifecycle stop operation finished |
stopOperationTimeout | double | 2s |
timeout value for lifecycle stop operation |
Properties
Name | Value | Description |
---|---|---|
display | i=block/control | |
lifecycleSupport |
Gates
Name | Direction | Size | Description |
---|---|---|---|
socketIn | input | ||
socketOut | output |
Scheduled messages (observed)
msg | kind | ctrl | tags | msgname | context |
---|---|---|---|---|---|
omnetpp::cMessage | 0 | LDPSendHello |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
ScenarioManager | inet::ScenarioManager::moduleOperationStageCompleted | moduleOperationStageCompleted |
Called methods (observed)
function | info | call from |
---|---|---|
inet::Ldp::handleOperationStage | handleOperationStage | ScenarioManager |
inet::Ldp::receiveSignal | routeAdded | Ipv4RoutingTable |
inet::Ldp::receiveSignal | routeDeleted | Ipv4RoutingTable |
Incoming messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
socketIn | Indication | 2 (UdpStatusInd::UDP_I_SOCKET_CLOSED) | UdpSocketClosedIndication | Udp | SocketInd |
socketIn | Indication | 6 (TcpStatusInd::TCP_I_CLOSED) | TcpCommand | Tcp | SocketInd |
Outgoing messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
socketOut | Packet | 0 (UdpCommandCode::UDP_C_DATA) | Udp | DispatchProtocolReq, L3AddressReq, L4PortReq, SocketReq | |
socketOut | Request | 1 (UdpCommandCode::UDP_C_BIND) | UdpBindCommand | Udp | DispatchProtocolReq, SocketReq |
socketOut | Request | 2 (TcpCommandCode::TCP_C_OPEN_PASSIVE) | TcpOpenCommand | Tcp | DispatchProtocolReq, SocketReq |
socketOut | Request | 3 (UdpCommandCode::UDP_C_SETOPTION) | UdpSetMulticastInterfaceCommand | Udp | DispatchProtocolReq, SocketReq |
socketOut | Request | 3 (UdpCommandCode::UDP_C_SETOPTION) | UdpSetMulticastLoopCommand | Udp | DispatchProtocolReq, SocketReq |
socketOut | Request | 4 (UdpCommandCode::UDP_C_CLOSE) | UdpCloseCommand | Udp | DispatchProtocolReq, SocketReq |
socketOut | Request | 5 (TcpCommandCode::TCP_C_CLOSE) | TcpCommand | Tcp | DispatchProtocolReq, SocketReq |
Packet operations (observed)
chunkType | packetAction |
---|---|
LdpHello | insertAtBack |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | addTagIfAbsent |
L3AddressReq | addTagIfAbsent |
L4PortReq | addTagIfAbsent |
SocketInd | findTag, getTag |
SocketReq | addTagIfAbsent |
Tagging operations (observed)
tagType | tagAction |
---|---|
inet::Ipv4InterfaceData | findTag |
Source code
// // Handles and processes LDP messages. // // The LDP protocol is used by one LSR (Label Switched Router) to inform // another LSR of the label bindings it has made. The LSR uses this protocol // to establish label switched paths through a network by mapping network layer // routing information directly to data-link layer switched paths. // // Operations // // All LDP message types are subclassed from ~LdpPacket, and include // ~LdpHello, ~LdpNotify, ~LdpLabelRequest, ~LdpIni and ~LdpAddress. // // Message processing in the ~Ldp module is explained in // <a href="ldp-processing.html">LDP Message Processing</a> // // @author Vojta Janota // simple Ldp like IApp { parameters: string interfaceTableModule; // The path to the InterfaceTable module string routingTableModule; string libTableModule; string tedModule; double holdTime @unit(s) = default(15s); double helloInterval @unit(s) = default(5s); @display("i=block/control"); @lifecycleSupport; double stopOperationExtraTime @unit(s) = default(-1s); // extra time after lifecycle stop operation finished double stopOperationTimeout @unit(s) = default(2s); // timeout value for lifecycle stop operation gates: input socketIn @labels(TcpCommand/up,UdpControlInfo/up); output socketOut @labels(TcpCommand/down,UdpControlInfo/down); }File: src/inet/networklayer/ldp/Ldp.ned