Continuing with the article of MPLS Multi Vendor, in this article we are going to introduce the basic configuration in the PEs. Including IS-IS and LDP in the core facing interfaces, after this configuration all the PEs should know in their routing table the IP address of the interface loopback 0 of the remaining PEs, and should populate labels using LDP.
Configuration:
IS-IS and LDP is
configured in core facing interfaces, and enabling it also in the interfaces of the P routers that connects to the PEs.
CiPE:
hostname CiPE
int e0/2
ip add 10.0.3.2 255.255.255.0
mpls ip
ip router isis
int loo 0
ip add 4.4.4.4 255.255.255.255
ip router isis
mpls ldp router-id loopback 0
router isis
net 49.0004.0004.0004.0004.00
is-type level-2-only
JPE:
set system host-name JPE
set interfaces ge-0/0/7 unit 0 family inet address 10.0.4.2/24
set interfaces ge-0/0/7 unit 0 family iso
set interfaces ge-0/0/7 unit 0 family mpls
set interfaces lo0 unit 0 family inet address 5.5.5.5/32
set interfaces lo0 unit 0 family iso address 49.0005.0005.0005.0005.00
set interfaces lo0 unit 0 family mpls
set protocols isis level 1 disable
set protocols isis interface ge-0/0/7.0
set protocols isis interface lo0.0
set protocols ldp interface ge-0/0/7.0
JP:
set interfaces ge-0/0/7 unit 0 family inet address 10.0.3.1/24
set interfaces ge-0/0/7 unit 0 family iso
set interfaces ge-0/0/7 unit 0 family mpls
set protocols isis interface ge-0/0/7.0
set protocols ldp interface ge-0/0/7.0
CiP:
int e0/2
ip add 10.0.4.1 255.255.255.0
ip router isis
mpls ip
no shut
The configuration in the Junos PE is a little bit different to the IOS and IOS-XR, you need to configure three address families in the interfaces: Inet, ISO, and MPLS. And the CLNS net address need to be configured in an interface, that normally is the loopback address.
Checking Label allocation in the PEs:
We should check that
the we have the IS-IS adjacencies between PEs and Ps and LDP neighbours as
well. Finally we should check that we are generating labels for any other
device in the network, specially for the other PEs.
CiPE:
CiPE#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 2.2.2.2/32 0 Et0/2 10.0.3.1
17 No Label 10.0.2.0/24 0 Et0/2 10.0.3.1
18 No Label 10.0.1.0/24 0 Et0/2 10.0.3.1
19 299776 3.3.3.3/32 0 Et0/2 10.0.3.1
20 299792 1.1.1.1/32 0 Et0/2 10.0.3.1
21 299808 10.0.0.0/24 0 Et0/2 10.0.3.1
23 299840 5.5.5.5/32 0 Et0/2 10.0.3.1
24 299776 10.0.4.0/24 0 Et0/2 10.0.3.1
JPE:
lab@JPE> show route table inet.3
inet.3: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1.1.1.1/32 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0, Push 16
2.2.2.2/32 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0, Push 18
3.3.3.3/32 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0
4.4.4.4/32 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0, Push 20
10.0.0.0/24 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0
10.0.1.0/24 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0, Push 17
10.0.2.0/24 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0
10.0.3.0/24 *[LDP/9] 00:04:10, metric 1
> to 10.0.4.1 via ge-0/0/7.0, Push 19
One big difference between IOS and Junos is how the routers store the MPLS labels, Cisco has a MPLS forwarding table, and Junos uses a routing table named inet.3, the global routing table in a Junos device is the inet.0.
Creating the VRFs Odd and Even:
Once the MPLS layer is working our next step is to
create the VRFs where we are going to place the customers, one of them are
going to be for Odd routers and the other is going to be for Even routers.
CiPE:
vrf definition ODD
rd 100:111
address-family ipv4
route-target export 111:111
route-target import 111:111
exit-address-family
vrf definition EVEN
rd 100:222
address-family ipv4
route-target export 222:222
route-target import 222:222
exit-address-family
interface Ethernet0/0
vrf forwarding EVEN
ip address 192.168.1.1 255.255.255.0
no shut
interface Ethernet0/1
vrf forwarding ODD
ip address 172.16.1.1 255.255.255.0
no shut
JPE:
set policy-options community rt_111:111 members target:111:111
set policy-options community rt_222:222 members target:222:222
set policy-options policy-statement Import_ODD term 1 from protocol bgp
set policy-options policy-statement Import_ODD term 1 from community rt_111:111
set policy-options policy-statement Import_ODD term 1 then accept
set policy-options policy-statement Import_EVEN term 1 from protocol bgp
set policy-options policy-statement Import_EVEN term 1 from community rt_222:222
set policy-options policy-statement Import_EVEN term 1 then accept
set policy-options policy-statement Export_ODD term 1 from protocol bgp
set policy-options policy-statement Export_ODD term 1 then community add rt_111:111
set policy-options policy-statement Export_ODD term 1 then accept
set policy-options policy-statement Export_EVEN term 1 from protocol bgp
set policy-options policy-statement Export_EVEN term 1 then community add rt_222:222
set policy-options policy-statement Export_EVEN term 1 then accept
set routing-instances ODD instance-type vrf
set routing-instances ODD interface ge-0/0/5.0
set routing-instances ODD route-distinguisher 100:111
set routing-instances ODD vrf-import Import_ODD
set routing-instances ODD vrf-export Export_ODD
set routing-instances EVEN instance-type vrf
set routing-instances EVEN interface ge-0/0/6.0
set routing-instances EVEN route-distinguisher 100:222
set routing-instances EVEN vrf-import Import_EVEN
set routing-instances EVEN vrf-export Export_EVEN
set interface ge-0/0/5.0 family inet address 172.16.2.1/24
set interface ge-0/0/6.0 family inet address 192.168.2.1/24
Probably Junos
configuration for the VPNs is a little bit more extensive because there are
some policy filtering that is mandatory in Junos and optional in IOS. Anyway if
you use the right RT you are not going to face any issue to import and export
routes in the VPNs. If you are a Cisco only engineer another configuration that could be surprising could be that the Route Targets need to be defined.