This article describes a workaround to break the limitation of having CE and PE router configurations on separate devices.
Note: It is always preferable to implement Juniper traditional QinQ deployments (Refer to KB33838 - How to configure QinQ using ELS on Junos OS), as OS bugs or unexpected behaviors may not have full engineering support when running this workaround.
For QinQ to work on Junos devices, you must define switch roles to either work as CE or PE devices. You can overcome this limitation by looping two ports on a single switch which will have both roles consecutively.
Topology Diagram Example:
CUST SIDE 1 Using Workaround Configuration
-
Configure the CE side of CE1-PE1
root@CE1-PE1# show vlans
vlan1 {
vlan-id 1;
}
vlan10 {
vlan-id 10;
}
vlan24 {
vlan-id 24;
}
root@CE1-PE1# show interfaces ge-0/0/10
unit 0 {
description CE_Interface;
family ethernet-switching {
interface-mode trunk;
vlan {
members [ 1 10 24 ];
}
}
}
-
(Optional) Configure a Layer 3 IP on CE1-PE1 for reachability purposes
Using IRB on the loop router may not work due to the internal S-Vlan de-encapsulation step. Instead, configure a separate inet unit and add the "flexible-vlan-tagging" statement:
root@CE1-PE1# show interfaces ge-0/0/10 | match flex
flexible-vlan-tagging;
root@CE1-PE1# show interfaces ge-0/0/10 unit 25
vlan-id 25;
family inet {
address 25.25.25.1/24;
}
-
Configure the PE side of CE1-PE1
root@CE1-PE1# show vlans
SP800 {
interface ge-0/0/11.800;
interface ge-0/0/0.800;
switch-options {
no-mac-learning;
}
}
root@CE1-PE1# show interfaces ge-0/0/11
flexible-vlan-tagging;
encapsulation extended-vlan-bridge;
unit 800 {
description PE_Interface;
vlan-id-list 1-25;
input-vlan-map push;
output-vlan-map pop;
}
root@CE1-PE1# show interfaces ge-0/0/0
flexible-vlan-tagging;
encapsulation extended-vlan-bridge;
unit 800 {
description SP_Interface;
vlan-id 800;
}
CUST SIDE 2 Using Normal QinQ Configuration
-
Configure PE2 as a regular PE
root@PE2# show vlans
SP800 {
interface ge-0/0/0.800;
interface ge-0/0/1.800;
}
root@PE2# show interfaces ge-0/0/0
flexible-vlan-tagging;
encapsulation extended-vlan-bridge;
unit 800 {
description SP_Interface;
vlan-id 800;
}
root@PE2# show interfaces ge-0/0/1
flexible-vlan-tagging;
encapsulation extended-vlan-bridge;
unit 800 {
description PE_Interface;
vlan-id-list 1-25;
input-vlan-map push;
output-vlan-map pop;
}
-
Configure CE2 as a regular CE
root@CE2# show vlans
vlan1 {
vlan-id 1;
}
vlan10 {
vlan-id 10;
}
vlan25 {
vlan-id 25;
l3-interface irb.25;
}
root@CE2# show interfaces ge-0/0/1
unit 0 {
description CE_Interface;
family ethernet-switching {
interface-mode trunk;
vlan {
members [ 1 10 25 ];
}
}
}
root@CE2# show interfaces irb.25
family inet {
address 25.25.25.2/24;
}
Test ping from CE2 to CE1-PE1
root@CE2> ping 25.25.25.1
PING 25.25.25.1 (25.25.25.1): 56 data bytes
64 bytes from 25.25.25.1: icmp_seq=0 ttl=64 time=4.325 ms
64 bytes from 25.25.25.1: icmp_seq=1 ttl=64 time=3.075 ms
--- 25.25.25.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 3.075/3.700/4.325/0.625 ms