Hi ,
I was able to build the topology in the lab and test the bgp based solution.
The following diagram shows the BGP peering between the routers.
Loopback IP - 10.255.255.X
Where X represents , PE1 = 1 , P1 = 2, RR1 =3, RR2 =4, P2 =5, PE2 =6
We need to divide the network two IBGP domains for each protocol ( RSVP & LDP).
RR1-RR2 will exchange the uncast and labeled-unicast routes between them via EBGP ( If it is IBGP , labeled routes are in hiddent state, I have no idea why that happens)
The above BGP sessions are to exchange the labeled routes of loopback interfaces.
BGP family inet-vpn unicast needs to be configured between PEs to exchange the VPN routes.
I didn't use any RR functionalities here in order to make this topology simple.
I created CEs at both side, and was able to ping each other.
As I mentioned in the earlier post, LDP-Tunnelling is the easiest way of doing this.
But MP-BGP can be used for the same purpose.
Relevant protocol configurations
==================================
PE1
protocols {
mpls {
interface xe-9/0/0.10;
}
bgp {
group internal {
type internal;
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
neighbor 10.255.255.3 {
local-address 10.255.255.1;
}
}
group vpn {
type internal;
local-address 10.255.255.1;
family inet-vpn {
unicast;
}
neighbor 10.255.255.6;
}
}
ospf {
area 0.0.0.0 {
interface xe-9/0/0.10;
interface lo0.1;
}
}
ldp {
interface xe-9/0/0.10;
}
}
routing-options {
autonomous-system 65000;
}
==================================
P1
protocols {
mpls {
interface xe-9/0/1.10;
interface xe-9/0/0.20;
}
ospf {
area 0.0.0.0 {
interface xe-9/0/1.10;
interface xe-9/0/0.20;
interface lo0.2;
}
}
ldp {
interface xe-9/0/0.20;
interface xe-9/0/1.10;
}
}
==================================
RR1
protocols {
mpls {
interface xe-9/0/1.20;
interface xe-9/0/0.30;
}
bgp {
group rr-border {
type external;
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
export rr-border-export;
peer-as 62222;
local-as 61111;
neighbor 10.0.30.2;
}
group internal {
type internal;
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
export nhs-rsvp-routes;
neighbor 10.255.255.1 {
local-address 10.255.255.3;
}
}
}
ospf {
area 0.0.0.0 {
interface xe-9/0/1.20;
interface xe-9/0/0.30;
interface lo0.3;
}
}
ldp {
interface xe-9/0/1.20;
}
}
policy-options {
policy-statement nhs-rsvp-routes {
term 1 {
from {
protocol bgp;
neighbor 10.0.30.2;
}
then {
next-hop self;
accept;
}
}
}
policy-statement rr-border-export {
term 1 {
from {
route-filter 10.255.255.1/32 exact;
route-filter 10.255.255.2/32 exact;
route-filter 10.255.255.3/32 exact;
}
then {
accept;
}
}
term 2 {
from {
rib inet.3;
route-filter 10.255.255.3/32 exact;
route-filter 10.255.255.2/32 exact;
route-filter 10.255.255.1/32 exact;
}
then {
accept;
}
}
}
}
routing-options {
autonomous-system 65000;
}
==================================
RR2
protocols {
rsvp {
interface xe-9/0/0.40;
}
mpls {
label-switched-path rr2-to-pe2 {
to 10.255.255.6;
}
label-switched-path rr2-to-p2 {
to 10.255.255.5;
}
interface xe-9/0/1.30;
interface xe-9/0/0.40;
}
bgp {
group rr-border {
type external;
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
export rr-border-export;
peer-as 61111;
local-as 62222;
neighbor 10.0.30.1;
}
group internal {
type internal;
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
export nhs-rsvp-routes;
neighbor 10.255.255.6 {
local-address 10.255.255.4;
}
}
}
ospf {
traffic-engineering;
area 0.0.0.0 {
interface xe-9/0/1.30;
interface xe-9/0/0.40;
interface lo0.4;
}
}
}
policy-options {
policy-statement nhs-rsvp-routes {
term 1 {
from {
protocol bgp;
neighbor 10.0.30.1;
}
then {
next-hop self;
}
}
}
policy-statement rr-border-export {
term 1 {
from {
route-filter 10.255.255.4/32 exact;
route-filter 10.255.255.5/32 exact;
route-filter 10.255.255.6/32 exact;
}
then {
accept;
}
}
term 2 {
from {
rib inet.3;
route-filter 10.255.255.4/32 exact;
route-filter 10.255.255.5/32 exact;
route-filter 10.255.255.6/32 exact;
}
then {
accept;
}
}
}
}
routing-options {
autonomous-system 65000;
}
==================================
P2
protocols {
rsvp {
interface xe-9/0/0.50;
interface xe-9/0/1.40;
}
mpls {
label-switched-path p2-to-rr2 {
to 10.255.255.4;
}
label-switched-path p2-to-pe2 {
to 10.255.255.6;
}
interface xe-9/0/1.40;
interface xe-9/0/0.50;
}
ospf {
traffic-engineering;
area 0.0.0.0 {
interface xe-9/0/1.40;
interface xe-9/0/0.50;
interface lo0.5;
}
}
}
==================================
PE2
protocols {
rsvp {
interface xe-9/0/1.50;
}
mpls {
label-switched-path pe2-to-rr2 {
to 10.255.255.4;
}
label-switched-path pe2-to-p2 {
to 10.255.255.5;
}
interface xe-9/0/1.50;
}
bgp {
group internal {
type internal;
family inet {
unicast;
labeled-unicast {
rib {
inet.3;
}
}
}
neighbor 10.255.255.4 {
local-address 10.255.255.6;
}
}
group vpn {
type internal;
local-address 10.255.255.6;
family inet-vpn {
unicast;
}
neighbor 10.255.255.1;
}
}
ospf {
traffic-engineering;
area 0.0.0.0 {
interface xe-9/0/1.50;
interface lo0.6;
}
}
}
routing-options {
autonomous-system 65000;
}
lab@MX# run show route logical-system PE1 table inet.3
inet.3: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.255.255.2/32 *[LDP/9] 12:07:10, metric 1
> to 10.0.10.2 via xe-9/0/0.10
10.255.255.3/32 *[LDP/9] 12:07:07, metric 1
> to 10.0.10.2 via xe-9/0/0.10, Push 299792
10.255.255.5/32 *[BGP/170] 09:05:17, MED 1, localpref 100, from 10.255.255.3
AS path: 61111 62222 I
> to 10.0.10.2 via xe-9/0/0.10, Push 299984, Push 299792(top)
10.255.255.6/32 *[BGP/170] 09:05:17, MED 2, localpref 100, from 10.255.255.3
AS path: 61111 62222 I
> to 10.0.10.2 via xe-9/0/0.10, Push 300000, Push 299792(top)
lab@MX# run show route logical-system PE1 table vpn-1
vpn-1.inet.0: 5 destinations, 6 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.110.0/30 *[Direct/0] 01:36:38
> via xe-9/0/0.110
[BGP/170] 01:36:37, localpref 100
AS path: 63212 I
> to 10.0.110.2 via xe-9/0/0.110
10.0.110.1/32 *[Local/0] 01:36:38
Local via xe-9/0/0.110
10.0.120.0/30 *[BGP/170] 01:36:38, localpref 100, from 10.255.255.6
AS path: I
> to 10.0.10.2 via xe-9/0/0.10, Push 16, Push 300000, Push 299792(top)
20.20.20.0/24 *[BGP/170] 01:36:37, localpref 100
AS path: 63212 I
> to 10.0.110.2 via xe-9/0/0.110
20.20.30.0/24 *[BGP/170] 01:36:37, localpref 100, from 10.255.255.6
AS path: 63213 I
> to 10.0.10.2 via xe-9/0/0.10, Push 16, Push 300000, Push 299792(top)
lab@MX# run show route logical-system PE2 table inet.3
inet.3: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.255.255.1/32 *[BGP/170] 09:07:09, MED 1, localpref 100, from 10.255.255.4
AS path: 62222 61111 I
> to 10.0.50.1 via xe-9/0/1.50, label-switched-path pe2-to-rr2
10.255.255.2/32 *[BGP/170] 09:07:09, MED 1, localpref 100, from 10.255.255.4
AS path: 62222 61111 I
> to 10.0.50.1 via xe-9/0/1.50, label-switched-path pe2-to-rr2
10.255.255.4/32 *[RSVP/7/1] 10:44:21, metric 2
> to 10.0.50.1 via xe-9/0/1.50, label-switched-path pe2-to-rr2
10.255.255.5/32 *[RSVP/7/1] 10:44:20, metric 1
> to 10.0.50.1 via xe-9/0/1.50, label-switched-path pe2-to-p2
lab@MX# run show route logical-system PE2 table vpn-1
vpn-1.inet.0: 5 destinations, 6 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.110.0/30 *[BGP/170] 01:37:20, localpref 100, from 10.255.255.1
AS path: I
> to 10.0.50.1 via xe-9/0/1.50, label-switched-path pe2-to-rr2
10.0.120.0/30 *[Direct/0] 01:37:20
> via xe-9/0/0.120
[BGP/170] 01:37:19, localpref 100
AS path: 63213 I
> to 10.0.120.2 via xe-9/0/0.120
10.0.120.1/32 *[Local/0] 01:37:20
Local via xe-9/0/0.120
20.20.20.0/24 *[BGP/170] 01:37:19, localpref 100, from 10.255.255.1
AS path: 63212 I
> to 10.0.50.1 via xe-9/0/1.50, label-switched-path pe2-to-rr2
20.20.30.0/24 *[BGP/170] 01:37:19, localpref 100
AS path: 63213 I
> to 10.0.120.2 via xe-9/0/0.120
Regards
Moses N
-------------------------------------------------------
If this post answers your question, please mark it as "Accepted Solution". Kudos are a nice way of expressing your gratitude