VLAN-Based Layer 2 Circuits with EoMPLS and l2circuit
I was recently asked to set up a LAN extension for a customer. After a spot of research, I was very impressed by this particular method which I've illustrated below.
Based on IETF RFC 4447 (Pseudowire Setup and Maintenance Using the Label Distribution Protocol).
Layer 2 services (such as Frame Relay, Asynchronous Transfer Mode, and Ethernet) can be "emulated" over an MPLS backbone by encapsulating the Layer 2 Protocol Data Units (PDU) and transmitting them over "pseudowires".
The service provider network is coloured orange and represents four towns/cities.
The customer network is coloured green with one site in Llanelli and one in Cardiff.
Goal
Extend the 10.77.11.0/24 network from Llanelli to Cardiff.
The end result should look like this when pinging the Llanelli site from Cardiff:
TurboKart-LLA#show ip int br Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES NVRAM administratively down down GigabitEthernet1/0 unassigned YES NVRAM up up GigabitEthernet1/0.11 10.77.11.1 YES NVRAM up up GigabitEthernet2/0 unassigned YES NVRAM administratively down down GigabitEthernet3/0 unassigned YES NVRAM administratively down down GigabitEthernet4/0 unassigned YES NVRAM administratively down down TurboKart-LLA#ping 10.77.11.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.77.11.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 48/594/1012 ms
I'm using vMX 18.2R1.9 for the service provider network. You can get a free trial from Juniper's website.
The customer network employs version 15.2 of the trusty C7200-ADVENTERPRISEK9-M.
Configuring the service provider network
vMX is a hungry beast, requiring 2GB of RAM for the virtual control plane and 4GB for the virtual forwarding plane so, first things first, we'll configure the FPC for lite-mode. This reduces the requirement to 1GB and 2GB, respectively:
set chassis fpc 0 lite-mode
Next, pop an address on the loopback and then IP the core facing interfaces. Nothing fancy here. Enable the MPLS family on each interface, too:
set interfaces lo0 unit 0 family inet address 172.16.99.1/32 set interfaces lo0 unit 0 family mpls set interfaces ge-0/0/1 unit 0 family inet address 10.10.1.1/24 set interfaces ge-0/0/1 unit 0 family mpls set interfaces ge-0/0/2 unit 0 family inet address 10.10.2.1/24 set interfaces ge-0/0/2 unit 0 family mpls
Next, enable OSPF, LDP and MPLS under the protocols stanza:
set protocols mpls interface lo0.0 set protocols mpls interface ge-0/0/1.0 set protocols mpls interface ge-0/0/2.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface ge-0/0/2.0 set protocols ldp interface ge-0/0/1.0 set protocols ldp interface ge-0/0/2.0 set protocols ldp interface lo0.0
That's the core configuration wrapped up. Repeat for all four routers, tweaking the IPs.
Configuring the access ports
For the customer-specific configuration, we'll need to configure an access port at each BT exchange (Llanelli and Cardiff) and a pseudowire (l2circuit) to transport the contents of that access port/VLAN to the other site. In this instance, we transport seven VLANs; 10 - 16. The following additional config is required:
Llanelli Exchange
set interfaces ge-0/0/3 description "Access port" set interfaces ge-0/0/3 flexible-vlan-tagging set interfaces ge-0/0/3 encapsulation flexible-ethernet-services set interfaces ge-0/0/3 unit 1000 description "TurboKart - Llanelli" set interfaces ge-0/0/3 unit 1000 encapsulation vlan-ccc set interfaces ge-0/0/3 unit 1000 vlan-id-range 10-16 set protocols l2circuit neighbor 172.16.99.4 interface ge-0/0/3.1000 virtual-circuit-id 1000 set protocols l2circuit neighbor 172.16.99.4 interface ge-0/0/3.1000 encapsulation-type ethernet set protocols l2circuit neighbor 172.16.99.4 interface ge-0/0/3.1000 ignore-mtu-mismatch
Cardiff Exchange
set interfaces ge-0/0/3 description "Access port" set interfaces ge-0/0/3 flexible-vlan-tagging set interfaces ge-0/0/3 encapsulation flexible-ethernet-services set interfaces ge-0/0/3 unit 1000 description "TurboKart - Cardiff" set interfaces ge-0/0/3 unit 1000 encapsulation vlan-ccc set interfaces ge-0/0/3 unit 1000 vlan-id-range 10-16 set protocols l2circuit neighbor 172.16.99.1 interface ge-0/0/3.1000 virtual-circuit-id 1000 set protocols l2circuit neighbor 172.16.99.1 interface ge-0/0/3.1000 encapsulation-type ethernet set protocols l2circuit neighbor 172.16.99.1 interface ge-0/0/3.1000 ignore-mtu-mismatch
All done, time to test.
Let's ping our fictitious customer's Llanelli site from VLAN 11 at Cardiff:
TurboKart-CAR#show ip int br Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES NVRAM administratively down down GigabitEthernet1/0 unassigned YES NVRAM up up GigabitEthernet1/0.11 10.77.11.2 YES NVRAM up up GigabitEthernet2/0 unassigned YES NVRAM administratively down down GigabitEthernet3/0 unassigned YES NVRAM administratively down down GigabitEthernet4/0 unassigned YES NVRAM administratively down down TurboKart-CAR#sh run int g1/0.11 Building configuration... Current configuration : 100 bytes ! interface GigabitEthernet1/0.11 encapsulation dot1Q 11 ip address 10.77.11.2 255.255.255.0 end TurboKart-CAR#ping 10.77.11.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.77.11.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 544/816/1676 ms
Job done!
There's lots more we could do here to compliment this setup so stay tuned :)