ON THIS PAGE
Quality of Service (QoS)
SUMMARY Read this topic to learn about the quality of service (QoS) feature of the Juniper Cloud-Native Router when deployed in L2 mode.
Starting in Juniper Cloud-Native Router Release 22.4, you can configure quality of service (QoS) parameters including classification, marking, and queuing. The cloud-native router performs classification and marking operations in vRouter and queing (scheduling) operations in the physical network interface card (NIC). Scheduling is only supported on the E810 NIC.
QoS Overview
You enable QoS prior to the deploy time by editing the values.yaml
file in
Juniper-Cloud-Native-Router-version-number/helmchart
directory and changing the qosEnable
value to true
. The
default value for the QoS feature is false
(disabled). For example:
# Set true/false to Enable or Disable QOS, note: QOS is not supported on X710 NIC. qosEnable: true
You can only enable the QoS feature if the host server on which you install your cloud-native router contains an Intel E810 NIC that is running lldp.
You enable lldp on the NIC using the lldptool
which runs on the host
server as a CLI application. Issue the following command to enable lldp on the E810 NIC. For
example, you could use the following command:
lldptool -T -i INTERFACE -V ETS-CFG willing=no tsa=0:strict,1:strict,2:strict,3:strict,4:strict, 5:strict,6:strict,7:strict up2tc=0:0,1:1,2:2,3:3,4:0,5:1,6:2,7:3
The details of the above command are:
-
ETS–Enhanced Transmission Selection
-
willing–The willing attribute determines whether the system uses locally configured packet forwarding classification (PFC) or not. If you set
willing
tono
(the default setting), the cloud-native router applies local PFC configuration. If you set willing to yes, and the cloud-native router receives TLV from the peer router, the cloud-native router applies the received values. -
tsa–The transmission selection algorithm is a comma seperated list of traffic class to selection algorithm maps. You can choose
ets
,strict
, orvendor
as selection algorithms. -
up2tc–Comma-separated list that maps user priorities to traffic classes
The list below provides an overview of the classification, marking, and queueing operations performed by cloud-native router.
-
Classification:
-
vRouter classifies packets by examining the priority bits in the packet
-
vRouter derives traffic class and loss priority
-
vRouter can apply traffic classifiers to fabric, traffic, and workload interface types
-
vRouter maintains 16 entries in its classifier map
-
-
Marking (Re-write):
-
vRouter performs marking operations
-
vRouter performs rewriting of p-bits in the egress path
-
vRouter derives new traffic priority based on traffic class and drop priority at egress
-
vRouter can apply marking to packets only on fabric interfaces
-
vRouter maintains 8 entries in its marking map
-
-
Queueing (Scheduling):
-
Cloud-native router performs strict priority scheduling in hardware (E810 NIC)
-
Cloud-native router maps each traffic class to one queue
-
Cloud-native router limits the maximum number of traffic queue to 4
-
Cloud-native router maps 8 possible priorities to 4 traffic classes; It also maps each traffic class 1 hardware queue
-
Cloud-native router can apply scheduling to fabric interface only
-
Virtual functions (VFs) leverage the queues that you configure in the physical functions (interfaces)
-
vRouter maintains 8 entries in its scheduler map
-
Configuration Example
You configure QoS classifiers, rewrite rules, and schedulers in the controller using Junos set commands or remotely using NETCONF. We display a Junos-based example configuration below:
set class-of-service classifiers ieee-802.1 class1 forwarding-class assured-forwarding loss-priority high code-points 011 set class-of-service rewrite-rules ieee-802.1 Rule_1 forwarding-class assured-forwarding loss-priority high code-point 110 set class-of-service schedulers sch1 priority high set class-of-service scheduler-maps sch1 forwarding-class assured-forwarding scheduler sch1 set class-of-service interfaces enp175s1 scheduler-map sch1 set class-of-service interfaces enp175s1 unit 0 rewrite-rules ieee-802.1 Rule_1 set class-of-service interfaces vhostnet123-3546aefd-7af8-4fe5 unit 0 classifiers ieee-802.1 class1
You
view the QoS configuration by accessing the JCNR controller CLI. Use the show
commands in Junos
operation mode. The show commands reveal the configuration of classifiers, rewrite rules, or
scheduler maps individually. For example:
user@jcnr-01> show class-of-service classifier Classifier: class1, Code point type: ieee802.1p Code point Forwarding class Loss priority 011 assured-forwarding high
Show Rewrite-Rule
user@jcnr-01> show class-of-service rewrite-rule Rewrite rule: Rule_1, Code point type: ieee802.1p Forwarding class Loss priority Code point assured-forwarding high 110
Show Scheduler-Map
user@jcnr-01> show class-of-service scheduler-map sch1 Scheduler map: sch1 Scheduler: sch1, Forwarding class: assured-forwarding Transmit rate: unspecified, Rate Limit: none, Priority: high
user@jcnr-01> show class-of-service interface vhostnet123-5a1e3079-d45e-4ab5 Physical interface: vhostnet123-5a1e3079-d45e-4ab5 Maximum usable queues: 4, Queues in use: 4 Logical interface: vhostnet123-5a1e3079-d45e-4ab5.0 Object Name Type Classifier class1 ieee802.1p
user@jcnr-01> show class-of-service interface enp175s1 Physical interface: enp175s1 Maximum usable queues: 4, Queues in use: 4 Scheduler map: sch1 Logical interface: enp175s1.0 Object Name Type Rewrite-Output Rule_1 ieee802.1p
Troubleshooting
You can troubleshooting the
QoS configuration by accessing
the vRouter CLI. Use the purel2cli
command and by viewing the
interface mapping.
Display Classifier Config
purel2cli --qos cla class1 Classifer name: class1 Classifier Index: 0 =============================================== code-points loss priority forwarding-class =============================================== 000 low best-effort 001 low best-effort 010 low best-effort 011 high assured-forwarding 100 low best-effort 101 low best-effort 110 low best-effort 111 low best-effort
vif0/2 PMD: vhostnet123-3546aefd-7af8-4fe5 Type:Virtual HWaddr:aa:bb:cc:dd:ee:12 Vrf:0 Flags:L2Mon QOS:-1 Ref:13 RX port packets:20 errors:0 RX queue packets:20 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Vlan Mode: Trunk Vlan: 100 200 300 Qos classifier: class1 RX packets:20 bytes:1200 errors:0 TX packets:0 bytes:0 errors:0 Drops:40
purel2cli --qos rw Rule_1 Re-Write name: Rule_1 Re-write Index: 0 =========================================loss priority Forwarding-class re-write prio ========================================= low best-effort n/a low expedited-forwarding n/a low assured-forwarding n/a low network-control n/a high best-effort n/a high expedited-forwarding n/a high assured-forwarding 110 high network-control n/a
vif0/1 PCI: 0000:af:01.0 (Speed 10000, Duplex 1) Type:Physical HWaddr:46:d5:f3:fc:fc:92 Vrf:0 Flags:L2Vof QOS:-1 Ref:42 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Fabric Interface: 0000:af:01.0 Status: UP Driver: net_iavf Vlan Mode: Trunk Vlan: 100 200 300 700-705 2001 Rewrite: Rule_1 Scheduler: sch1 RX packets:0 bytes:0 errors:0 TX packets:20 bytes:1200 errors:0 Drops:0 TX port packets:20 errors:0
purel2cli --qos sch sch1 Scheduler name: sch1 Scheduler Index: 0 ===================================== forwarding-class priority_map ===================================== best-effort 0 expedited-forwarding 0 assured-forwarding 2 network-control 0
vif0/1 PCI: 0000:af:01.0 (Speed 10000, Duplex 1) Type:Physical HWaddr:46:d5:f3:fc:fc:92 Vrf:0 Flags:L2Vof QOS:-1 Ref:42 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Fabric Interface: 0000:af:01.0 Status: UP Driver: net_iavf Vlan Mode: Trunk Vlan: 100 200 300 700-705 2001 Rewrite: Rule_1 Scheduler: sch1 RX packets:0 bytes:0 errors:0 TX packets:20 bytes:1200 errors:0 Drops:0 TX port packets:20 errors:0