How to force VPLS/L2VPN to use a specific path

juniperjuniper-mxl2vpnldpmpls

We're using VPLS and L2VPN on Juniper MX for L2 connections. Signaling is done via BGP and label distribution via LDP.

Now we want one L2VPN to use a specific path trough the network and not follow the IGP.

As we currently only use LDP we would have to introduce RSVP alongside LDP. Are there any caveats while doing that?

I'm looking for practical examples how this is done on the Juniper boxes.

Best Answer

Short answer, just use Resource ReSerVation Protocol (RSVP).

Long answer, you could use multi-topology-routing and have multiple metrics in each interface and force some packets to different topology than another packets. But I would not really venture there.

You might want to talk to your account team that you want segment routing implemented: https://datatracker.ietf.org/doc/html/draft-previdi-filsfils-isis-segment-routing-02 (customer pressure will help resource development)

Segment routing would make it trivial to solve your problem while removing both LDP and RSVP from your network, relying only on IGP.


As my suggestion in comments did not actually work, I'll explain why not, and how to fix.
Problem is we need to have LSP installed in HW to be able to use it. And by my suggestion the RSVP LSP is not actually installed until LDP LSP goes away. So we cannot conditionally inject traffic there.

I couldn't find any way to force RSVP+LDP in ECMP, with equal preference LDP wins. But we still can achieve what is desired at least in two separate ways.

  1. Dual next-hops
    Add second next-hop in the l2circuit PEs. This next-hop will not be used by iBGP, so it draws no traffic at all.
    Now configure RSVP tunnel for this second loopback and use it as neighbor address for l2circuit.
    Net effect is, all traffic is using LDP except this l2circuit which is using RSVP
  2. RSVP only
    Create two RSVP tunnels, one using IGP path (i.e. will use same as LDP) another using your explicit path. These can be set to ECMP, i.e. all traffic will use both tunnels.
    Now as we've accomplished ECMP requirement, we can use 'routing-options forwarding-table' export policy to put some traffic on LSP_NORMAL and some traffic on LSP_EVPN. Essentially our export policy would be:

.

term EVPN {
    from community EVPN;
    then {
        install-nexthop lsp LSP_EVPN;
        accept;
    }
}
term NORMAL {
    from next-hop 1.2.3.4;
    then {
        install-nexthop lsp LSP_NORMAL;
        accept;
    }
}

Now none of the traffic would actually use the ECMP as all of the traffic would be forced to one or the other RSVP LSP.
I would prefer the 1st option.