Blog Viewer

VPLS Validation on PTX10002-36QDD

By Manikanta Pavan C posted 05-16-2025 07:03

  

VPLS Validation on PTX10002-36QDD

Validating VPLS on the PTX10002-36QDD with Junos Evolved 24.2R2 for Metro Aggregation or Cloud Enterprise use cases.

Introduction

The PTX10002-36QDD is a next-generation cloud-optimized 2U fixed-configuration routing platform powered by Juniper’s Express 5 ASIC. With an industry-leading 28.8 Tbps throughput capacity, it is purpose-built for space- and power-constrained environments, making it ideal for dense, high-performance network deployments.

Despite the growing adoption of EVPN solutions, VPLS remains a widely deployed and trusted technology for delivering services such as enterprise connectivity, mobile backhaul, or wholesale services. VPLS enables multipoint Layer 2 Ethernet connectivity over MPLS networks. The service allows geographically distributed LAN segments to appear as if on the same Ethernet broadcast domain by interconnecting sites with pseudowires. Pseudowires can be signaled using either BGP or LDP, as defined by the IETF standards listed below.

IETF VPLS Standards

  • RFC 4761 defines BGP-VPLS, utilizing BGP for both service discovery and the signaling of pseudowires.
  • RFC 4762 describes LDP-signaled VPLS, using LDP either FEC128 or FEC129 (Generalized PWid).
  • RFC 6074 extends VPLS signaling using FEC129 with BGP-based auto-discovery, enhancing scalability and flexibility.

Historically, the PTX platform has been deployed primarily in core and peering roles. However, with the significant advancements introduced by the latest-generation Express 5 (code name BX) chipset, PTX is increasingly being evaluated for more complex roles across the network. As bandwidth demands grow — especially in Metro Aggregation and Cloud Enterprise environments — the PTX10002-36QDD emerges as a strong candidate for these evolving use cases. For this validation, we selected a representative scale of 4,000 VPLS instances, distributed across three service types: BGP-VPLS, LDP-VPLS, and LDP-VPLS with BGP auto-discovery.

PTX10002-36QDD, running Junos Evolved 24.2R2 as the primary device under test (DUT), serves as the Provider Edge (PE) router. It provides Layer 2 bridged connectivity between Customer Edge (CE) devices across an MPLS core. VPLS PEs may leverage various transport technologies, including MPLS with LDP or RSVP, SR-MPLS, or SRv6. MAC learning in Virtual Private LAN Service (VPLS) occurs in the data plane, like it's done in Ethernet switches.

JUNOS-EVO supports VPLS functionality with the instance type “virtual-switch” on PTX10002-36QDD platform. The logical tunnel interfaces connecting the PE devices are known as “LSI ifl” interfaces. The scope of an LSI IFL is limited to the respective routing instances configured as a virtual switch.

VPLS Packet Walkthrough

Here’s a summary of how a customer Ethernet packet is processed through the VPLS domain.

Ingress PE:

An Ethernet frame arriving at the PE router is associated with a virtual-switch routing instance (VSI) based on a physical/logical port and VLAN ID (IEEE 802.1Q) and undergoes the following MAC operations.

  • The source MAC address is learned and creates an entry in the Ethernet switching table, which is associated with the incoming interface.
  • The destination MAC address is looked up in the VSI Ethernet switching table, and the following decisions are made: 
    • For a known MAC address, learned from other associated CE interfaces on the PE device, the packet is forwarded.
    • For a known MAC address, learned over the LSI IFL, the Ethernet switching table identifies an associated LSI IFL, which gives a composite NH that will provide a service label & transport label required to forward the packet.
    • If the destination MAC address is unknown, the packet is flooded to all destinations over associated LSI IFLs using the service and corresponding transport labels. If local switching is enabled, this packet will be sent to the other associated CE IFLs as well.

Transit LSRs:

Transit (P) routers are Label Switch Routers (LSRs) that switch the packet based on the transport (outer) label of the packet until the packet arrives at the far-end PE Router. LSR P-routers are service agnostic and unaware of the VPLS overlay.

Penultimate Hop Popping (PHP) removes the transport label one hop before the egress PE, and the packet is forwarded to the PE node with only the service label.

Egress PE:

The remaining service label is mapped to the associated VPLS domain LSI IFL. Earlier source lookup populates the local LSI IFL information with the service label, which is mapped to the VSI. A layer 2 lookup is performed, and the packet is forwarded toward the destination CE interface.

Validated KPIs

In this article, we will validate the following goals and Key Performance Indicators (KPIs) to create a reasonable solution scale.

  • Successful provisioning and operation of 4,000 VPLS instances.
  • MAC scalability validated for 600K learned MAC addresses.
  • End-to-end packet forwarding and MAC learning between PE routers.
  • Interoperability of PTX10002-36QDD and MX10004 devices acting as PE DUTs with PTX10001-36MR as P-routers.
  • Packet forwarding behavior for known and unknown MACs.
  • Validation of service label and transport label resolution via LSI IFLs.
KPIs Scale
Total VPLS instances 4,000
BGP-Based VPLS instances 1,333
LDP-VPLS instances 1,333
LDP-VPLS instances with BGP-AD 1,334
Total MACs 600,000
Number of interfaces 4,000
Number of VLANS 4,000

Scale KPIs

VPLS Topology

Topology consists of multiple devices in various roles such as Provider Edge routers, Provider routers, and Customer Edge devices.

  • PTX10002-36QDD as PE1
  • MX10004 as PE2 & PE3
  • PTX10001-36MR as P1 & P2
  • CEs are emulated using a traffic generator

All the core connections are 100GE links. PE1 & PE2 are connected to CEs using 100GE links whereas PE2 is connected to CE using 10GE link.

Figure 1 - Topology

Figure 1 - Testbed Topology


PTX10002-36QDD is the Device under test. ISIS Segment Routing is used as the underlay transport. The VPLS services are configured on CE-bound interfaces of PEs. The devices shown as CEn represent the additional CEs emulated by the validation (up to 4,000 in total).

VPLS Configuration

This section outlines the configuration steps required to provision VPLS over an MPLS network. Network reachability can be established with OSPF or IS-IS Interior Gateway Protocols (IGP). For the MPLS transport layer, RSVP-TE, LDP, or SR may be used. In this setup, IS-IS with Segment Routing (ISIS-SR) is configured for MPLS transport.

For signaling VPLS services, Label Distribution Protocol (LDP) is enabled over the loopback (lo0) interfaces to facilitate remote targeted LDP (tLDP). This is essential for LDP-signaled VPLS, where pseudowire signaling occurs between non-directly connected PE routers. The tLDP sessions are established using the Extended Discovery mechanism, as defined by RFC5036, which allows session formation between non-directly connected neighbors.

For BGP-signaled VPLS, the l2vpn-signaling address family is enabled under BGP configuration. This permits the use of BGP-based service signaling and auto-discovery as defined by RFC 4761 and RFC 6074. BGP auto-discovery simplifies the provisioning process by allowing PEs to dynamically learn about remote VPLS instances.

Loopback interfaces are used as logical endpoints for both BGP and LDP signaling and thus for establishing VPLS pseudowire connections. The loopback IPs configured for each PE router include.

  • PE1: 10.0.0.1
  • PE2: 10.0.0.4
  • PE3: 10.0.0.5

These loopbacks are advertised by the ISIS SR to ensure reachability across the MPLS domain.

VPLS provides Ethernet-based multipoint-to-multipoint Layer 2 connectivity over MPLS. In this setup, the three PEs (PE1, PE2, and PE3) are configured with VPLS instances to emulate a LAN-like broadcast domain for customer sites. This enables the seamless extension of Layer 2 services across geographically dispersed locations using MPLS transport. 

Protocol Configuration on PTX10002-36QDD

root@PE1> show configuration protocols | display inheritance no-comments
bgp {
    group GR-IBGP {
        type internal;
        local-address 10.0.0.1;
        family l2vpn {
            auto-discovery-only;
            signaling;
        }
        export PS-BGP-EXPORT;
        bfd-liveness-detection {
            minimum-interval 100;
            multiplier 3;
        }
        neighbor 10.0.0.4 {
            description PE2;
        }
        neighbor 10.0.0.5 {
            description PE3;
        }
    }
    log-updown;
}
isis {
    interface et-0/0/4.0 {
        level 2 {
            post-convergence-lfa {
                node-protection cost 16777214;
            }
        }
        point-to-point;
    }
    interface et-0/0/3.0 {
        level 2 {
            post-convergence-lfa {
                node-protection cost 16777214;
            }
        }
        point-to-point;
    }
    interface lo0.0 {
        passive;
    }
    source-packet-routing {
        node-segment {
            ipv4-index 0;
            ipv6-index 100;
        }
        flex-algorithm [ 128 129 ];
        strict-asla-based-flex-algorithm;
        explicit-null;
        traffic-statistics {
            statistics-granularity per-interface;
        }
    }
    level 1 disable;
    level 2 wide-metrics-only;
    spf-options {
        microloop-avoidance {
            post-convergence-path {
                delay 5000;
            }
        }
    }
    backup-spf-options {
        use-post-convergence-lfa maximum-labels 3;
        use-source-packet-routing;
    }
    traffic-engineering {
        advertisement {
            application-specific {
                all-applications;
            }
        }
    }
    export PS-ISIS-EXPORT;
    overload timeout 300;
}
ldp {
    interface lo0.0;
}
mpls {
    label-range {
        srgb-label-range 16000 24000;
    }
    interface et-0/0/3.0;
    interface et-0/0/4.0;
}

BGP-VPLS

Configuration required to provision BGP signaled VPLS. The label-block-size is 8 by default, but can be reduced for more efficient resource utilization based on the number of configured sites in the VPLS domain. In this example, since we have three VPLS sites, we can reduce the block allocation to 4. 

interfaces {
    et-0/0/0 {
        flexible-vlan-tagging;
        encapsulation flexible-ethernet-services;
        unit 1 {
            encapsulation vlan-bridge;
            vlan-id 1;
        }
    }
}
routing-instances {
    bgp_vpls_1 {
        instance-type virtual-switch;
        protocols {
            vpls {
                site PE1 {
                    site-identifier 1;         # must be unique per site
                }
                service-type single;
                site-range 3;                  # since we have only 3 sites here
                label-block-size 4;            # 4 is sufficient for 3 VPLS sites
            }
        }
        interface et-0/0/0.1;
        route-distinguisher 10.0.0.1:1;
        vrf-target target:63535:1;
        vlans {
            vlan_1 {
                interface et-0/0/0.1;
            }
        }
    }
}

LDP-VPLS

Configuration required to provision LDP signaling-based VPLS.

routing-instances {
    fec128_vpls_1400 {
        instance-type virtual-switch;
        protocols {
            vpls {
                neighbor 10.0.0.4;                     #PE2 needs to be configured
                neighbor 10.0.0.5;                     #PE3 needs to be configured
                service-type single;
                encapsulation-type ethernet-vlan;
                no-control-word;
                vpls-id 1;             # vpls-id must be the same for an instance
            }
        }
        description "FEC 128 VPLS LDP";
        interface et-0/0/0.1400;
        vlans {
            vlan1400 {
                vlan-id 1400;
                interface et-0/0/0.1400;
            }
        }
    }
}
interfaces {
    et-0/0/0 {
        flexible-vlan-tagging;
        encapsulation flexible-ethernet-services;
        unit 1400 {
            encapsulation vlan-bridge;
            vlan-id 1400;
        }
    }
}

LDP-VPLS With BGP-AD

Configuration required to bring up LDP-based VPLS with BGP auto-discovery. The l2vpn-id configuration construct is used per-VPLS domain for FEC129 LDP-VPLS using BGP auto-discovery.

routing-instances {
    fec129_vpls_2740 {
        instance-type virtual-switch;
        l2vpn-id l2vpn-id:1:100;  # BGP auto discovery establishing LDP PW mesh              
        protocols {
            vpls {
                service-type single;
                no-control-word;
            }
        }
        route-distinguisher 10.0.0.1:10000;
        vrf-target target:63555:2740;
        vlans {
            bd2740 {
                vlan-id 2740;
                interface et-0/0/0.2740;
            }
        }
    }
}
interfaces {
    et-0/0/0 {
        flexible-vlan-tagging;
        encapsulation flexible-ethernet-services;
        unit 2740 {
            encapsulation vlan-bridge;
            vlan-id 2740;
        }
    }
}

Traffic Generator Configuration

CE devices emulated behind every PE can be observed here.

CE devices emulated behind every PE

Figure 2 - CE devices emulated behind every PE

CE-Bound Interface Schema on each PE

PE devices are connected to the traffic generator using the links below. Each interface is logically split into sub-interfaces using VLANs, and each logical interface is assigned to a VPLS instance.

PE1 PE2 PE3 Service Type VRF VLAN Association Number of MAC  Traffic Load
et-0/0/0  et-1/1/0  xe-0/1/2 virtual-switch 1-1333 1-1333 200004 99.90%
et-0/0/0 et-1/1/0 xe-0/1/2 virtual-switch 1400-2732 1400-2732 199998 99.90%
et-0/0/0 et-1/1/0 xe-0/1/2 virtual-switch 2740-4073 2740-4073 199998 99.90%

VPLS Verifications

This section shows the provisioning steps and operations of VPLS via control plane CLIs, along with traffic forwarding snapshots.

BGP and LDP signalling should be verified as the first step to ensure expected behaviour between PEs. As shown below, PE1 (10.0.0.1) established BGP & LDP sessions with PE2 (10.0.0.4) & PE3 (10.0.0.5) .

Signaling Verification

root@PE1> show bgp summary
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 1 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
bgp.l2vpn.0
                    5334       5334          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.0.0.4              63535       3163       3162       0     541     3:42:41 Establ
  bgp.l2vpn.0: 2667/2667/2667/0
  bgp_vpls_1.l2vpn.0: 1/1/1/0
  bgp_vpls_2.l2vpn.0: 1/1/1/0
  bgp_vpls_3.l2vpn.0: 1/1/1/0
.
.
.
  bgp_vpls_1331.l2vpn.0: 1/1/1/0
  bgp_vpls_1332.l2vpn.0: 1/1/1/0
  bgp_vpls_1333.l2vpn.0: 1/1/1/0
.
.
  fec129_vpls_2740.l2vpn.0: 1/1/1/0
  fec129_vpls_2741.l2vpn.0: 1/1/1/0
  fec129_vpls_2742.l2vpn.0: 1/1/1/0
.
.
  fec129_vpls_4071.l2vpn.0: 1/1/1/0
  fec129_vpls_4072.l2vpn.0: 1/1/1/0
  fec129_vpls_4073.l2vpn.0: 1/1/1/0
10.0.0.5              63535       3319       3316       0       2     4:52:38 Establ
  bgp.l2vpn.0: 2667/2667/2667/0
  bgp_vpls_1.l2vpn.0: 1/1/1/0
  bgp_vpls_2.l2vpn.0: 1/1/1/0
  bgp_vpls_3.l2vpn.0: 1/1/1/0
.
.
  bgp_vpls_1331.l2vpn.0: 1/1/1/0
  bgp_vpls_1332.l2vpn.0: 1/1/1/0
  bgp_vpls_1333.l2vpn.0: 1/1/1/0
  fec129_vpls_2740.l2vpn.0: 1/1/1/0
  fec129_vpls_2741.l2vpn.0: 1/1/1/0
  fec129_vpls_2742.l2vpn.0: 1/1/1/0
.
.
  fec129_vpls_4071.l2vpn.0: 1/1/1/0
  fec129_vpls_4072.l2vpn.0: 1/1/1/0
  fec129_vpls_4073.l2vpn.0: 1/1/1/0

LDP sessions

root@PE1> show ldp session
  Address                           State       Connection  Hold time  Adv. Mode
10.0.0.4                            Operational Open          20         DU
10.0.0.5                            Operational Open          27         DU

VPLS Control Plane Verifications

This section displays the successful provisioning of all 3 variants of VPLS via control plane verifications.

BGP-VPLS:

BGP-VPLS connections between the two other sites (PE2 and PE3) are shown as UP for the VPLS instance with LSI service label resolution.

root@PE1> show vpls connections instance bgp_vpls_1
Layer-2 VPN connections:
Legend for connection status (St)
EI -- encapsulation invalid      NC -- interface encapsulation not CCC/TCC/VPLS
EM -- encapsulation mismatch     WE -- interface and instance encaps not same
VC-Dn -- Virtual circuit down    NP -- interface hardware not present
CM -- control-word mismatch      -> -- only outbound connection is up
CN -- circuit not provisioned    <- -- only inbound connection is up
OR -- out of range               Up -- operational
OL -- no outgoing label          Dn -- down
LD -- local site signaled down   CF -- call admission control failure
RD -- remote site signaled down  SC -- local and remote site ID collision
LN -- local site not designated  LM -- local site ID not minimum designated
RN -- remote site not designated RM -- remote site ID not minimum designated
XX -- unknown connection status  IL -- no incoming label
MM -- MTU mismatch               MI -- Mesh-Group ID not available
BK -- Backup connection          ST -- Standby connection
PF -- Profile parse failure      PB -- Profile busy
RS -- remote site standby  SN -- Static Neighbor
LB -- Local site not best-site   RB -- Remote site not best-site
VM -- VLAN ID mismatch           HS -- Hot-standby Connection
Legend for interface status
Up -- operational
Dn -- down
Instance: bgp_vpls_1
Edge protection: Not-Primary
  Local site: PE1 (1)
    connection-site           Type  St     Time last up          # Up trans
    2                         rmt   Up     Apr  7 10:30:06 2025           1
      Remote PE: 10.0.0.4, Negotiated control-word: No
      Incoming label: 47670, Outgoing label: 2682
      Local interface: lsi.1271307, Status: Up, Encapsulation: VPLS
        Description: Intf - vpls bgp_vpls_1 local site 1 remote site 2
      Flow Label Transmit: No, Flow Label Receive: No
    3                         rmt   Up     Apr  7 09:20:06 2025           1
      Remote PE: 10.0.0.5, Negotiated control-word: No
      Incoming label: 47671, Outgoing label: 2682
      Local interface: lsi.1264640, Status: Up, Encapsulation: VPLS
        Description: Intf - vpls bgp_vpls_1 local site 1 remote site 3
      Flow Label Transmit: No, Flow Label Receive: No
root@PE1> show route label 47670
mpls.0: 16015 destinations, 16015 routes (16015 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
47670              *[VPLS/7] 1d 01:16:14
                    >  via lsi.1271307 (master), Pop

VPLS routing-instance routing table shows the NLRI of all VPLS sites.

root@PE1> show route table bgp_vpls_1.l2vpn.0
bgp_vpls_1.l2vpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.1:1:1:1/96
                   *[L2VPN/170/-101] 4d 06:48:47, metric2 1
                       Indirect
10.0.0.4:1:2:1/96
                   *[BGP/170] 04:21:01, localpref 100, from 10.0.0.4
                      AS path: I, validation-state: unverified
                    >  to 10.10.0.2 via et-0/0/3.0, Push 16904
                       to 10.10.0.6 via et-0/0/4.0, Push 16904
10.0.0.5:1:3:1/96
                   *[BGP/170] 05:30:58, localpref 100, from 10.0.0.5
                      AS path: I, validation-state: unverified
                    >  to 10.10.0.2 via et-0/0/3.0, Push 16905
                       to 10.10.0.6 via et-0/0/4.0, Push 16905

LDP-VPLS:

LDP-VPLS connection status shows UP for the configured neighbors, i.e., PE2 and PE3.

root@PE1> show vpls connections instance fec128_vpls_1400
Layer-2 VPN connections:
Legend for connection status (St)
EI -- encapsulation invalid      NC -- interface encapsulation not CCC/TCC/VPLS
EM -- encapsulation mismatch     WE -- interface and instance encaps not same
VC-Dn -- Virtual circuit down    NP -- interface hardware not present
CM -- control-word mismatch      -> -- only outbound connection is up
CN -- circuit not provisioned    <- -- only inbound connection is up
OR -- out of range               Up -- operational
OL -- no outgoing label          Dn -- down
LD -- local site signaled down   CF -- call admission control failure
RD -- remote site signaled down  SC -- local and remote site ID collision
LN -- local site not designated  LM -- local site ID not minimum designated
RN -- remote site not designated RM -- remote site ID not minimum designated
XX -- unknown connection status  IL -- no incoming label
MM -- MTU mismatch               MI -- Mesh-Group ID not available
BK -- Backup connection          ST -- Standby connection
PF -- Profile parse failure      PB -- Profile busy
RS -- remote site standby  SN -- Static Neighbor
LB -- Local site not best-site   RB -- Remote site not best-site
VM -- VLAN ID mismatch           HS -- Hot-standby Connection
Legend for interface status
Up -- operational
Dn -- down
Instance: fec128_vpls_1400
  VPLS-id: 1
    Neighbor                  Type  St     Time last up          # Up trans
    10.0.0.4(vpls-id 1)       rmt   Up     Apr  7 10:30:39 2025           1
      Remote PE: 10.0.0.4, Negotiated control-word: No
      Incoming label: 2682, Outgoing label: 16
      Negotiated PW status TLV: No
      Local interface: lsi.1275797, Status: Up, Encapsulation: VLAN
        Description: Intf - vpls fec128_vpls_1400 neighbor 10.0.0.4 vpls-id 1
      Flow Label Transmit: No, Flow Label Receive: No
    10.0.0.5(vpls-id 1)       rmt   Up     Apr  7 09:20:13 2025           1
      Remote PE: 10.0.0.5, Negotiated control-word: No
      Incoming label: 55876, Outgoing label: 16
      Negotiated PW status TLV: No
      Local interface: lsi.1267307, Status: Up, Encapsulation: VLAN
        Description: Intf - vpls fec128_vpls_1400 neighbor 10.0.0.5 vpls-id 1
      Flow Label Transmit: No, Flow Label Receive: No

LDP-VPLS with BGP Auto-Discovery:

In this example, the sites/neighbors are not defined and instead are auto-discovered via BGP discovery mechanisms. 

root@PE1> show vpls connections instance fec129_vpls_2740
Layer-2 VPN connections:
Legend for connection status (St)
EI -- encapsulation invalid      NC -- interface encapsulation not CCC/TCC/VPLS
EM -- encapsulation mismatch     WE -- interface and instance encaps not same
VC-Dn -- Virtual circuit down    NP -- interface hardware not present
CM -- control-word mismatch      -> -- only outbound connection is up
CN -- circuit not provisioned    <- -- only inbound connection is up
OR -- out of range               Up -- operational
OL -- no outgoing label          Dn -- down
LD -- local site signaled down   CF -- call admission control failure
RD -- remote site signaled down  SC -- local and remote site ID collision
LN -- local site not designated  LM -- local site ID not minimum designated
RN -- remote site not designated RM -- remote site ID not minimum designated
XX -- unknown connection status  IL -- no incoming label
MM -- MTU mismatch               MI -- Mesh-Group ID not available
BK -- Backup connection          ST -- Standby connection
PF -- Profile parse failure      PB -- Profile busy
RS -- remote site standby  SN -- Static Neighbor
LB -- Local site not best-site   RB -- Remote site not best-site
VM -- VLAN ID mismatch           HS -- Hot-standby Connection
Legend for interface status
Up -- operational
Dn -- down
Instance: fec129_vpls_2740
  L2vpn-id: 1:100
  Local-id: 10.0.0.1
    Remote-id                 Type  St     Time last up          # Up trans
    10.0.0.4                  rmt   Up     Apr  7 10:30:36 2025           1
      Remote PE: 10.0.0.4, Negotiated control-word: No
      Incoming label: 461377, Outgoing label: 509741
      Negotiated PW status TLV: No
      Local interface: lsi.1273974, Status: Up, Encapsulation: ETHERNET
        Description: Intf - vpls fec129_vpls_2740 local-id 10.0.0.1 remote-id 10.0.0.4 neighbor 10.0.0.4
      Flow Label Transmit: No, Flow Label Receive: No
    10.0.0.5                  rmt   Up     Apr  7 09:20:10 2025           1
      Remote PE: 10.0.0.5, Negotiated control-word: No
      Incoming label: 458709, Outgoing label: 2831
      Negotiated PW status TLV: No
      Local interface: lsi.1265973, Status: Up, Encapsulation: ETHERNET
        Description: Intf - vpls fec129_vpls_2740 local-id 10.0.0.1 remote-id 10.0.0.5 neighbor 10.0.0.5
      Flow Label Transmit: No, Flow Label Receive: No

The route table of LDP-VPLS with BGP-AD routing instance is shown below; here, the AD routes of all VPLS sites can be observed.

root@PE1> show route table fec129_vpls_2740.l2vpn.0
fec129_vpls_2740.l2vpn.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.1:10000:10.0.0.1/96 AD
                   *[VPLS/170] 1w3d 04:32:09, metric2 1
                       Indirect
10.0.0.4:10000:10.0.0.4/96 AD
                   *[BGP/170] 04:46:21, localpref 100, from 10.0.0.4
                      AS path: I, validation-state: unverified
                       to 10.10.0.2 via et-0/0/3.0, Push 16904
                    >  to 10.10.0.6 via et-0/0/4.0, Push 16904
10.0.0.5:10000:10.0.0.5/96 AD
                   *[BGP/170] 05:56:25, localpref 100, from 10.0.0.5
                      AS path: I, validation-state: unverified
                       to 10.10.0.2 via et-0/0/3.0, Push 16905
                    >  to 10.10.0.6 via et-0/0/4.0, Push 16905
10.0.0.4:NoCtrlWord:5:1:100:10.0.0.1:10.0.0.4/176
                   *[VPLS/7] 04:46:21, metric2 20
                    >  to 10.10.0.2 via et-0/0/3.0, Push 16904
                       to 10.10.0.6 via et-0/0/4.0, Push 16904
10.0.0.4:NoCtrlWord:5:1:100:10.0.0.4:10.0.0.1/176
                   *[LDP/9] 04:45:57
                       Discard
10.0.0.5:NoCtrlWord:5:1:100:10.0.0.1:10.0.0.5/176
                   *[VPLS/7] 05:56:25, metric2 30
                    >  to 10.10.0.2 via et-0/0/3.0, Push 16905
                       to 10.10.0.6 via et-0/0/4.0, Push 16905
10.0.0.5:NoCtrlWord:5:1:100:10.0.0.5:10.0.0.1/176
                   *[LDP/9] 05:56:22
                       Discard

VLANs of VPLS instances:

VLANs are created in Junos EVO by respective VPLS virtual-switch instance configurations. The interesting part is where the respective LSI interface of each site is included in the L2 domain. Refer to the VPLS verification section to match and verify respective LSI interfaces.

root@PE1> show vlans instance bgp_vpls_1
Routing instance        VLAN name             Tag          Interfaces
bgp_vpls_1              vlan_1                NA
                                                           et-0/0/0.1*
                                                           lsi.1264640*
                                                           lsi.1271307*
root@PE1> show vlans instance fec128_vpls_1400
Routing instance        VLAN name             Tag          Interfaces
fec128_vpls_1400        vlan1400              1400
                                                           et-0/0/0.1400*
                                                           lsi.1267307*
                                                           lsi.1275797*
root@PE1> show vlans instance fec129_vpls_2740
Routing instance        VLAN name             Tag          Interfaces
fec129_vpls_2740        bd2740                2740
                                                           et-0/0/0.2740*
                                                           lsi.1265973*
                                                           lsi.1273974*

Data Plane Verification

Traffic is transmitted over a 100GE interface at 99.9%-line rate, accounting for the encapsulation overhead, and is distributed across 4,000 VPLS instances with 600K emulated MAC addresses, which is split across two PFEs. We can observe that the traffic traversing the core interfaces (et-0/0/3 & et-0/0/4) is load-balanced in the output below.

PE1               Seconds: 30                  Time: 15:34:43
Interface    Link  Input packets        (pps)     Output packets        (pps)
 dsc           Up               0          (0)                0          (0)
 esi           Up               0          (0)                0          (0)
 et-0/0/0      Up   1916180163257   (23488049)    1939574211442   (23488051) 
 et-0/0/1    Down               0          (0)                0          (0)
 et-0/0/2    Down               0          (0)                0          (0)
 et-0/0/3      Up    954313491338   (11557058)     960861508232   (11739806)
 et-0/0/4      Up    991811908913   (12029189)     961103366194   (11747578)
 et-0/0/5    Down               0          (0)                0          (0)
 et-0/0/6    Down               0          (0)                0          (0)
 et-0/0/7    Down               0          (0)                0          (0)
 et-0/0/8    Down               0          (0)                0          (0)

Also, traffic flow details from the traffic generator are shown below. These traffic streams were transmitted at a 99.9% line rate of the 100GE interface from each PE without any traffic loss.

The below traffic generator snapshots show traffic rate, throughput, and loss over VPLS.

Figure 3 - Traffic generator snapshots showing traffic rate, throughput, and loss over VPLS.

Figure 3 - Traffic generator snapshots showing traffic rate, throughput, and loss (Delta) over VPLS.

Validations

System scale over PTX10002-36QDD

This section shows PTX10002-36QDD system scale data of the provisioned VPLS instances, the associated system-level routes, and global MAC scale.

VPLS instance scale:

Since each instance has two sites and the output below is matched for its state, there is an accumulated 8,000 connections for the 4,000 VPLS instances.

root@PE1> show vpls connections | match "rmt   Up" | count
Count: 8000 lines

System-level routes:

root@PE1> show route summary
Autonomous system number: 63535
Router ID: 10.0.0.1
Highwater Mark (All time / Time averaged watermark)
    RIB unique destination routes: 42733 at 2025-04-03 09:48:29 / 32488
    RIB routes                   : 44106 at 2025-04-06 05:33:29 / 32488
    FIB routes                   : 16031 at 2025-04-03 09:48:31 / 11303
    VRF type routing instances   : 0 at 2025-03-28 10:44:16
inet.0: 17 destinations, 17 routes (16 active, 0 holddown, 1 hidden)
              Direct:      4 routes,      3 active
               Local:      2 routes,      2 active
              Static:      1 routes,      1 active
               IS-IS:      9 routes,      9 active
                 LDP:      1 routes,      1 active
inet.2: 6 destinations, 6 routes (5 active, 0 holddown, 1 hidden)
              Direct:      4 routes,      3 active
               Local:      2 routes,      2 active
inet.3: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden)
              Direct:      4 routes,      3 active
               Local:      2 routes,      2 active
              L-ISIS:      4 routes,      4 active
mgmt_junos.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
              Direct:      1 routes,      1 active
               Local:      1 routes,      1 active
              Static:      1 routes,      1 active
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
              Direct:      1 routes,      1 active
mpls.0: 16015 destinations, 16015 routes (16015 active, 0 holddown, 0 hidden)
                MPLS:      6 routes,      6 active
                VPLS:  16000 routes,  16000 active
              L-ISIS:      9 routes,      9 active
inet6.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
              Direct:      2 routes,      2 active
              Static:      1 routes,      1 active
               INET6:      1 routes,      1 active
inet6.2: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
              Direct:      2 routes,      2 active
inet6.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
              Direct:      2 routes,      2 active
mgmt_junos.inet6.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
              Static:      1 routes,      1 active
bgp.l2vpn.0: 5334 destinations, 5334 routes (5334 active, 0 holddown, 0 hidden)
                 BGP:   5334 routes,   5334 active

MAC scale Validation:

This validation is done with 600K MACs distributed equally across 4,000 VPLS instances.

root@PE1> show ethernet-switching table summary
Total dynamic and static MAC addresses learned globally : 600000
Configured static MAC addresses learned globally       : 0
root@PE1> show ethernet-switching table | grep et-0/0/13 | count
Count: 300000 lines 
root@PE1> show ethernet-switching table | grep lsi| count
Count: 300000 lines

Monitor interface traffic:

PE1               Seconds: 12499               Time: 16:56:42
Interface    Link  Input packets        (pps)     Output packets        (pps)
 dsc           Up               0          (0)                0          (0)
 esi           Up               0          (0)                0          (0)
 et-0/0/0    Down               0          (0)                0          (0)
 et-0/0/1    Down               0          (0)                0          (0)
 et-0/0/2    Down               0          (0)                0          (0)
 et-0/0/3      Up    325358297942   (10804732)     342039523451   (11162237)
 et-0/0/4      Up    341527145454   (11513156)     341462328952   (11155575)
 et-0/0/5    Down               0          (0)                0          (0)
 et-0/0/6    Down               0          (0)                0          (0)
 et-0/0/7    Down               0          (0)                0          (0)
 et-0/0/8    Down               0          (0)                0          (0)
 et-0/0/9    Down               0          (0)                0          (0)
 et-0/0/10   Down               0          (0)                0          (0)
 et-0/0/11   Down               0          (0)                0          (0)
 et-0/0/12   Down               0          (0)                0          (0)
et-0/0/13     Up    561246293674   (22317537)     553433268329   (22317527)
Figure 4 - 

Figure 4 

In the below output, 300K MAC addresses are learned on the service interfaces, and another 300K are learned on the LSI interfaces. Traffic forwarding without flooding is evident from the monitor interface traffic output above and the traffic snapshots.

VPLS Instance-level MACs are shown below based on the type of service.

BGP-VPLS:

root@PE1> show ethernet-switching table
MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC
           GBP - group based policy, B - Blocked MAC)
Ethernet switching table : 152 entries, 152 learned
Routing instance : bgp_vpls_1
    Vlan                MAC                 MAC         Age   GBP     Logical                NH        MAC        RTR
    name                address             flags             Tag     interface              Index     property   ID
    vlan_1              00:00:12:00:00:01   D             -           lsi.1152968            0                    0
.
.
.
    vlan_1              00:00:12:01:81:53   D             -           lsi.1152968            0                    0
    vlan_1              00:00:12:01:86:88   D             -           lsi.1152968            0                    0
    vlan_1              00:11:01:00:00:01   D             -           et-0/0/13.1            0                    0
    vlan_1              00:11:01:00:05:36   D             -           et-0/0/13.1            0                    0
.
.
.
    vlan_1              00:11:01:01:81:53   D             -           et-0/0/13.1            0                    0
    vlan_1              00:11:01:01:86:88   D             -           et-0/0/13.1            0                    0

LDP-VPLS:

root@PE1> show ethernet-switching table instance fec128_vpls_1400
MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC
           GBP - group based policy, B - Blocked MAC)
Ethernet switching table : 152 entries, 152 learned
Routing instance : fec128_vpls_1400
    Vlan                MAC                 MAC         Age   GBP     Logical                NH        MAC        RTR
    name                address             flags             Tag     interface              Index     property   ID
    vlan1400            00:00:14:00:00:01   D             -           lsi.1275797            0                    0
    vlan1400            00:00:14:00:05:36   D             -           lsi.1275797            0                    0
    vlan1400            00:00:14:00:0a:6b   D             -           lsi.1275797            0                    0
.
.
.
    vlan1400            00:00:18:00:82:2e   D             -           lsi.1267307            0                    0
    vlan1400            00:00:18:00:87:63   D             -           lsi.1267307            0                    0
    vlan1400            00:00:18:00:8c:98   D             -           lsi.1267307            0                    0
    vlan1400            00:13:01:00:00:01   D             -           et-0/0/0.1400          0                    0
    vlan1400            00:13:01:00:05:36   D             -           et-0/0/0.1400          0                    0
    vlan1400            00:13:01:00:0a:6b   D             -           et-0/0/0.1400          0                    0
.
.
.
    vlan1400            00:13:01:00:82:2e   D             -           et-0/0/0.1400          0                    0
    vlan1400            00:13:01:00:87:63   D             -           et-0/0/0.1400          0                    0
    vlan1400            00:13:01:00:8c:98   D             -           et-0/0/0.1400          0                    0

LDP-VPLS with BGP-AD:

root@PE1> show ethernet-switching table instance fec129_vpls_2740
MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC
           GBP - group based policy, B - Blocked MAC)
Ethernet switching table : 152 entries, 152 learned
Routing instance : fec129_vpls_2740
    Vlan                MAC                 MAC         Age   GBP     Logical                NH        MAC        RTR
    name                address             flags             Tag     interface              Index     property   ID
    bd2740              00:00:15:00:00:01   D             -           lsi.1280640            0                    0
    bd2740              00:00:15:00:05:37   D             -           lsi.1280640            0                    0
    bd2740              00:00:15:00:0a:6d   D             -           lsi.1280640            0                    0
.
.
.
    bd2740              00:00:19:00:82:47   D             -           lsi.1265973            0                    0
    bd2740              00:00:19:00:87:7d   D             -           lsi.1265973            0                    0
    bd2740              00:00:19:00:8c:b3   D             -           lsi.1265973            0                    0
    bd2740              00:16:01:00:00:01   D             -           et-0/0/0.2740          0                    0
    bd2740              00:16:01:00:05:37   D             -           et-0/0/0.2740          0                    0
    bd2740              00:16:01:00:0a:6d   D             -           et-0/0/0.2740          0                    0
.
.
.
    bd2740              00:16:01:00:82:47   D             -           et-0/0/0.2740          0                    0
    bd2740              00:16:01:00:87:7d   D             -           et-0/0/0.2740          0                    0
    bd2740              00:16:01:00:8c:b3   D             -           et-0/0/0.2740          0                    0

Junos Telemetry Streaming Data

System CPU, process memory, and core utilization were monitored using Juniper Streaming Telemetry, collecting data over a 6-hour period, with 4,000 VPLS instances running at 99.9% line-rate on 100GE links and 600K MAC addresses on the PTX10002-36QDD.

Figure 5 - Core utilization

Figure 5 - Core utilization

Figure 6 - Junos Process memory

Figure 6 - Junos Process memory

Figure 7 - System CPU

Figure 7 - System CPU

Figure 8 - Routing-engine CPU & memory

Figure 8 - Routing-engine CPU & memory

The Juniper Streaming Telemetry data of various router resources demonstrates the stability of the PTX10002-36QDD with heavy scaling with respect to VPLS. 

VPLS BUM Traffic Flooding and Handling

This section validates the flooding behavior to all VPLS sites when handling BUM (Broadcast, Unknown Unicast, and Multicast) traffic.

Unknown unicast traffic is sent over VPLS instances to observe how the traffic is replicated across all sites. The traffic is flooded because the destination MAC addresses are not yet present in the forwarding table.

The following CLI outputs demonstrate that all MAC addresses are learned on the CE interface, not on the LSI, indicating the traffic is unknown unicast. Additionally, the core interfaces show a traffic rate double that of the ingress rate, reflecting the flooding of traffic to the other two sites.

root@PE1> show ethernet-switching table summary
Total dynamic and static MAC addresses learned globally : 0
Configured static MAC addresses learned globally       : 0
PE1               Seconds: 36                  Time: 09:33:54
Interface    Link  Input packets        (pps)     Output packets        (pps)
 dsc           Up               0          (0)                0          (0)
 esi           Up               0          (0)                0          (0)
et-0/0/0      Up    588301612   (23492747)                0          (0) => CE intf
 et-0/0/1    Down               0          (0)                0          (0)
 et-0/0/2    Down               0          (0)                0          (0)
et-0/0/3      Up             485         (10)        565086123   (22564916) =>core intf
et-0/0/4      Up             483         (10)        565091426   (22564811) =>core intf
 et-0/0/5    Down               0          (0)                0          (0)
 et-0/0/6    Down               0          (0)                0          (0)
 et-0/0/7    Down               0          (0)                0          (0)
 et-0/0/8    Down               0          (0)                0          (0)
 et-0/0/9    Down               0          (0)                0          (0)
 et-0/0/10   Down               0          (0)                0          (0)
 et-0/0/11   Down               0          (0)                0          (0)
 et-0/0/12   Down               0          (0)                0          (0)
 et-0/0/13   Down               0          (0)                0          (0)
 et-0/0/14   Down               0          (0)                0          (0)
 et-0/0/15   Down               0          (0)                0          (0)
 et-0/0/16   Down               0          (0)                0          (0)
 et-0/0/17   Down               0          (0)                0          (0)
 et-0/0/18   Down               0          (0)                0          (0)
 et-0/0/19   Down               0          (0)                0          (0)
 et-0/0/20   Down               0          (0)                0          (0)
 et-0/0/21   Down               0          (0)                0          (0)
 et-0/0/22   Down               0          (0)                0          (0)
 et-0/0/23   Down               0          (0)                0          (0)
 et-0/0/24   Down               0          (0)                0          (0)
 et-0/0/25   Down               0          (0)                0          (0)
 et-0/0/26   Down               0          (0)                0          (0)
 et-0/0/27   Down               0          (0)                0          (0)
 et-0/0/28   Down               0          (0)                0          (0)
 et-0/0/29   Down               0          (0)                0          (0)
 et-0/0/30   Down               0          (0)                0          (0)
 et-0/0/31   Down               0          (0)                0          (0)
 et-0/0/32   Down               0          (0)                0          (0)
 et-0/0/33   Down               0          (0)                0          (0)
 et-0/0/34   Down               0          (0)                0          (0)
 et-0/0/35   Down               0          (0)                0          (0)
root@PE1> show ethernet-switching table summary
Total dynamic and static MAC addresses learned globally : 231667
Configured static MAC addresses learned globally       : 0
root@PE1> show ethernet-switching table | match lsi | count
Count: 0 lines

VPLS Split Horizon

By default, Juniper devices configured as PE routers enforce split-horizon operations, which helps prevent Layer 2 loops within the VPLS domain.

In this example, PE1 receives a broadcast from a split-horizon neighbor, PE2, on core interfaces. However, PE1 does not replicate this broadcast to other split-horizon neighbors, such as PE3. Instead, the traffic is only flooded to the service interface.

A notable observation here is the traffic classification into the Expedited Forwarding (EF) forwarding class and Queue 1, as it pertains to BUM traffic. Otherwise, the traffic would have been classified as Best Effort (BE) to be associated with Queue 0. In Juniper Express 5 architecture, BUM traffic is by default classified into Queue 1 for expedited handling, but this is configurable.

PE1               Seconds: 2                   Time: 09:55:31
Interface    Link  Input packets        (pps)     Output packets        (pps)
 dsc           Up               0          (0)                0          (0)
 esi           Up               0          (0)                0          (0)
 et-0/0/0      Up               0          (0)       2752370611    (7431896) =>CE
 et-0/0/1    Down               0          (0)                0          (0)
 et-0/0/2    Down               0          (0)                0          (0)
 et-0/0/3      Up      1292947569    (3494759)             4340         (13) =>core
 et-0/0/4      Up      1459430778    (3940982)             4549         (14) =>core
root@PE1> show interfaces queue et-0/0/0
Physical interface: et-0/0/0, up, Physical link is Up
  Interface index: 1251, SNMP ifIndex: 517
Forwarding classes: 16 supported, 4 in use
Egress queues: 8 supported, 4 in use
Queue: 0, Forwarding classes: best-effort
  Queued:
    Packets              :                     0                     0 pps
    Bytes                :                     0                     0 bps
  Transmitted:
    Packets              :                     0                     0 pps
    Bytes                :                     0                     0 bps
    Tail-dropped packets :                     0                     0 pps
    Tail-dropped bytes   :                     0                     0 bps
    RED-dropped packets  :                     0                     0 pps
    RED-dropped bytes    :                     0                     0 bps
Queue: 1, Forwarding classes: expedited-forwarding
  Queued:
    Packets              :            2871399225               7438573 pps
    Bytes                :         1527584387700           31658565632 bps
  Transmitted:
    Packets              :            2871399225               7438573 pps
    Bytes                :         1527584387700           31658565632 bps
    Tail-dropped packets :                     0                     0 pps
    Tail-dropped bytes   :                     0                     0 bps
    RED-dropped packets  :                     0                     0 pps
    RED-dropped bytes    :                     0                     0 bps
Queue: 2, Forwarding classes: assured-forwarding
  Queued:
    Packets              :                     0                     0 pps
    Bytes                :                     0                     0 bps
  Transmitted:
    Packets              :                     0                     0 pps
    Bytes                :                     0                     0 bps
    Tail-dropped packets :                     0                     0 pps
    Tail-dropped bytes   :                     0                     0 bps
    RED-dropped packets  :                     0                     0 pps
    RED-dropped bytes    :                     0                     0 bps
Queue: 3, Forwarding classes: network-control
  Queued:
    Packets              :                     0                     0 pps
    Bytes                :                     0                     0 bps
  Transmitted:
    Packets              :                     0                     0 pps
    Bytes                :                     0                     0 bps
    Tail-dropped packets :                     0                     0 pps
    Tail-dropped bytes   :                     0                     0 bps
    RED-dropped packets  :                     0                     0 pps
    RED-dropped bytes    :                     0                     0 bps
root@PE1> show ethernet-switching table summary
Total dynamic and static MAC addresses learned globally : 77223
Configured static MAC addresses learned globally       : 0
root@PE1> show ethernet-switching table | match et- | count
Count: 0 lines

Default CoS Behavior on VPLS Traffic

By default, classifiers and rewrite rules are applied to both VPLS service interfaces and core interfaces.

In this section, we will observe the preservation of Class of Service (CoS) bits in the end-to-end VPLS traffic flow and examine the default CoS components applied to the PTX10002-36QDD interfaces.

root@PE1> show class-of-service interface et-0/0/0.1 =>Service intf
  Logical interface: et-0/0/0.1, Index: 9238
Object                  Name                   Type                    Index
Classifier              ieee8021p-default      ieee-802.1                  0
root@PE1> show class-of-service interface et-0/0/0.1400 =>Service intf
  Logical interface: et-0/0/0.1400, Index: 6536
Object                  Name                   Type                    Index
Classifier              ieee8021p-default      ieee-802.1                  0
root@PE1> show class-of-service interface et-0/0/0.2740 =>Service intf
  Logical interface: et-0/0/0.2740, Index: 7869
Object                  Name                   Type                    Index
Classifier              ieee8021p-default      ieee-802.1                  0
root@PE1> show class-of-service classifier name ieee8021p-default
Classifier: ieee8021p-default, Code point type: ieee-802.1, Index: 4
  Code point         Forwarding class                    Loss priority
  000                best-effort                         low
  001                best-effort                         high
  010                expedited-forwarding                low
  011                expedited-forwarding                high
  100                assured-forwarding                  low
  101                assured-forwarding                  high
  110                network-control                     low
  111                network-control                     high
root@PE1> show class-of-service interface et-0/0/3  => Core intf
Physical interface: et-0/0/3, Index: 1252
Maximum usable queues: 8, Queues in use: 4
Exclude aggregate overhead bytes: disabled
Logical interface aggregate statistics: disabled
  Scheduler map: <default>
  Congestion-notification: Disabled
  Logical interface: et-0/0/3.0, Index: 9203
Object                  Name                   Type                    Index
Classifier              ipprec-compatibility   ip                          0
Classifier              exp-default            exp                         0
Rewrite                 exp-default            exp (mpls-any)              0
root@PE1> show class-of-service interface et-0/0/4  => Core intf
Physical interface: et-0/0/4, Index: 1253
Maximum usable queues: 8, Queues in use: 4
Exclude aggregate overhead bytes: disabled
Logical interface aggregate statistics: disabled
  Scheduler map: <default>
  Congestion-notification: Disabled
  Logical interface: et-0/0/4.0, Index: 9204
Object                  Name                   Type                    Index
Classifier              ipprec-compatibility   ip                          0
Classifier              exp-default            exp                         0
Rewrite                 exp-default            exp (mpls-any)              0
root@PE1> show class-of-service classifier name exp-default
Classifier: exp-default, Code point type: exp, Index: 3
  Code point         Forwarding class                    Loss priority
  000                best-effort                         low
  001                best-effort                         high
  010                best-effort                         medium-low
  011                best-effort                         medium-high
  100                network-control                     medium-low
  101                network-control                     medium-high
  110                network-control                     low
  111                network-control                     high
root@PE1> show class-of-service rewrite-rule name exp-default
Rewrite rule: exp-default, Code point type: exp, Index: 1
  Forwarding class                    Loss priority       Code point
  best-effort                         low                 000
  best-effort                         medium-low          010
  best-effort                         medium-high         011
  best-effort                         high                001
  network-control                     low                 110
  network-control                     medium-low          100
  network-control                     medium-high         101
  network-control                     high                111

The default behavior on PTX10002-36QDD is designed to preserve CoS bits specified in the transmitted VPLS traffic. This is evident from the packet captures below, which show consistent CoS marking across the VPLS pseudowires.

Traffic flowing from the CE interface to the core interface carries an IEEE 802.1p VLAN priority value of 5, while traffic in the reverse direction—from core to CE—is marked with a VLAN priority of 7.

Figure 9 - Packet capture snapshot for traffic from CE to Core interface 

Figure 9 - Packet capture snapshot for traffic from CE to Core interface 

Figure 10 - Core interface to CE interface traffic packet capture snapshot

Figure 10 - Core interface to CE interface traffic packet capture snapshot

VPLS MAC Learning Performance

This section highlights the MAC learning rate of the PTX10002-36QDD while operating at the full VPLS scale represented in this validation and examines the corresponding impact on system resources during this process.

A total of 600,000 MAC addresses are learned across 4,000 VPLS instances. The learning rates are shown in the table below, while system resource utilization is represented by the collected streaming telemetry data in the graphs.

MACs 50K 100K 200K 333K 400K 500K 600K Mac learning-rate
Duration 9s 19s 40s 66s 80s 100s 123s 4878 MACs/sec

Learning rate (in seconds)

root@PE1> show ethernet-switching table summary
Total dynamic and static MAC addresses learned globally : 600000
Configured static MAC addresses learned globally       : 0
Figure 11
Figure 12
Figure 13

The above streaming data illustrates the extent to which system resources are affected during the MAC learning process. From the telemetry data above, ~20% RE CPU utilization, ~50% peak core utilization, and processes utilization peaks are observed only during MAC learning and reverted back to normal values after the brief event period.

Also steep raise in memory according to MACs learnt during the learning phase and constant afterwards can be observed

MAC Flushing Rate

The default aging time of 300 seconds is applied, after which MAC addresses begin to gradually flush out of the router. The measured flushing rates are shown in the table below, and the corresponding impact on system resources is represented by the collected streaming telemetry data.

MACs 600K 500K 400K 333K 200K 50K 0 Mac learning-rate
Duration 0 18s 38s 51s 79s 111s 130s 4615 MACs/sec

MAC flushing rate (in seconds)

Following streaming data from Junos telemetry shows the effects of MAC flushing on PTX10002-36QDD.

Figure 14 - RE CPU spike and memory release can be observed here.

Figure 14 - RE CPU spike and memory release can be observed here.

Figure 15 - Core utilization and process memory

Figure 15 - Core utilization and process memory

Conclusion

PTX10002-36QDD supports the validated VPLS scale up to 4,000 instances, utilizing different implementations, such as BGP-VPLS, LDP-VPLS, and LDP-VPLS with BGP auto-discovery. The validation highlights the PTX10002-36QDD’s flexibility to support diverse network roles, including metro aggregation.

Useful links

Glossary

  • BGP – Border Gateway Protocol
  • BGP-AD – BGP with auto-discovery
  • BX - Code name of Express 5 chipset
  • CE – Customer Edge Node
  • CoS – Class of Service
  • DUT – Device Under Test
  • ISIS -  Intermediate System to Intermediate System
  • KPI – Key Performance Indicators
  • LAN – Local Area Network
  • LDP – Label Distribution Protocol.
  • LSP - Label Switch Routers
  • MAC – Media Access Control
  • MPLS – Multi Protocol Label Switching
  • OSPF – Open Shortest Path First
  • P/PE – Provider/Provider Edge Node
  • PHP – Penultimate Hop Popping
  • SR – Segment routing
  • tLDP – Targeted LDP
  • VPLS – Virtual Private LAN Service
  • VLAN – Virtual LAN

Acknowledgements

Special thanks to Kevin Brown for his guidance and contributions throughout the development of this article. I'm also grateful to Dmitry Bugrimenko for his technical expertise on the inner workings of Express 5 and to Vasily Mukhin, Nicolas Fevrier, Peter Naveen and Rajneesh Kumar Srivastava for their valuable review and feedback.

Comments

If you want to reach out for comments, feedback, or questions, drop us an email at:

Revision History

Version Author(s) Date Comments
1  Manikanta Pavan C May 2025 Initial Publication


#MXSeries
#Routing

Permalink