Description

On PTX10008 EVO, a "Router Alert Label 1" is pushed by an MPLS ping on an LDP-based L2 circuit, but not on a static-based L2 circuit.

The article demonstrates that this is specific behavior/implementation in PTX10008 EVO. On MX platforms that run Junos OS, on the other hand, it is not pushed by MPLS ping on both LDP / static-based L2 circuits, which is also shown here.

Symptoms

Test Topology

         +------------+                          +------------+
         |            |et-1/2/0          et-1/2/1|            | 
 et-1/2/2+ PTX10008_1 +--------------------------+ PTX10008_2 +et-1/2/3
  ccc    |            |.1     10.0.1.0/30      .2|            | ccc
         +------------+<-----mpls/l2circuit----->+------------+
         lo0.0=10.0.255.1                        lo0.0=10.0.255.2

PTX10008 EVO / LDP-based l2circuit

On PTX10008 EVO, a "Router Alert Label 1 " is pushed with an MPLS ping on an LDP-based L2 circuit.

{MASTER}
User@PTX10008_1-re0-re0> ping mpls l2circuit virtual-circuit 400100 neighbor 10.0.255.2 count 5 detail

Request for seq 1, to interface 1003, labels <16, 1, 154>, packet size 88
Reply for seq 1, return code: Egress-ok, time: 3.695 ms
        Local transmit time: 2021-08-27 09:55:33 IST 456.005 ms
        Remote receive time: 2021-08-27 09:55:33 IST 459.700 ms
Request for seq 2, to interface 1003, labels <16, 1, 154>, packet size 88
Reply for seq 2, return code: Egress-ok, time: 3.479 ms
        Local transmit time: 2021-08-27 09:55:34 IST 455.697 ms
        Remote receive time: 2021-08-27 09:55:34 IST 459.176 ms
Request for seq 3, to interface 1003, labels <16, 1, 154>, packet size 88
Reply for seq 3, return code: Egress-ok, time: 3.535 ms
        Local transmit time: 2021-08-27 09:55:35 IST 456.099 ms
        Remote receive time: 2021-08-27 09:55:35 IST 459.634 ms
Request for seq 4, to interface 1003, labels <16, 1, 154>, packet size 88
Reply for seq 4, return code: Egress-ok, time: 3.571 ms
        Local transmit time: 2021-08-27 09:55:36 IST 455.470 ms
        Remote receive time: 2021-08-27 09:55:36 IST 459.041 ms
Request for seq 5, to interface 1003, labels <16, 1, 154>, packet size 88
Reply for seq 5, return code: Egress-ok, time: 3.692 ms
        Local transmit time: 2021-08-27 09:55:37 IST 455.918 ms
        Remote receive time: 2021-08-27 09:55:37 IST 459.610 ms
--- lsping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss

PTX10008_1 Configuration

set interfaces et-1/2/0 unit 0 family inet address 10.0.1.1/30
set interfaces et-1/2/0 unit 0 family mpls
set interfaces et-1/2/2 encapsulation ethernet-ccc
set interfaces et-1/2/2 gigether-options loopback
set interfaces et-1/2/2 unit 0 family ccc
set interfaces lo0 unit 0 family inet address 10.0.255.1/32
set protocols rsvp interface et-1/2/0.0
set protocols mpls label-switched-path P2P_1 from 10.0.255.1
set protocols mpls label-switched-path P2P_1 to 10.0.255.2
set protocols mpls interface et-1/2/0.0
set protocols ospf traffic-engineering
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ldp interface lo0.0
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 static incoming-label 1001000
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 static outgoing-label 1001111
deactivate protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 static
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 virtual-circuit-id 400100
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 control-word
set routing-options router-id 10.0.255.1

PTX10008_2 Configuration

set interfaces et-1/2/1 unit 0 family inet address 10.0.1.2/30
set interfaces et-1/2/1 unit 0 family mpls
set interfaces et-1/2/3 encapsulation ethernet-ccc
set interfaces et-1/2/3 gigether-options loopback
set interfaces et-1/2/3 unit 0 family ccc
set interfaces lo0 unit 0 family inet address 10.0.255.2/32
set protocols rsvp interface et-1/2/1.0
set protocols mpls label-switched-path P2P_2 from 10.0.255.2
set protocols mpls label-switched-path P2P_2 to 10.0.255.1
set protocols mpls interface et-1/2/1.0
set protocols ospf traffic-engineering
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ldp interface lo0.0
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 static incoming-label 1001111
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 static outgoing-label 1001000
deactivate protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 static
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 virtual-circuit-id 400100
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 control-word
set routing-options router-id 10.0.255.2

{MASTER}
User@PTX10008_1-re0-re0> show configuration protocols l2circuit
neighbor 10.0.255.2 {
    interface et-0/0/0.0 {
        inactive: static {
            incoming-label 1001000;
            outgoing-label 1001111;
        }
        virtual-circuit-id 400100;
        control-word;
    }
}

{MASTER}
User@PTX10008_1-re0-re0> show configuration protocols ldp
interface lo0.0;

PTX10008 EVO / Static-Based l2circuit

On PTX10008 EVO, a "Router Alert Label 1" is NOT pushed with an MPLS ping on a static-based L2 circuit.

{MASTER}
User@PTX10008_1-re0-re0> ping mpls l2circuit virtual-circuit 400100 neighbor 10.0.255.2 count 5 detail

Request for seq 1, to interface 1003, labels <1001111, 154>, packet size 88
Reply for seq 1, return code: Egress-ok, time: 3.688 ms
        Local transmit time: 2021-08-27 09:57:16 IST 335.527 ms
        Remote receive time: 2021-08-27 09:57:16 IST 339.215 ms
Request for seq 2, to interface 1003, labels <1001111, 154>, packet size 88
Reply for seq 2, return code: Egress-ok, time: 3.540 ms
        Local transmit time: 2021-08-27 09:57:17 IST 335.246 ms
        Remote receive time: 2021-08-27 09:57:17 IST 338.786 ms
Request for seq 3, to interface 1003, labels <1001111, 154>, packet size 88
Reply for seq 3, return code: Egress-ok, time: 3.483 ms
        Local transmit time: 2021-08-27 09:57:18 IST 335.663 ms
        Remote receive time: 2021-08-27 09:57:18 IST 339.146 ms
Request for seq 4, to interface 1003, labels <1001111, 154>, packet size 88
Reply for seq 4, return code: Egress-ok, time: 3.599 ms
        Local transmit time: 2021-08-27 09:57:19 IST 334.567 ms
        Remote receive time: 2021-08-27 09:57:19 IST 338.166 ms
Request for seq 5, to interface 1003, labels <1001111, 154>, packet size 88
Reply for seq 5, return code: Egress-ok, time: 3.694 ms
        Local transmit time: 2021-08-27 09:57:20 IST 335.143 ms
        Remote receive time: 2021-08-27 09:57:20 IST 338.837 ms

--- lsping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss

PTX10008_1 Configuration

deactivate protocols ldp interface lo0.0
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 static incoming-label 1001000
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 static outgoing-label 1001111
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 static
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 virtual-circuit-id 400100
set protocols l2circuit neighbor 10.0.255.2 interface et-1/2/2.0 control-word

PTX10008_2 Configuration

deactivate protocols ldp interface lo0.0
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 static incoming-label 1001111
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 static outgoing-label 1001000
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 static
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 virtual-circuit-id 400100
set protocols l2circuit neighbor 10.0.255.1 interface et-1/2/3.0 control-word

{MASTER}
User@PTX10008_1-re0-re0> show configuration protocols l2circuit
neighbor 10.0.255.2 {
    interface et-0/0/0.0 {
        static {
            incoming-label 1001000;
            outgoing-label 1001111;
        }
        virtual-circuit-id 400100;
        control-word;
    }
}

{MASTER}
User@PTX10008_1-re0-re0> show configuration protocols ldp
##
## inactive: protocols ldp
##
interface lo0.0;

On MX platforms that run Junos OS, a "Router Alert Label 1" is not pushed by MPLS ping on both LDP and static-based L2 circuits.

MX480 Running Junos OS / LDP-Based l2circuit

user@mx480-re0> ping mpls l2circuit virtual-circuit 400100 neighbor 10.0.255.2 count 5 detail

Request for seq 1, to interface 339, label 17, packet size 88
Reply for seq 1, return code: Egress-ok, time: 0.510 ms
        Local transmit time: 2021-09-02 14:35:43 IST 568.660 ms
        Remote receive time: 2021-09-02 14:35:43 IST 569.170 ms
Request for seq 2, to interface 339, label 17, packet size 88
Reply for seq 2, return code: Egress-ok, time: 0.483 ms
        Local transmit time: 2021-09-02 14:35:44 IST 568.658 ms
        Remote receive time: 2021-09-02 14:35:44 IST 569.141 ms
Request for seq 3, to interface 339, label 17, packet size 88
Reply for seq 3, return code: Egress-ok, time: 1.055 ms
        Local transmit time: 2021-09-02 14:35:45 IST 568.659 ms
        Remote receive time: 2021-09-02 14:35:45 IST 569.714 ms
Request for seq 4, to interface 339, label 17, packet size 88
Reply for seq 4, return code: Egress-ok, time: 0.492 ms
        Local transmit time: 2021-09-02 14:35:46 IST 568.663 ms
        Remote receive time: 2021-09-02 14:35:46 IST 569.155 ms
Request for seq 5, to interface 339, label 17, packet size 88
Reply for seq 5, return code: Egress-ok, time: 2.266 ms
        Local transmit time: 2021-09-02 14:35:47 IST 568.668 ms
        Remote receive time: 2021-09-02 14:35:47 IST 570.934 ms

--- lsping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss

MX480 Running Junos OS / Static-Based l2circuit

User@mx480-re0> ping mpls l2circuit virtual-circuit 400100 neighbor 10.0.255.2 count 5 detail

Request for seq 1, to interface 339, label 1001111, packet size 88
Reply for seq 1, return code: Egress-ok, time: 0.528 ms
        Local transmit time: 2021-09-02 14:34:40 IST 38.917 ms
        Remote receive time: 2021-09-02 14:34:40 IST 39.445 ms
Request for seq 2, to interface 339, label 1001111, packet size 88
Reply for seq 2, return code: Egress-ok, time: 0.453 ms
        Local transmit time: 2021-09-02 14:34:41 IST 36.829 ms
        Remote receive time: 2021-09-02 14:34:41 IST 37.282 ms
Request for seq 3, to interface 339, label 1001111, packet size 88
Reply for seq 3, return code: Egress-ok, time: 0.488 ms
        Local transmit time: 2021-09-02 14:34:42 IST 45.927 ms
        Remote receive time: 2021-09-02 14:34:42 IST 46.415 ms
Request for seq 4, to interface 339, label 1001111, packet size 88
Reply for seq 4, return code: Egress-ok, time: 0.450 ms
        Local transmit time: 2021-09-02 14:34:43 IST 36.851 ms
        Remote receive time: 2021-09-02 14:34:43 IST 37.301 ms
Request for seq 5, to interface 339, label 1001111, packet size 88
Reply for seq 5, return code: Egress-ok, time: 0.487 ms
        Local transmit time: 2021-09-02 14:34:44 IST 38.659 ms
        Remote receive time: 2021-09-02 14:34:44 IST 39.146 ms

--- lsping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss

Solution

The "Router Alert Label 1" is pushed by an MPLS ping on LDP-based L2 circuits. This behavior/implementation is specific to PTX10008 EVO.

The current usage of a Router Alert Label 1 is for LSP Ping/Traceroute, according to RFC standards.

Refer to RFC6178 - Requirements for Label Edge Router Forwarding of IPv4 Option Packets.

5.2. Router Alert Label Imposition

[RFC3032] defines a Router Alert Label (label value of 1), which is analogous to the Router Alert IPv4 header option (option value of 148). The MPLS Router Alert Label (when exposed and processed only) indicates to downstream LSRs to examine these MPLS packets more closely. MPLS packets with the MPLS Router Alert Label are also handled as an exception by LSRs and, again, in a less efficient manner. At the time of this writing, the only legitimate use of the Router Alert Label is for LSP ping/trace [RFC4379]. Since there is also no formal standard for Router Alert Label imposition at ingress LERs.

Refer to RFC4379 - Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures.

4.3. Sending an MPLS Echo Request 

If the echo request is labeled, one MAY (depending on what is being pinged) set the TTL of the innermost label to 1, to prevent the ping request going farther than it should. Examples of where this SHOULD be done include pinging a VPN IPv4 or IPv6 prefix, an L2 VPN endpoint or a pseudowire. Preventing the ping request from going too far can also be accomplished by inserting a Router Alert label above this label; however, this may lead to the undesired side effect that MPLS echo requests take a different data path than actual data.