Juniper vMX – MPLS over lt interface

I was wondering if I can run MPLS over OVS, VXLAN tenant networks in Openstack (for example VLAN tagging won’t work in such case, not by default at least, didn’t have an option to test with vlan_transparent setting on network level). Wanted to quickly check it out between a pair of vMXes with static LSPs remembering I can run logical-systems or routing-instances interconnected between themselves with tunnel interface (lt). That works just fine but only with logical-systems.

LS-vmx01 lt-0/0/0.1<–>lt-0/0/0.2 vmx01 ge-0/0/2.0<–>ge-0/0/2.0 vmx02 lt-0/0/0.2<—lt-0/0/0.1 LS-vmx02

vmx01.cfg:

 set logical-systems LS interfaces lt-0/0/0 unit 1
 set logical-systems LS routing-options static route 1.1.1.0/30 next-hop 2.2.2.2
 set chassis fpc 0 pic 0 tunnel-services bandwidth 10g
 set chassis fpc 0 lite-mode
 set chassis network-services enhanced-ip
 set interfaces lt-0/0/0 unit 1 encapsulation ethernet
 set interfaces lt-0/0/0 unit 1 peer-unit 2
 set interfaces lt-0/0/0 unit 1 family inet address 2.2.2.1/30
 set interfaces lt-0/0/0 unit 1 family mpls
 set interfaces lt-0/0/0 unit 2 encapsulation ethernet
 set interfaces lt-0/0/0 unit 2 peer-unit 1
 set interfaces lt-0/0/0 unit 2 family inet address 2.2.2.2/30
 set interfaces lt-0/0/0 unit 2 family mpls
 set interfaces ge-0/0/2 mtu 1600
 set interfaces ge-0/0/2 unit 0 family inet address 192.168.168.22/30
 set interfaces ge-0/0/2 unit 0 family mpls
 set routing-options static route 1.1.1.0/30 static-lsp-next-hop path-to-lo-vmx01
 set protocols mpls static-label-switched-path path-to-lo-vmx01 ingress next-hop 192.168.168.21
 set protocols mpls static-label-switched-path path-to-lo-vmx01 ingress to 1.1.1.1
 set protocols mpls static-label-switched-path path-to-lo-vmx01 ingress push 1000123
 set protocols mpls static-label-switched-path path-from-lo-vmx01 transit 1000124 next-hop 2.2.2.1
 set protocols mpls static-label-switched-path path-from-lo-vmx01 transit 1000124 pop
 set protocols mpls interface ge-0/0/2.0
 set protocols mpls interface lt-0/0/0.2

vmx02.cfg:

 set logical-systems LS interfaces lt-0/0/0 unit 1
 set logical-systems LS routing-options static route 2.2.2.0/30 next-hop 1.1.1.2
 set chassis fpc 0 pic 0 tunnel-services bandwidth 10g
 set chassis fpc 0 lite-mode
 set chassis network-services enhanced-ip
 set interfaces lt-0/0/0 unit 1 encapsulation ethernet
 set interfaces lt-0/0/0 unit 1 peer-unit 2
 set interfaces lt-0/0/0 unit 1 family inet address 1.1.1.1/30
 set interfaces lt-0/0/0 unit 1 family mpls
 set interfaces lt-0/0/0 unit 2 encapsulation ethernet
 set interfaces lt-0/0/0 unit 2 peer-unit 1
 set interfaces lt-0/0/0 unit 2 family inet address 1.1.1.2/30
 set interfaces lt-0/0/0 unit 2 family mpls
 set interfaces ge-0/0/2 mtu 1600
 set interfaces ge-0/0/2 unit 0 family inet address 192.168.168.21/30
 set interfaces ge-0/0/2 unit 0 family mpls
 set routing-options static route 2.2.2.0/30 static-lsp-next-hop path-to-lo-vmx02
 set routing-options static route 1.1.1.0/30 static-lsp-next-hop path-to-lo-vmx01
 set protocols mpls static-label-switched-path path-to-lo-vmx02 ingress next-hop 192.168.168.22
 set protocols mpls static-label-switched-path path-to-lo-vmx02 ingress to 2.2.2.1
 set protocols mpls static-label-switched-path path-to-lo-vmx02 ingress push 1000124
 set protocols mpls static-label-switched-path path-from-lo-vmx02 transit 1000123 next-hop 1.1.1.1
 set protocols mpls static-label-switched-path path-from-lo-vmx02 transit 1000123 pop
 set protocols mpls interface ge-0/0/2.0
 set protocols mpls interface lt-0/0/0.2

Main thing here was to set family mpls on lt-0/0/0 units and add lt-0/0/0.2 interface to protocols mpls.

Only after that POP entries appeared in routing and forwarding tables:

inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
 = Active Route, - = Last Active, * = Both 
 1.1.1.0/30         *[Direct/0] 00:32:27
                     &gt;  via lt-0/0/0.2
 1.1.1.2/32         *[Local/0] 00:32:27
                        Local via lt-0/0/0.2
 2.2.2.0/30         *[Static/5] 00:35:42
                       to 192.168.168.22 via ge-0/0/2.0, Push 1000124
 inet.3: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
 = Active Route, - = Last Active, * = Both 
 2.2.2.1/32         *[MPLS/6/1] 00:35:42, metric 0
                       to 192.168.168.22 via ge-0/0/2.0, Push 1000124
 mpls.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
 = Active Route, - = Last Active, * = Both 
 1000123            *[MPLS/6] 00:32:27, metric 1
                       to 1.1.1.1 via lt-0/0/0.2, Pop
 1000123(S=0)       *[MPLS/6] 00:32:27, metric 1
                       to 1.1.1.1 via lt-0/0/0.2, Pop

 2.2.2.0/30         user     0 10.135.7.22       Push 1000124      613     2 ge-0/0/2.0
 
 1000123            user     0 1.1.1.1           Pop        647     2 lt-0/0/0.2
 1000123(S=0)       user     0 1.1.1.1           Pop        648     2 lt-0/0/0.2