CCIE SPv5.1 Labs
  • Intro
    • Setup
  • Purpose
  • Video Demonstration
  • Containerlab Tips
  • Labs
    • ISIS
      • Start
      • Topology
      • Prefix Suppression
      • Hello padding
      • Overload Bit
      • LSP size
      • Default metric
      • Hello/Hold Timer
      • Mesh groups
      • Prefix Summarization
      • Default Route Preference
      • ISIS Timers
      • Log Neighbor Changes
      • Troubleshooting 1 - No routes
      • Troubleshooting 2 - Adjacency
      • IPv6 Single Topology
      • IPv6 Single Topology Challenge
      • IPv6 Multi Topology
      • IPv6 Single to Multi Topology
      • Wide Metrics Explained
      • Route Filtering
      • Backdoor Link
      • Non-Optimal Intra-Area routing
      • Multi Area
      • Authentication
      • Conditional ATT Bit
      • Troubleshooting iBGP
      • Troubleshooting TE Tunnel
    • LDP
      • Start
      • Topology
      • LDP and ECMP
      • LDP and Static Routes
      • LDP Timers
      • LDP Authentication
      • LDP Session Protection
      • LDP/IGP Sync (OSPF)
      • LDP/IGP Sync (ISIS)
      • LDP Local Allocation Filtering
      • LDP Conditional Label Advertisement
      • LDP Inbound Label Advertisement Filtering
      • LDP Label Advertisement Filtering Challenge
      • LDP Implicit Withdraw
      • LDP Transport Address Troubleshooting
      • LDP Static Labels
    • MPLS-TE
      • Start
      • Topology
      • Basic TE Tunnel w/ OSPF
      • Basic TE Tunnel w/ ISIS
      • TE Tunnel using Admin Weight
      • TE Tunnel using Link Affinity
      • TE Tunnel with Explicit-Null
      • TE Tunnel with Conditional Attributes
      • RSVP message pacing
      • Reoptimization timer
      • IGP TE Flooding Thresholds
      • CSPF Tiebreakers
      • TE Tunnel Preemption
      • TE Tunnel Soft Preemption
      • Tunneling LDP inside RSVP
      • PE to P TE Tunnel
      • Autoroute Announce Metric (XE)
      • Autoroute Announce Metric (XR)
      • Autoroute Announce Absolute Metric
      • Autoroute Announce Backup Path
      • Forwarding Adjacency
      • Forwarding Adjacency with OSPF
      • TE Tunnels with UCMP
      • Auto-Bandwidth
      • FRR Link Protection (XE, BFD)
      • FRR Link Protection (XE, RSVP Hellos)
      • FRR Node Protection (XR)
      • FRR Path Protection
      • FRR Multiple Backup Tunnels (Node Protection)
      • FRR Multiple Backup Tunnels (Link Protection)
      • FRR Multiple Backup Tunnels (Backwidth/Link Protection)
      • FRR Backup Auto-Tunnels
      • FRR Backup Auto-Tunnels with SRLG
      • Full Mesh Auto-Tunnels
      • Full Mesh Dynamic Auto-Tunnels
      • One-Hop Auto-Tunnels
      • CBTS/PBTS
      • Traditional DS-TE
      • IETF DS-TE with MAM
      • IETF DS-TE with RDM
      • RDM w/ FRR Troubleshooting
      • Per-VRF TE Tunnels
      • Tactical TE Issues
      • Multicast and MPLS-TE
    • SR
      • Start
      • Topology
      • Basic SR with ISIS
      • Basic SR with OSPF
      • SRGB Modifcation
      • SR with ExpNull
      • SR Anycast SID
      • SR Adjacency SID
      • SR LAN Adjacency SID (Walkthrough)
      • SR and RSVP-TE interaction
      • SR Basic Inter-area with ISIS
      • SR Basic Inter-area with OSPF
      • SR Basic Inter-IGP (redistribution)
      • SR Basic Inter-AS using BGP
      • SR BGP Data Center (eBGP)
      • SR BGP Data Center (iBGP)
      • LFA
      • LFA Tiebreakers (ISIS)
      • LFA Tiebreakers (OSPF)
      • Remote LFA
      • RLFA Tiebreakers?
      • TI-LFA
      • Remote LFA or TILFA?
      • TI-LFA Node Protection
      • TI-LFA SRLG Protection
      • TI-LFA Protection Priorities (ISIS)
      • TI-LFA Protection Priorities (OSPF)
      • Microloop Avoidance
      • SR/LDP Interworking
      • SR/LDP SRMS OSPF Inter-Area
      • SR/LDP Design Challenge #1
      • SR/LDP Design Challenge #2
      • Migrate LDP to SR (ISIS)
      • OAM with SR
      • SR-MPLS using IPv6
      • Basic SR-TE with AS
      • Basic SR-TE with AS and ODN
      • SR-TE with AS Primary/Secondary Paths
      • SR-TE Dynamic Policies
      • SR-TE Dynamic Policy with Margin
      • SR-TE Explicit Paths
      • SR-TE Disjoint Planes using Anycast SIDs
      • SR-TE Flex-Algo w/ Latency
      • SR-TE Flex-Algo w/ Affinity
      • SR-TE Disjoint Planes using Flex-Algo
      • SR-TE BSIDs
      • SR-TE RSVP-TE Stitching
      • SR-TE Autoroute Include
      • SR Inter-IGP using PCE
      • SR-TE PCC Features
      • SR-TE PCE Instantiated Policy
      • SR-TE PCE Redundancy
      • SR-TE PCE Redundancy w/ Sync
      • SR-TE Basic BGP EPE
      • SR-TE BGP EPE for Unified MPLS
      • SR-TE Disjoint Paths
      • SR Converged SDN Transport Challenge
      • SR OAM DPM
      • SR OAM Tools
      • Performance-Measurement (Interface Delay)
    • SRv6
      • Start
      • Topology
      • Basic SRv6
      • SRv6 uSID
      • SRv6 uSID w/ EVPN-VPWS and BGP IPv4/IPv6
      • SRv6 uSID w/ SR-TE
      • SRv6 uSID w/ SR-TE Explicit Paths
      • SRv6 uSID w/ L3 IGW
      • SRv6 uSID w/ Dual-Connected PE
      • SRv6 uSID w/ Flex Algo
      • SRv6 uSID - Scale (Pt. 1)
      • SRv6 uSID - Scale (Pt. 2)
      • SRv6 uSID - Scale (Pt. 3) (UPA Walkthrough)
      • SRv6 uSID - Scale (Pt. 4) (Flex Algo)
      • SRv6 uSID w/ TI-LFA
    • Multicast
      • Start
      • Topology
      • Basic PIM-SSM
      • PIM-SSM Static Mapping
      • Basic PIM-SM
      • PIM-SM with Anycast RP
      • PIM-SM with Auto-RP
      • PIM-SM with BSR
      • PIM-SM with BSR for IPv6
      • PIM-BiDir
      • PIM-BiDir for IPv6
      • PIM-BiDir with Phantom RP
      • PIM Security
      • PIM Boundaries with AutoRP
      • PIM Boundaries with BSR
      • PIM-SM IPv6 using Embedded RP
      • PIM SSM Range Note
      • PIM RPF Troubleshooting #1
      • PIM RPF Troubleshooting #2
      • PIM RP Troubleshooting
      • PIM Duplicate Traffic Troubleshooting
      • Using IOS-XR as a Sender/Receiver
      • PIM-SM without Receiver IGMP Joins
      • RP Discovery Methods
      • Basic Interdomain Multicast w/o MSDP
      • Basic Interdomain Multicast w/ MSDP
      • MSDP Filtering
      • MSDP Flood Reduction
      • MSDP Default Peer
      • MSDP RPF Check (IOS-XR)
      • MSDP RPF Check (IOS-XE)
      • Interdomain MBGP Policies
      • PIM Boundaries using MSDP
    • MVPN
      • Start
      • Topology
      • Profile 0
      • Profile 0 with data MDTs
      • Profile 1
      • Profile 1 w/ Redundant Roots
      • Profile 1 with data MDTs
      • Profile 6
      • Profile 7
      • Profile 3
      • Profile 3 with S-PMSI
      • Profile 11
      • Profile 11 with S-PMSI
      • Profile 11 w/ Receiver-only Sites
      • Profile 9 with S-PMSI
      • Profile 12
      • Profile 13
      • UMH (Upstream Multicast Hop) Challenge
      • Profile 13 w/ Configuration Knobs
      • Profile 13 w/ PE RP
      • Profile 12 w/ PE Anycast RP
      • Profile 14 (Partitioned MDT)
      • Profile 14 with Extranet option #1
      • Profile 14 with Extranet option #2
      • Profile 14 w/ IPv6
      • Profile 17
      • Profile 19
      • Profile 21
    • MVPN SR
      • Start
      • Topology
      • Profile 27
      • Profile 27 w/ Constraints
      • Profile 27 w/ FRR
      • Profile 28
      • Profile 28 w/ Constraints and FRR
      • Profile 28 w/ Data MDTs
      • Profile 29
    • VPWS
      • Start
      • Topology
      • Basic VPWS
      • VPWS with Tag Manipulation
      • Redundant VPWS
      • Redundant VPWS (IOS-XR)
      • VPWS with PW interfaces
      • Manual VPWS
      • VPWS with Sequencing
      • Pseudowire Logging
      • VPWS with FAT-PW
      • MS-PS (Pseudowire stitching)
      • VPWS with BGP AD
    • VPLS
      • Start
      • Topology
      • Basic VPLS with LDP
      • VPLS with LDP and BGP
      • VPLS with BGP only
      • Hub and Spoke VPLS
      • Tunnel L2 Protocols over VPLS
      • Basic H-VPLS
      • H-VPLS with BGP
      • H-VPLS with QinQ
      • H-VPLS with Redundancy
      • VPLS with Routing
      • VPLS MAC Protection
      • Basic E-TREE
      • VPLS with LDP/BGP-AD and XRv RR
      • VPLS with BGP and XRv RR
      • VPLS with Storm Control
    • EVPN
      • Start
      • Topology
      • EVPN VPWS
      • EVPN VPWS Multihomed
      • EVPN VPWS Multihomed Single-Active
      • Basic Single-homed EVPN E-LAN
      • EVPN E-LAN Service Label Allocation
      • EVPN E-LAN Ethernet Tag
      • EVPN E-LAN Multihomed
      • EVPN E-LAN on XRv
      • EVPN IRB
      • EVPN-VPWS Multihomed IOS-XR (All-Active)
      • EVPN-VPWS Multihomed IOS-XR (Port-Active)
      • EVPN-VPWS Multihomed IOS-XR (Single-Active)
      • EVPN-VPWS Multihomed IOS-XR (Non-Bundle)
      • PBB-EVPN (Informational)
    • BGP Multi-Homing (XE)
      • Start
      • Topology
      • Lab1 ECMP
      • Lab2 UCMP
      • Lab3 Backup Path
      • Lab4 Shadow Session
      • Lab5 Shadow RR
      • Lab6 RR with Add-Path
      • Lab7 MPLS + Add Path ECMP
      • Lab8 MPLS + Shadow RR
      • Lab9 MPLS + RDs + UCMP
    • BGP Multi-Homing (XR)
      • Start
      • Topology
      • Lab1 ECMP
      • Lab2 UCMP
      • Lab3 Backup Path
      • Lab4 “Shadow Session”
      • Lab5 “Shadow RR”
      • Lab6 RR with Add-Path
      • Lab7 MPLS + Add Path ECMP
      • Lab8 MPLS + “Shadow RR”
      • Lab9 MPLS + RDs + UCMP
      • Lab10 MPLS + Same RD + Add-Path + UCMP
      • Lab11 MPLS + Same RD + Add-Path + Repair Path
    • BGP
      • Start
      • Conditional Advertisement
      • Aggregation and Deaggregation
      • Local AS
      • BGP QoS Policy Propagation
      • Non-Optimal eBGP Routing
      • Multihomed Enterprise Challenge
      • Provider Communities
      • Destination-Based RTBH
      • Destination-Based RTBH (Community-Based)
      • Source-Based RTBH
      • Source-Based RTBH (Community-Based)
      • Multihomed Enterprise Challenge (XRv)
      • Provider Communities (XRv)
      • DMZ Link BW Lab1
      • DMZ Link BW Lab2
      • PIC Edge in the Global Table
      • PIC Edge Troubleshooting
      • PIC Edge for VPNv4
      • AIGP
      • AIGP Translation
      • Cost-Community (iBGP)
      • Cost-Community (confed eBGP)
      • Destination-Based RTBH (VRF Provider-triggered)
      • Destination-Based RTBH (VRF CE-triggered)
      • Source-Based RTBH (VRF Provider-triggered)
      • Flowspec (Global IPv4/6PE)
      • Flowspec (VRF)
      • Flowspec (Global IPv4/6PE w/ Redirect)
      • Flowspec (Global IPv4/6PE w/ Redirect) T-Shoot
      • Flowspec (VRF w/ Redirect)
      • Flowspec (Global IPv4/6PE w/ CE Advertisement)
    • Intra-AS L3VPN
      • Start
      • Partitioned RRs
      • Partitioned RRs with IOS-XR
      • RT Filter
      • Non-Optimal Multi-Homed Routing
      • Troubleshoot #1 (BGP)
      • Troubleshoot #2 (OSPF)
      • Troubleshoot #3 (OSPF)
      • Troubleshoot #4 (OSPF Inter-AS)
      • VRF to Global Internet Access (IOS-XE)
      • VRF to Global Internet Access (IOS-XR)
    • Inter-AS L3VPN
      • Start
      • Inter-AS Option A
      • Inter-AS Option B
      • Inter-AS Option C
      • Inter-AS Option AB (D)
      • CSC
      • CSC with Option AB (D)
      • Inter-AS Option C - iBGP LU
      • Inter-AS Option B w/ RT Rewrite
      • Inter-AS Option C w/ RT Rewrite
      • Inter-AS Option A Multi-Homed
      • Inter-AS Option B Multi-Homed
      • Inter-AS Option C Multi-Homed
    • Russo Inter-AS
      • Start
      • Topology
      • Option A L3NNI
      • Option A L2NNI
      • Option A mVPN
      • Option B L3NNI
      • Option B mVPN
      • Option C L3NNI
      • Option C L3NNI w/ L2VPN
      • Option C mVPN
    • BGP RPKI
      • Start
      • RPKI on IOS-XE (Enabling the feature)
      • RPKI on IOS-XE (Validation)
      • RPKI on IOS-XR (Enabling the feature)
      • Enable SSH in Routinator
      • RPKI on IOS-XR (Validation)
      • RPKI on IOS-XR (RPKI Routes)
      • RPKI on IOS-XR (VRF)
      • RPKI iBGP Mesh (No Signaling)
      • RPKI iBGP Mesh (iBGP Signaling)
    • NAT
      • Start
      • Egress PE NAT44
      • NAT44 within an INET VRF
      • Internet Reachability between VRFs
      • CGNAT
      • NAT64 Stateful
      • NAT64 Stateful w/ Static NAT
      • NAT64 Stateless
      • MAP-T BR
    • BFD
      • Start
      • Topology
      • OSPF Hellos
      • ISIS Hellos
      • BGP Keepalives
      • PIM Hellos
      • Basic BFD for all protocols
      • BFD Asymmetric Timers
      • BFD Templates
      • BFD Tshoot #1
      • BFD for Static Routes
      • BFD Multi-Hop
      • BFD for VPNv4 Static Routes
      • BFD for VPNv6 Static Routes
      • BFD for Pseudowires
    • QoS
      • Start
      • QoS on IOS-XE
      • Advanced QoS on IOS-XE Pt. 1
      • Advanced QoS on IOS-XE Pt. 2
      • MPLS QoS Design
      • Notes - QoS on IOS-XR
    • NSO
      • Start
      • Basic NSO Usage
      • Basic NSO Template Service
      • Advanced NSO Template Service
      • Advanced NSO Template Service #2
      • NSO Template vs. Template Service
      • NSO API using Python
      • NSO API using Python #2
      • NSO API using Python #3
      • Using a NETCONF NED
      • Python Service
      • Nano Services
    • MDT
      • Start
      • MDT Server Setup
      • Basic Dial-Out
      • Filtering Data using XPATH
      • Finding the correct YANG model
      • Finding the correct YANG model #2
      • Event-Driven MDT
      • Basic Dial-In using gNMI
      • Dial-Out with TLS
      • Dial-In with TLS
      • Dial-In with two-way TLS
    • App-Hosting
      • Start
      • Lab - iperf3 Docker Container
      • Notes - LXC Container
      • Notes - Native Applications
      • Notes - Process Scripts
    • ZTP
      • Notes - Classic ZTP
      • Notes - Secure ZTP
    • L2 Connectivity Notes
      • 802.1ad (Q-in-Q)
      • MST-AG
      • MC-LAG
      • G.8032
    • Ethernet OAM
      • Start
      • Topology
      • CFM
      • y1731
      • Notes - y1564
    • Security
      • Start
      • Notes - Security ACLs
      • Notes - Hybrid ACLs
      • Notes - MPP (IOS-XR)
      • Notes - MPP (IOS-XE)
      • Notes - CoPP (IOS-XE)
      • Notes - LPTS (IOS-XR)
      • Notes - WAN MACsec White Paper
      • Notes - WAN MACsec Config Guide
      • Notes - AAA
      • Notes - uRPF
      • Notes - VTY lines (IOS-XR)
      • Lab - uRPF
      • Lab - MPP
      • Lab - AAA (IOS-XE)
      • Lab - AAA (IOS-XR)
      • Lab - CoPP and LPTS
    • Assurance
      • Start
      • Notes - Syslog on IOS-XE
      • Notes - Syslog on IOS-XR
      • Notes - SNMP Traps
      • Syslog (IOS-XR)
      • RMON
      • Netflow (IOS-XE)
      • Netflow (IOS-XR)
Powered by GitBook
On this page
  • Answer
  • MPLS-TE with DS-TE
  • Core Queuing Policy
  • PE to CE policing/shaping
  • CE to PE shaping
  • MPLS-TE DS-TE Tunnels
  • Turn off PHP
  • Explanation
  • High-Level Overview
  • MPLS-TE
  • CE outbound shaping
  • PE inbound policing/marking
  • PE outbound queuing to the CE
  • Core QoS Policy
  1. Labs
  2. QoS

MPLS QoS Design

PreviousAdvanced QoS on IOS-XE Pt. 2NextNotes - QoS on IOS-XR

Last updated 1 month ago

Topology: topology1

Load top3.l3vpn.setup.cfg

#IOS-XE (CSR1-7)
config replace flash:top3.l3vpn.setup.cfg

#IOS-XR (XR1-4, XR8-10)
configure
load top3.l3vpn.setup.cfg
commit replace
y

This lab is setup as follows:

  • CSR1-3, XR8 are PEs

  • CSR4-7 are CEs

  • XR1-4 are P routers

Note that you will be able to stage all configuration on XRd, but you cannot commit input policies on an interface on XRd. You will need to change the node type to XRv9K if you’d like to do this.

Before you begin, know that this is a very extensive lab which covers many different aspects of QoS in an MPLS network. I'd suggest really taking your time on this lab.

The service provider’s goals for QoS are the following:

  • Use RDM and make 100M available on all links for real-time traffic (CT1)

    • Use the following TE class definitions:

      • TE-Class 0 = CT1 priority 0

      • TE-Class 1 = CT1 priority 1

      • TE-Class 2 = CT0 priority 2

      • TE-Class 3 = CT0 priority 3

  • The service provider’s voice servers are located behind XR8. Configure CSR1-3 to have a TE tunnel with XR8. Each TE tunnel must reserve 25M bandwidth using TE-class 0. These three tunnels should be bidirectional.

    • Ensure real-time traffic uses these tunnels by using CBTS/PBTS

    • All non-EXP5 traffic between CSR1-3 and XR8 should use IGP bestpath.

  • Use a queuing policy in the core as follows:

    • Real time traffic (EXP5) should get priority and be policed to a rate of 20% link bandwidth

    • Priority traffic (EXP3 and EXP4) should receive 40% of remaining link bandwidth, use WRED, and fair-queuing

    • Network control traffic (EXP6) should be guaranteed 5% of remaining link bandwidth

    • BE traffic (EXP0) should received 55% of remaining link bandwidth and use WRED

Configure policing/shaping ingress/egress on the PEs towards the CEs as follows:

  • Each PE should police traffic received from the customer with a CIR of 100Mbps and a PIR of 120Mbps. Excess traffic should be marked down to EXP0.

  • Voice traffic (EF) should be marked with EXP5

  • Priority traffic (AF3X, AF4X, and CS6) should be marked with EX4

  • All other traffic should be marked with EXP0.

  • Each PE should shape traffic outbound to the customer based on the SP marking. The shaping policy should use the core queuing policy. Shape overall to 100M.

Configure shaping egress on the CEs towards the PEs as follows:

  • Each CE should shape traffic to 100Mbps as follows:

    • Voice traffic (EF) should get priority and be policed to 25Mbps

    • AF31-AF33 traffic should get 15% bandwidth and use WRED with a 50 msec queue-limit

      • Start dropping AF33 traffic up to 20% once the queue gets to 30 msec full

      • Start dropping AF32 traffic up to 20% once the queue gets to 35 msec full

      • Start dropping AF31 traffic up to 20% once the queue gets to 40 msec full

    • AF41-AF43 traffic should get 10% bandwidth and use WRED with a 30 msec queue-limit

      • Start dropping AF43 traffic up to 20% once the queue gets to 20 msec full

      • Start dropping AF42 traffic up to 20% once the queue gets to 22 msec full

      • Start dropping AF41 traffic up to 20% once the queue gets to 25 msec full

    • CS6 traffic should get 5% bandwidth

    • BE traffic should use fair-queuing

Answer

MPLS-TE with DS-TE

#All XR routers
router isis 1
 address-family ipv4 unicast
  mpls traffic-eng level-2-only
  mpls traffic-eng router-id Loopback0
 !
!
mpls traffic-eng
 ds-te mode ietf
 ds-te te-classes
  te-class 0 class-type 1 priority 0
  te-class 1 class-type 1 priority 1
  te-class 2 class-type 0 priority 2
  te-class 3 class-type 0 priority 3
  te-class 4 unused
  te-class 5 unused
  te-class 6 unused
  te-class 7 unused

#CSR1-3
mpls traffic-eng tunnels
mpls traffic-eng ds-te mode ietf
mpls traffic-eng ds-te te-classes
 te-class 0 class-type 1 priority 0
 te-class 1 class-type 1 priority 1
 te-class 2 class-type 0 priority 2
 te-class 3 class-type 0 priority 3
 te-class 4 unused
 te-class 5 unused
 te-class 6 unused
 te-class 7 unused
!
router isis 1
 mpls traffic-eng level-2
 mpls traffic-eng router-id Lo0

## Enabling MPLS-TE on interfaces and allocating BW
#CSR1
int GigabitEthernet2.3111
 mpls traffic-eng tunnels
 ip rsvp bandwidth rdm bc0 1000000 bc1 100000

#CSR2
int GigabitEthernet2.3112
 mpls traffic-eng tunnels
 ip rsvp bandwidth rdm bc0 1000000 bc1 100000

#CSR3
int GigabitEthernet2.3133
 mpls traffic-eng tunnels
 ip rsvp bandwidth rdm bc0 1000000 bc1 100000
int GigabitEthernet2.3143
 mpls traffic-eng tunnels
 ip rsvp bandwidth rdm bc0 1000000 bc1 100000

#XR1
mpls traffic-eng
 int GigabitEthernet0/0/0/0.3012
 int GigabitEthernet0/0/0/0.3013
 int GigabitEthernet0/0/0/0.3111
 int GigabitEthernet0/0/0/0.3112
 int GigabitEthernet0/0/0/0.3211
rsvp
 int GigabitEthernet0/0/0/0.3012
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3013
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3111
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3112
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3211
  bandwidth rdm bc0 1 g bc1 100 m

#XR2
mpls traffic-eng
 int GigabitEthernet0/0/0/0.3012
 int GigabitEthernet0/0/0/0.3024
 int GigabitEthernet0/0/0/0.3222
rsvp
 int GigabitEthernet0/0/0/0.3012
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3024
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3222
  bandwidth rdm bc0 1 g bc1 100 m

#XR3
mpls traffic-eng
 int GigabitEthernet0/0/0/0.3013
 int GigabitEthernet0/0/0/0.3034
 int GigabitEthernet0/0/0/0.3133
 int GigabitEthernet0/0/0/0.3134
rsvp
 int GigabitEthernet0/0/0/0.3013
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3034
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3133
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3134
  bandwidth rdm bc0 1 g bc1 100 m

#XR4
mpls traffic-eng
 int GigabitEthernet0/0/0/0.3024
 int GigabitEthernet0/0/0/0.3034
 int GigabitEthernet0/0/0/0.3143
 int GigabitEthernet0/0/0/0.3144
rsvp
 int GigabitEthernet0/0/0/0.3024
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3034
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3143
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3144
  bandwidth rdm bc0 1 g bc1 100 m

#XR8
mpls traffic-eng
 int GigabitEthernet0/0/0/0.3134 
 int GigabitEthernet0/0/0/0.3144
rsvp
 int GigabitEthernet0/0/0/0.3134
  bandwidth rdm bc0 1 g bc1 100 m 
 int GigabitEthernet0/0/0/0.3144 
  bandwidth rdm bc0 1 g bc1 100 m

Core Queuing Policy

#IOS-XR
class-map REAL_TIME
 match mpls exp top 5
class-map PRIORITY
 match mpls exp top 3 4
class-map CONTROL
 match mpls exp top 6
!
policy-map CORE_QUEUING
 class REAL_TIME
  priority 
  police rate percent 20
 class PRIORITY
  bandwidth remaining percent 40
  random-detect exp 3 1000 1500
  random-detect exp 4 1200 1500
 class CONTROL
  bandwidth remaining percent 5
 class class-default
  bandwidth remaining percent 55
  random-detect exp 0 500 1000

#XR1
int GigabitEthernet0/0/0/0.3012
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3013
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3111
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3112
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3211
 service-policy output CORE_QUEUING

#XR2
int GigabitEthernet0/0/0/0.3012
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3024
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3222
 service-policy output CORE_QUEUING

#XR3
int GigabitEthernet0/0/0/0.3013
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3034
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3133
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3134
 service-policy output CORE_QUEUING

#XR4
int GigabitEthernet0/0/0/0.3024
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3034
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3143
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3144
 service-policy output CORE_QUEUING

#XR8
int GigabitEthernet0/0/0/0.3134 
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3144
 service-policy output CORE_QUEUING

#IOS-XE 
class-map REAL_TIME
 match mpls exp top 5
class-map PRIORITY
 match mpls exp top 3 4
class-map CONTROL
 match mpls exp top 6
!
policy-map CORE_QUEUING
 class REAL_TIME
  priority percent 20
 class PRIORITY
  bandwidth remaining percent 40
  random-detect precedence-based
 class CONTROL
  bandwidth remaining percent 5
 class class-default
  bandwidth remaining percent 55
  random-detect precedence-based
!
policy-map CORE_QUEUING_PARENT
 class class-default
  shape average 1 g
  service-policy CORE_QUEUING

#CSR1
int GigabitEthernet2.3111
 service-policy output CORE_QUEUING_PARENT

#CSR2
int GigabitEthernet2.3112
 service-policy output CORE_QUEUING_PARENT

#CSR3
int GigabitEthernet2.3133
 service-policy output CORE_QUEUING_PARENT
int GigabitEthernet2.3143
 service-policy output CORE_QUEUING_PARENT

PE to CE policing/shaping

#IOS-XE
class-map DSCP_EF
 match dscp ef
class-map match-any DSCP_AF3_AF4_CS6
 match dscp af31 af32 af33
 match dscp af41 af42 af43
 match dscp cs6
!
policy-map CE_INGRESS_MARKING
 class DSCP_EF
  set mpls exp imposition 5
 class DSCP_AF3_AF4_CS6
  set mpls exp imposition 4
 class class-default
  set mpls exp imposition 0
!
policy-map CE_INGRESS_POLICE
 class class-default
  service-policy CE_INGRESS_MARKING
  police cir 100 m pir 120 m
   conform-action transmit
   exceed-action set-mpls-exp-imposition-transmit 0
   violate-action drop
!
!
!
class-map EXP5
 match mpls exp top 5
class-map EXP3
 match mpls exp top 3
class-map EXP4
 match mpls exp top 4
class-map CONTROL
 match mpls exp top 6
class-map QOS5
 match qos-group 5
class-map QOS3
 match qos-group 3
class-map QOS6
 match qos-group 6
class-map QOS0
 match qos-group 0
!
policy-map EXP_TO_QOS_GROUP
 class EXP5
  set qos-group 5
 class EXP3
  set qos-group 3
  set discard-class 3
 class EXP4
  set qos-group 3
  set discard-class 4
 class CONTROL
  set qos-group 6
 class class-default
  set qos-group 0
  set discard-class 0
!
policy-map CE_EGRESS_QUEUING  
 class QOS5
  priority percent 20
 class QOS3
  bandwidth remaining percent 40
  random-detect discard-class-based
 class QOS6
  bandwidth remaining percent 5
 class QOS0
  bandwidth remaining percent 55
  random-detect discard-class-based
!
policy-map CE_EGRESS_QUEUING_PARENT
 class class-default
  shape average 100 m
  service-policy CE_EGRESS_QUEUING  
!
!
#CSR1
int GigabitEthernet2.3111
 service-policy input EXP_TO_QOS_GROUP
int GigabitEthernet2.3311
 service-policy input CE_INGRESS_POLICE
 service-policy output CE_EGRESS_QUEUING_PARENT

#CSR2
int GigabitEthernet2.3112
 service-policy input EXP_TO_QOS_GROUP
int GigabitEthernet2.3322
 service-policy input CE_INGRESS_POLICE
 service-policy output CE_EGRESS_QUEUING_PARENT

#CSR3
int GigabitEthernet2.3133
 service-policy input EXP_TO_QOS_GROUP
int GigabitEthernet2.3143
 service-policy input EXP_TO_QOS_GROUP
int GigabitEthernet2.3333
 service-policy input CE_INGRESS_POLICE
 service-policy output CE_EGRESS_QUEUING_PARENT

#XR8
class-map DSCP_EF
 match dscp ef
class-map match-any DSCP_AF3_AF4_CS6
 match dscp af31 af32 af33
 match dscp af41 af42 af43
 match dscp cs3
!
policy-map CE_INGRESS_MARKING
 class DSCP_EF
  set mpls exp imposition 5
 class DSCP_AF3_AF4_CS6
  set mpls exp imposition 4
 class class-default
  set mpls exp imposition 0
!
policy-map CE_INGRESS_POLICE
 class class-default
  service-policy CE_INGRESS_MARKING
  police rate 100 mbps peak-rate 120 mbps
   conform-action transmit
   exceed-action set mpls experimental imposition 0
   violate-action drop
!
!
!
class-map EXP5
 match mpls exp top 5
class-map EXP3
 match mpls exp top 3
class-map EXP4
 match mpls exp top 4
class-map CONTROL
 match mpls exp top 6
class-map QOS5
 match qos-group 5
class-map QOS3
 match qos-group 3
class-map QOS6
 match qos-group 6
class-map QOS0
 match qos-group 0
!
policy-map EXP_TO_QOS_GROUP
 class EXP4
  set qos-group 5
 class EXP3
  set qos-group 3
  set discard-class 3
 class EXP4
  set qos-group 3
  set discard-class 4
 class CONTROL
  set qos-group 6
 class class-default
  set qos-group 0
!
policy-map CE_EGRESS_QUEUING  
 class QOS5
  priority 
  police percent 20
 class QOS3
  bandwidth remaining percent 40
  random-detect discard-class 3 1000 1500
  random-detect discard-class 4 1200 1500
 class QOS6
  bandwidth remaining percent 5
 class QOS0
  bandwidth remaining percent 55
  random-detect default
!
policy-map CE_EGRESS_QUEUING_PARENT
 class class-default
  shape average 100 m
  service-policy CE_EGRESS_QUEUING


int GigabitEthernet0/0/0/0.3344
 service-policy input CE_INGRESS_POLICE
 service-policy output CE_EGRESS_QUEUING_PARENT

int GigabitEthernet0/0/0/0.3144
 service-policy input EXP_TO_QOS_GROUP
int GigabitEthernet0/0/0/0.3134
 service-policy input EXP_TO_QOS_GROUP

CE to PE shaping

class-map EF
 match dscp ef
class-map AF3
 match dscp af31 af32 af33
class-map AF4
 match dscp af41 af42 af43
class-map CS6
 match dscp cs6
!
policy-map QUEUING
 class EF
  priority 25000
 class AF3
  bandwidth percent 15
  queue-limit 50 ms
  random-detect dscp-based
  random-detect dscp af33 30 ms 50 ms 5
  random-detect dscp af32 35 ms 50 ms 5
  random-detect dscp af32 40 ms 50 ms 5
 class AF4
  bandwidth percent 10
  queue-limit 30 ms
  random-detect dscp-based
  random-detect dscp af43 20 ms 30 ms 5
  random-detect dscp af42 22 ms 30 ms 5
  random-detect dscp af41 25 ms 30 ms 5
 class CS6
  bandwidth percent 5
 class class-default
  fair-queue
!
policy-map 100M_SHAPE
 class class-default
  shape average 100 m
  service-policy QUEUING

#CSR5
int GigabitEthernet2.3311
 service-policy output 100M_SHAPE

#CSR6
int GigabitEthernet2.3322
 service-policy output 100M_SHAPE

#CSR7
int GigabitEthernet2.3333
 service-policy output 100M_SHAPE

#CSR4
int GigabitEthernet2.3344
 service-policy output 100M_SHAPE

MPLS-TE DS-TE Tunnels

#CSR1, CSR2, CSR3
interface Tunnel0
 description TE_CLASS0_EXP5
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 10.0.0.8
 tunnel mpls traffic-eng priority 0 0
 tunnel mpls traffic-eng bandwidth 25000 class-type 1
 tunnel mpls traffic-eng path-option 1 dynamic
 tunnel mpls traffic-eng exp 5
!
interface Tunnel1
 description DEFAULT
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 10.0.0.8
 tunnel mpls traffic-eng priority 3 3
 tunnel mpls traffic-eng path-option 1 dynamic
 tunnel mpls traffic-eng path-selection metric igp
 tunnel mpls traffic-eng exp default
!
interface Tunnel100
 description CBTS_MASTER_TUN
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 10.0.0.8
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng exp-bundle master
 tunnel mpls traffic-eng exp-bundle member Tunnel0
 tunnel mpls traffic-eng exp-bundle member Tunnel1

#XR8
interface tunnel-te0
 description CSR1_EXP5
 ipv4 unnumbered Loopback0
 priority 0 0
 signalled-bandwidth 25000 class-type 1
 autoroute announce
 destination 10.0.0.11
 policy-class 5
 path-option 1 dynamic
!
interface tunnel-te1
 description CSR1_DEFAULT
 ipv4 unnumbered Loopback0
 priority 3 3
 autoroute announce
 destination 10.0.0.11
 policy-class default
 path-selection
  metric igp
 path-option 1 dynamic
!
!
interface tunnel-te2
 description CSR2_EXP5
 ipv4 unnumbered Loopback0
 priority 0 0
 signalled-bandwidth 25000 class-type 1
 autoroute announce
 destination 10.0.0.12
 policy-class 5
 path-option 1 dynamic
!
interface tunnel-te3
 description CSR2_DEFAULT
 ipv4 unnumbered Loopback0
 priority 3 3
 autoroute announce
 destination 10.0.0.12
 policy-class default
 path-selection
  metric igp
 path-option 1 dynamic
!
!
interface tunnel-te4
 description CSR3_EXP5
 ipv4 unnumbered Loopback0
 priority 0 0
 signalled-bandwidth 25000 class-type 1
 autoroute announce
 destination 10.0.0.13
 policy-class 5
 path-option 1 dynamic
!
interface tunnel-te5
 description CSR3_DEFAULT
 ipv4 unnumbered Loopback0
 priority 3 3
 autoroute announce
 destination 10.0.0.13
 policy-class default
 path-selection
  metric igp
 path-option 1 dynamic

Turn off PHP

#CSR1, 2, 3
mpls traffic-eng signalling advertise explicit-null
mpls traffic-eng signalling interpret explicit-null verbatim ! Not strictly necessary in this case
mpls ldp explicit-null

#XR8
mpls traffic-eng
 signalling advertise explicit-null
!
mpls ldp
 address-family ipv4
  label
   local
    advertise
     explicit-null

Explanation

High-Level Overview

This extensive lab uses multiple technologies to achieve a comprehensive MPLS core QoS design. The core uses DiffServ for QoS in the data plane, and MPLS-TE with DS-TE for accomodating bandwidth reservations on a DiffServ-aware basis in the control plane. Traffic is selected to be forwarded down the TE tunnels via the EXP value. By using these separate tools - DS-TE, CBTS/PBTS, and DiffServ QoS, we can produce a unified QoS solution.

Additionally there is some complexity at the PE-CE edge. The CEs implement outbound shaping in order to ensure they do not burst above the PE’s ingress policer. The PEs mark traffic into one of four queues which are identified in the core based on EXP value. The MPLS DiffServ mode is “pipe mode,” in which the SP’s marking is not translated into the customer’s tunneled marking, and the egress PE makes a queuing decision based on the EXP marking. For this to work we should turn off PHP (by advertising expnull via LDP and MPLS-TE), and we must translate incoming EXP values to QoS group values, because the EXP value is lost when doing queuing outbound towards the CE.

MPLS-TE

This lab uses MPLS-TE with DS-TE in RDM mode (the default). First we must enable MPLS-TE for IOS-XE and IOS-XR. We also specify our own TE-class definition. Make sure to mark TE-classes 4 through 7 as unused. If you forget to do this for a class for which the router has a default definition, it will be used in addition to your custom defintions.

#All XR routers
router isis 1
 address-family ipv4 unicast
  mpls traffic-eng level-2-only
  mpls traffic-eng router-id Loopback0
 !
!
mpls traffic-eng
 ds-te mode ietf
 ds-te te-classes
  te-class 0 class-type 1 priority 0
  te-class 1 class-type 1 priority 1
  te-class 2 class-type 0 priority 2
  te-class 3 class-type 0 priority 3
  te-class 4 unused
  te-class 5 unused
  te-class 6 unused
  te-class 7 unused

#CSR1-3
mpls traffic-eng tunnels
mpls traffic-eng ds-te mode ietf
mpls traffic-eng ds-te te-classes
 te-class 0 class-type 1 priority 0
 te-class 1 class-type 1 priority 1
 te-class 2 class-type 0 priority 2
 te-class 3 class-type 0 priority 3
 te-class 4 unused
 te-class 5 unused
 te-class 6 unused
 te-class 7 unused
!
router isis 1
 mpls traffic-eng level-2
 mpls traffic-eng router-id Lo0

Next we allocate bandwidth for each interface using the RDM model. In this model, BC0 can use any unused bandwidth from BC1. For this reason we simply specify BC0 as the total bandwidth and BC1 as its own bandwidth. In our custom TE-Class definitions, we prevent BC0 from being able to ever preempt BC1 tunnels. Class-type 0 can only use priorities 2 and 3, while class-type 1 is always priority 0 or 1.


#CSR1
int GigabitEthernet1.3111
 mpls traffic-eng tunnels
 ip rsvp bandwidth rdm bc0 1000000 bc1 100000

#XR1
mpls traffic-eng
 int GigabitEthernet0/0/0/0.3012
 int GigabitEthernet0/0/0/0.3013
 int GigabitEthernet0/0/0/0.3111
 int GigabitEthernet0/0/0/0.3112
 int GigabitEthernet0/0/0/0.3211
rsvp
 int GigabitEthernet0/0/0/0.3012
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3013
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3111
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3112
  bandwidth rdm bc0 1 g bc1 100 m
 int GigabitEthernet0/0/0/0.3211
  bandwidth rdm bc0 1 g bc1 100 m

We then define our TE tunnel interfaces. In this lab we are pretending that all voice traffic is traversing XR8, as if there is a media server behind this PE. So we only need to build TE LSPs between all PEs and XR8. We are asked to ensure that EXP5 traffic uses this LSP which we can accomplish by using CBTS/PBTS. Since we need to use autoroute announce on this TE LSP, the only way to ensure that all other traffic uses the IGP path is to build a second tunnel for “exp default” that simply uses the IGP metric for the optimization of the LSP.

#CSR1
interface Tunnel0
 description TE_CLASS0_EXP5
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 10.0.0.8
 tunnel mpls traffic-eng priority 0 0
 tunnel mpls traffic-eng bandwidth 25000 class-type 1
 tunnel mpls traffic-eng path-option 1 dynamic
 tunnel mpls traffic-eng exp 5   ! This tunnel is only used for EXP5 traffic
!
interface Tunnel1
 description DEFAULT
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 10.0.0.8
 tunnel mpls traffic-eng priority 3 3
 tunnel mpls traffic-eng path-option 1 dynamic
 tunnel mpls traffic-eng path-selection metric igp  ! This tunnel is built using the IGP metric
 tunnel mpls traffic-eng exp default  ! This tunnel carries everything besides EXP5 traffic
!
interface Tunnel100   ! This tunnel is used as the master tunnel for the EXP bundle
 description CBTS_MASTER_TUN
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 10.0.0.8
 tunnel mpls traffic-eng autoroute announce
 tunnel mpls traffic-eng exp-bundle master
 tunnel mpls traffic-eng exp-bundle member Tunnel0
 tunnel mpls traffic-eng exp-bundle member Tunnel1

On XR8 we create two tunnels per each of the three PEs. One tunnel uses EXP5 and one tunnel uses the default EXP. On IOS-XR we don’t need to use a master EXP bundle tunnel like we do on IOS-XE.

#Only the tunnels to CSR1 are shown
interface tunnel-te0
 description CSR1_EXP5
 ipv4 unnumbered Loopback0
 priority 0 0
 signalled-bandwidth 25000 class-type 1
 autoroute announce
 destination 10.0.0.11
 policy-class 5
 path-option 1 dynamic
!
interface tunnel-te1
 description CSR1_DEFAULT
 ipv4 unnumbered Loopback0
 priority 3 3
 autoroute announce
 destination 10.0.0.11
 policy-class default
 path-selection
  metric igp
 path-option 1 dynamic

Remember to configure MPLS-TE exp-null and LDP exp-null to ensure that we don’t lose the EXP value on the penultimate hop. This is needed in Pipe mode so that the egress PE performs egress queuing based on the MPLS EXP QoS and not the customer’s QoS marking.

#CSR1, 2, 3
mpls traffic-eng signalling advertise explicit-null
mpls traffic-eng signalling interpret explicit-null verbatim ! Not strictly necessary in this case
mpls ldp explicit-null

#XR8
mpls traffic-eng
 signalling advertise explicit-null
!
mpls ldp
 address-family ipv4
  label
   local
    advertise
     explicit-null

CE outbound shaping

We’ll now look at the CE’s outbound shaping policies. The CE should make sure to shape to the rate that the PE is policing to minimize packet loss due to policer drops. Additionally, the CE can prioritize certain classes of traffic by giving them gauranteed bandwidth or priority.

class-map EF
 match dscp ef
class-map AF3
 match dscp af31 af32 af33
class-map AF4
 match dscp af41 af42 af43
class-map CS6
 match dscp cs6
!
policy-map QUEUING
 class EF
  priority 25000
 class AF3
  bandwidth percent 15
  queue-limit 50 ms
  random-detect dscp-based
  random-detect dscp af33 30 ms 50 ms 5
  random-detect dscp af32 35 ms 50 ms 5
  random-detect dscp af32 40 ms 50 ms 5
 class AF4
  bandwidth percent 10
  queue-limit 30 ms
  random-detect dscp-based
  random-detect dscp af43 20 ms 30 ms 5
  random-detect dscp af42 22 ms 30 ms 5
  random-detect dscp af41 25 ms 30 ms 5
 class CS6
  bandwidth percent 5
 class class-default
  fair-queue
!
policy-map 100M_SHAPE
 class class-default
  shape average 100 m
  service-policy QUEUING

#CSR5
int gi2.3311
 service-policy output 100M_SHAPE

Above, we give EF priority that is policed at 25Mbps during congestion. We give AF3 and AF4 minimium bandwidth guarantees and use WRED for congestion avoidance. The queue for these classes is set based on a msec value. This will be converted to a bytes count based on the bandwidth of the parent policy or parent interface. This is also the case for the custom WRED parameters for which we specify thresholds in time values as well.

PE inbound policing/marking

The PEs do two actions upon ingress from the CEs: police at the CIR/PIR and mark the EXP value.

The PEs use a CIR of 100mbps and PIR of 120mbps. Traffic that is excess is marked down to EXP0. All conforming traffic is marked based on the customer’s DSCP marking. Perhaps there is an accounting mechanism to account for priority/real-time traffic and charge above a certain threshold for this to discourage customers from marking all their traffic as priority.

#IOS-XE
class-map DSCP_EF
 match dscp ef
class-map match-any DSCP_AF3_AF4_CS6
 match dscp af31 af32 af33
 match dscp af41 af42 af43
 match dscp cs3
!
policy-map CE_INGRESS_MARKING
 class DSCP_EF
  set mpls exp imposition 5
 class DSCP_AF3_AF4_CS6
  set mpls exp imposition 4
 class class-default
  set mpls exp imposition 0
!
policy-map CE_INGRESS_POLICE
 class class-default
  service-policy CE_INGRESS_MARKING
  police cir 100 m pir 120 m
   conform-action transmit
   exceed-action set-mpls-exp-imposition-transmit 0
   violate-action drop

#CSR1
int GigabitEtherne2.3311
 service-policy input CE_INGRESS_POLICE


#XR8
class-map DSCP_EF
 match dscp ef
class-map match-any DSCP_AF3_AF4_CS6
 match dscp af31 af32 af33
 match dscp af41 af42 af43
 match dscp cs3
!
policy-map CE_INGRESS_MARKING
 class DSCP_EF
  set mpls exp imposition 5
 class DSCP_AF3_AF4_CS6
  set mpls exp imposition 4
 class class-default
  set mpls exp imposition 0
!
policy-map CE_INGRESS_POLICE
 class class-default
  service-policy CE_INGRESS_MARKING
  police rate 100 mbps peak-rate 120 mbps
   conform-action transmit
   exceed-action set mpls experimental imposition 0
   violate-action drop

int GigabitEthernet0/0/0/0.3344
 service-policy input CE_INGRESS_POLICE

PE outbound queuing to the CE

The PEs are using pipe mode, so they must translate the EXP marking ingress from the core to an internal QoS-group marking. Additionally we want to do WRED, so we set a discard-class marking as well.

#IOS-XE
class-map EXP5
 match mpls exp top 5
class-map EXP3
 match mpls exp top 3
class-map EXP4
 match mpls exp top 4
class-map CONTROL
 match mpls exp top 6
!
policy-map EXP_TO_QOS_GROUP
 class EXP5
  set qos-group 5
 class EXP3
  set qos-group 3
  set discard-class 3
 class EXP4
  set qos-group 3
  set discard-class 4
 class CONTROL
  set qos-group 6
 class class-default
  set qos-group 0
  set discard-class 0

#CSR1
int GigabitEthernet2.3111
 service-policy input EXP_TO_QOS_GROUP


#XR8
class-map EXP5
 match mpls exp top 5
class-map EXP3
 match mpls exp top 3
class-map EXP4
 match mpls exp top 4
class-map CONTROL
 match mpls exp top 6
!
policy-map EXP_TO_QOS_GROUP
 class EXP4
  set qos-group 5
 class EXP3
  set qos-group 3
  set discard-class 3
 class EXP4
  set qos-group 3
  set discard-class 4
 class CONTROL
  set qos-group 6
 class class-default
  set qos-group 0

int GigabitEthernet0/0/0/0.3144
 service-policy input EXP_TO_QOS_GROUP
int GigabitEthernet0/0/0/0.3134
 service-policy input EXP_TO_QOS_GROUP

Next we can use our core policy for outbound queuing to the CE, but we use QoS group values instead of EXP values. We also use discard-class values for WRED instead of EXP.

#IOS-XE
class-map QOS5
 match qos-group 5
class-map QOS3
 match qos-group 3
class-map QOS6
 match qos-group 6
class-map QOS0
 match qos-group 0
!
policy-map CE_EGRESS_QUEUING  
 class QOS5
  priority percent 20
 class QOS3
  bandwidth remaining percent 40
  random-detect discard-class-based
 class QOS6
  bandwidth remaining percent 5
 class QOS0
  bandwidth remaining percent 55
  random-detect discard-class-based
!
policy-map CE_EGRESS_QUEUING_PARENT
 class class-default
  shape average 100 m
  service-policy CE_EGRESS_QUEUING  
!
!
#CSR1
int GigabitEthernet2.3311
 service-policy output CE_EGRESS_QUEUING_PARENT

#XR8
class-map QOS5
 match qos-group 5
class-map QOS3
 match qos-group 3
class-map QOS6
 match qos-group 6
class-map QOS0
 match qos-group 0
!
policy-map CE_EGRESS_QUEUING  
 class QOS5
  priority 
  police percent 20
 class QOS3
  bandwidth remaining percent 40
  random-detect discard-class 3 1000 1500
  random-detect discard-class 4 1200 1500
 class QOS6
  bandwidth remaining percent 5
 class QOS0
  bandwidth remaining percent 55
  random-detect default
!
policy-map CE_EGRESS_QUEUING_PARENT
 class class-default
  shape average 100 m
  service-policy CE_EGRESS_QUEUING


int GigabitEthernet0/0/0/0.3344
 service-policy output CE_EGRESS_QUEUING_PARENT

Core QoS Policy

Lastly, we look at the MPLS core QoS DiffServ policy. We police priority traffic to 20% of link bandwidth, which in this lab will always be 200M. This provides oversubscription for priority traffic, since we are doing a 100M reservation for CT1 on every link. This gives us a buffer to ensure that we are unlikely to drop priority traffic. This is how we align the data plane QoS policy with the DS-TE control plane reservations.

We also have a few other classes: a “priority” class is for high priority data traffic. We give it a large percent of gauranteed bandwidth and use WRED for congestion management. Control traffic is generally network control/signalling traffic and is guaranteed 5 percent bandwidth.

This queuing policy is applied outbound to every core interface.

#IOS-XR
class-map REAL_TIME
 match mpls exp top 5
class-map PRIORITY
 match mpls exp top 3 4
class-map CONTROL
 match mpls exp top 6
!
policy-map CORE_QUEUING
 class REAL_TIME
  priority 
  police rate percent 20
 class PRIORITY
  bandwidth remaining percent 40
  random-detect exp 3 1000 1500
  random-detect exp 4 1200 1500
 class CONTROL
  bandwidth remaining percent 5
 class class-default
  bandwidth remaining percent 55
  random-detect exp 0 500 1000

#XR1
int GigabitEthernet0/0/0/0.3012
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3013
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3111
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3112
 service-policy output CORE_QUEUING
int GigabitEthernet0/0/0/0.3211
 service-policy output CORE_QUEUING

#IOS-XE 
class-map REAL_TIME
 match mpls exp top 5
class-map PRIORITY
 match mpls exp top 3 4
class-map CONTROL
 match mpls exp top 6
!
policy-map CORE_QUEUING
 class REAL_TIME
  priority percent 20
 class PRIORITY
  bandwidth remaining percent 40
  random-detect precedence-based
 class CONTROL
  bandwidth remaining percent 5
 class class-default
  bandwidth remaining percent 55
  random-detect precedence-based
!
policy-map CORE_QUEUING_PARENT
 class class-default
  shape average 1 g
  service-policy CORE_QUEUING

#CSR1
int GigabitEthernet2.3111
 service-policy output CORE_QUEUING_PARENT