The DDMAP TLV provides full validation for a BGP IPv4 label route tunneled over an RSVP LSP or an LDP FEC.
The 7705 SAR does not support LSP stitching.
In order to properly check a target FEC that is stitched to another FEC (stitching FEC) of the same or a different type, or that is tunneled over another FEC (tunneling FEC), it is necessary for the responding nodes to provide details about the FEC manipulation to the sender node. The system collects this detailed information with the DDMAP TLV FEC stack change sub-TLV, shown in Figure: FEC Stack Change Sub-TLV. The field definitions match those of the DSMAP TLV and are described in RFC 4379.
The operation type specifies the action associated with the FEC stack change. Table: FEC Stack Change Sub-TLV Operation Types defines the operation types for the FEC stack change sub-TLV.
Type # |
Operation |
---|---|
1 |
Push |
2 |
Pop |
When DDMAP TLV is configured on an LSP trace that does not undergo stitching or tunneling operation in the network, the procedures at the sender and responder nodes are the same as in the case of the existing DSMAP TLV.
When DDMAP TLV is configured on an LSP trace that does undergo stitching or tunneling operation in the network, there are changes to the target FEC stack validation procedures at the sender and responder nodes. The following procedure represent a superset of the rules described in Section 4 of RFC 6424 to allow greater scope of interoperability with other vendor implementations.
Responder Node Procedures:
As a responder node, the 7705 SAR always inserts the global return code, 3 Replying router is an egress for the FEC at stack-depth <RSC> or the code, 14 See DDMAP TLV for Return Code and Return Subcode.
When the responder node inserts a global return code of 3, it does not include a DDMAP TLV.
When the responder node includes the DDMAP TLV, it inserts the global return code, 14 See DDMAP TLV for Return Code and Return Subcode. Additionally, the responder node will:
on a success response, include a return code of 15 in the DDMAP TLV for each downstream hop that has a FEC stack change sub-TLV
on a success response, include a return code, 8 Label switched at stackdepth <RSC> in the DDMAP TLV for each downstream hop if no FEC stack change sub-TLV is present
on a failure response, include an appropriate error return code in the DDMAP TLV for each downstream hop
A tunneling node indicates that it is pushing a FEC (the tunneling FEC) on top of the target FEC stack TLV by including a FEC stack change sub-TLV in the DDMAP TLV with a FEC operation type value of PUSH. It also includes a return code, 15 Label switched with FEC change. The downstream interface address and downstream IP address fields of the DDMAP TLV are populated for the pushed FEC. The remote peer address field in the FEC stack change sub-TLV is populated with the address of the control plane peer for the pushed FEC. The Label stack sub-TLV provides the full label stack over the downstream interface.
A node that is stitching a FEC indicates that it is performing a POP operation for the stitched FEC followed by a PUSH operation for the stitching FEC and potentially one PUSH operation for the transport tunnel FEC. The echo reply message will include two or more FEC stack change sub-TLVs in the DDMAP TLV. It also includes a return code 15 Label switched with FEC change. The downstream interface address and downstream address fields of the DDMAP TLV are populated for the stitching FEC. The remote peer address field in the FEC stack change sub-TLV of type POP is populated with a null value (0.0.0.0). The remote peer address field in the FEC stack change sub-TLV of type PUSH is populated with the address of the control plane peer for the tunneling FEC. The Label stack sub-TLV provides the full label stack over the downstream interface.
If the responder node is the egress for one or more FECs in the target FEC Stack, then it must reply with no DDMAP TLV and with a return code 3 Replying router is an egress for the FEC at stack-depth <RSC>. RSC must be set to the depth of the topmost FEC. This operation is iterative.
The receipt of the echo reply message the sender node will pop the topmost FEC from the target stack FEC TLV and resend the echo request message with the same TTL value as explained in step 5. The responder node performs the same operation until all FECs are popped or until the topmost FEC in the target FEC stack TLV matches the tunneled or stitched FEC. In the latter case, processing of the target FEC stack TLV follows again steps 1 or 2.
Sender Node Procedures:
If the echo reply message contains the return code 14 See DDMAP TLV for Return Code and Return Subcode and the DDMAP TLV has a return code 15 Label switched with FEC change, the sender node adjusts the target FEC Stack TLV in the echo request message for the next value of the TTL to reflect the operation on the current target FEC stack as indicated in the FEC stack change sub-TLV received in the DDMAP TLV of the last echo reply message. This results in one FEC being popped at most and one or more FECs being pushed as indicated.
If the echo reply message contains the return code 3 Replying router is an egress for the FEC at stack-depth <RSC>, then:
If the value for the label stack depth specified in the Return Sub-Code (RSC) field is the same as the depth of current target FEC Stack TLV, then the sender node considers the trace operation complete and terminates it. A 7705 SAR responder node will cause this case to occur as per Step6 of the Responder Node Procedures.
If the value for the label stack depth specified in the Return Sub-Code (RSC) field is different from the depth of the current target FEC Stack TLV, the sender node must continue the LSP trace with the same TTL value after adjusting the target FEC stack TLV by removing the top FEC.
This step continues iteratively until the value for the label stack depth specified in the Return Sub Code (RSC) field is the same as the depth of current target FEC Stack TLV, at which point step a is performed. A 7705 SAR responder node causes this case to occur as per Step6 of the responder node procedures.
If a DDMAP TLV with or without a FEC stack change sub-TLV is included, then the sender node ignores it and processing is performed as per steps (a) or (b) above. A 7705 SAR responder node does not cause this case to occur but a third party implementation may.
As a sender node, the 7705 SAR can accept an echo-reply message with the global return code of either 14 (with DDMAP TLV return code of 15 or 8), or 15 and process the FEC stack change TLV as per Step 1 of the Sender Node Procedures.
If an LSP ping is performed directly to the egress LER of the stitched FEC, there is no DDMAP TLV included in the echo request message and the responder node, which is the egress node, still replies with return code 4 Replying router has no mapping for the FEC at stack- depth <RSC>. This case cannot be resolved with this feature.
Figure: BGP 3107 Tunnel Through LDP FEC and the following LSP trace examples illustrate how the 7705 SAR provides validation for a BGP IPv4 label route tunneled over an RSVP LSP or an LDP FEC.
LSP trace launched from ALU-A (AS 100) to ALU-D (AS 300) with the DSMAP option:
ALU-A# oam lsp-trace bgp-label prefix 10.20.1.4/32 downstream-map-tlv dsmap src-ip-
address 10.20.1.1
lsp-trace to 10.20.1.4/32: 0 hops min, 0 hops max, 104 byte packets
1 10.20.1.3 rtt=3.63ms rc=8(DSRtrMatchLabel)
2 10.20.1.5 rtt=9.04ms rc=8(DSRtrMatchLabel)
3 10.20.1.6 rtt=7.73ms rc=8(DSRtrMatchLabel) rsc=1
4 10.20.1.4 rtt=1.62ms rc=3(EgressRtr) rsc=1
LSP trace launched from ALU-A (AS 100) to ALU-D (AS 300) with the DDMAP option:
ALU-A# oam lsp-trace bgp-label prefix 10.20.1.4/32 downstream-map-tlv ddmap src-ip-
address 10.20.1.1
lsp-trace to 10.20.1.4/32: 0 hops min, 0 hops max, 124 byte packets
1 10.20.1.3 rtt=9.29ms rc=8(DSRtrMatchLabel) rsc=2
2 10.20.1.5 rtt=3.69ms rc=8(DSRtrMatchLabel) rsc=2
3 10.20.1.6 rtt=2.81ms rc=3(EgressRtr) rsc=2
3 10.20.1.6 rtt=11.5ms rc=8(DSRtrMatchLabel) rsc=1
4 10.20.1.4 rtt=1.68ms rc=3(EgressRtr) rsc=1
LSP trace launched from ALU-B (AS 300) to ALU-F (AS 100) with the DSMAP option:
ALU-B# oam lsp-trace bgp-label prefix 10.20.1.6/32 downstream-map-tlv dsmap src-ip-
address 10.20.1.2
lsp-trace to 10.20.1.6/32: 0 hops min, 0 hops max, 104 byte packets
1 10.20.1.1 rtt=5.39ms rc=8(DSRtrMatchLabel) rsc=1
2 10.1.3.2 *
3 10.1.3.2 *
4 10.20.1.6 rtt=1.27ms rc=10(DSRtrUnmatchLabel) rsc=1
LSP trace launched from ALU-B (AS 300) to ALU-F (AS 100) with the DDMAP option:
ALU-B# oam lsp-trace bgp-label prefix 10.20.1.6/32 downstream-map-tlv ddmap src-ip-
address 10.20.1.2
lsp-trace to 10.20.1.6/32: 0 hops min, 0 hops max, 108 byte packets
1 10.20.1.1 rtt=10.8ms rc=15(LabelSwitchedWithFecChange) rsc=1
2 10.1.3.2 *
3 10.0.0.2 *
4 10.20.1.6 rtt=1.29ms rc=3(EgressRtr) rsc=2
4 10.20.1.6 rtt=1.23ms rc=5(DSMappingMismatched) rsc=1