ACX7000 platform has been tested successfully with 4,000 Layer3 VPN Routing-instances with BGPv4, BGPv6, OSPF, OSPFv3, ISISv4, ISISv6, Static-v4, Static-v6 as CE-PE protocols and with a total of 1.35M routes.
This is the third article in the ACX7k Metro Validation Series.
In this article we validate the L3VPN, 6VPE, 6PE feature scale support on ACX7100-32C platform with 22.2R1 Junos-EVO build.
RFC 4364 describes BGP-enabled L3VPN to connect Customer Edge Devices (CEs) across a Provider Edge (PE) Network. The PEs provide layer 3 connectivity for their customers using various protocols like BGP, OSPF, ISIS, RIP or Static. The PEs of the network are connected via MPLS technology LDP, RSVP, SR-MPLS etc. In L3VPN, the IP address associated with the hosts are learned via the control plane on both CE-PE side and across PE network with the help of BGP.
JUNOS-EVO supports L3VPN and 6VPE functionality with instance-type "vrf". In this document, we qualify the feature scale on the ACX7000 platforms.
ACX7100-32C with 22.2R1 Junos Version supports different flavours of CE-PE. The Key Performance Indicators (KPI) tested are captured in the below table. The same scale is supported and tested on ACX7100-48L as well as on ACX7509. But the ACX7024 Scale is not covered in this article (same features but different scale are expected on this platform).
Please note that despite sharing the same ACX moniker, the ACX7000 products are different products than ACX500/710/1000/1100/2100/2200/4000/5000/5400/6000. They are powered by different Packet Forwarding Engines (PFE), and support different feature sets and scales.
CEs are simulated using a traffic generator. PEs are connected to CEs using 5x 100G links and to the core using 8x 100G links, which are bundled in 2x LAGs each having four links.
The ACX7100-32C is the Device Under Test (DUT). The underlay transport used for testing is SR-MPLS with both OSPF and ISIS protocols individually. We also covered LDP as the underlay transport. The CE-bound interface configurations are of SP-Style (see glossary).
For this test, we configure 4,000 L3VPN instances:
2,000 have EBGPv4 as the CE-PE protocol,
1,000 have OSPF as the CE-PE protocol,
500 have ISIS as the CE-PE protocol
the remaining 500 have Static-v4 reachability.
1,150 routing instances are
dual-stacked,
with 500 EBGPv6 Peering,
100 OSPFv3 Peering,
500 IS-IS Peering
50 Static IPv6 reachability.
The DUT learns 1.35M routes including VPNv4, VPNv6, global IPv4 and IPv6.
Bidirectional traffic in iMIX mode at 99.9% offer-load flows for all the L3VPN, 6VPE services. A total of ~1Tbps traffic transits through the DUT.
The first step to verify the L3VPN service is to make sure that the IGP is established and routers in the core network are reachable. BGP Peering has to be verified for various services like L3VPN, 6VPE, 6PE and Global V4 routes. The L3VPN routes are present in bgp.l3vpn.0 table, 6VPE routes in bgp.l3vpn-inet6.0 table, 6PE routes in inet6.0 table and Global IPv4 routes in inet.0 table.
regress@PE1> show ospf neighbor
Address Interface State ID Pri Dead
15.1.1.2 ae0.0 Full 6.6.6.6 128 37
15.1.2.2 ae1.0 Full 6.6.6.6 128 31
regress@PE1> show route protocol ospf table inet.0
inet.0: 60031 destinations, 60038 routes (60031 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
12.1.1.2/32 *[OSPF/10/10] 1d 17:40:52, metric 1
to 15.1.1.2 via ae0.0
> to 15.1.2.2 via ae1.0
12.1.1.3/32 *[OSPF/10/10] 1d 17:40:52, metric 2
to 15.1.1.2 via ae0.0
> to 15.1.2.2 via ae1.0
15.2.1.0/24 *[OSPF/10/10] 1d 17:40:52, metric 2
to 15.1.1.2 via ae0.0
> to 15.1.2.2 via ae1.0
15.2.2.0/24 *[OSPF/10/10] 1d 17:40:52, metric 2
to 15.1.1.2 via ae0.0
> to 15.1.2.2 via ae1.0
224.0.0.5/32 *[OSPF/10] 1d 17:41:08, metric 1
MultiRecv
224.0.0.6/32 *[OSPF/10] 1d 17:41:08, metric 1
MultiRecv
regress@PE1> show route protocol ospf table inet.3
inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
12.1.1.2/32 *[L-OSPF/10/5] 00:13:20, metric 1
to 15.1.1.2 via ae0.0
> to 15.1.2.2 via ae1.0
12.1.1.3/32 *[L-OSPF/10/5] 1d 17:40:55, metric 2
to 15.1.1.2 via ae0.0, Push 45103
> to 15.1.2.2 via ae1.0, Push 45103
regress@PE1> show mpls interface
Interface State Administrative groups (x: extended)
ae0.0 Up <none>
ae1.0 Up <none>
regress@PE1>
regress@PE1> show bgp neighbor 16.0.1.2
Peer: 16.0.1.2+33773 AS 45001 Local: 16.0.1.1+179 AS 65000
Group: METRO_VRF_EBGPv4_1 Routing-Instance: METRO_VRF_1
Forwarding routing-instance: METRO_VRF_1
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Options: <AddressFamily PeerAS Refresh As Override>
Options: <GracefulShutdownRcv>
Address families configured: inet-unicast
Holdtime: 90 Preference: 170
Graceful Shutdown Receiver local-preference: 0
Number of flaps: 0
Receive eBGP Origin Validation community: Reject
Peer ID: 192.0.0.1 Local ID: 16.0.1.1 Active Holdtime: 90
Keepalive Interval: 30 Group index: 2 Peer index: 0 SNMP index: 3
I/O Session Thread: bgpio-0 State: Enabled
BFD: disabled, down
Local Interface: et-0/0/0.1
NLRI for restart configured on peer: inet-unicast
NLRI advertised by peer: inet-unicast inet-multicast inet-vpn-unicast inet6-unicast inet6-multicast l2vpn inet6-vpn-unicast
NLRI for this session: inet-unicast
Peer supports Refresh capability (2)
Stale routes from peer are kept for: 300
Peer does not support Restarter functionality
NLRI of all end-of-rib markers sent: inet-unicast
Peer does not support Receiver functionality
Peer does not support LLGR Restarter or Receiver functionality
Peer does not support 4 byte AS extension
Peer does not support Addpath
Table METRO_VRF_1.inet.0 Bit: 60001
RIB State: BGP restart is complete
RIB State: VPN restart is complete
Send state: in sync
Active prefixes: 250
Received prefixes: 250
Accepted prefixes: 250
Suppressed due to damping: 0
Advertised prefixes: 251
Last traffic (seconds): Received 1 Sent 18 Checked 154592
Input messages: Total 5157 Updates 1 Refreshes 0 Octets 99082
Output messages: Total 5201 Updates 2 Refreshes 0 Octets 99895
Output Queue[5]: 0 (METRO_VRF_1.inet.0, inet-unicast)
regress@PE1>
The BGPv4 CE-PE routes in the routing-instance METRO_VRF_1 are as follows:
regress@PE1> show route table METRO_VRF_1.inet.0
METRO_VRF_1.inet.0: 503 destinations, 503 routes (503 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
16.0.1.0/24 *[Direct/0] 1d 18:03:51
> via et-0/0/0.1
16.0.1.1/32 *[Local/0] 1d 18:03:51
Local via et-0/0/0.1
17.0.1.0/24 *[BGP/170] 1d 17:53:50, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 45103(top)
20.0.1.0/24 *[BGP/170] 1d 17:52:42, localpref 100
AS path: 45001 I, validation-state: unverified
> to 16.0.1.2 via et-0/0/0.1
20.0.2.0/24 *[BGP/170] 1d 17:52:42, localpref 100
AS path: 45001 I, validation-state: unverified
> to 16.0.1.2 via et-0/0/0.1
...
20.0.249.0/24 *[BGP/170] 1d 17:52:42, localpref 100
AS path: 45001 I, validation-state: unverified
> to 16.0.1.2 via et-0/0/0.1
20.0.250.0/24 *[BGP/170] 1d 17:52:42, localpref 100
AS path: 45001 I, validation-state: unverified
> to 16.0.1.2 via et-0/0/0.1
30.0.1.0/24 *[BGP/170] 1d 17:52:39, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 16, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 16, Push 45103(top)
30.0.2.0/24 *[BGP/170] 1d 17:52:39, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 16, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 16, Push 45103(top)
...
30.0.249.0/24 *[BGP/170] 1d 17:52:39, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 45103(top)
30.0.250.0/24 *[BGP/170] 1d 17:52:39, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 45103(top)
regress@PE1>
regress@PE1> show bgp neighbor 2002:16:0:1::2
Peer: 2002:16:0:1::2+32777 AS 45001 Local: 2002:16:0:1::1+179 AS 65000
Group: METRO_VRF_EBGPv6_1 Routing-Instance: METRO_VRF_1
Forwarding routing-instance: METRO_VRF_1
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Options: <AddressFamily PeerAS Refresh As Override>
Options: <GracefulShutdownRcv>
Address families configured: inet6-unicast
Holdtime: 90 Preference: 170
Graceful Shutdown Receiver local-preference: 0
Number of flaps: 0
Receive eBGP Origin Validation community: Reject
Peer ID: 193.0.0.1 Local ID: 16.0.1.1 Active Holdtime: 90
Keepalive Interval: 30 Group index: 3 Peer index: 0 SNMP index: 4
I/O Session Thread: bgpio-0 State: Enabled
BFD: disabled, down
Local Interface: et-0/0/0.1
NLRI for restart configured on peer: inet6-unicast
NLRI advertised by peer: inet-unicast inet-multicast inet-vpn-unicast inet6-unicast inet6-multicast l2vpn inet6-vpn-unicast
NLRI for this session: inet6-unicast
Peer supports Refresh capability (2)
Stale routes from peer are kept for: 300
Peer does not support Restarter functionality
NLRI of all end-of-rib markers sent: inet6-unicast
Peer does not support Receiver functionality
Peer does not support LLGR Restarter or Receiver functionality
Peer does not support 4 byte AS extension
Peer does not support Addpath
NLRI that peer supports extended nexthop encoding for: inet-unicast inet-multicast inet-vpn-unicast
Table METRO_VRF_1.inet6.0 Bit: 70001
RIB State: BGP restart is complete
RIB State: VPN restart is complete
Send state: in sync
Active prefixes: 100
Received prefixes: 100
Accepted prefixes: 100
Suppressed due to damping: 0
Advertised prefixes: 101
Last traffic (seconds): Received 29 Sent 24 Checked 154980
Input messages: Total 5169 Updates 1 Refreshes 0 Octets 99266
Output messages: Total 5213 Updates 2 Refreshes 0 Octets 100103
Output Queue[6]: 0 (METRO_VRF_1.inet6.0, inet6-unicast)
regress@PE1>
The BGPv6 CE-PE routes in the routing-instance METRO_VRF_1:
regress@PE1> show route table METRO_VRF_1.inet6.0
METRO_VRF_1.inet6.0: 205 destinations, 205 routes (205 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2002:16:0:1::/64 *[Direct/0] 1d 18:07:23
> via et-0/0/0.1
2002:16:0:1::1/128 *[Local/0] 1d 18:07:23
Local via et-0/0/0.1
2002:17:0:1::/64 *[BGP/170] 1d 17:57:32, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 2, Push 45103(top)
2002:20:0:1::/64 *[BGP/170] 1d 17:56:28, localpref 100
AS path: 45001 I, validation-state: unverified
> to 2002:16:0:1::2 via et-0/0/0.1
2002:20:0:2::/64 *[BGP/170] 1d 17:56:28, localpref 100
AS path: 45001 I, validation-state: unverified
> to 2002:16:0:1::2 via et-0/0/0.1
...
2002:20:0:63::/64 *[BGP/170] 1d 17:56:28, localpref 100
AS path: 45001 I, validation-state: unverified
> to 2002:16:0:1::2 via et-0/0/0.1
2002:20:0:64::/64 *[BGP/170] 1d 17:56:28, localpref 100
AS path: 45001 I, validation-state: unverified
> to 2002:16:0:1::2 via et-0/0/0.1
2002:30:0:1::/64 *[BGP/170] 1d 17:56:27, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 2, Push 45103(top)
2002:30:0:2::/64 *[BGP/170] 1d 17:56:27, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 2, Push 45103(top)
...
2002:30:0:63::/64 *[BGP/170] 1d 17:56:27, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 2, Push 45103(top)
2002:30:0:64::/64 *[BGP/170] 1d 17:56:27, localpref 100, from 12.1.1.3
AS path: 45001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 16, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 16, Push 2, Push 45103(top)
fe80::ae78:d100:12d:3504/128
*[Local/0] 1d 18:07:23
Local via et-0/0/0.1
ff02::2/128 *[INET6/0] 1d 18:10:03
MultiRecv
regress@PE1>
regress@PE1> show route table METRO_VRF_2001.inet.0 protocol bgp
METRO_VRF_2001.inet.0: 105 destinations, 105 routes (105 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
17.10.1.0/24 *[BGP/170] 1d 18:02:09, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 1131, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 1131, Push 45103(top)
42.0.1.0/24 *[BGP/170] 1d 17:24:52, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 1131, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 1131, Push 45103(top)
42.0.2.0/24 *[BGP/170] 1d 17:24:52, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 1131, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 1131, Push 45103(top)
...
42.0.49.0/24 *[BGP/170] 1d 17:24:52, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 1131, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 1131, Push 45103(top)
42.0.50.0/24 *[BGP/170] 1d 17:24:52, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 1131, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 1131, Push 45103(top)
regress@PE1>
regress@PE1> show ospf3 neighbor instance METRO_VRF_2001
ID Interface State Pri Dead
209.0.0.1 et-0/0/2.1 Full 0 38
Neighbor-address fe80::228:1ff:fe00:1
regress@PE1>
The OSPFv3 routes received from the CE can be listed as
regress@PE1> show route table METRO_VRF_2001.inet6.0 protocol bgp
METRO_VRF_2001.inet6.0: 107 destinations, 107 routes (107 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2002:17:10:1::/64 *[BGP/170] 1d 18:07:53, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 1131, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 1131, Push 2, Push 45103(top)
3000:6:1:1::/64 *[BGP/170] 1d 17:30:42, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 1131, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 1131, Push 2, Push 45103(top)
...
3000:6:1:31::/64 *[BGP/170] 1d 17:30:42, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 1131, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 1131, Push 2, Push 45103(top)
3000:6:1:32::/64 *[BGP/170] 1d 17:30:42, MED 1, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 1131, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 1131, Push 2, Push 45103(top)
regress@PE1>
regress@PE1> show route table METRO_VRF_3001.inet.0 protocol bgp
METRO_VRF_3001.inet.0: 105 destinations, 105 routes (105 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
12.4.0.1/32 *[BGP/170] 1d 18:16:45, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 45103(top)
17.14.1.0/24 *[BGP/170] 1d 18:16:45, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 45103(top)
45.0.1.0/24 *[BGP/170] 1d 18:14:58, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 45103(top)
45.0.2.0/24 *[BGP/170] 1d 18:14:58, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 45103(top)
...
45.0.49.0/24 *[BGP/170] 1d 18:14:58, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 45103(top)
45.0.50.0/24 *[BGP/170] 1d 18:14:58, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 45103(top)
regress@PE1>
regress@PE1> show route table METRO_VRF_3001.inet6.0 protocol bgp
METRO_VRF_3001.inet6.0: 28 destinations, 28 routes (28 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2002:17:14:1::/64 *[BGP/170] 1d 18:20:01, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2242, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2242, Push 2, Push 45103(top)
2005:12:4::1/128 *[BGP/170] 1d 18:20:01, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2242, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2242, Push 2, Push 45103(top)
3001:1:1:1::/64 *[BGP/170] 1d 18:18:18, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2242, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2242, Push 2, Push 45103(top)
3001:1:1:2::/64 *[BGP/170] 1d 18:18:18, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2242, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2242, Push 2, Push 45103(top)
...
3001:1:1:9::/64 *[BGP/170] 1d 18:18:18, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 2, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 2, Push 45103(top)
3001:1:1:a::/64 *[BGP/170] 1d 18:18:18, MED 10, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 2242, Push 2, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 2242, Push 2, Push 45103(top)
regress@PE1>
regress@PE1> show route table METRO_VRF_3501.inet.0 protocol bgp
METRO_VRF_3501.inet.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
17.16.1.0/24 *[BGP/170] 1d 18:24:25, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2797, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2797, Push 45103(top)
46.10.1.0/24 *[BGP/170] 1d 18:24:25, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2797, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2797, Push 45103(top)
regress@PE1>
regress@PE1> show route table METRO_VRF_3501.inet.0 protocol bgp
METRO_VRF_3501.inet.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
17.16.1.0/24 *[BGP/170] 1d 18:26:14, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2797, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2797, Push 45103(top)
46.10.1.0/24 *[BGP/170] 1d 18:26:14, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2797, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2797, Push 45103(top)
regress@PE1>
regress@PE1> show bgp neighbor 2002:16:100:1::2
Peer: 2002:16:100:1::2+32777 AS 65001 Local: 2002:16:100:1::1+179 AS 65000
Group: EBGP Routing-Instance: master
Forwarding routing-instance: master
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Options: <AddressFamily PeerAS Refresh As Override>
Options: <GracefulShutdownRcv>
Address families configured: inet6-unicast
Holdtime: 90 Preference: 170
Graceful Shutdown Receiver local-preference: 0
Number of flaps: 0
Receive eBGP Origin Validation community: Reject
Peer ID: 201.0.0.1 Local ID: 12.1.1.1 Active Holdtime: 90
Keepalive Interval: 30 Group index: 1 Peer index: 0 SNMP index: 2
I/O Session Thread: bgpio-0 State: Enabled
BFD: disabled, down
Local Interface: et-0/0/1.4000
NLRI for restart configured on peer: inet6-unicast
NLRI advertised by peer: inet-unicast inet-multicast inet-vpn-unicast inet6-unicast inet6-multicast l2vpn inet6-vpn-unicast
NLRI for this session: inet6-unicast
Peer supports Refresh capability (2)
Stale routes from peer are kept for: 300
Peer does not support Restarter functionality
NLRI of all end-of-rib markers sent: inet6-unicast
Peer does not support Receiver functionality
Peer does not support LLGR Restarter or Receiver functionality
Peer does not support 4 byte AS extension
Peer does not support Addpath
NLRI that peer supports extended nexthop encoding for: inet-unicast inet-multicast inet-vpn-unicast
Table inet6.0 Bit: 30001
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 15000
Received prefixes: 15000
Accepted prefixes: 15000
Suppressed due to damping: 0
Advertised prefixes: 15002
Last traffic (seconds): Received 21 Sent 16 Checked 147443
Input messages: Total 4951 Updates 34 Refreshes 0 Octets 231303
Output messages: Total 4994 Updates 36 Refreshes 0 Octets 232009
Output Queue[2]: 0 (inet6.0, inet6-unicast)
regress@PE1>
The 6PE routes received from the Global Peer and Remote Peer PE2 is as shown below:
regress@PE1> show route table inet6.0
inet6.0: 30008 destinations, 30008 routes (30008 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2002:12:1:1::1/128 *[Direct/0] 1d 17:10:57
> via lo0.0
2002:12:1:1::3/128 *[BGP/170] 1d 16:59:24, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2, Push 45103(top)
2002:16:100:1::/64 *[Direct/0] 1d 17:09:13
> via et-0/0/1.4000
2002:16:100:1::1/128
*[Local/0] 1d 17:09:13
Local via et-0/0/1.4000
2002:17:100:1::/64 *[BGP/170] 1d 16:59:24, localpref 100, from 12.1.1.3
AS path: I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 2, Push 45103(top)
2002:50:0:1::/64 *[BGP/170] 1d 16:58:26, localpref 100
AS path: 65001 I, validation-state: unverified
> to 2002:16:100:1::2 via et-0/0/1.4000
2002:50:0:2::/64 *[BGP/170] 1d 16:58:26, localpref 100
AS path: 65001 I, validation-state: unverified
> to 2002:16:100:1::2 via et-0/0/1.4000
2002:50:0:3::/64 *[BGP/170] 1d 16:58:26, localpref 100
AS path: 65001 I, validation-state: unverified
> to 2002:16:100:1::2 via et-0/0/1.4000
...
2002:55:0:3a96::/64*[BGP/170] 1d 16:59:11, localpref 100, from 12.1.1.3
AS path: 65001 I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 4018, Push 2, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 4018, Push 2, Push 45103(top)
2002:55:0:3a97::/64*[BGP/170] 1d 16:59:11, localpref 100, from 12.1.1.3
AS path: 65001 I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 4018, Push 2, Push 45103(top)
> to 15.1.2.2 via ae1.0, Push 4018, Push 2, Push 45103(top)
2002:55:0:3a98::/64*[BGP/170] 1d 16:59:11, localpref 100, from 12.1.1.3
AS path: 65001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 4018, Push 2, Push 45103(top)
to 15.1.2.2 via ae1.0, Push 4018, Push 2, Push 45103(top)
fe80::ae78:d10f:a02d:350c/128
*[Local/0] 1d 17:10:02
Local via et-0/0/1.4000
fe80::ae78:d1f0:2d:3503/128
*[Direct/0] 1d 17:11:44
> via lo0.0
ff02::2/128 *[INET6/0] 1d 17:12:42
MultiRecv
regress@PE1>
regress@PE1> show bgp neighbor 16.100.1.2
Peer: 16.100.1.2+32779 AS 65001 Local: 16.100.1.1+179 AS 65000
Group: EBGP Routing-Instance: master
Forwarding routing-instance: master
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Options: <AddressFamily PeerAS Refresh As Override>
Options: <GracefulShutdownRcv>
Address families configured: inet-unicast
Holdtime: 90 Preference: 170
Graceful Shutdown Receiver local-preference: 0
Number of flaps: 0
Receive eBGP Origin Validation community: Reject
Peer ID: 200.0.0.1 Local ID: 12.1.1.1 Active Holdtime: 90
Keepalive Interval: 30 Group index: 1 Peer index: 1 SNMP index: 1
I/O Session Thread: bgpio-0 State: Enabled
BFD: disabled, down
Local Interface: et-0/0/1.4000
NLRI for restart configured on peer: inet-unicast
NLRI advertised by peer: inet-unicast inet-multicast inet-vpn-unicast inet6-unicast inet6-multicast l2vpn inet6-vpn-unicast
NLRI for this session: inet-unicast
Peer supports Refresh capability (2)
Stale routes from peer are kept for: 300
Peer does not support Restarter functionality
NLRI of all end-of-rib markers sent: inet-unicast
Peer does not support Receiver functionality
Peer does not support LLGR Restarter or Receiver functionality
Peer does not support 4 byte AS extension
Peer does not support Addpath
Table inet.0 Bit: 20001
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 30000
Received prefixes: 30000
Accepted prefixes: 30000
Suppressed due to damping: 0
Advertised prefixes: 30002
Last traffic (seconds): Received 17 Sent 4 Checked 147619
Input messages: Total 4953 Updates 30 Refreshes 0 Octets 215047
Output messages: Total 4998 Updates 34 Refreshes 0 Octets 215788
Output Queue[1]: 0 (inet.0, inet-unicast)
regress@PE1>
The IPv4 routes received from the Global Peer and Remote Peer PE2 is as shown below:
regress@PE1> show route table inet.0 protocol bgp
inet.0: 60057 destinations, 60090 routes (60057 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
...
50.0.1.0/24 *[BGP/170] 1d 19:15:32, localpref 100
AS path: 65001 I, validation-state: unverified
> to 16.100.1.2 via et-0/0/1.4000
50.0.2.0/24 *[BGP/170] 1d 19:15:32, localpref 100
AS path: 65001 I, validation-state: unverified
> to 16.100.1.2 via et-0/0/1.4000
...
55.117.47.0/24 *[BGP/170] 1d 19:16:33, localpref 100, from 12.1.1.3
AS path: 65001 I, validation-state: unverified
to 15.1.1.2 via ae0.0, Push 45103
> to 15.1.2.2 via ae1.0, Push 45103
55.117.48.0/24 *[BGP/170] 1d 19:16:33, localpref 100, from 12.1.1.3
AS path: 65001 I, validation-state: unverified
> to 15.1.1.2 via ae0.0, Push 45103
to 15.1.2.2 via ae1.0, Push 45103
...
regress@PE1>
Traffic from the CE flows towars the core over the two LAG bundles ae0 and ae1 and traffic load-balanced across the bundles and the member interfaces of the bundle.
The Python Script is having three components, a Jinja File capturing the various configuration templates, a Params File capturing the various user variables and the script uses both these input files and generates the required configurations and commit that in the router.
Note: The configs are generated as per the CE-bound interface schema.
---
# This file contains the parameters for l3vpn configuration building
# File Name: l3vpn_params.yaml
# Version: 1.0
#Host Name
host: 'PE1.englab.juniper.net'
#UserName
username: 'regress'
password: 'xxxxxx'
#Config Group Name
group_name: 'L3VPN'
#vrfname creation
vrf_id: 1
# vrf_id: 2001 # For CE-PE OSPF
# vrf_id: 3001 # For CE-PE ISIS
# vrf_id: 3501 # For CE-PE Static
#maximum l3vpn instances
vrf_max: 1000
# vrf_max: 1000 # For CE-PE OSPF
# vrf_max: 500 # For CE-PE ISIS
# vrf_max: 500 # For CE-PE Static
# vrf_max: 500 # For CE-PE BGPv6
#interface name
ifd_name: 'et-0/0/0' #PE1 interface
# ifd_name: 'et-0/0/48:3' #PE2 interface
# ifd_name: 'lo0'
#ifl_start unit
ifl_start_unit: 1
#VRF Loopback for ISIS CE-PE peering
lo0_ip_start: '12.2.0.1' # At PE1
# lo0_ip_start: '12.4.0.1' # At PE2
lo0_ip_incr: '0.0.0.1'
lo0_ipv6_start: '2005:12:2:0::1' # At PE1
# lo0_ipv6_start: '2005:12:4:0::1' # At PE2
lo0_ipv6_incr: '0:0:0:0::1'
# lo0_unit_start: 1
lo0_unit_start: 1
#CE-PE IPv4 Protocol
ce_pe_is_bgpv4: True
ce_pe_is_ospf: False
ce_pe_is_isis: False
ce_pe_is_static: False
## CE-PE IPv6 Protocol
vpnv6_enabled: False # to configure the interfaces with ipv6 addresses
ce_pe_is_bgpv6: False
ce_pe_is_ospfv6: False
ce_pe_is_isisv6: False
ce_pe_is_staticv6: False
#No of v6 ce-pe peering
total_v6_ifl_count: 100 # this count and peering count should match
v6_ebgp_count: 500
v6_ospf_count: 100
v6_isis_count: 100
v6_static_count: 10
#Peer AS start
peerasstart: 45001 # Firt Port
# peerasstart: 46001 # Second Port
#My AS no
local_as_no: 65000
#My Router ID
router_id: '12.1.1.1' # For PE1
# router_id: '12.1.1.3' # For PE2
#Interface IP between Router and TGN
ifl_ip: '16.0.1.1' # For CE-PE EBGP at PE1 with 1000 peering with first interface
# ifl_ip: '16.4.1.1' # For CE-PE EBGP at PE1 with 1000 peering with second interface
# ifl_ip: '16.10.1.1' # For CE-PE OSPF at PE1
# ifl_ip: '16.14.1.1' # For CE-PE ISIS at PE1
# ifl_ip: '16.16.1.1' # For CE-PE Static at PE1
# ifl_ip: '17.0.1.1' # For CE-PE EBGP at PE2
# ifl_ip: '17.4.1.1' # For CE-PE EBGP at PE2
# ifl_ip: '17.10.1.1' # For CE-PE OSPF at PE2
# ifl_ip: '17.14.1.1' # For CE-PE ISIS at PE2
# ifl_ip: '17.16.1.1' # For CE-PE Static at PE2
#Neighbor IPv4 start for BGP Peering
neighboripv4start: '16.0.1.2' # First Port at PE1
# neighboripv4start: '16.4.1.2' # Second Port at PE1
# neighboripv4start: '17.0.1.2' # First Port at PE2
# neighboripv4start: '17.4.1.2' # Second Port at PE2
#neighbor ipv4 incr
neighboripv4incr: '0.0.1.0'
#Configuration Filename
config_file: 'pyez_jinja_yml.conf'
#Interface IPv6
ifl_ipv6: '2002:16:0:1::1' # At PE1 for EBGPv6
# ifl_ipv6: '2002:16:10:1::1' # At PE1 for OSPFv3
# ifl_ipv6: '2002:16:14:1::1' # At PE1 for ISISv6
# ifl_ipv6: '2002:16:16:1::1' # At PE1 for Staticv6
# ifl_ipv6: '2002:17:0:1::1' # At PE2 for EBGPv6
# ifl_ipv6: '2002:17:10:1::1' # At PE2 for OSPFv3
# ifl_ipv6: '2002:17:14:1::1' # At PE2 for ISISv6
# ifl_ipv6: '2002:17:16:1::1' # At PE2 for Staticv6
#Neighbor IPv6 start
neighboripv6start: '2002:16:0:1::2' # At PE1 for EBGPv6
# neighboripv6start: '2002:16:10:1::2' # At PE1 for OSPFv3
# neighboripv6start: '2002:16:14:1::2' # At PE1 for ISISv6
# neighboripv6start: '2002:16:16:1::2' # At PE1 for Staticv6
# neighboripv6start: '2002:17:0:1::2' # At PE2 for EBGPv6
# neighboripv6start: '2002:17:10:1::2' # At PE2 for OSPFv3
# neighboripv6start: '2002:17:14:1::2' # At PE2 for ISISv6
# neighboripv6start: '2002:17:16:1::2' # At PE2 for Staticv6
#neighbor ipv6 incr
neighboripv6incr: '0:0:0:1::0'
#Static RouteStart - v4
static_route_start: '46.0.1.0/24' # At PE1
# static_route_start: '46.10.1.0/24' # At PE2
#Static RouteStart - v6
static_v6_route_start: '2008:1:0:1::0/64' # At PE1
# static_v6_route_start: '2008:2:0:1::0/64' # At PE2
ACX7100-32C scale 4k VPN instances supporting various CE-PE protocols with dual-stack capability and ready for Metro Deployments and Lean Edge Use case requirements.