FTEL Lab Case Study v1.5
FTEL Lab Case Study v1.5
1
Revision history
Name Date Reason For Changes Version
Doan Minh Tu 26/01/16 Add RSVP in the core & L3VPN adjustment 1.4
Doan MInh Tu 15/02/16 Add multihome case and mapping to configuration 1.5
checklist
2
TABLE OF CONTENT
3
Table of Contents
1. Lab overview ....................................................................................................................................... 6
1.1. Virtual machine overview: ........................................................................................................... 6
1.2. Virtual machine connection setup: ............................................................................................... 6
1.3. Topology connection overview .................................................................................................... 9
1.3.1. Naming convention & Router role ........................................................................................ 9
1.3.2. Connection overview .......................................................................................................... 10
1.1.1. VLAN & IP planning overview .......................................................................................... 10
1.2. Connection configuration template ............................................................................................ 10
1.3. Grouping configuration .............................................................................................................. 12
2. Core deployment: .............................................................................................................................. 13
2.1. ISIS ............................................................................................................................................. 13
2.1.1. ISIS address planning ......................................................................................................... 13
2.1.2. ISIS zone overview & requirement..................................................................................... 13
2.1.3. ISIS adjacency template & check command ...................................................................... 14
2.1.4. ISIS routing policy requirement.......................................................................................... 16
2.1.5. ISIS routing policy config template & check command ..................................................... 17
2.2. LDP ............................................................................................................................................ 20
2.2.1. LDP overview ..................................................................................................................... 20
2.2.2. LDP configuration template ................................................................................................ 21
2.2.3. LDP basic verification ....................................................................................................... 22
2.3. BGP ............................................................................................................................................ 25
2.3.1. BGP planning & requirement ............................................................................................. 25
2.3.2. BGP configuration template and check command.............................................................. 26
2.3.3. BGP routing policy & requirement ..................................................................................... 27
2.3.4. BGP routing policy config template & check command .................................................... 29
2.3.5. BGP policy verification ...................................................................................................... 34
2.4. RSVP .......................................................................................................................................... 38
2.4.1. RSVP overview & clarification: ......................................................................................... 38
2.4.2. RSVP configuration template ............................................................................................. 39
4
2.4.3. Tunneling verification ......................................................................................................... 42
3. Service deployment ........................................................................................................................... 48
3.1. L3VPN ....................................................................................................................................... 48
3.1.1. Planning & perquisite: ........................................................................................................ 48
3.1.2. Configuration example for Customer2 (quick method) ...................................................... 50
3.1.3. Common verification for L3VPN: ...................................................................................... 51
3.1.4. Configuration example for Customer1 (detailed method) .................................................. 55
3.1.5. BGP PE-CE link advertisement for L3VPN: ...................................................................... 56
3.2. L2VPN ....................................................................................................................................... 65
3.2.1. Planning & perquisite: ........................................................................................................ 65
3.2.2. Common configuration and verification method: ............................................................... 67
3.2.3. Case study 1: transparent L2VPN without vlan-tagging: ................................................... 76
3.2.4. Case study 2: tagged L2VPN .............................................................................................. 81
3.2.5. Case study 3: trunk with vlan-id-list ................................................................................... 86
3.3. VPLS .......................................................................................................................................... 89
3.3.1. Planning & perquisite: ........................................................................................................ 89
3.3.2. Common configuration and verification method: ............................................................... 91
3.3.3. Case study 1: transparent VPLS without vlan-tagging: .................................................... 100
3.3.4. Case study 2: VPLS with similar vlan-tagging on all side: .............................................. 102
3.3.5. Study 2: VPLS with different vlan-tag configuration on each side: ................................. 105
5
1. Lab overview
After the core network has been deployed using vMX, an additional virtual machine running Olive
(version 12.1 or 8.4) shall be use to represent CE routers.
Olive: 256MB RAM. Recommended running on VMware workstation and add all at least 4
virtual network adapter (NIC) supported by VMware station
vMX: 1GB RAM and all real machine’s CPU core. Recommended running on VMware
workstation and add all 10 virtual network adapter (NIC) supported by VMware station (on a
weak machine, GNS3 is unable to handle all 13 vMX routers required for the core network)
user root/juniper
password juniper@123
Olive: each NIC added by VMware will be added to Olive device under the name em0, em1,
em2, em3…. alternately
6
On vMX, the first two NIC added by VMware will be unusable. The third NIC will be named ge-
0/0/0, the fourth one is ge-0/0/1 and so forth
In order to deploy the topologies required for this lab, on the vMX virtual machines we will use:
One interface ge-0/0/0 for management connection – connect to real machine via VMnet1 and
VMnet1 network adapter on the host machine
Four interface ge-0/0/1 to ge-0/0/4 will be used in the core network
Three interface ge-0/0/5, ge-0/0/6 and ge-0/0/7 will be used as CE (Customer Edge router) facing
interface on PE (Provider Edge) routers.
Training participant can either use the provided virtual machine or setup a similar connection as
provided in the above images, which is:
7
Recommended additional setup
Adding a virtual Serial Port on each virtual machine and use the named pipe \\.\pipe\vMX on VMX,
\\.\pipe\Olive on Olive. Use the following software to connect to console port on each device:
8
1.3. Topology connection overview
9
1.3.2. Connection overview
All connection between provider routes will use two pair of interface
Ge-0/0/1 and ge-0/0/2 connection is for up-down link connection ( from uPE to nPE and from
nPE to Core)
Ge-0/0/3 and ge-0/0/4 is use to connect router of the same level (uPE-uPE, nPE-nPE and Core to
Core)
Each logical unit used on these four core interface (ge-0/0/1 to ge-0/0/4) will have unit number
corresponded with its associated IP. For example connection between HN-UPE1 to HN-NPE1 use vlan-
id 11 thus the connection between these two router will be from ge-0/0/2.11 to ge-0/0/1.11
Three interface ge-0/0/5, ge-0/0/6 and ge-0/0/7 will be reserved for CE connection use case as specified
in section 3.
X = Zone ID
Y start with 1 for HN routers, start with 2 for HCM routers, following with counter for router
type.
10
unit 0 {
family inet {
address 192.168.1.1/24;
}
}
}
ge-0/0/1 {
flexible-vlan-tagging;
encapsulation flexible-ethernet-services;
}
ge-0/0/2 {
flexible-vlan-tagging;
encapsulation flexible-ethernet-services;
}
ge-0/0/3 {
flexible-vlan-tagging;
encapsulation flexible-ethernet-services;
}
ge-0/0/4 {
flexible-vlan-tagging;
encapsulation flexible-ethernet-services;
}
All basic configuration of router connection simply consist of the planning L3 IP address and vlan-id,
placed in the corresponding logical router//
11
family inet {
address 3.0.0.2/31;
}
}
unit 35 {
vlan-id 35;
family inet {
address 3.0.0.8/31;
}
}
}
lo0 {
unit 3011 {
family inet {
address 10.0.3.11/32;
}
}
}
A group of configuration is a set of configuration that serve the same purpose, placed in [edit groups
groupname] hierarchy
Those configuration will have no effect until we active the group configuration by using the command
To deactive the effect on the configuration we placed in a group, simply remove the apply operation
In this lab, each section (ISIS, BGP, LDP, RSVP, L3VPN, L2VPN use cases…) should have its
configuration placed in a corresponding group. We only enable the necessary configuration in each
section
12
2. Core deployment:
2.1. ISIS
Area Address, comprise of the Authority and Format Identifier (AFI) start with 49 - stand for
locally administered (aka private addresses) and the area ID.– similar to OSPF area ID but with
difference length, in this lab we choose 1840.XXXX with
o XXXX = 0001 for HN access zone
o XXXX = 0002 of HCM access zone
o XXXX= 0003 for core zone
So we have three Area Address on this lab which is 49.1840.0001, 49.1840.0002 and 49.1840.0003
//Note that 1840 is taken from FTEL’s AS number, for more typical example we can use 49.0001
System (Router) specific ID, typical constructed based on loopback IPv4 address in the
following way
o Fill in all octet of IPv4 address, eg 10.0.3.11 > 010.000.003.011
o Move the dot to construct three four-digit octet, eg 0100.0000.3011
The NSEL, which must always be set to 0 for a router.
Core zone only consist of four core router which form L2 adjacency with each other
Core routers also form L2 ISIS adjacency with its connected Route Reflector routers, however
the metric on the link RR-CORE must be set to maximum value to ensure traffic never pass
through Route Reflector router (explain later in BGP section)
Core router form L2 adjacency with NPE routers which act as aggregate router for its respective
zone
UPE router only form L1 adjacency with each other and with NPE routers
13
NPE router form L2 AND L1 adjacency with each other to ensure all NPE routers have full
routing information
14
}
unit 35 {
family iso;
}
}
lo0 {
family iso {
address 49.1840.0003.0100.0000.3011.00;
}
}
}
15
}
interface ge-0/0/3.35 {
point-to-point;
level 1 disable;
}
}
}
To check ISIS adjacency, first check the enabled interface on all participating router
//Note that on the L column, 2 mean that the interface is L2 link, 1 mean that it is a
L1 link and 3 mean that that interface is running both Level 1 and Level 2 ISIS
connection
The route leaking policy between ISIS zones is as depicted in the diagram, which is
From core zone to access zones, we advertise nothing but multicast sources address
16
From access zone to core zones, we advertise nothing
This will ensure minimal route propagation between zones in the network but still keep flows going,
because all NPE route still have full routing information. Because:
By default, all ISIS L1/L2 router that connect zones (NPE router in this lab) will send attached-
bit to L1 router in its respective zone. Those L1 router will then create a default route to the
L1/L2 router to reach other zone
BGP Routes received from access zones will have its next-hop change to NPE routers (see BGP
section), so all traffic traverse the core will know to use NPE routers to reach access routes.
//Note that for this design, all route leaking policy must be configure on the NPE routers
To add permission to advertise a specific route from Core to access zone HN using ISIS (not
recommended), we can insert the following term in the policy-statement ISIS-CORE-TO-HN
term example {
from {
level 2;
route-filter x.x.x.x/y orlonger;
route-filter PREFIXLIST-MULTICAST;
}
to level 1;
then accept;
17
}
term default {
from level 2;
to level 1;
then reject;
}
The result is checked by showing the inet.0 table on all router. On access UPE router should only have a
default route to NPE and intra-zone link. On Core router should not have any route from access zones.
// Core router still see some link directly connected to NPE routers. However UPE
loopbacks should not present on core router’s routing table
1.0.0.0/31 *[IS-IS/18] 04:06:18, metric 20
> to 3.1.0.0 via ge-0/0/1.311
1.0.0.6/31 *[IS-IS/18] 04:05:33, metric 30
to 3.1.0.0 via ge-0/0/1.311
> to 3.0.0.3 via ge-0/0/3.32
1.0.0.8/31 *[IS-IS/18] 04:06:18, metric 20
> to 3.1.0.0 via ge-0/0/1.311
2.0.0.0/31 *[IS-IS/18] 04:06:23, metric 30
> to 3.0.0.1 via ge-0/0/3.31
2.0.0.4/31 *[IS-IS/18] 04:06:24, metric 40
to 3.0.0.1 via ge-0/0/3.31
> to 3.0.0.3 via ge-0/0/3.32
2.0.0.6/31 *[IS-IS/18] 04:06:23, metric 30
> to 3.0.0.1 via ge-0/0/3.31
18
3.0.0.4/31 *[IS-IS/18] 04:09:57, metric 20
> to 3.0.0.3 via ge-0/0/3.32
3.0.0.6/31 *[IS-IS/18] 04:10:04, metric 20
> to 3.0.0.1 via ge-0/0/3.31
3.0.0.10/31 *[IS-IS/18] 01:29:25, metric 20
> to 3.0.0.3 via ge-0/0/3.32
to 3.0.0.9 via ge-0/0/3.35
3.0.0.12/31 *[IS-IS/18] 01:30:37, metric 20
> to 3.0.0.1 via ge-0/0/3.31
3.0.0.14/31 *[IS-IS/18] 01:30:10, metric 30
> to 3.0.0.1 via ge-0/0/3.31
to 3.0.0.3 via ge-0/0/3.32
3.1.0.2/31 *[IS-IS/18] 04:09:57, metric 20
> to 3.0.0.3 via ge-0/0/3.32
3.2.0.0/31 *[IS-IS/18] 04:10:04, metric 20
> to 3.0.0.1 via ge-0/0/3.31
3.2.0.2/31 *[IS-IS/18] 01:30:10, metric 30
> to 3.0.0.1 via ge-0/0/3.31
to 3.0.0.3 via ge-0/0/3.32
10.0.1.11/32 *[IS-IS/18] 04:06:18, metric 10
> to 3.1.0.0 via ge-0/0/1.311
10.0.1.12/32 *[IS-IS/18] 04:05:33, metric 20
> to 3.1.0.0 via ge-0/0/1.311
to 3.0.0.3 via ge-0/0/3.32
10.0.2.11/32 *[IS-IS/18] 04:06:23, metric 20
> to 3.0.0.1 via ge-0/0/3.31
10.0.2.12/32 *[IS-IS/18] 04:06:24, metric 30
to 3.0.0.1 via ge-0/0/3.31
> to 3.0.0.3 via ge-0/0/3.32
10.0.3.12/32 *[IS-IS/18] 04:09:57, metric 10
> to 3.0.0.3 via ge-0/0/3.32
10.0.3.13/32 *[IS-IS/18] 01:29:25, metric 10
> to 3.0.0.9 via ge-0/0/3.35
10.0.3.21/32 *[IS-IS/18] 04:10:04, metric 10
> to 3.0.0.1 via ge-0/0/3.31
10.0.3.22/32 *[IS-IS/18] 01:30:10, metric 20
to 3.0.0.1 via ge-0/0/3.31
> to 3.0.0.3 via ge-0/0/3.32
10.0.3.23/32 *[IS-IS/18] 01:30:01, metric 20
> to 3.0.0.1 via ge-0/0/3.31
19
2.2. LDP
LDP will be enable on all interface of all CORE, RR and NPE routers and also all core facing interface
of UPE routers. Which include:
//Note that when we first enable LDP on all those interface, each router will only have LDP route to
loopback of other routers in the same area, since we have disable all inter-area route advertisement in
ISIS. Inter-area LDP route is still necessary, but will be advertise via BGP in the next section.
20
2.2.2. LDP configuration template
First we enable track-igp-metric and deaggregate for LDP universally on all routers.
For LDP interface configuration, first we need to enable family mpls on all logical interface to be run
LDP on a router, example on HN-CORE1
21
}
ge-0/0/3 {
unit 31 {
family mpls;
}
unit 32 {
family mpls;
}
unit 35 {
family mpls;
}
}
Although LDP neighbor can still be up without enabling interface in protocol mlps, doing so will result
in label allocation failure when we advertise VPN routes across the network – so this operation is still a
must (trainee can try remove interface from protocol mpls and use show route advertising protocol
bgp to see the error message)
// First check that all neccesary interface is enabled, and the loopback interface is
include
[edit]
juniper@vMX# run show ldp interface logical-system HN-CORE1
22
Interface Label space ID Nbr count Next hello
lo0.3011 10.0.3.11:0 0 0
ge-0/0/1.311 10.0.3.11:0 1 1
ge-0/0/3.31 10.0.3.11:0 1 0
ge-0/0/3.32 10.0.3.11:0 1 1
ge-0/0/3.35 10.0.3.11:0 1 1
// Notice the neighbor count on all ge interface is 1, confirm by display the neighbor
state
[edit]
juniper@vMX# run show ldp neighbor logical-system HN-CORE1
Address Interface Label space ID Hold time
3.1.0.0 ge-0/0/1.311 10.0.1.11:0 14
3.0.0.1 ge-0/0/3.31 10.0.3.21:0 11
3.0.0.3 ge-0/0/3.32 10.0.3.12:0 12
3.0.0.9 ge-0/0/3.35 10.0.3.13:0 12
// Note that for LDP, if the neighbor forming process failed, the neighbor will simply
dissapear
juniper@vMX# run show ldp neighbor logical-system HN-CORE1
Address Interface Label space ID Hold time
3.1.0.0 ge-0/0/1.311 10.0.1.11:0 14
//we can confirm the neighbor forming failure by looking the neighbor cound column on
LDP-enabled interfaces. If this happened, double check the configuration on the neighbor
juniper@vMX# run show ldp interface logical-system HN-CORE1
Interface Label space ID Nbr count Next hello
lo0.3011 10.0.3.11:0 0 0
ge-0/0/1.311 10.0.3.11:0 1 1
ge-0/0/3.31 10.0.3.11:0 0 1
ge-0/0/3.32 10.0.3.11:0 0 2
ge-0/0/3.35 10.0.3.11:0 0 1
//As explained above, when LDP is first enabled, the number of inter-area LDP route is limited until we
deploy BGP policy, this is the state of inet.3 table without BGP deployed
//UPE routers only have LDP routes to access routers in the same zone
[edit]
juniper@vMX# run show route table inet.3 logical-system HN-UPE1
//Core routers only have LDP routes to core routers and RR and NPE
juniper@vMX# run show route table inet.3 logical-system HN-CORE1
23
+ = Active Route, - = Last Active, * = Both
//NPE routers only have LDP routes to core,the other NPEs and its respective access zone
juniper@vMX# run show route table inet.3 logical-system HN-NPE1
24
2.3. BGP
BGP will be the main signaling method for all service routes (L2VPN, VPLS, L3VPN), as well as signal
reachability for loopback in inet.0 and inet.3
All NPE routers act as route reflector for all UPE router in their respective region
HN-RR act as route reflector for all NPE router in all access area of HN
HCM-RR act as route reflector for all NPE router in all access area of HCM
HN-RR and HCM-RR form normal IBGP peering session
25
2.3.2. BGP configuration template and check command
BGP configuration is different between UPE, NPE and RR. However all devices should have
autonomous system set to 18403 in routing-options first
For NPE router, use two different group for access and core BGP neighbor
26
authentication-key "$9$IaeEreM8X-bs"; ## SECRET-DATA
// specify a cluster ID to make this router a route reflector, use the same ID for both
NPE
cluster 1.1.1.10;
// NPE must form BGP session with ALL UPE router in its zone
neighbor 10.0.1.101;
neighbor 10.0.1.102;
neighbor 10.0.1.103;
}
group NPEtoCORE {
type internal;
// authentication key must match betwene RR and NPE
authentication-key "$9$luZKLx-VwgaZ"; ## SECRET-DATA
// HN-RR loopback address to receive route from core
neighbor 10.0.3.13;
}
}
}
RR router act as route reflector for all NPE router in its region and form normal IBGP session with the
other RR. Example on HN-RR
group NPEtoCORE {
[edit groups BGP logical-systems HN-RR]
juniper@vMX# show
protocols {
bgp {
local-address 10.0.3.13;
group COREto-HN-NPE {
type internal;
// authentication key must match betwene RR and NPE
authentication-key "$9$9auYAO1EcyKWL"; ## SECRET-DATA
// Specify cluster ID dedicated for RR-NPE session to make HN-RR act as RR for all HN-
NPE routers
cluster 1.1.1.1;
neighbor 10.0.1.11;
neighbor 10.0.1.12;
}
// In this lab we only have one RR router for each region, however in practice several
RR routers in core may all have BGP session with each other – hence the name FullMesh
group CORE-FullMesh {
type internal;
neighbor 10.0.3.23;
}
}
}
27
the remote NPE will pickup the shortest path for destination UPE
However since according to this design ISIS do NOT provide reachability from core to access loopback,
NPE router must perform next-hop-self operation on two direction:
Route with UPE as BGP protocol-next-hop will have its protocol-next-hop (BGP next-hop)
changed to NPE when exiting an access zone. Because routers in the core and NPE in other zone
do NOT know any routes in that access zone except for the corresponding NPE’s address
Route with remote NPE (NPE on another access zone) as BGP protocol-next-hop will have its
protocol-next-hop (BGP next-hop) changed (again) to local NPE when entering an access zone
This is an example diagram for route advertisement from HCM access zone to HN access zone ( the
opposite direction operation is completely similar)
Note that all these policy is configured in the outbound direction of a BGP session of NPE routers
using export policy.
28
Export policy from HCM-NPE to HCM-RR
Export policy from HN-NPE to HN-UPE
For these policy to work, we need to enable BGP’s support of advertisement of labeled route in inet.3 in
all BGP enabled router
logical-systems {
<*> {
protocols {
bgp {
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
}
}
}
First of all, on all NPE routers we will create prefix-list that match each area loopback range for more
flexibility
29
[edit groups BGPpolicy logical-systems HN-NPE1]
policy-options {
prefix-list HN-LOOPBACK-RANGE {
10.0.1.0/24;
}
prefix-list HCM-LOOPBACK-RANGE {
10.0.2.0/24;
}
// For multicast source range or other zone, create prefix-list for each
prefix-list XXX-LOOPBACK-RANGE {
10.0.X.0/24;
}
}
Also, on all NPE routers we create aggregate route for loopback range of respective access zone
The configuration example/template here has been divided into two part represent two direction for
easier understanding. The actual provided to trainee will be all group into the configuration group
BGPpolicy
30
a. Direction 1 : from access to core
On NPE routers, to apply export policy when exporting route from access zone to core zone. We apply it
in BGP group NPEtoCORE – the BGP group in which the BGP peer in core zone is configured.
Example on HN-NPE1
The configuration of the policy named BGP-HN-TO-CORE consist of two main part, the first two term
handle route from inet.3 table
// 0.0.0.0/0 mean everything-every routes will be advertised, but the net mask length is
limited to /32 only (/32 mean loopback address – allow for next-hop reachability
resolution)
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
then {
//NPE will change the BGP next-hop of these routes to itself (HN-NPE1 in this example)
before advertising them into the core
next-hop self;
accept;
}
}
term INET3-NOTLOOPBACK {
from {
rib inet.3;
//All other routes which do not have net mask length /32 is not loopback address and
should be suspended from advertising into the core
route-filter 0.0.0.0/0 prefix-length-range /0-/31;
}
then reject;
}
31
}
}
Additionally, we have two term that help advertising the aggregated/summed loopback address of
access zone – but in inet.0 table :
The configuration of the policy named BGP-CORE-TO-HN consist of two main part, the first two term
handle route from inet.3 table
32
[edit groups BGPpolicy logical-systems HN-NPE1]
policy-options {
policy-statement BGP-CORE-TO-HN {
// This term allow all LDP/BGP route with length /32 from inet.3 tablet on HN-NPE1 to be
advertise to its BGP peer on the access zone (HN-UPEx in particular)
//Which mean all LDP/BGP route to core router’s loopback will be advertise to HN-UPEx
term INET3-LOOPBACK {
from {
protocol [ bgp ldp ];
rib inet.3;
// 0.0.0.0/0 mean everything-every routes will be advertised, but the net mask length is
limited to /32 only (/32 mean loopback address – allow for next-hop reachability
resolution)
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
then {
//NPE will change the BGP next-hop of these routes to itself (HN-NPE1 in this example)
before advertising them to access routers
next-hop self;
accept;
}
}
term INET3-NOTLOOPBACK {
from {
//All other routes which do not have net mask length /32 is not loopback address and
should not be advertised to UPE routers
rib inet.3;
route-filter 0.0.0.0/0 prefix-length-range /0-/31;
}
then reject;
}
}
Additionally, we have two term that help advertising the aggregated/summed loopback address of the
core and other remote access zones into the access zone of that particular NPE
33
// This term should look in inet.0 table for routes to reach other access area – which
NPE received from HN-RR so the protocol must be BGP instead of aggregate
protocol bgp;
// On this router we already created prefix-list name HCM-LOOPBACK-RANGE which mapped to
10.0.2.0/24. Alternately, trainee can specify route-filter 10.0.2.0/24 exact here
prefix-list-filter HCM-LOOPBACK-RANGE exact;
}
then {
//This loopback range will also have their BGP next-hop changed to local NPE’s loopback
(HN-NPE1 in this example) because UPE routers in the HN access zone do not know anything
about the core or other zone’s NPE address
next-hop self;
accept;
}
}
//Everything else that is not loopback summed range should be rejected
term INET0-DEFAULT {
from family inet;
then reject;
}
}
}
a. INET.0
First of all, two RR router should have the summed loopback range of all access area
juniper@vMX# run show route protocol bgp logical-system HN-RR table inet.0
inet.0: 32 destinations, 33 routes (32 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
//Carefully check that HN-RR should receive TWO route to HN access zone summed address,
with two different next-hop, because both HN-NPE router should be advertising them with
itself as the next-hop
juniper@vMX# run show route protocol bgp logical-system HCM-RR table inet.0
34
10.0.1.0/24 *[BGP/170] 00:45:03, localpref 100, from 10.0.3.13
AS path: I, validation-state: unverified
> to 3.0.0.12 via ge-0/0/4.37, Push 300080
10.0.2.0/24 *[BGP/170] 00:45:11, localpref 100, from 10.0.2.11
AS path: I, validation-state: unverified
> to 3.0.0.12 via ge-0/0/4.37, Push 299776
[BGP/170] 00:45:07, localpref 100, from 10.0.2.12
AS path: I, validation-state: unverified
> to 3.0.0.14 via ge-0/0/3.38, Push 299776
Any UPE routers should have – (but not mandatory for most service to function) - a inet.0 route to all
other access area summed loopback
juniper@vMX# run show route protocol bgp logical-system HCM-UPE1 table inet.0
juniper@vMX# run show route protocol bgp logical-system HN-UPE2 table inet.0
//Also, the next-hop for these route on UPE routers should be the local NPE router
juniper@vMX# run show route protocol bgp logical-system HN-UPE2 table inet.0 detail
inet.0: 14 destinations, 15 routes (14 active, 0 holddown, 0 hidden)
10.0.2.0/24 (2 entries, 1 announced)
*BGP Preference: 170/-101
Next hop type: Indirect
Address: 0x97a797c
Next-hop reference count: 3
Source: 10.0.1.11
Next hop type: Router, Next hop index: 1955
Next hop: 1.0.0.2 via ge-0/0/4.12, selected
Label operation: Push 299824
Label TTL action: prop-ttl
Load balance label: Label 299824: None;
35
Session Id: 0x700004
Protocol next hop: 10.0.1.11
Indirect next hop: 0x95c5ed0 1048620 INH Session ID: 0x700007
State: <Active Int Ext>
Local AS: 18403 Peer AS: 18403
Age: 51:09 Metric2: 20
Validation State: unverified
Task: BGP_18403.10.0.1.11+179
Announcement bits (2): 1-KRT 5-Resolve tree 4
AS path: I (Originator)
Aggregator: 18403 10.0.2.11
Cluster list: 1.1.1.10 1.1.1.1 2.2.2.2
Originator ID: 10.0.2.11
Accepted
Localpref: 100
Router ID: 10.0.1.11
BGP Preference: 170/-101
Next hop type: Indirect
Address: 0x968025c
Next-hop reference count: 1
Source: 10.0.1.12
Next hop type: Router
Next hop: 1.0.0.5 via ge-0/0/3.13, selected
Label operation: Push 299792
Label TTL action: prop-ttl
Load balance label: Label 299792: None;
Session Id: 0x0
Protocol next hop: 10.0.1.12
Indirect next hop: 0x95c6530 - INH Session ID: 0x0
State: <NotBest Int Ext>
Inactive reason: Not Best in its group - Update source
Local AS: 18403 Peer AS: 18403
Age: 9:46 Metric2: 20
Validation State: unverified
Task: BGP_18403.10.0.1.12+52656
AS path: I (Originator)
Aggregator: 18403 10.0.2.11
Cluster list: 1.1.1.10 1.1.1.1 2.2.2.2
Originator ID: 10.0.2.11
Accepted
Localpref: 100
Router ID: 10.0.1.12
b. INET.3
INET.3 table on all BGP participated router should reach complete synchronization – that is – every
BGP-enabled router should have LDP route to other BGP-enabled router regardless of area/zones. This
ensure reachability for all VPN next-hop resolution
juniper@vMX> show route table inet.3 logical-system HN-UPE1 | match /32 | count
Count: 15 lines
36
juniper@vMX> show route table inet.3 logical-system HN-UPE2 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HN-NPE1 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HN-NPE2 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HN-RR | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HCM-UPE1 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HCM-UPE2 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HCM-NPE1 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HCM-NPE2 | match /32 | count
Count: 15 lines
juniper@vMX> show route table inet.3 logical-system HCM-RR | match /32 | count
Count: 15 lines
37
2.4. RSVP Case study1: 1-hop RSVP on access network
After completing section 2.1, 2.2, 2.3 and 2.4 – trainee can already proceed to service configuration
because LDP has provided sufficed infrastructure for these service to run.
However, In order to give mpls protection for LDP protocol, according to HLD and LLD we will deploy
LDP tunneling over one-hop rsvp-lsp:
But please note that example for traffic-engineering capability of RSVP will be limited due to this
design and the configuration perform here is very minimal.
38
2.4.2. RSVP configuration template
RSVP configuration preparation is also similar to LDP, which include:
We already perform these two step with LDP – so we can go straight to creating label switched path
(LSP) for RSVP. Two step are needed:
Enable interfaces in protocol rsvp with necessary authentication and protection parameter
Creating one-hop LSP on protocol mpls hierarchy.
a. Interface configuration
RSVP interface will be created with the following parameter
Note that RSVP neighbor will NOT come up after we enable rsvp on all interface of all participating
routers. These neighbor only come up once we have create an RSVP-signaled LSP that use the link
[edit]
juniper@vMX# run show rsvp neighbor logical-system HN-UPE1
RSVP neighbor: 0 learned
[edit]
juniper@vMX# run show rsvp neighbor logical-system HN-UPE2
RSVP neighbor: 0 learned
[edit]
juniper@vMX# run show rsvp neighbor logical-system HN-NPE1
RSVP neighbor: 0 learned
39
[edit]
juniper@vMX# run show rsvp neighbor logical-system HN-NPE1
RSVP neighbor: 0 learned
// Although neighbor is not coming up – we can verify the interface stateto see if they
are recognized by rsvp protocol
[edit]
juniper@vMX# run show rsvp interface logical-system HN-UPE1
RSVP interface: 2 active
Active Subscr- Static Available Reserved Highwater
Interface State resv iption BW BW BW mark
ge-0/0/2.11 Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
ge-0/0/3.12 Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
[edit]
juniper@vMX# run show rsvp interface logical-system HN-UPE2
RSVP interface: 2 active
Active Subscr- Static Available Reserved Highwater
Interface State resv iption BW BW BW mark
ge-0/0/3.13 Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
ge-0/0/4.12 Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
[edit]
juniper@vMX# run show rsvp interface logical-system HN-NPE1
RSVP interface: 3 active
Active Subscr- Static Available Reserved Highwater
Interface State resv iption BW BW BW mark
ge-0/0/1.11 Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
ge-0/0/2.311Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
ge-0/0/3.15 Up 0 100% 1000Mbps 1000Mbps 0bps 0bps
RSVP LSP is created in [edit protocol mpls] hierarchy of each logical-system. Example on HN-UPE2
40
link-protection;
}
}
}
After the LSP has been created, on HN-UPE2 we will see RSVP neighbor come up. We can also check
the LSP that use HN-UPE2 as ingress point
After full configuration, carefully verify LSP state in all three category (Ingress/Egress/Transit) on each
router, make sure no LSP is marked as down. If any LSP Ingress/Egress LSP is down, double check the
interface and LSP configuration on both Ingress/Egress router
[edit]
juniper@vMX# run show mpls lsp logical-system HN-UPE1
Ingress LSP: 2 sessions
To From State Rt P ActivePath LSPname
10.0.1.11 10.0.1.101 Up 0 * HN-UPE1_to_HN-NPE1
10.0.1.102 10.0.1.101 Up 0 * HN-UPE1_to_HN-UPE2
Total 2 displayed, Up 2, Down 0
41
Total 4 displayed, Up 4, Down 0
^
syntax error.
juniper@vMX# run show mpls lsp logical-system HN-NPE1
Ingress LSP: 2 sessions
To From State Rt P ActivePath LSPname
10.0.1.12 10.0.1.11 Up 0 * HN-NPE1_to_HN-NPE2
10.0.1.101 10.0.1.11 Up 0 * HN-NPE1_to_HN-UPE1
Total 2 displayed, Up 2, Down 0
// Either remove application of RSVP group of perform the check before commit RSVP
configuration
[edit]
juniper@vMX delete apply-groups RSVP
[edit]
juniper@vMX# commit
commit complete
// It’s best to verify by tracing between hops that are not directly connected
[edit]
juniper@vMX# run traceroute mpls ldp 10.0.1.12 logical-system HN-UPE2
Probe options: ttl 64, retries 3, wait 10, paths 16, exp 7, fanout 16
42
[edit]
juniper@vMX# run traceroute mpls ldp 10.0.1.103 logical-system HN-UPE1
Probe options: ttl 64, retries 3, wait 10, paths 16, exp 7, fanout 16
// However note that tracing to other access area will not work because their presence
in inet.3 table is under the form of BGP routes
After one-hop RSVP-LSP tunneling has been completed, we can verify the tunneling state with the same
command
[edit]
juniper@vMX# set apply-groups RSVP
[edit]
juniper@vMX# commit
commit complete
// Note that the only the first tranport link on the path use LDP, after that they use
RSVP-TE rather than LDP as before
[edit]
juniper@vMX# run traceroute mpls ldp 10.0.1.103 logical-system HN-UPE1
Probe options: ttl 64, retries 3, wait 10, paths 16, exp 7, fanout 16
[edit]
juniper@vMX# run traceroute mpls ldp 10.0.1.12 logical-system HN-UPE2
Probe options: ttl 64, retries 3, wait 10, paths 16, exp 7, fanout 16
// For further verification, trainnee can try deactive the link between HN-UPE1 and HN-
NPE1 and observe that all path from HN-UPE1 to HN-NPE2 use RSVP-TE – except for the
first link when traffic leave ingress router
[edit]
juniper@vMX# set logical-systems HN-UPE1 interfaces ge-0/0/2.11 disable
43
[edit]
juniper@vMX# commit
commit complete
[edit]
juniper@vMX# run traceroute mpls ldp 10.0.1.12 logical-system HN-UPE1
Probe options: ttl 64, retries 3, wait 10, paths 16, exp 7, fanout 16
44
2.5. RSVP Case study2: RSVP across the core network
For a more detailed illustration of LDP tunnel over RSVP, we can setup RSVP signaled LSP in the core
network according to the following diagram
a. Interface configuration
RSVP interface configuration is similar to Case study 1- with the same parameter.
Note that RR-CORE router connection do not always need a RSVP sessions enabled
Note that LSP is unidirectional and thus each NPE router would require three LSP to the other three
NPE router. The parameter is similar to the previous case
45
ldp-tunneling;
link-protection;
}
label-switched-path HN-NPE1_to_HCM-NPE2 {
to 10.0.2.12;
ldp-tunneling;
link-protection;
}
label-switched-path HN-NPE1_to_HN-NPE2 {
to 10.0.1.12;
ldp-tunneling;
link-protection;
}
}
}
First, verify that each NPE router has been correctly set up with three ingress LSP to the correct
destination
As depicted in case study 1, the core do not require RSVP to work properly. Before enabling RSVP in
the core – LDP tracing work from HN-NPE to HCM-NPE with pure LDP
After enabling RSVP with ldp-tunneling – LDP will make use of RSVP signaled LSP when traversing
from NPE to NPE
46
ttl Label Protocol Address Previous Hop Probe Status
1 300128 LDP 3.1.0.1 (null) Success
2 300096 RSVP-TE 3.0.0.1 3.1.0.1 Success
3 3 RSVP-TE 3.2.0.1 3.0.0.1 Egress
47
3. Service deployment
//For simplicity – Both RR router will be removed from the illustrations in this section – since they only
service in advertising the VPN route (all case as illustrated in section 2.3.4) – but do not participate in
the forwarding of traffic.
//If trainee use different virtual machine setup from section 1 – please make sure that ALL CE facing
interface must be dedicated – that is they are not used in the core and do not connect to the same
VMware VMnet with the core interface, to ensure they can only reach each other via traversing the
MPLS core.
3.1. L3VPN
Route target: (RT) is in essence a BGP community tag attached to a VPN route to determine that
route belong to which customer/L3VPN channel. In this lab, all Route target will take the form
target:18403:XX in which XX is a VPN identifier assign to a customer (10 for Customer1 and
20 for Customer2). There are two way to specify a route target for a routing-instance
o First is to use route-target target:18403:XX statement placed inside routing-instance
configuration. That VPN/routing-instance will only accept/advertise route with the
specified RT
o Second is to use vrf-export policy to specify how communities field is attached to a
route when that route is being advertised from PE to other routers, then use vrf-import
policy to specify how PE accept route into routing-instance. Detail will be provided in the
next section.
Route distinguisher: Another field attached to a route to determine which site of the customer
that route is coming from. In this Lab we will be using RD in the form RouterID:L3vpnID with
o RouterID being the 4 last digit in the UPE router’s ISO address’s system ID,
o L3vpnID being 10 for Customer 1, 20 for customer 2
o For example routing instance for Customer 2 on HN-UPE1 will have RD 1101:20.
Aside from RD and RT, we will specify the CE facing interface on UPE router with vlan-tagging
(thought not mandatory) and place them into the routing instance according to the following
diagram.
48
[edit groups L3VPN]
interfaces {
ge-0/0/5 {
flexible-vlan-tagging;
}
ge-0/0/6 {
flexible-vlan-tagging;
}
}
As specified on the diagram, on two CE router will be configured. On HN-UPE1 and HN-UPE3 instead
of connecting a CE we will create a static route in received mode in routing instance to simulate a route
to customer’s network.
For L3VPN - mandatory configuration on all BGP-enabled router is to enable BGP’s support for
advertisement of inet-vpn routes (or in other word enable MP-BGP – multiprotocol BGP)
49
[edit groups L3VPN]
logical-systems {
<*> {
protocols {
bgp {
family inet-vpn {
unicast;
}
}
}
}
}
route-distinguisher 1103:20;
// vrf-target statement is equivalent to the automatic creation of both vrf-import and
vrf-export with matching community target:18403
vrf-target target:18403:20;
// vrf-table-label statement will let PE router automatically assign a VPN label for
each VRF – detail in section 3.1.5
vrf-table-label;
routing-options {
static {
// static route creation is for observation on remote PE only.
route 6.0.0.128/25 receive;
}
}
}
}
50
[edit groups L3VPN logical-systems HN-UPE1]
interfaces {
lo0 {
unit 122 {
family inet {
address 6.0.0.1/32;
}
}
}
}
routing-instances {
L3VPN-CUSTOMER2 {
instance-type vrf;
interface lo0.122;
route-distinguisher 1102:20;
vrf-target target:18403:20;
vrf-table-label;
routing-options {
static {
route 6.0.0.0/25 receive;
}
auto-export;
}
}
}
51
AS path: I, validation-state: unverified
> to 1.0.0.4 via ge-0/0/4.13, label-switched-path HN-UPE3_to_HN-UPE2
to 1.0.0.7 via ge-0/0/2.14, label-switched-path HN-UPE3_to_HN-UPE2
6.0.0.128/25 *[Static/5] 00:07:25
Receive
6.0.0.129/32 *[Direct/0] 00:07:21
> via lo0.123
If the route is not present in either router, verify if they are being advertise from HN-UPE1/3 to HN-
NPE1/2 ( The route reflector for HN access zone) – and if the vrf-target associated with them is correct
//To verify route advertisement from Site HN-UPE1 to site HN-UPE3 – first check if HN-
UPE1 is advertising the route to HN-NPEx
juniper@vMX> show route advertising-protocol bgp 10.0.1.11 logical-system HN-UPE1
extensive
52
Communities: target:18403:20
//Then verify if HN-NPEx has accept the route ( please note that if NPE cannot reach the
BGP next-hop appeared on the above two route – it will hide the route – check and ensure
that not route is hidden
//NPE do not have routing instance that have RT match target:18403:20, it only act as
the route reflectr/helper here, so we have to look at bgp.l3vpn table
bgp.l3vpn.0: 12 destinations, 12 routes (12 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
1102:20:6.0.0.0/25
*[BGP/170] 00:18:25, localpref 100, from 10.0.1.101
AS path: I, validation-state: unverified
> to 1.0.0.8 via ge-0/0/3.15, label-switched-path HN-NPE1_to_HN-UPE1
1102:20:6.0.0.1/32
*[BGP/170] 00:18:24, localpref 100, from 10.0.1.101
AS path: I, validation-state: unverified
> to 1.0.0.8 via ge-0/0/3.15, label-switched-path HN-NPE1_to_HN-UPE1
//If NPE has received the route from HN-UPE1 – we then check if they are being
advertised to HN-UPE3
juniper@vMX> show route advertising-protocol bgp 10.0.1.103 logical-system HN-NPE1
extensive
bgp.l3vpn.0: 12 destinations, 12 routes (12 active, 0 holddown, 0 hidden)
53
//The cluster presence mean that they are being advertised from a RR
Cluster ID: 1.1.1.10
Originator ID: 10.0.1.101
//HN-UPE3 should be accepting these route into its bgp.l3vpn table, then the matched
community will help HN-UPE3 to import them into L3VPN-CUSTOMER2 table
When we check how HN-UPE3 handle coming in packet with VPN Label 16 – we see that the router
send it to table L3VPN-CUSTOMER2.inet0 for further processing
16 *[VPN/0] 00:33:22
to table L3VPN-CUSTOMER2.inet.0, Pop
// Troubleshooting route advertisement through the core network will be provided in section 3.2.2
54
3.1.4. Configuration example for Customer1 (detailed method)
To use VRF-IMPORT and VRF-EXPORT for L3VPN routing instance, Perform the following step:
Chose a community name for Customer1 – map it with the planned RT value
Configure the import and export policy for L3VPN routing instance
Configure the routing instance – replace vrf-target configuration with VRF-IMPORT and
VRF-EXPORT mapped with the corresponding policy.
First we must specify the community name to be associated with a customer and their value in [policy-
opitons] hierarchy in all UPE router connect to that customer.
Then we specify how community will be checked or added when a route is import/export from that
L3VPN routing instance
55
}
The verification for this configuration method is totally similar to section 3.1.3
Trainee can verify this by configure L3VPN routing-instance for Customer1 according to the diagram
56
}
}
policy-statement L3VPN-C1-Export {
term Customer1 {
then {
community add L3VPN-C1;
accept;
}
}
term default {
then reject;
}
}
community L3VPN-C1 members target:18403:10;
}
routing-instances {
L3VPN-CUSTOMER1 {
instance-type vrf;
// Remember to put the CE facing interface into routing-instance
interface ge-0/0/5.170;
route-distinguisher 1102:10;
vrf-import L3VPN-C1-Import;
vrf-export L3VPN-C1-Export;
}
}
After this step we can see the router state that the direct link on ge-0/0/5.170 is not being advertise via
MP-BGP
// Further detail show that BGP do not see any next-hop on the LAN segment connected to
that CE
57
a. vrf-table-label configuration
As mentioned in 3.1.3 – using vrf-table-label allow a specific label to be associated with a route in
L3VPN routing-instance. The router will create a special LSI interface to handle incoming that VPN
label and those route will then be forwarded to the matching table for further processing.
Compare the route above with section 3.1.3 to see the difference.
Trainee can also use the following on HN-UPE1 for Customer1 to observe the desired output
On HN-UPE1 - the static route 18.0.0.0/24 will have a VPN label associated, and that label is then
mapped to L3VPN-CUSTOMER1.inet.0 for further processing
58
Receive
13 *[MPLS/0] 07:05:36, metric 1
Receive
16 *[VPN/0] 00:08:46
to table L3VPN-CUSTOMER1.inet.0, Pop
17 *[VPN/0] 00:08:46
to table L3VPN-CUSTOMER2.inet.0, Pop
It does not matter which destination we use, the only mandatory is that the next-hop located on CE’s
interface must be reachable
59
static {
route 0.0.0.0/0 next-hop 17.0.0.1;
}
}
This method will map the VPN label directly to the interface in which the specified next-hop is found
c. IGP configuration
The last method is for UPE routers to receive at least one IGP route from CE router
60
//Note that all the interface-VMnet mapping must follow section 1 instruction
[edit groups L3VPN logical-systems HCM-UPE1]
interfaces {
ge-0/0/6 {
unit 191 {
vlan-id 191;
family inet {
address 19.0.0.1/29 ;
}
}
}
lo0 {
unit 191 {
family inet {
address 10.0.19.1/32;
}
}
}
}
policy-options {
policy-statement L3VPN-C1-Import {
term Customer1 {
from {
protocol bgp;
community L3VPN-C1;
}
then accept;
}
term default {
then reject;
}
}
policy-statement L3VPN-C1-Export {
term Customer1 {
then {
community add L3VPN-C1;
accept;
}
}
term default {
then reject;
}
}
//This is a simple term created specifically to advertise routes from remote L3VPN sites
to CUSTOMER1’s CE2 via IGP
policy-statement L3VPN-C1-Export-to-CE {
term default {
from protocol bgp;
then accept;
}
}
community L3VPN-C1 members target:18403:10;
}
routing-instances {
L3VPN-CUSTOMER1 {
instance-type vrf;
//Loopback interface and CE facing interface (to be run IGP) must be put inside routing
instance
61
interface ge-0/0/6.191;
interface lo0.191;
route-distinguisher 2101:10;
vrf-import L3VPN-C1-Import;
vrf-export L3VPN-C1-Export;
//Set the same AS on PE’s routing instance and customer’s CE for IGP to work
routing-options {
autonomous-system 18000;
}
//Running IGP between UPE and CE router require that the protocol configuration is
placed inside routing instance
protocols {
ospf {
area 0.0.0.0 {
export L3VPN-C1-Export-to-CE;
interface lo0.191;
interface ge-0/0/6.191;
}
}
}
}
}
OSPF will require a loopback to be planned and configured on both UPE’s routing instance and CE
router
lo0 {
unit 192 {
family inet {
address 10.0.19.2/32;
}
}
}
}
protocols {
ospf {
export C1-OSPF-EXPORT;
area 0.0.0.0 {
//loopback is mandatory
interface lo0.192;
interface em2.191;
}
}
}
62
//This policy help advertise the created static route into PE, then to other site of
Customer 1
policy-options {
policy-statement C1-OSPF-EXPORT {
term static {
from protocol static;
then accept;
}
}
}
routing-options {
static {
route 19.0.0.128/25 receive;
//Set the same AS on PE’s routing instance and customer’s CE for IGP to work
autonomous-system 18000;
}
}
This method will also map the VPN label directly to the interface in which the its associated route’s
next-hop is found
63
* 19.0.0.128/25 (1 entry, 1 announced)
BGP group NPE type Internal
Route Distinguisher: 2101:10
VPN Label: 299824
Nexthop: Self
Flags: Nexthop Change
MED: 0
Localpref: 100
AS path: [18403] I
Communities: target:18403:10 rte-type:0.0.0.0:5:1
//Notice that there is two VPN label associated with routes in L3VPN-CUSTOMER1 table
juniper@vMX> show route table mpls.0 logical-system HCM-UPE1
64
3.2. L2VPN
Route-target planning will be similar to section 3.1. However for L2VPN we only have 1
customer with VPN identifier 100.
Route-distinguisher planning is also similar to section 3.1, with Customer1 VPN identifier
change to 100 to avoid conflict with L3VPN.
There are several use case for L2VPN – each require different tagging and encapsulation configuration
on CE facing interface. These configuration will be provided in each case.
All use case require a site-id for each customer CE (or more precisely each customer’s site). We will be
using the follow ID for all use case:
65
For L2VPN, the common mandatory configuration on all BGP-enabled router is to configure MP-BGP
support for signaling of L2VPN circuit:
//The UseCase name will change according for each case- Each case will require a different group
configuration due to different physical parameter needed to be specified on interface
66
3.2.2. Common configuration and verification method:
Each use case only differ in interface configuration – the L2VPN channel verification and customer
service verification shall be the same for all of them. Which include
//these export term will take effect when the router export route to bgp.l2vpn table of
other router
policy-statement L2VPN-C1-Export {
term Customer1 {
then {
community add L2VPN-C1;
accept;
}
}
term default {
then reject;
}
}
community L2VPN-C1 members target:18403:100;
67
}
routing-instances {
L2VPN-CUSTOMER1 {
//Instance type is always l2vpn
instance-type l2vpn;
//Unit number is subject to change according to each case study
interface ge-0/0/5.XX;
//RT and RD configuration according to plan
route-distinguisher 1102:100;
vrf-import L2VPN-C1-Import;
vrf-export L2VPN-C1-Export;
//All L2VPN configuration is placed inside protocol l2vpn of a l2vpn instance
protocols {
l2vpn {
//Encapsulation-type will change according to interface encapsulation (which mean it
change for each case study) – the example here is for a non-tagged case
encapsulation-type ethernet;
//Site name can be changed to whatever suite the customer’s description
site local1 {
//Site identifier must always be specified according to plan
site-identifier 17;
// Allow a L2VPN to be established even though the
encapsulation configured on the CE device interface does not match the encapsulation
configured
ignore-encapsulation-mismatch;
//The preference of the site in case of multi-homing
site-preference 200;
//Ignore the MTU configuration set for the physical interface associated
with the local switching interface or with the remote PE router
ignore-mtu-mismatch;
68
}
policy-options {
policy-statement L2VPN-C1-Import {
term Customer1 {
from {
protocol bgp;
community L2VPN-C1;
}
then accept;
}
term default {
then reject;
}
}
policy-statement L2VPN-C1-Export {
term Customer1 {
then {
community add L2VPN-C1;
accept;
}
}
term default {
then reject;
}
}
community L2VPN-C1 members target:18403:100;
}
routing-instances {
L2VPN-CUSTOMER1 {
instance-type l2vpn;
interface ge-0/0/6.xx;
route-distinguisher 2101:100;
vrf-import L2VPN-C1-Import;
vrf-export L2VPN-C1-Export;
protocols {
l2vpn {
encapsulation-type ethernet;
site local1 {
site-identifier 19;
ignore-encapsulation-mismatch;
ignore-mtu-mismatch;
interface ge-0/0/6.xx {
remote-site-id 17;
}
}
}
}
}
}
69
juniper@vMX> show l2vpn connections logical-system HN-UPE2
Instance: L2VPN-CUSTOMER1
Local site: local1 (17)
connection-site Type St Time last up # Up trans
19 rmt Up Jan 24 20:19:08 2016 1
Remote PE: 10.0.2.101, Negotiated control-word: Yes (Null)
Incoming label: 800000, Outgoing label: 800000
Local interface: ge-0/0/5.0, Status: Up, Encapsulation: ETHERNET
Instance: L2VPN-CUSTOMER1
Local site: local1 (19)
connection-site Type St Time last up # Up trans
17 rmt Up Jan 24 20:19:08 2016 1
Remote PE: 10.0.1.102, Negotiated control-word: Yes (Null)
Incoming label: 800000, Outgoing label: 800000
Local interface: ge-0/0/6.0, Status: Up, Encapsulation: ETHERNET
OL (OL -- no outgoing label) :This flag indicates that no there is no outgoing label available
for use by this L2VPN. Either check the configuration on the remote site or all core facing
interface of this router.
o The most common cause is remote site configure a mismatched site-identifier. Double
check the remote site L2VPN configuration
o protocol mpls was not configured properly on the links connect this UPE router to the
core. Double check all LSP state and mpls.0 table of UPE and NPE
LD (LD -- local site signaled down ): This flag indicates that all of the CE facing interfaces to
the local site are down. Therefore, the connection to the local site is signaled as down to the other
PE routers. This is cause by
o Actual link down (physically down or disabled)
o Misplaced interface in L2VPN routing instance ( for example the connection is on ge-
0/0/5.0 but on routing instance we placed ge-0/0/5.10)
RD (RD -- remote site signaled down): indicate that all CE facing interface to the remote site a
down. Perform the above check – but on the remote router of the L2VPN.
EM -- encapsulation mismatch: encapsulation-type specified in protocol l2vpn is not the same
between 2 site
WE -- interface and instance encaps not same: typically happened when interface is tagged
but protocol encapsulation-type is only Ethernet (or reverse)
Once the L2VPN is up and running , we are not yet completed. Since there is different encapsulation
case from CE – we need to check reachability between CE to ensure proper operation.
70
c. L2VPN route advertisement verification:
If the L2VPN route is not up and operational, aside from checking the error code – we also check the
advertisement status from UPE router
For example to verify the advertisement of L2VPN from HN-UPE2 to HCM-UPE1, first we check the
advertisement from HCM-UPE1 to HCM-NPEx (Follow the advertisement illustration in section 2.3.4)
71
Nexthop: 10.0.2.101
Localpref: 100
AS path: I (Originator)
Cluster list: 2.2.2.10
Originator ID: 10.0.2.101
Communities: target:18403:100 Layer2-info: encaps: ETHERNET, control flags:[0x2]
Control-Word, mtu: 0, site preference: 100
72
Originator ID: 10.0.2.101
Communities: target:18403:100 Layer2-info: encaps: ETHERNET, control flags:[0x2]
Control-Word, mtu: 0, site preference: 100
73
interface lo0.200;
interface em1.0 {
interface-type p2p;
}
}
}
}
policy-options {
policy-statement C1-OSPF-EXPORT {
term static {
from protocol static;
then accept;
}
}
}
routing-options {
static {
route 17.0.0.128/25 receive;
}
autonomous-system 18400;
}
}
L2CUSTOMER-CE2 {
interfaces {
em2 {
unit 0 {
family inet {
address 20.0.0.2/29;
}
}
}
lo0 {
unit 210 {
family inet {
address 10.0.20.2/32;
}
}
}
}
protocols {
ospf {
export C1-OSPF-EXPORT; ## 'C1-OSPF-EXPORT' is not defined
area 0.0.0.0 {
interface lo0.210;
interface em2.0 {
interface-type p2p;
}
}
}
}
policy-options {
policy-statement C1-OSPF-EXPORT {
term static {
from protocol static;
then accept;
}
}
}
74
routing-options {
static {
route 19.0.0.128/25 receive;
}
autonomous-system 18400;
}
}
}
CE verification is straight forward , first ping from each CE to the remote site
[edit]
juniper@Olive# run ping 20.0.0.1 logical-system L2CUSTOMER-CE2
PING 20.0.0.1 (20.0.0.1): 56 data bytes
64 bytes from 20.0.0.1: icmp_seq=0 ttl=64 time=5.269 ms
64 bytes from 20.0.0.1: icmp_seq=1 ttl=64 time=3.528 ms
64 bytes from 20.0.0.1: icmp_seq=2 ttl=64 time=3.712 ms
^C
--- 20.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 3.528/4.170/5.269/0.781 ms
CE should also be configured with OSPF on all case study to better verification
[edit]
juniper@Olive# run show ospf neighbor logical-system L2CUSTOMER-CE2
Address Interface State ID Pri Dead
20.0.0.1 em2.0 Full 10.0.20.1 128 39
[edit]
juniper@Olive# run show ospf neighbor logical-system L2CUSTOMER-CE1
Address Interface State ID Pri Dead
20.0.0.2 em1.0 Full 10.0.20.2 128 37
75
3.2.3. Case study 1: transparent L2VPN without vlan-tagging:
a. Configuration on UPE
Pure Ethernet L2VPN configuration require encapsulation Ethernet-ccc on the physical interface of
PE(do not enable vlan-tagging any elsewhere on these interface).
routing-instances {
76
L2VPN-CUSTOMER1 {
protocols {
l2vpn {
encapsulation-type ethernet;
}
}
}
}
}
HN-UPE2 {
interfaces {
ge-0/0/5 {
unit 0 {
description "TO L2VPN CUSTOMER1 - CE1";
family ccc;
}
}
}
}
routing-instances {
L2VPN-CUSTOMER1 {
protocols {
l2vpn {
encapsulation-type ethernet;
}
}
}
}
}
}
}
L2CUSTOMER-CE2 {
interfaces {
77
em2 {
unit 0 {
family inet {
address 20.0.0.2/29;
}
}
}
}
}
}
78
}
}
We can see that the OSPF neighbor is still up and operational – with VLAN-ID added to the OSPF hello
packet
[edit]
juniper@Olive# run show ospf neighbor logical-system L2CUSTOMER-CE1
Address Interface State ID Pri Dead
20.0.0.2 em1.0 Full 10.0.20.2 128 36
[edit]
juniper@Olive# run show ospf neighbor logical-system L2CUSTOMER-CE2
Address Interface State ID Pri Dead
20.0.0.1 em2.0 Full 10.0.20.1 128 33
79
juniper@Olive# run show ospf neighbor logical-system L2CUSTOMER-CE1
Address Interface State ID Pri Dead
20.0.0.2 em1.0 Full 10.0.20.2 128 33
[edit]
juniper@Olive# run show ospf neighbor logical-system L2CUSTOMER-CE2
Address Interface State ID Pri Dead
20.0.0.1 em2.0 Full 10.0.20.1 128 29
80
3.2.4. Case study 2: tagged L2VPN
In practice, customer will often attached to a switch and tagged to a VLAN as in the following scenario
If CE facing interface is tagged with a vlan, we need to enable vlan-tagging on PE with the following
steps:
Enable vlan-tagging support on physical interface, along with encapsulation vlan-ccc (or the
recommended flexible-vlan-tagging and encapsulation flexible-ethernet-services feature)
o the vlan-id must be >512 if physical interface encapsulation is vlan-cc
o vlan-id can be <512 if physical interface encapsulation is flexible-ethernet-service
Enable encapsulation vlan-ccc in logical interface
Specified the mapped vlan-id in the CE facing interface
Change protocol l2vpn to have encapsulation-type ethernet-vlan
//Note that the vlan-id tagged by the switch can be a single-tag encapsulate the packet. Or it can be an
S-VLAN ID tagged on top of customer’s VLAN-ID. In either case, we only need to care about the
vlan tagged by the switch and leave customer’s VLAN alone.
81
a. Same VLAN-ID
Here is the changed configuration if Customer1 is mapped to the same vlan 800 on both site:
vlan-id 800;
}
}
}
routing-instances {
L2VPN-CUSTOMER1 {
protocols {
l2vpn {
//protocol l2vpn encapsulation must match logical interface encapsultion
encapsulation-type ethernet-vlan;
}
}
}
}
}
}
HN-UPE2 {
interfaces {
ge-0/0/5 {
unit 800 {
description "TO L2VPN CUSTOMER1 - CE1";
encapsulation vlan-ccc;
82
vlan-id 800;
}
}
}
routing-instances {
L2VPN-CUSTOMER1 {
protocols {
l2vpn {
encapsulation-type ethernet-vlan;
}
}
}
}
}
}
interfaces {
ge-0/0/5 {
vlan-tagging;
encapsulation vlan-ccc;
}
ge-0/0/6 {
vlan-tagging;
encapsulation vlan-ccc;
}
}
Since we do not have a switch in the lab – the vlan-tag can be simulate by directly tagging packet on
virtual CE router located on Olive virtual machine. As explain above, we do not make any change to the
underlying customer’s vlan-id even in dual-tagged cases.
CE’s configuration is completely similar to section 3.2.3.c ( but change the vlan-id to 800 to match
UPE’s configuration)
83
b. Different VLAN-ID
In practice – on each site the same customer could be associated with a different VLAN on the
provider’s switch.
Use input-vlan-map swap so that when PE receive a packet from Provider’s switch, it swap the
local-link VLAN-ID with the VLAN-ID used for that same customer on the remote site. This
method require the local’s administrator to know of the remote VLAN-ID used for that same
customer and specify that VLAN-ID in the [input-vlan-map] hierarchy under logical interface.
Or use ouput-vlan-map swap so that when PE send a packet of that L2VPN circuit to
Provider’s switch, it swap whatever VLAN-ID currently in the packet with the local-link
VLAN-ID. This method do not require the knowledge of remote vlan-id
//Note that we must use the SAME method for both site of the L2VPN channel. For example using input-
vlan-map on HN-UPE2 and then output-vlan-map on HCM-UPE1 achieve the same result of changing
packet from CE1 > CE2 to vlan-id 810. However it will not change packet from CE2 > CE1 to vlan-id
800 when these packet exit from HN-UPE2 and so the connect will failed
84
vlan-id 810;
input-vlan-map {
swap;
//Specify the vlan-id used to connect HN-UPE2 and CUSOMTER1-CE1
vlan-id 800;
}
}
}
}
routing-instances {
L2VPN-CUSTOMER1 {
protocols {
l2vpn {
//protocol l2vpn encapsulation must still be ethernet-vlan to support vlan-tagged
circuit
encapsulation-type ethernet-vlan;
}
}
}
}
}
}
HN-UPE2 {
interfaces {
ge-0/0/5 {
unit 800 {
description "TO L2VPN CUSTOMER1 - CE1";
encapsulation vlan-ccc;
vlan-id 800;
input-vlan-map {
swap;
//Specify the vlan-id used to connect HCM-UPE1 and CUSOMTER1-CE2
vlan-id 810;
}
}
}
}
routing-instances {
L2VPN-CUSTOMER1 {
protocols {
l2vpn {
encapsulation-type ethernet-vlan;
}
}
}
}
}
}
interfaces {
ge-0/0/5 {
vlan-tagging;
encapsulation vlan-ccc;
}
ge-0/0/6 {
85
vlan-tagging;
encapsulation vlan-ccc;
}
}
output-vlan-map swap;
}
}
}
}
HN-UPE2 {
interfaces {
ge-0/0/5 {
unit 800 {
description "TO L2VPN CUSTOMER1 - CE1";
encapsulation vlan-ccc;
vlan-id 800;
//output-vlan-map swap operation will use the local vlan-id 810 without require the
knowledge of remote site’s vlan-id
output-vlan-map swap;
}
}
}
}
86
This case only require the replacement of vlan-id statement with vlan-id-list in the logical unit
configuration. No further change in protocol L2VPN stanza.
87
//Special note : the case provided in this confirmation is different from the following common case
In this common case each customer still have their own L2VPN configuration, put in different logical
interface as specified in section 3.2.4 – no vlan-id-list is required.
88
3.3. VPLS
Route-target planning will be similar to section 3.2. However for VPLS we only have 1
customer with VPN identifier 1000.
Route-distinguisher planning is also similar to section 3.2, with Customer1 VPN identifier
change to 1000 to avoid conflict with L3VPN and L2VPN
Similar to L2VPN– each VPLS use case require different tagging and encapsulation configuration on
CE facing interface. These configuration will be provided in each case.
All use case require a site-id for each customer CE (or more precisely each customer’s site). We will be
using the follow ID for all use case:
89
As is the case with l2vpn, VPLS requires BGP to have the family l2vpn with signaling in order to
advertise the VPLS NLRI information::
//The UseCase name will change according for each case- Each case will require a different group
configuration due to different physical parameter needed to be specified on interface
90
3.3.2. Common configuration and verification method:
Each use case only differ in interface configuration – the VPLS connection verification and customer
service verification shall be the same for all of them and very similar to L2VPN, which include
91
VPLS-CUSTOMER1 {
//Instance type is always l2vpn
instance-type vpls;
//Unit number is subject to change according to each case study
interface ge-0/0/5.xx;
route-distinguisher 1101:1000;
vrf-import VPLS-C1-Import;
vrf-export VPLS-C1-Export;
//All VPLS configuration is placed inside protocol vpls of a vpls instance
protocols {
vpls {
//Site-range configuration Specify an upper limit on the maximum site identifier that
can be accepted to allow a pseudowire to be brought up. Pseudowires cannot be
established to sites with site identifiers greater than the configured site range
site-range 20;
// Must be use if there is no tunnel service card on the device – further exaplaination
in section /c
no-tunnel-services;
site C1-1 {
// Remember that site-identifier for VPLS must not be greater than site-range
site-identifier 17;
// No need to specify remote site id for VPLS
interface ge-0/0/5.xx;
}
}
}
}
}
92
policy-statement VPLS-C1-Export {
term Customer1 {
then {
community add VPLS-C1;
accept;
}
}
term default {
then reject;
}
}
community VPLS-C1 members target:18403:1000;
}
routing-instances {
VPLS-CUSTOMER1 {
instance-type vpls;
interface ge-0/0/7.xx;
route-distinguisher 1103:1000;
vrf-import VPLS-C1-Import;
vrf-export VPLS-C1-Export;
protocols {
vpls {
site-range 20;
no-tunnel-services;
site C1-3 {
site-identifier 18;
interface ge-0/0/7.xx;
}
}
}
}
}
93
term Customer1 {
then {
community add VPLS-C1;
accept;
}
}
term default {
then reject;
}
}
community VPLS-C1 members target:18403:1000;
}
routing-instances {
VPLS-CUSTOMER1 {
instance-type vpls;
interface ge-0/0/6.xx;
route-distinguisher 2101:1000;
vrf-import VPLS-C1-Import;
vrf-export VPLS-C1-Export;
protocols {
vpls {
site-range 20;
no-tunnel-services;
site C1-2 {
site-identifier 19;
interface ge-0/0/6.xx;
}
}
}
}
Instance: VPLS-CUSTOMER1
Local site: C1-1 (17)
connection-site Type St Time last up # Up trans
18 rmt Up Jan 25 00:48:50 2016 1
Remote PE: 10.0.1.103, Negotiated control-word: No
Incoming label: 262146, Outgoing label: 262145
Local interface: lsi.202375681, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 17 remote site 18
19 rmt Up Jan 25 00:48:50 2016 1
Remote PE: 10.0.2.101, Negotiated control-word: No
Incoming label: 262147, Outgoing label: 262145
Local interface: lsi.202375680, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 17 remote site 19
94
[edit]
juniper@vMX# run show vpls connections logical-system HN-UPE3
Layer-2 VPN connections:
Instance: VPLS-CUSTOMER1
Local site: C1-3 (18)
connection-site Type St Time last up # Up trans
17 rmt Up Jan 25 02:05:01 2016 1
Remote PE: 10.0.1.101, Negotiated control-word: No
Incoming label: 262145, Outgoing label: 262146
Local interface: lsi.235930114, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 18 remote site 17
19 rmt Up Jan 25 02:05:01 2016 1
Remote PE: 10.0.2.101, Negotiated control-word: No
Incoming label: 262147, Outgoing label: 262146
Local interface: lsi.235930115, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 18 remote site 19
Instance: VPLS-CUSTOMER1
Local site: C1-2 (19)
connection-site Type St Time last up # Up trans
17 rmt Up Jan 25 02:05:02 2016 1
Remote PE: 10.0.1.101, Negotiated control-word: No
Incoming label: 262145, Outgoing label: 262147
Local interface: lsi.152044036, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 19 remote site 17
18 rmt Up Jan 25 02:05:01 2016 1
Remote PE: 10.0.1.103, Negotiated control-word: No
Incoming label: 262146, Outgoing label: 262147
Local interface: lsi.152044035, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 19 remote site 18
95
c. VPLS route advertisement verification:
Advertisement of VPLS connection is completely similar to L2VPN .
All VPLS connection is stored in the same two table bgp.l2vpn.0 and CustomerName.l2vpn.0 on
MPBGP-enabled routers.
The following example also shown that the format for VPLS pseudowires is similar to that of L2VPN,
which is RD:RemoteSiteID:LocalSiteID
2101:1000:19:17/96
*[BGP/170] 00:31:16, localpref 100, from 10.0.1.11
AS path: I, validation-state: unverified
> to 1.0.0.1 via ge-0/0/2.11, label-switched-path HN-UPE1_to_HN-NPE1
to 1.0.0.3 via ge-0/0/3.12, label-switched-path Bypass->1.0.0.1
[BGP/170] 00:31:16, localpref 100, from 10.0.1.12
AS path: I, validation-state: unverified
> to 1.0.0.1 via ge-0/0/2.11, label-switched-path HN-UPE1_to_HN-NPE1
to 1.0.0.3 via ge-0/0/3.12, label-switched-path Bypass->1.0.0.1
1101:1000:17:17/96
*[L2VPN/170/-101] 00:31:17, metric2 1
Indirect
1103:1000:18:17/96
*[BGP/170] 00:31:16, localpref 100, from 10.0.1.12
AS path: I, validation-state: unverified
> to 1.0.0.3 via ge-0/0/3.12, label-switched-path HN-UPE1_to_HN-UPE2
to 1.0.0.1 via ge-0/0/2.11, label-switched-path HN-UPE1_to_HN-UPE2
[BGP/170] 00:31:16, localpref 100, from 10.0.1.11
AS path: I, validation-state: unverified
> to 1.0.0.3 via ge-0/0/3.12, label-switched-path HN-UPE1_to_HN-UPE2
to 1.0.0.1 via ge-0/0/2.11, label-switched-path HN-UPE1_to_HN-UPE2
2101:1000:19:17/96
*[BGP/170] 00:32:20, localpref 100, from 10.0.3.13
AS path: I, validation-state: unverified
> to 1.0.0.8 via ge-0/0/3.15, label-switched-path HN-NPE1_to_HN-NPE2
to 1.0.0.0 via ge-0/0/1.11, label-switched-path HN-NPE1_to_HN-NPE2
1101:1000:17:17/96
*[BGP/170] 00:32:20, localpref 100, from 10.0.1.101
AS path: I, validation-state: unverified
> to 1.0.0.0 via ge-0/0/1.11, label-switched-path HN-NPE1_to_HN-UPE1
to 1.0.0.8 via ge-0/0/3.15, label-switched-path Bypass->1.0.0.0
1103:1000:18:17/96
*[BGP/170] 00:32:20, localpref 100, from 10.0.1.103
96
AS path: I, validation-state: unverified
> to 1.0.0.8 via ge-0/0/3.15, label-switched-path HN-NPE1_to_HN-NPE2
to 1.0.0.0 via ge-0/0/1.11, label-switched-path HN-NPE1_to_HN-NPE2
// All NPE routers will receive VPLS connection into bgp.l2vpn.0 table, but the
encapsulation this time will be VPLS
[edit]
juniper@vMX# run show route receive-protocol bgp 10.0.1.101 logical-system HN-NPE
d. Common verification on CE
CE configuration is similar in all case except for the vlan-tag parameter on interface
97
from protocol static;
then accept;
}
}
}
routing-options {
static {
route 17.0.0.128/25 receive;
}
router-id 10.0.20.1;
}
}
L2CUSTOMER1-CE2 {
interfaces {
em2 {
unit 0 {
family inet {
address 20.0.0.2/29;
}
}
}
lo0 {
unit 202 {
family inet {
address 10.0.20.2/32;
}
}
}
}
protocols {
ospf {
export C1-OSPF-EXPORT;
area 0.0.0.0 {
interface lo0.202;
interface em2.0;
}
}
}
policy-options {
policy-statement C1-OSPF-EXPORT {
term static {
from protocol static;
then accept;
}
}
}
routing-options {
static {
route 19.0.0.128/25 receive;
}
router-id 10.0.20.2;
}
}
L2CUSTOMER1-CE3 {
interfaces {
em3 {
unit 0 {
family inet {
98
address 20.0.0.3/29;
}
}
}
lo0 {
unit 203 {
family inet {
address 10.0.20.3/32;
}
}
}
}
protocols {
ospf {
export C1-OSPF-EXPORT;
area 0.0.0.0 {
interface lo0.203;
interface em3.0;
}
}
}
policy-options {
policy-statement C1-OSPF-EXPORT {
term static {
from protocol static;
then accept;
}
}
}
routing-options {
static {
route 18.0.0.128/25 receive;
}
router-id 10.0.20.3;
}
}
}
CE verification is completely similar to L2VPN, only that we have three different router participating in
OSPF this time
logical-system: L2CUSTOMER1-CE1
Address Interface State ID Pri Dead
20.0.0.3 em1.0 Full 10.0.20.3 128 35
20.0.0.2 em1.0 Full 10.0.20.2 128 35
-----
logical-system: L2CUSTOMER1-CE2
20.0.0.1 em2.0 Full 10.0.20.1 128 31
20.0.0.3 em2.0 Full 10.0.20.3 128 35
-----
logical-system: L2CUSTOMER1-CE3
20.0.0.1 em3.0 Full 10.0.20.1 128 31
20.0.0.2 em3.0 Full 10.0.20.2 128 35
99
3.3.3. Case study 1: transparent VPLS without vlan-tagging:
a. Configuration on UPE
Pure Ethernet VPLS configuration require encapsulation ethernet-vpls on the physical interface of PE
– without vlan-tagging being enable.
}
HN-UPE1 {
100
interfaces {
ge-0/0/5 {
unit 0 {
description "TO L2VPN CUSTOMER1 - CE1";
family vpls;
}
}
}
}
HN-UPE3 {
interfaces {
ge-0/0/7 {
unit 0 {
description "TO L2VPN CUSTOMER1 - CE1";
family vpls;
}
}
}
}
Trainee can three different verification step as in section 3.2.3 to verify the transparency. Note that the
vlan-id must match on all CE’s configuration
101
3.3.4. Case study 2: VPLS with similar vlan-tagging on all side:
In reality, one switch can be used to handle all L3VPN-L2VPN and VPLS customer of a region – which
lead to the encapsulation of customer’s packet inside a S-VLAN tag. A simple case is that all site of a
customer will have the same S-VLAN tag
a. UPE configuration
This scenario only require a change of encapsulation method on physical and logical interface on all site
Here is the changed configuration if Customer1 is mapped to the same vlan 1000 on all site:
logical-systems {
HCM-UPE1 {
interfaces {
ge-0/0/6 {
unit 1000 {
description "TO VPLS CUSTOMER1 - CE2";
encapsulation vlan-vpls;
//Note that the vlan-id must be >512 if physical interface encapsulation is vlan-vpls
//vlan-id can be <512 if physical interface encapsulation is flexible-ethernet-service
vlan-id 1000;
}
}
}
}
HN-UPE1 {
interfaces {
ge-0/0/5 {
unit 1000 {
description "TO VPLS CUSTOMER1 - CE1";
encapsulation vlan-vpls;
vlan-id 1000;
102
}
}
}
}
HN-UPE3 {
interfaces {
ge-0/0/7 {
unit 1000 {
description "TO VPLS CUSTOMER1 - CE2";
encapsulation vlan-vpls;
vlan-id 1000;
}
}
}
}
}
interfaces {
ge-0/0/5 {
vlan-tagging;
encapsulation vlan-vpls;
}
ge-0/0/6 {
vlan-tagging;
encapsulation vlan-vpls;
}
ge-0/0/7 {
vlan-tagging;
encapsulation vlan-vpls;
}
}
b. CE configuration
Change the CE configuration to match vlan-id 1000 on all site (added the vlan-tagging statement and
vlan-id only)
103
interfaces {
em2 {
unit 1000 {
vlan-id 1000;
}
}
protocols {
ospf {
area 0.0.0.0 {
interface em2.1000;
}
}
}
}
L2CUSTOMER1-CE3 {
interfaces {
em3 {
unit 1000 {
vlan-id 1000;
}
}
}
protocols {
ospf {
area 0.0.0.0 {
interface em3.1000;
}
}
}
}
}
interfaces {
em1 {
vlan-tagging;
}
em2 {
vlan-tagging;
}
em3 {
vlan-tagging;
}
}
c. Verification
Use the same verification steps in section 3.3.2
We can observe that all OSPF neighboring state on all CE is up and operational. All packet is being
received with vlan-id 1000
104
juniper@Olive# run show ospf neighbor logical-system all
logical-system: L2CUSTOMER1-CE1
Address Interface State ID Pri Dead
20.0.0.3 em1.1000 Full 10.0.20.3 128 38
20.0.0.2 em1.1000 Full 10.0.20.2 128 34
-----
logical-system: L2CUSTOMER1-CE2
20.0.0.3 em2.1000 Full 10.0.20.3 128 38
20.0.0.1 em2.1000 Full 10.0.20.1 128 35
-----
logical-system: L2CUSTOMER1-CE3
20.0.0.2 em3.1000 Full 10.0.20.2 128 33
20.0.0.1 em3.1000 Full 10.0.20.1 128 35
3.3.5. Case study 3: VPLS with different vlan-tag configuration on each side:
105
If not properly planned, each site will have a different VLAN configuration for the same customer. The
cases include
Non-tagged
Single-tagged by Provider’s switch
Single-tagged by CE
Dual-tagged by Provider’s switch and CE
This combination is complex depend on number of site. However in most dual-tagged case – similar to
L2VPN – we only perform operation on. So except for rare cases – dual-tagged site can be handle in the
similar sense with sites that was single-tagged by Provider’s switch.
We will study the method to handle the combination in the following diagram.
\\The study of other combination which involve (handling both inner + outer vlan-tag) or involve
(handling VPLS combination which have multi-homing sites) is unfortunately outside the capability
of the virtual platform deployed for this course.
To handle different vlan combination of different VPLS’s site, we use a method called normalizing
vlan. This is achieve by either one of the following two method
Perform poping of vlan-id when UPE receive packet on local vlan-tagged interface and pushing
of local vlan-id when UPE transmitting packet from remote site to local CE
Specify a vlan-id or a vlan-tag (require an inner and outer id) inside the VPLS instance – All
vlan-tag on local-link will be normalize to this id or tag when traversing the MPLS core.
106
b. CE configuration
Change the CE configuration according to the provided diagram (Or use the provided group VPLS-
normalize on Olive virtual machine)
Input-vlan-map pop (or pop/pop) on CE facing interface of HN-UPE1 and HN-UPE3 (tagging
VPLS site from the diagram). This will remove the local vlan-id before the packet enter VPLS
pseudowire. The VLAN stack for that packet when traversing the VPLS pseudowire will be n-1
or n-2 (n being the stack height when packet leave the Provider’s switch).
Output-vlan-map push (or push/push) on the same interface of HN-UPE1 and HN-UPE3. This
will make the router push the local vlan-id on top of the packet before sending it to CE (or
Provider’s switch).
This method rely on the agreement/planning of VLAN stack height (either 0 or 1) when letting
a packet into the VPLS pseudowire – which let to configuration of input-vlan-map. After leaving
the VPLS pseudowire, further change to match each site’s stack height is perform on output-
vlan-map
The following configuration is a simple pop/push combination for the scenario illustrated above
}
HN-UPE3 {
interfaces {
ge-0/0/7 {
unit 1010 {
description "TO VPLS CUSTOMER1 - CE2";
encapsulation vlan-vpls;
vlan-id 1010;
input-vlan-map pop;
output-vlan-map push;
}
}
}
}
HN-UPE1 {
interfaces {
107
ge-0/0/5 {
unit 1000 {
description "TO VPLS CUSTOMER1 - CE1";
encapsulation vlan-vpls;
vlan-id 1000;
input-vlan-map pop;
output-vlan-map push;
}
}
}
interfaces {
ge-0/0/5 {
vlan-tagging;
encapsulation vlan-vpls;
}
ge-0/0/7 {
vlan-tagging;
encapsulation vlan-vpls;
}
ge-0/0/6 {
encapsulation ethernet-vpls;
}
}
This manual normalization method do not provide any information on the vpls connection, so we
have to verify the result on the CE’s interface – see if the receiving packet have the expected vlan
logical-system: L2CUSTOMER1-CE1
Address Interface State ID Pri Dead
20.0.0.2 em1.1000 Full 10.0.20.2 128 31
20.0.0.3 em1.1000 Full 10.0.20.3 128 32
-----
logical-system: L2CUSTOMER1-CE2
20.0.0.3 em2.0 Full 10.0.20.3 128 32
20.0.0.1 em2.0 Full 10.0.20.1 128 32
-----
logical-system: L2CUSTOMER1-CE3
20.0.0.2 em3.1000 Full 10.0.20.2 128 31
20.0.0.1 em3.1000 Full 10.0.20.1 128 32
-----
logical-system: default
OSPF instance is not running
[edit]
juniper@Olive# run monitor traffic interface em2 layer2-headers
verbose output suppressed, use <detail> or <extensive> for full protocol decode
Address resolution is ON. Use <no-resolve> to avoid any reverse lookup delay.
Address resolution timeout is 4s.
Listening on em2, capture size 96 bytes
108
Reverse lookup for 224.0.0.5 failed (check DNS reachability).
Other reverse lookup failures will not be reported.
Use <no-resolve> to avoid reverse lookups on IP addresses.
109
11:47:34.292258 In 00:0c:29:36:1e:d3 > 01:00:5e:00:00:05, ethertype 802.1Q (0x8100),
length 68: vlan 1010, p 0, ethertype IPv4, truncated-ip - 34 bytes missing! 20.0.0.2 >
224.0.0.5: OSPFv2, Hello, length 64
^C
3 packets received by filter
0 packets dropped by kernel
Setting the vlan-id in VPLS instance will normalize the VLAN stack height to 1
Setting the vlan-tag in VPLS instance will normalize the VLAN stack height to 2 (include
one inner tag and one outer tag)
The configuration is straight-forward, simple specify the same VLAN-ID or VLAN-TAG on all VPLS
instance of the same customer on all site
110
[edit groups VPLS-normalize-InstanceID]
logical-systems {
HCM-UPE1 {
interfaces {
ge-0/0/6 {
unit 0 {
description "TO VPLS CUSTOMER1 - CE2";
family vpls;
}
}
routing-instances {
VPLS-CUSTOMER1 {
//Instead of vlan-id, specify vlan-tags inner XX outer YY will normalize the stack
height to 2
vlan-id 800;
}
}
}
HN-UPE3 {
interfaces {
ge-0/0/7 {
unit 1010 {
description "TO VPLS CUSTOMER1 - CE2";
encapsulation vlan-vpls;
//All push/pop/swap opeartion is perform automatically – so we only need to specify the
correct local vlan-id for each site
vlan-id 1010;
}
}
}
routing-instances {
VPLS-CUSTOMER1 {
vlan-id 800;
}
}
}
HN-UPE1 {
interfaces {
ge-0/0/5 {
unit 1000 {
description "TO VPLS CUSTOMER1 - CE1";
encapsulation vlan-vpls;
vlan-id 1000;
}
}
}
routing-instances {
VPLS-CUSTOMER1 {
vlan-id 800;
}
}
}
}
111
3.4. Multihome cases:
a. Overview
If customer connect to 2 UPE router via the same L2 infrastructure, VRRP can be utilized to provide
redundancy. CE will use one of the two UPE router as the default gateway – depend on VRRP’s priority.
b. Configuration
CE2 configuration is totally the same as normal L3VPN case
CE1 configuration only require one default static route to the two UPE’s VIP address
112
[edit groups L3VPN-multihome logical-systems]
L3CUSTOMER1-CE1 {
interfaces {
em1 {
unit 0 {
family inet {
address 17.0.0.2/29;
}
}
}
lo0 {
unit 172 {
family inet {
address 10.0.47.2/32;
}
}
}
}
routing-options {
static {
//Default route to UPE’s VIP (VRRP virtual address shared between two UPE router)
route 0.0.0.0/0 next-hop 17.0.0.4;
}
autonomous-system 18000;
}
}
Configuration on two UPE routers is completely similar except the dedicated IP address
//route to UPE’s VIP (VRRP virtual address shared between two UPE router)
HN-UPE1 {
interfaces {
ge-0/0/5 {
unit 0 {
family inet {
// The dedicated L3 IP for that L3VPN must be different on each UPE router
address 17.0.0.1/29 {
vrrp-group 1 {
// Virtual address is the same
virtual-address 17.0.0.4;
// Priority to chose VRRP master
priority 200;
// Enable preemption to restore master role when an error
link goes up again
preempt;
// Track the down link to CE to switch VRRP master role
when neccesary.
track {
interface ge-0/0/5 {
priority-cost 100;
}
}
113
}
}
}
}
}
lo0 {
unit 171 {
family inet {
address 10.0.17.1/32;
}
}
}
}
policy-options {
policy-statement L3VPN-C1-Import {
term Customer1 {
from {
protocol bgp;
community L3VPN-C1;
}
then accept;
}
term default {
then reject;
}
}
policy-statement L3VPN-C1-Export {
term Customer1 {
then {
community add L3VPN-C1;
accept;
}
}
term default {
then reject;
}
}
community L3VPN-C1 members target:18403:10;
}
114
}
HN-UPE3 {
interfaces {
ge-0/0/7 {
unit 0 {
family inet {
// The dedicated L3 IP for that L3VPN must be different on each UPE router
address 17.0.0.3/29 {
vrrp-group 1 {
virtual-address 17.0.0.4;
// Lower priority indicated VRRP backup role
priority 150;
// Enable preemption on both router, note that backup VRRP
router do not need to track down link.
preempt;
}
}
}
}
}
lo0 {
unit 173 {
family inet {
address 10.0.17.3/32;
}
}
}
}
policy-options {
policy-statement L3VPN-C1-Import {
term Customer1 {
from {
protocol bgp;
community L3VPN-C1;
}
then accept;
}
term default {
then reject;
}
}
policy-statement L3VPN-C1-Export {
term Customer1 {
then {
community add L3VPN-C1;
accept;
}
}
term default {
then reject;
}
}
community L3VPN-C1 members target:18403:10;
}
routing-instances {
L3VPN-CUSTOMER1 {
115
instance-type vrf;
interface ge-0/0/7.0;
interface lo0.173;
route-distinguisher 1101:10;
vrf-import L3VPN-C1-Import;
vrf-export L3VPN-C1-Export;
routing-options {
static {
// Both router should have IGP or a static route to CE
route 10.0.17.2/32 next-hop 17.0.0.2;
}
autonomous-system 18000;
}
}
}
}
a. Overview
L2VPN multihome provide redundancy for L2VPN connection without additional IP configuration. One
UPE router will have its L2VPN connection in backup state while the other UPE handle primary
connection
116
b. Configuration
CE router’s configuration shall stay the same as case 3.2.3 (transparent L2VPN), no change is
required. Only note that if customer decided to use two physical connection directly to two UPE
router – these two connection must be in L2 mode (customer should place their L3 IP on a vlan
interface or something similar in that case).
PE configuration is also the same with case 3.2.3 (transparent L2VPN), except the additional
site-preference statement on L2VPN configuration of each UPE
//Note that L2VPN multihome case illustrated here only utilize transparent configuration – in which we
do not perform vlan-tagging from provider’s SW to UPE router, so all CE facing interface on UPE
router is in untagged mode with encapsulation ethernet-ccc.
The configuration for L2VPN multihome case with single or multiple vlan tag is the same as other case
in 3.2.4 and 3.2.5 –with the addition of site-preference statement
117
then reject;
}
}
community L2VPN-C1 members target:18403:100;
}
routing-instances {
L2VPN-CUSTOMER1 {
instance-type l2vpn;
interface ge-0/0/7.0;
route-distinguisher 1103:100;
vrf-import L2VPN-C1-Import;
vrf-export L2VPN-C1-Export;
protocols {
l2vpn {
//All configuration is the same except the additional site-preference
encapsulation-type ethernet;
site local1 {
//Note that site-identifier must be THE SAME on both primary and backup UPE of this
L2VPN connection
site-identifier 17;
ignore-encapsulation-mismatch;
//Lower preference will make L2VPN connection on this router stay in idle state.
site-preference 100;
ignore-mtu-mismatch;
interface ge-0/0/7.0 {
//Note that remote-site-id must also be THE SAME on both primary and backup UPE of this
L2VPN connection
remote-site-id 19;
}
}
}
}
}
}
}
HN-UPE1 {
interfaces {
ge-0/0/5 {
unit 0 {
//Interface configuration is transparent in this case study
//Interface configuration should change according to L2 infrastructure requirement
description "TO L2VPN CUSTOMER1 - CE1";
family ccc;
}
}
}
policy-options {
policy-statement L2VPN-C1-Import {
term Customer1 {
from {
protocol bgp;
community L2VPN-C1;
}
then accept;
}
term default {
then reject;
118
}
}
policy-statement L2VPN-C1-Export {
term Customer1 {
then {
community add L2VPN-C1;
accept;
}
}
term default {
then reject;
}
}
community L2VPN-C1 members target:18403:100;
}
routing-instances {
L2VPN-CUSTOMER1 {
instance-type l2vpn;
interface ge-0/0/5.0;
route-distinguisher 1101:100;
vrf-import L2VPN-C1-Import;
vrf-export L2VPN-C1-Export;
protocols {
l2vpn {
encapsulation-type ethernet;
//All configuration is the same except the additional site-preference
site local1 {
//Note that site-identifier must be THE SAME on both primary and backup UPE of this
L2VPN connection
site-identifier 17;
ignore-encapsulation-mismatch;
//Higher preference will make L2VPN connection on this router become the primary
connection and handle all traffic between customer’s site
site-preference 200;
ignore-mtu-mismatch;
interface ge-0/0/5.0 {
//Note that remote-site-id must be THE SAME on both primary and backup UPE of this L2VPN
connection
remote-site-id 19;
}
}
}
}
}
}
}
}
interfaces {
ge-0/0/5 {
encapsulation ethernet-ccc;
}
ge-0/0/6 {
encapsulation ethernet-ccc;
}
ge-0/0/7 {
encapsulation ethernet-ccc;
}
}
119
c. Verification
The L2VPN connection on backup UPE router will be in waiting state, but the primary UPE router
should still be aware of the backup’s existence
[edit]
juniper@vMX# run show l2vpn connections logical-system HN-UPE1
Layer-2 VPN connections:
Instance: L2VPN-CUSTOMER1
Local site: local1 (17)
connection-site Type St Time last up # Up trans
//On the primary router – the backup VPLS connection is displayed with status RN –
Remote site not designated, with the same site ID
17 rmt RN
19 rmt Up Feb 16 14:37:46 2016 1
Remote PE: 10.0.2.101, Negotiated control-word: Yes (Null)
Incoming label: 800002, Outgoing label: 800002
Local interface: ge-0/0/5.0, Status: Up, Encapsulation: ETHERNET
[edit]
juniper@vMX# run show l2vpn connections logical-system HN-UPE3
Layer-2 VPN connections:
Instance: L2VPN-CUSTOMER1
Local site: local1 (17)
connection-site Type St Time last up # Up trans
//On the backup router – the backup VPLS connection is displayed with status LN – Local
site not designated¸with two connection: to remote site and to local primary site.
17 rmt LN
19 rmt LN
[edit]
juniper@vMX# run show l2vpn connections logical-system HCM-UPE1
Layer-2 VPN connections:
Instance: L2VPN-CUSTOMER1
Local site: local1 (19)
connection-site Type St Time last up # Up trans
//The remote site only see one connection to the primary site.
17 rmt Up Feb 16 14:37:46 2016 1
Remote PE: 10.0.1.101, Negotiated control-word: Yes (Null)
Incoming label: 800002, Outgoing label: 800002
Local interface: ge-0/0/6.0, Status: Up, Encapsulation: ETHERNET\
//However, further inspection should show that the remote site still see 2 different
L2VPN route to both primary and backup L2VPN router (with different RD – Route
distinguisher)
120
[edit]
juniper@vMX# run show route table bgp.l2vpn.0 logical-system HCM-UPE1
We can also verify the communication between backup and remote site by looking at bgp.l2vpn.0 table
[edit]
juniper@vMX# run show route table bgp.l2vpn.0 logical-system HN-UPE1
[edit]
juniper@vMX# run show route table bgp.l2vpn.0 logical-system HN-UPE3
121
2101:100:19:17/96
*[BGP/170] 00:10:07, localpref 100, from 10.0.1.11
AS path: I, validation-state: unverified
> to 1.0.0.7 via ge-0/0/2.14, Push 301904
[BGP/170] 00:10:07, localpref 100, from 10.0.1.12
AS path: I, validation-state: unverified
> to 1.0.0.7 via ge-0/0/2.14, Push 301904
//Backup router should also be aware of L2VPN circuit from primary site to remote site
1101:100:17:19/96
*[BGP/170] 00:10:16, localpref 200, from 10.0.1.12
AS path: I, validation-state: unverified
> to 1.0.0.4 via ge-0/0/4.13, Push 299968
[BGP/170] 00:11:02, localpref 200, from 10.0.1.11
AS path: I, validation-state: unverified
> to 1.0.0.4 via ge-0/0/4.13, Push 299968
a. Overview
VPLS multihome case is very similar to L2VPN multihome case. One customer’s CE shall have two
connection to two different CE but only one UPE router will have its VPLS connection in UP state to
connect CE to the VPLS virtual circuit.
122
b. Configuration
CE router’s configuration shall stay the same as case 3.3.4 (tagged VPLS), no change is
required. Only note that if customer decided to use two physical connection directly from one CE
to two UPE router – these two connection must be in L2 mode (customer should place their L3
IP on a vlan interface or something similar in that case).
UPE configuration is also the same with case 3.3.4 (tagged VPLS), except the additional site-
preference statement and multi-homing on VPLS configuration of each UPE
//Note that VPLS multihome case illustrated here only utilize same vlan configuration – in which we
have CE belong to the same vlan on all sites.
The configuration for VP;S transparent multihome case or multiple vlan tag is the same as other case in
3.3.3 and 3.3.5 –with the addition of site-preference and multi-homing statement
123
}
}
community VPLS-C1 members target:18403:1000;
}
routing-instances {
VPLS-CUSTOMER1 {
instance-type vpls;
interface ge-0/0/5.1000;
route-distinguisher 1101:1000;
vrf-import VPLS-C1-Import;
vrf-export VPLS-C1-Export;
protocols {
vpls {
site-range 20;
no-tunnel-services;
site C1-1 {
//Note that site-identifier must be THE SAME on both primary and backup UPE of this VPLS
connection
site-identifier 17;
//Enable multi-homing and set site-preference to specify which router will handle
primary connection
multi-homing;
site-preference 200;
interface ge-0/0/5.1000;
}
ignore-encapsulation-mismatch;
}
}
}
}
}
HN-UPE3 {
interfaces {
ge-0/0/7 {
unit 1000 {
//Interface configuration is using the same vlan 1000 for customer 1 on all site in this
case study.
//Interface configuration should change according to L2 infrastructure requirement
description "TO VPLS CUSTOMER1 - CE2";
encapsulation vlan-vpls;
vlan-id 1000;
}
}
}
policy-options {
policy-statement VPLS-C1-Import {
term Customer1 {
from {
protocol bgp;
community VPLS-C1;
}
then accept;
}
term default {
then reject;
}
}
124
policy-statement VPLS-C1-Export {
term Customer1 {
then {
community add VPLS-C1;
accept;
}
}
term default {
then reject;
}
}
community VPLS-C1 members target:18403:1000;
}
routing-instances {
VPLS-CUSTOMER1 {
instance-type vpls;
interface ge-0/0/7.1000;
route-distinguisher 1103:1000;
vrf-import VPLS-C1-Import;
vrf-export VPLS-C1-Export;
protocols {
vpls {
site-range 20;
no-tunnel-services;
site C1-3 {
//Note that site-identifier must be THE SAME on both primary and backup UPE of this VPLS
connection
site-identifier 17;
//Enable multi-homing and set site-preference to specify which router will handle
primary connection
multi-homing;
site-preference 100;
interface ge-0/0/7.1000;
}
ignore-encapsulation-mismatch;
}
}
}
}
}
}
interfaces {
ge-0/0/5 {
vlan-tagging;
encapsulation vlan-vpls;
}
ge-0/0/7 {
vlan-tagging;
encapsulation vlan-vpls;
}
}
c. Verification
The VPLS connection on backup UPE router will be in waiting state, but the primary UPE router should
still be aware of the backup’s existence
125
[edit groups VPLS-multihome]
juniper@vMX# run show vpls connections logical-system HN-UPE1
Layer-2 VPN connections:
Instance: VPLS-CUSTOMER1
Local site: C1-1 (17)
connection-site Type St Time last up # Up trans
//On the primary router – the backup VPLS connection is displayed with status RN –
Remote site not designated, with the same site ID
17 rmt RN
19 rmt Up Feb 16 11:37:44 2016 1
Remote PE: 10.0.2.101, Negotiated control-word: No
Incoming label: 262147, Outgoing label: 262145
Local interface: lsi.51380224, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 17 remote site 19
Instance: VPLS-CUSTOMER1
Local site: C1-3 (17)
connection-site Type St Time last up # Up trans
//On the backup router – the backup VPLS connection is displayed with status LN – Local
site not designated¸with two connection: to remote site and to local primary site.
17 rmt LN
19 rmt LN
Instance: VPLS-CUSTOMER1
Local site: C1-2 (19)
//The remote site only see one connection to the primary site.
connection-site Type St Time last up # Up trans
17 rmt Up Feb 16 11:37:44 2016 1
Remote PE: 10.0.1.101, Negotiated control-word: No
Incoming label: 262145, Outgoing label: 262147
Local interface: lsi.219152384, Status: Up, Encapsulation: VPLS
Description: Intf - vpls VPLS-CUSTOMER1 local site 19 remote site 17
We can also verify the communication between backup and remote site by looking at bgp.l2vpn.0 table.
Similar to L2VPN multihome case (3.4.3.c)
126