HQoS Configuration
Basic QoS Configuration Elements
The figure below shows the dependencies between the various QoS configuration elements.
To configure QoS, perform the following steps which include creating a QoS profile and enabling QoS on a Subscriber-Interface or L3-Interface.
-
Define a QoS profile with classifier, multifield-classifier, class-policer-map, policer, class-queue-map, scheduler-map, and remark-map based on SLAs.
-
Create a Behavioral Aggregate (BA) and/or Multifield (MF) classifier to classify the network traffic at the ingress.
-
Create a policer to police the classified traffic at the ingress with the CIR/PIR defined.
-
Create necessary class-to-policer-map to map the classes to policer levels (mandatory for policing).
-
Create necessary queues with proper size to queue the classified traffic before egressing the traffic.
-
Create queue groups and define queue numbers (1/4/8).
NOTE: For the system to initialize with a single queue in a Queue-Group, a system reboot is required. -
Create the necessary class-to-queue map to map the classes to queues (mandatory for queuing).
-
Specify scheduler(s) with type as required.
-
(Optional) Create the shaper (low-flow / high-flow) and attach it to queue(s) and/or scheduler(s).
-
Specify a scheduler map to define a set of relationships between parent (scheduler or port) and child (queue/queue-group or scheduler) at the egress.
-
(optional) Create Remark-Map for QoS field remarking of the outgoing packet.
-
For the downstream traffic, map the MPLS EXP classifier either to an instance or global entity and/or the Multifield (MF) classifier as a global entity (refer to the figure above.)
-
(optional) Map the MPLS-IPv4/IPv6 remark-map either to an instance or configure it as a global entity.
Priority propagation is enabled by default. To disable the Priority Propagation, we recommend doing this at the beginning and not during an active session. |
Hierarchical QoS
Basic Quality of Service (QoS) is designed to provide a single level of traffic scheduling. In contrast, Hierarchical Quality of Service (HQoS) offers a more sophisticated approach to traffic treatment, utilizing multiple levels of scheduling in a hierarchical manner based on Service Level Agreements (SLAs).
The figure below shows the additional dependencies for Multi-level HQoS.
Below are the figures depicting an example of scheduling hierarchy.
To configure HQoS, map the level-3 to level-5 hierarchy in multi-level HQoS to a different scheduler to represent it and map it to the physical interface.
Configuration Syntax and Commands
The configurations in this section exemplify the setup of Hierarchical Quality of Service (HQoS) for a subscriber with a residential profile and a Service Level Agreement (SLA) of 20Mbps upstream and downstream. The setup also encompasses four different service types, namely Best Effort(BE), Low-Delay(LD), Low-Loss(LL) and Voice(VO). Different services are assigned to various policer levels for upstream traffic based on their respective traffic classes. Meanwhile, for downstream traffic, these same services are assigned to different queues depending on their traffic class. The traffic class is determined by the configuration of either the BA or MF classifier.
The following sections describe the HQoS configuration syntax and commands.
Configuring QoS Profiles
A profile configuration defines the QoS profile that is installed on the subscriber or L3 interfaces. The following sections explain the different elements of the QoS profiles that you can create and attach.
Use the following CLI syntax to configure a QoS profile:
Attribute | Description |
---|---|
<profile-name> |
Specifies the name of the QoS profile |
classifier-name <classifier-name> |
Specifies the name of the BA classifier |
multifield-classifier-name <multifield-classifier-name> |
Specifies the name of the multifield classifier |
class-policer-map-name <class-policer-map-name> |
Specifies the name of the map that associates a class with a policer level. |
policer-name <policer-name> |
Specifies the policer name |
class-queue-map-name <class-queue-map-name> |
Specifies the name of the map that associates a class with a queue |
scheduler-map-name <scheduler-map-name> |
Specifies the name of the scheduler map |
remark-map-name <remark-map-name> |
Specifies the name of the remark map |
egress-class-policer-map-name <egress-class-policer-map-name> |
Specifies the name of the egress Class Policer Map. |
egress-policer-name <egress-policer-name> |
Specifies the name of the egress policer. |
In the following example, the QoS profile residential
is configured with classifier-name subs-pbit-class
, class-policer-map policer-map-residential
, policer policer-residential
, class-queue-map subs-4queues
, scheduler-map subs-4queues-residential
, and remark-map subs-remarking-residential
.
set forwarding-options class-of-service profile residential
set forwarding-options class-of-service profile residential classifier-name subs-pbit-class
set forwarding-options class-of-service profile residential class-queue-map-name subs-4queues
set forwarding-options class-of-service profile residential remark-map-name subs-remarking-residential
set forwarding-options class-of-service profile residential policer-name policer-residential
set forwarding-options class-of-service profile residential class-policer-map-name policer-map-residential
set forwarding-options class-of-service profile residential scheduler-map-name subs-4queues-residential
commit
The following example shows the QoS profile configuration of the residential
profile:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service profile
{
"rtbrick-config:profile": [
{
"profile-name": "residential",
"classifier-name": "subs-pbit-class",
"class-queue-map-name": "subs-4queues",
"remark-map-name": "subs-remarking-residential",
"policer-name": "policer-residential",
"class-policer-map-name": "policer-map-residential",
"scheduler-map-name": "subs-4queues-residential"
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Behavior Aggregate (BA) Classifier Configuration
Use the following CLI syntax to configure the BA classifier:
Attribute | Description |
---|---|
<classifier-name> |
Specifies the classifier name |
match-type <match-type> |
Specifies the type of traffic to classify, that is, ipv4-tos, ipv6-tc, ieee-802.1, exp |
match-type <match-type> codepoint <codepoint> |
Specifies the code-point value based on the match-type |
match-type <match-type> codepoint <codepoint> class <class> |
Specifies the traffic class as class-0, class-1, class-2, class-3, class-4, class-5, class-6, and class-7 |
match-type <match-type> codepoint <codepoint> remark-codepoint <remark-codepoint> |
Specifies the remark-codepoint that is used for remarking |
The following example configures the BA classifier subs-pbit-class
for traffic ieee-802.1
with a match code point 2
classified as class class-1
.
set forwarding-options class-of-service classifier subs-pbit-class match-type ieee-802.1 codepoint 2 class class-1
commit
The following example shows BA classifier configuration.
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service classifier
{
"rtbrick-config:classifier": [
{
"classifier-name": "subs-pbit-class",
"match-type": [
{
"match-type": "ieee-802.1",
"codepoint": [
{
"codepoint": 2,
"class": "class-1"
}
]
}
]
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Multifield Classifier (MFC) Configuration
Use the following CLI syntax to configure the multifield classifier.
Starting from Release 20.10.2, Multifield Classifier configuration requires explicit use of ordinal keywords. |
Attribute | Description |
---|---|
acl <l3v4 | l3v6> <…> |
Specifies the l3v4 / l3v6 ACL rule for multifield classifier configurations. For more information on configuring the ACL match rules, see the sections below. |
IPv4 ACL Configuration Configuration
Use the following CLI syntax to configure the IPv4 ACL Match Configuration for the multifield classifier:
Attribute | Description |
---|---|
<rule-name> |
Specifies the multifield classifier rule name |
ordinal <ordinal-value> |
Specifies the ordinal that is used for traffic policy rule referencing |
match <destination-ipv4-prefix> |
Specifies the destination IPv4 prefix address |
match <destination-ipv4-prefix-list> |
Specifies the destination IPv4 prefix list name |
match <direction> |
Specifies the acl l3 traffic direction match |
match <ip-protocol> |
Specifies the IP protocol such as UDP or TCP |
match <destination-l4-port> |
Specifies the Layer 4 destination port number |
match <ipv4-tos> |
Specifies the IPv4 ToS value |
match <ipv4-dscp> |
Specifies the IPv4 Differentiated Services Code Point (DSCP) value |
match <forward-class> |
Specifies the forward class name |
match <mpls-traffic> |
Specifies the MPLS traffic |
match <source-ipv4-prefix> |
Specifies the source IPv4 prefix address |
match <source-ipv4-prefix-list> |
Specifies the source IPv4 prefix list name |
match <source-l4-port> |
Specifies the Layer 4 source port number |
action forward-class <class> |
class-0, class-1, class-2, class-3, class-4, class-5, class-6, class-7 |
action remark-codepoint <remark-codepoint> |
Specifies the remark-map codepoint value |
Multifield classification commonly matches on IP address fields, the IP protocol type field, or the port number in the UDP or TCP pseudo-header field.
The l3v4
acl-type multifield classifier is configured with a qualifier/match based on ipv4-tos
(128, 160) and source-ipv4-prefix
(132.1.1.3/32) with action as forward-class
(class-0,class-1).
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1001
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1001 match ipv4-tos 128
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1001 match source-ipv4-prefix 132.1.1.3/32
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1001 action forward-class class-0
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1002
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1002 match ipv4-tos 160
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1002 match source-ipv4-prefix 132.1.1.3/32
set forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc ordinal 1002 action forward-class class-1
commit
The following example shows the IPv4 Match Configuration for the multifield classifier:
supervisor@rtbrick>C-BNG.rtbrick.net: cfg> show config forwarding-options class-of-service multifield-classifier acl l3v4 rule global_mfc
{
"rtbrick-config:rule": [
{
"rule-name": "global_mfc",
"ordinal": [
{
"ordinal-value": 1001,
"match": {
"ipv4-tos": 128,
"source-ipv4-prefix": "132.1.1.3/32"
},
"action": {
"forward-class": "class-0"
}
},
{
"ordinal-value": 1002,
"match": {
"ipv4-tos": 160,
"source-ipv4-prefix": "132.1.1.3/32"
},
"action": {
"forward-class": "class-1"
}
}
]
}
]
}
IPv6 ACL Configuration Configuration
Use the following CLI syntax to configure the IPv6 ACL match configuration for the multifield classifier:
Attribute | Description |
---|---|
<rule-name> |
Specifies the multifield classifier rule name |
ordinal <ordinal-value> |
Specifies the ordinal that is used for traffic policy rule referencing |
match <destination-ipv6-prefix> |
Specifies the destination IPv6 prefix address |
match <destination-ipv6-prefix-list> |
Specifies the destination IPv6 prefix list name |
match <ip-protocol> |
Specifies the IP protocol such as UDP or TCP |
match <destination-l4-port> |
Specifies the Layer 4 destination port number |
match <ipv6-tc> |
Specifies the IPv6 traffic class value |
match <forward-class> |
Specifies the forward class name |
match <mpls-traffic> |
Specifies the MPLS traffic |
match <source-ipv6-prefix> |
Specifies the source IPv6 prefix address |
match <source-ipv6-prefix-list> |
Specifies the source IPv6 prefix list name |
match <source-l4-port> |
Specifies the Layer 4 source port number |
action forward-class <class> |
class-0, class-1, class-2, class-3, class-4, class-5, class-6, class-7 |
action remark-codepoint <remark-codepoint> |
Specifies the remark-map codepoint value |
In the following example, the l3v6
acl-type multifield classifier is configured with qualifier/match based on ipv6-tc
(128, 160) and source-ipv6-prefix
(132:1:1::3/32) with action as forward-class
(class-0,class-1).
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 match ipv6-tc 128
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 match source-ipv6-prefix 132::1::3/32
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 action forward-class class-0
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 match ipv6-tc 160
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 match source-ipv6-prefix 132:1:1::3/32
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 action forward-class class-1
commit
The following example shows the IPv6 match configuration for the multifield classifier:
supervisor@rtbrick>C-BNG.rtbrick.net: cfg> show config forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc
{
"rtbrick-config:rule": [
{
"rule-name": "global_mfc",
"ordinal": [
{
"ordinal-value": 1001,
"match": {
"ipv6-tc": 128,
"source-ipv6-prefix": "132:1:1::3/32"
},
"action": {
"forward-class": "class-0"
}
},
{
"ordinal-value": 1002,
"match": {
"ipv6-tc": 160,
"source-ipv6-prefix": "132:1:1::3/32"
},
"action": {
"forward-class": "class-1"
}
}
]
}
]
}
IPv4/IPv6 Priority Configuration
Use the following CLI syntax to configure the IPv4/IPv6 priority configuration:
Attribute | Description |
---|---|
<rule-name> |
Specifies the multifield classifier rule name |
ordinal <ordinal-value> |
Specifies the ordinal that is used for traffic policy rule referencing |
ordinal <ordinal-value> <priority> |
Specify the ACL priority value. Range: 0 - 65535. |
The following example configures the l3v6
acl-type multifield classifier with qualifier/match based on ipv6-tc
(128) and source-ipv6-prefix
(132:1:1::3/32) with action as forward-class
(class-0,class-1) along with priority
value (100, 200). When there are multiple qualifiers or actions, the one with the higher priority takes precedence over the others.
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 match ipv6-tc 128
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 match source-ipv6-prefix 132::1::3/32
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 priority 100
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1001 action forward-class class-0
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 match ipv6-tc 128
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 match source-ipv6-prefix 132:1:1::3/32
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 priority 200
set forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc ordinal 1002 action forward-class class-1
commit
The following example shows the IPv4 priority configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service multifield-classifier acl l3v4 rule rtb_mfc
supervisor@rtbrick>C-BNG.rtbrick.net: cfg> show config forwarding-options class-of-service multifield-classifier acl l3v6 rule global_mfc
{
"rtbrick-config:rule": [
{
"rule-name": "global_mfc",
"ordinal": [
{
"ordinal-value": 1001,
"priority": 100,
"match": {
"ipv6-tc": 128,
"source-ipv6-prefix": "132:1:1::3/32"
},
"action": {
"forward-class": "class-0"
}
},
{
"ordinal-value": 1002,
"priority": 200,
"match": {
"ipv6-tc": 160,
"source-ipv6-prefix": "132:1:1::3/32"
},
"action": {
"forward-class": "class-1"
}
}
]
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Policer Configuration
Use the following CLI syntax to configure the QoS policer:
Attribute | Description |
---|---|
<policer-name> |
Specifies the policer name. |
<levels> |
Specifies levels in the policer. There is only support for the policer levels 1 and 4. |
<type> |
Specifies the policer type. |
<flag> |
Specifies the policer flags. |
level1-rates cir <cir> |
Specifies the committed information rate (CIR) in Kilobits per second (Kbps) for level-1. The same is applicable for level-2 to level-4. |
level1-rates pir <pir> |
Specifies the peak information rate (PIR) in Kilobits per second (Kbps) for level-1. The same is applicable for level-2 to level-4. |
level1-rates cbs <cbs> |
Specifies the Committed burst size (CBS) in Kilobits per second (Kbps) for level-1. The same is applicable for level-2 to level-4. |
level1-rates pbs <pbs> |
Specifies the peak burst size (PBS) in Kilobits per second (Kbps) for level-1. The same is applicable for level-2 to level-4. |
level1-rates max-cir <max-cir> |
Specifies the maximum for the level-1 committed information rate (CIR) in kilobits per second (Kbps). The same is applicable for level-2 to level-4. |
level1-rates max-pir <max-pir> |
Specifies the maximum for the level-1 peak information rate (PIR) in Kilobits per second (Kbps). The same is applicable for level-2 to level-4. |
The following example configures the QoS policer policer-residential
with multi-level policers (levels=4), CIR, PIR rates, and burst sizes (CBS, PBS) for each level (level-1, level-2, level-3 and level-4). Also, two-rate-three-color
policer type and color-blind as the default configuration. The four-level Policer configuration is as follows:
-
Level-1(cir=2Mbps, pir=2.5Mbps, cbs=1000, pbs=1000)
-
Level-2(cir=3Mbps, pir=3.5Mbps, cbs=1000, pbs=1000)
-
Level-3(cir=4Mbps, pir=4.5Mbps, cbs=1000, pbs=1000)
-
Level-4(cir=1Mbps, pir=1.5Mbps, cbs=1000, pbs=1000)
set forwarding-options class-of-service policer policer-residential
set forwarding-options class-of-service policer policer-residential level1-rates cir 2000
set forwarding-options class-of-service policer policer-residential level1-rates cbs 1000
set forwarding-options class-of-service policer policer-residential level1-rates pir 2500
set forwarding-options class-of-service policer policer-residential level1-rates pbs 1000
set forwarding-options class-of-service policer policer-residential level2-rates cir 3000
set forwarding-options class-of-service policer policer-residential level2-rates cbs 1000
set forwarding-options class-of-service policer policer-residential level2-rates pir 3500
set forwarding-options class-of-service policer policer-residential level2-rates pbs 1000
set forwarding-options class-of-service policer policer-residential level3-rates cir 4000
set forwarding-options class-of-service policer policer-residential level3-rates cbs 1000
set forwarding-options class-of-service policer policer-residential level3-rates pir 4500
set forwarding-options class-of-service policer policer-residential level3-rates pbs 1000
set forwarding-options class-of-service policer policer-residential level4-rates cir 1000
set forwarding-options class-of-service policer policer-residential level4-rates cbs 1000
set forwarding-options class-of-service policer policer-residential level4-rates pir 1500
set forwarding-options class-of-service policer policer-residential level4-rates pbs 1000
set forwarding-options class-of-service policer policer-residential levels 4
set forwarding-options class-of-service policer policer-residential type two-rate-three-color
commit
The following example shows the QoS policer level rates configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service policer policer-residential
{
"rtbrick-config:policer": [
{
"policer-name": "policer-residential",
"level1-rates": {
"cir": 2000,
"cbs": 1000,
"pir": 2500,
"pbs": 1000
},
"level2-rates": {
"cir": 3000,
"cbs": 1000,
"pir": 3500,
"pbs": 1000
},
"level3-rates": {
"cir": 4000,
"cbs": 1000,
"pir": 4500,
"pbs": 1000
},
"level4-rates": {
"cir": 1000,
"cbs": 1000,
"pir": 1500,
"pbs": 1000
},
"levels": 4,
"type": "two-rate-three-color"
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Class-Policer-Map Configuration
Use the following CLI syntax to configure the Class-Policer-Map:
Attribute | Description |
---|---|
<class-policer-map-name> |
Specifies the class policer map name, |
class <class> |
Specifies the class such as class-0, class-1, class-2, class-3, class-4, class-5, class-6, class-7 |
class <class> <policer-level> |
Specifies the policer levels. The supported levels are: level-1, level-2, level-3, and level-4 |
Below is an example configuration of the class-policer-map, which sets up level-1 to level-4 policer levels.
-
class-0 mapped to policer level-1
-
class-1 mapped to policer level-2
-
class-2 mapped to policer level-3
-
class-3 mapped to policer level-4
set forwarding-options class-of-service class-policer-map policer-map-residential class class-0 policer-level level-1
set forwarding-options class-of-service class-policer-map policer-map-residential class class-1 policer-level level-2
set forwarding-options class-of-service class-policer-map policer-map-residential class class-2 policer-level level-3
set forwarding-options class-of-service class-policer-map policer-map-residential class class-3 policer-level level-4
commit
The following example shows the class-policer-map configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service class-policer-map policer-map-l2tp
{
"rtbrick-config:class-policer-map": [
{
"class-policer-map-name": "policer-map-residential",
"class": [
{
"class": "class-0",
"policer-level": "level-1"
},
{
"class": "class-1",
"policer-level": "level-2"
},
{
"class": "class-2",
"policer-level": "level-3"
},
{
"class": "class-3",
"policer-level": "level-4"
}
]
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Queue Configuration
Use the following CLI syntax to configure a queue:
Attribute | Description |
---|---|
<queue-name> |
Specifies the queue name |
queue-size <queue-size> |
Specifies the size of the queue in bytes |
<shaper-name> |
(Optional) Specifies the shaper that is associated with the queue |
wred minimum-threshold <minimum-threshold> |
Specifies the minimum average queue size to apply WRED in bytes |
wred maximum-threshold <maximum-threshold> |
Specifies the maximum average queue size to apply WRED in bytes |
wred drop-probability <drop-probability> |
WRED drop probability applied at the maximum threshold |
header-compensation bytes <bytes> |
Specifies the header compensation value |
header-compensation decrement true |
Specifies whether the header compensation value is to be decremented. |
The following example configures four queues with different traffic streams named BE_SUBS
, LD_SUBS
, LL_SUBS
and VO_SUBS
with queue attributes queue-size, queue header-compensation & queue shaper for Best Effort(BE), Low-Delay(LD), Low-Loss(LL) and Voice(VO) Queues.
set forwarding-options class-of-service queue BE_SUBS
set forwarding-options class-of-service queue BE_SUBS queue-size 375000
set forwarding-options class-of-service queue BE_SUBS header-compensation bytes 22
set forwarding-options class-of-service queue BE_SUBS header-compensation bytes 22 decrement true
set forwarding-options class-of-service queue LD_SUBS
set forwarding-options class-of-service queue LD_SUBS queue-size 625000
set forwarding-options class-of-service queue LD_SUBS header-compensation bytes 22
set forwarding-options class-of-service queue LD_SUBS header-compensation bytes 22 decrement true
set forwarding-options class-of-service queue LL_SUBS
set forwarding-options class-of-service queue LL_SUBS queue-size 625000
set forwarding-options class-of-service queue LL_SUBS header-compensation bytes 22
set forwarding-options class-of-service queue LL_SUBS header-compensation bytes 22 decrement true
set forwarding-options class-of-service queue VO_SUBS
set forwarding-options class-of-service queue VO_SUBS queue-size 156250
set forwarding-options class-of-service queue VO_SUBS header-compensation bytes 22
set forwarding-options class-of-service queue VO_SUBS header-compensation bytes 22 decrement true
set forwarding-options class-of-service queue VO_SUBS shaper-name shaper_VO
commit
The following example shows the queue configuration:
supervisor@DT-STD-23-2402>bm14-tst.fsn.rtbrick.net: cfg> show config forwarding-options class-of-service queue
{
"rtbrick-config:queue": [
{
"queue-name": "BE_SUBS",
"queue-size": 375000,
"header-compensation": {
"bytes": 22,
"decrement": "true"
}
},
{
"queue-name": "LD_SUBS",
"queue-size": 625000,
"header-compensation": {
"bytes": 22,
"decrement": "true"
}
},
{
"queue-name": "LL_SUBS",
"queue-size": 625000,
"header-compensation": {
"bytes": 22,
"decrement": "true"
}
},
{
"queue-name": "VO_SUBS",
"queue-size": 156250,
"shaper-name": "shaper_VO",
"header-compensation": {
"bytes": 22,
"decrement": "true"
}
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Queue-Group Configuration
Queue group size: 1 or 4 or 8
Use the following CLI syntax to configure a queue group:
Attribute | Description |
---|---|
<queue-group-name> |
User-defined name for the queue-group |
queue-numbers <queue-numbers> |
Specifies the number of queues in a Queue Group |
The following examples configure the queue group with queue numbers 1 and 4.
set forwarding-options class-of-service queue-group subs-4queues queue-numbers 1
commit
The following example shows the queue group configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service queue-group
{
"rtbrick-config:queue-group": [
{
"queue-group-name": "subs-4queues",
"queue-numbers": 1
}
]
}
supervisor@rtbrick>LEAF01: cfg>
set forwarding-options class-of-service queue-group subs-4queues queue-numbers 4
commit
The following example shows the queue group configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service queue-group
{
"rtbrick-config:queue-group": [
{
"queue-group-name": "subs-4queues",
"queue-numbers": 4
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Class-Queue-Map Configuration
Use the following CLI syntax to configure the class-queue-map:
Attribute | Description |
---|---|
<class-queue-map-name> |
Specifies the class queue map name |
class <class> |
Specifies the class such as class-0, class-1, class-2, class-3, class-4, class-5, class-6, class-7 |
class <class> queue-name <queue-name> |
Specifies the queue name |
The following example configures the class-queue-map for the specific classes and queues:
-
class-0 mapped to queue BE_SUBS
-
class-1 mapped to queue LD_SUBS
-
class-2 mapped to queue LL_SUBS
-
class-3 mapped to queue VO_SUBS
set forwarding-options class-of-service class-queue-map subs-4queues class-0 queue-name BE_SUBS
set forwarding-options class-of-service class-queue-map subs-4queues class-1 queue-name LD_SUBS
set forwarding-options class-of-service class-queue-map subs-4queues class-2 queue-name LL_SUBS
set forwarding-options class-of-service class-queue-map subs-4queues class-3 queue-name VO_SUBS
commit
The following example shows the class-queue-map configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service class-queue-map { "rtbrick-config:class-queue-map": [ { "class-queue-map-name": "subs-4queues", "class": [ { "class-type": "class-0", "queue-name": "BE_SUBS" }, { "class-type": "class-1", "queue-name": "LD_SUBS" }, { "class-type": "class-2", "queue-name": "LL_SUBS" }, { "class-type": "class-3", "queue-name": "VO_SUBS" } ] } ] } supervisor@rtbrick>LEAF01: cfg>
Scheduler Configuration
Use the following CLI syntax to configure a scheduler:
Attribute | Description |
---|---|
<scheduler-name> |
User-defined Scheduler Name |
<scheduler-name> shaper-name <shaper-name> |
(Optional) User-defined Shaper Name |
<scheduler-name> type <type> |
Specifies the Scheduler Type |
<scheduler-name> composite true |
(Optional) keyword to specify the scheduler as composite type |
The following example configures two schedulers: subs-4queues
with scheduler type strict_priority
for the Subscriber level, and pon0
with scheduler type fair_queueing
for PON/GPON level.
set forwarding-options class-of-service scheduler subs-4queues
set forwarding-options class-of-service scheduler subs-4queues shaper shaper_session
set forwarding-options class-of-service scheduler subs-4queues type strict_priority
set forwarding-options class-of-service scheduler pon0
set forwarding-options class-of-service scheduler pon0 type fair_queueing
commit
The following example shows the QoS scheduler configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service scheduler
{
"rtbrick-config:scheduler": [
{
"scheduler-name": "pon0",
"type": "fair_queueing"
},
{
"scheduler-name": "subs-4queues",
"shaper-name": "shaper_session",
"type": "strict_priority"
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Priority Propagation
Use the following CLI syntax to configure priority propagation:
The following example enables priority propagation at the global level to operate schedulers in dual-flow mode, with high-priority and low-priority flows.
set forwarding-options class-of-service global priority-propagation enable
The following example shows the priority propagation:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service global
{
"rtbrick-config:global": {
"priority-propagation": "enable"
}
}
supervisor@rtbrick>LEAF01: cfg>
Shaper Configuration
Use the following CLI syntax to configure a shaper:
Command Arguments
Attribute | Description |
---|---|
<shaper-name> |
User-defined shaper name |
<shaping-rate-high> |
High flow shaping rate in kilobits per second |
<shaping-rate-low> |
Low flow shaping rate in kilobits per second |
|
The following example configures the shaper high-flow and low-flow rates for Subscriber Session Level with shaper-name shaper_session
and Queue Level with shaper-name shaper_VO
.
set forwarding-options class-of-service shaper shaper_session
set forwarding-options class-of-service shaper shaper_session shaping-rate-high 10000
set forwarding-options class-of-service shaper shaper_session shaping-rate-low 100
set forwarding-options class-of-service shaper shaper_VO
set forwarding-options class-of-service shaper shaper_VO shaping-rate-high 2000
set forwarding-options class-of-service shaper shaper_VO shaping-rate-low 0
commit
The following example shows the shaper configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service shaper
{
"rtbrick-config:shaper": [
{
"shaper-name": "shaper_VO",
"shaping-rate-high": 2000,
"shaping-rate-low": 0
},
{
"shaper-name": "shaper_session",
"shaping-rate-high": 10000,
"shaping-rate-low": 100
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Scheduler-Map Configuration
Use the following CLI syntax to configure a Scheduler-Map:
Command arguments
Attribute | Description |
---|---|
<scheduler-map-name> |
Specifies the name of the scheduler-map |
scheduler-name <scheduler-name> |
Specifies the name of the scheduler |
queue-group-name <group-name> |
Specifies the name of the queue-group |
queue-group-name <group-name> queue-name <name> |
Specifies the name of the queue |
queue-group-name <group-name> queue-name <name> connection-point <connection-point> |
Specifies the type of connection point, such as no_priority, strict_priority_0, strict_priority_1, strict_priority_2, strict_priority |
queue-group-name <group-name> queue-name <name> parent-flow <high-flow / low-flow> |
(Optional) Specifies the type of the parent flow, that is high-flow or low-flow. |
queue-group-name <group-name> queue-name <name> parent-scheduler-name <parent-scheduler-name> |
Specifies the name of the parent scheduler |
queue-group-name <group-name> queue-name <name> port-connection |
<port-connection-type> |
Specifies the type of port connection, that is, queue_to_port or scheduler_to_port |
queue-group-name <group-name> queue-name <name> weight <weight> |
The following example configures a scheduler map for OLT with schedmap-olt
and for subscribers with subs-4queues-residential
. OLT scheduler-map schedmap-olt
is directly connected to the physical port and
subs-4queues-residential
connects different queues (BE_SUBS, LL_SUBS,LD_SUBS,VO_SUBS) with different connection-points(strict_priority_3, strict_priority_2, strict_priority_1, strict_priority_0).
set forwarding-options class-of-service scheduler-map schedmap-olt
set forwarding-options class-of-service scheduler-map schedmap-olt scheduler-name pon0
set forwarding-options class-of-service scheduler-map schedmap-olt scheduler-name pon0 port-connection scheduler_to_port
set forwarding-options class-of-service scheduler-map subs-4queues-residential
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name BE_SUBS
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name BE_SUBS parent-flow high-flow
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name BE_SUBS parent-scheduler-name subs-4queues
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name BE_SUBS connection-point strict_priority_3
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LD_SUBS
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LD_SUBS parent-flow high-flow
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LD_SUBS parent-scheduler-name subs-4queues
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LD_SUBS connection-point strict_priority_1
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LL_SUBS
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LL_SUBS parent-flow high-flow
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LL_SUBS parent-scheduler-name subs-4queues
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name LL_SUBS connection-point strict_priority_2
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name VO_SUBS
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name VO_SUBS parent-flow high-flow
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name VO_SUBS parent-scheduler-name subs-4queues
set forwarding-options class-of-service scheduler-map subs-4queues-residential queue-group-name subs-4queues queue-name VO_SUBS connection-point strict_priority_0
set forwarding-options class-of-service scheduler-map subs-4queues-residential scheduler-name subs-4queues
set forwarding-options class-of-service scheduler-map subs-4queues-residential scheduler-name subs-4queues port-connection scheduler_to_port
commit
The following example shows the scheduler-map configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service scheduler-map
{
"rtbrick-config:scheduler-map": [
{
"scheduler-map-name": "schedmap-olt",
"scheduler-name": [
{
"name": "pon0",
"port-connection": "scheduler_to_port"
}
]
},
{
"scheduler-map-name": "subs-4queues-residential",
"queue-group-name": [
{
"group-name": "subs-4queues",
"queue-name": [
{
"name": "BE_SUBS",
"parent-flow": "high-flow",
"parent-scheduler-name": "subs-4queues",
"connection-point": "strict_priority_3"
},
{
"name": "LD_SUBS",
"parent-flow": "high-flow",
"parent-scheduler-name": "subs-4queues",
"connection-point": "strict_priority_1"
},
{
"name": "LL_SUBS",
"parent-flow": "high-flow",
"parent-scheduler-name": "subs-4queues",
"connection-point": "strict_priority_2"
},
{
"name": "VO_SUBS",
"parent-flow": "high-flow",
"parent-scheduler-name": "subs-4queues",
"connection-point": "strict_priority_0"
}
]
}
],
"scheduler-name": [
{
"name": "subs-4queues",
"port-connection": "scheduler_to_port"
}
]
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Remark-Map Configuration
Use the following CLI syntax to configure the remark-map:
Command arguments
Attribute | Description | ||
---|---|---|---|
<remark-map-name> |
Specifies the remaking map name |
||
remark-type <remark-type> |
Specifies the remarking type - ipv4-tos, ipv6-tc, mpls-ipv4, mpls-ipv6, ieee-802.1 |
||
remark-type <remark-type> <match-codepoint> |
Specifies the match code point for the specified remarking type.
|
||
remark-type <remark-type> <match-codepoint> color <color> |
Indicates the color - all, green, yellow. Color is used to set different remark codepoints for the same match-codepoint based on color marked by the Policer. |
||
remark-type <remark-type> <match-codepoint> color <color> remark-codepoint <remark-codepoint> |
Specifies the remarking codepoint |
In the following example, the remark map subs-remarking-residential
is configured with match-codepoint as 128
, 160
, 192
, and 224
. The color is set to "all", and the remark-codepoint is 6
.
set forwarding-options class-of-service remark-map subs-remarking-residential
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 128
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 128 color all
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 128 color all remark-codepoint 6
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 160
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 160 color all
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 160 color all remark-codepoint 6
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 192
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 192 color all
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 192 color all remark-codepoint 6
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 224
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 224 color all
set forwarding-options class-of-service remark-map subs-remarking-residential remark-type ieee-802.1 match-codepoint 224 color all remark-codepoint 6
commit
The following example shows the remark map configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service remark-map remark-exp remark-type ipv6-tc
{
"rtbrick-config:remark-type": [
{
"remark-map-name": "subs-remarking-residential",
"remark-type": [
{
"remark-type": "ieee-802.1",
"match-codepoint": [
{
"match-codepoint": 128,
"color": [
{
"color": "all",
"remark-codepoint": 6
}
]
},
{
"match-codepoint": 160,
"color": [
{
"color": "all",
"remark-codepoint": 6
}
]
},
{
"match-codepoint": 192,
"color": [
{
"color": "all",
"remark-codepoint": 6
}
]
},
{
"match-codepoint": 224,
"color": [
{
"color": "all",
"remark-codepoint": 6
}
]
}
]
}
]
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Global Profile Mapping
Use the following CLI syntax to configure the remark map for a global profile.
Command arguments
Attribute | Description |
---|---|
<remark-map-name> |
Specifies the name of the remark map. |
The following example configures the remark map for a global profile:
set forwarding-options class-of-service global remark-map-name subs-remarking-residential
commit
The following example shows the remark map for a global profile configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service global
{
"rtbrick-config:global": {
"multifield-classifier-name": "global_mfc",
"remark-map-name": "subs-remarking-residential"
}
}
supervisor@rtbrick>LEAF01: cfg>
Remark-map to Instance Mapping
Use the following CLI syntax to configure the remark map for an instance.
Command arguments
Attribute | Description |
---|---|
<instance-name> |
Specifies the name of the instance. |
<remark-map-name> |
Specifies the name of the remark map. |
The following example configures the remark map for the instance default
.
set forwarding-options class-of-service instance default remark-map-name subs-remarking-residential
commit
The following example shows the remark map configuration for the instance default
.
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service instance default
{
"rtbrick-config:instance": [
{
"name": "default",
"remark-map-name": "subs-remarking-residential"
}
]
}
supervisor@rtbrick>LEAF01: cfg>
QoS Global and Instance Configurations
The figure below shows the dependencies for per instance or global classifier and remark-map configurations.
The following example configures the BA classifier subs-exp-class
for traffic exp
with match code point 2
classified as class class-1
.
set forwarding-options class-of-service classifier subs-exp-class match-type exp codepoint 2 class class-1
BA Classifier to Global Mapping
The MPLS classifiers can be applied globally using global configuration.
Attribute | Description |
---|---|
<classifier-name> |
Specifies the classifier name |
The following example shows how to configure the subs-exp-class
BA Classifier for global mapping.
set forwarding-options class-of-service global classifier-name subs-exp-class
commit
The configuration for global mapping to the BA Classifier is shown in the following example.
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service global classifier-name
{
"rtbrick-config:classifier-name": "subs-exp-class"
}
supervisor@rtbrick>LEAF01: cfg>
Single Queue To Global Mapping
The Single-Queue can be enabled with global configuration.
For the system to initialize with a single queue in a Queue-Group, a system reboot is required. |
Attribute | Description |
---|
The following example shows how to enable single-queue in a Queue-Group.
set forwarding-options class-of-service global queue-group-profile single-queue
commit
The configuration for a single queue in Queue-Group is shown in the following example.
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service global
{
"rtbrick-config:global": {
"queue-group-profile": "single-queue"
}
}
supervisor@rtbrick>LEAF01: cfg>
Remark-Map To Global Mapping
Use the following CLI syntax to configure the remark map for a global profile.
Command arguments
Attribute | Description |
---|---|
<remark-map-name> |
Specifies the name of the remark map. |
The following example configures the remark map for a global profile:
set forwarding-options class-of-service global remark-map-name subs-remarking-residential
commit
Multifield Classifier (MFC) to Global Mapping
Use the following CLI syntax to configure the MF Classifier to Global Mapping:
Attribute | Description |
---|---|
<multifield-classifier-name> |
Specifies the name of the multifield classifier |
The following example configures the multifield Classifier to Global Mapping:
set forwarding-options class-of-service global multifield-classifier-name global_mfc
commit
The following example shows the multifield classifier to Global Mapping configuration:
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service global
{
"rtbrick-config:global": {
"multifield-classifier-name": "global_mfc"
}
}
supervisor@rtbrick>LEAF01: cfg>
BA Classifier to Instance Mapping
The MPLS classifiers can be applied at an instance level using instance configuration.
Attribute | Description |
---|---|
<instance> |
Specifies the instance name |
<classifier-name> |
Specifies the classifier name |
The following example shows how to configure the subs-exp-class
BA Classifier for the instance default
.
set forwarding-options class-of-service instance default classifier-name subs-exp-class
commit
The configuration for instance mapping to the BA Classifier is shown in the following example.
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service instance default
{
"rtbrick-config:instance": [
{
"name": "default",
"classifier-name": "subs-exp-class"
}
]
}
supervisor@rtbrick>LEAF01: cfg>
Remark-Map To Instance Mapping
Use the following CLI syntax to configure the remark map for an instance.
Command arguments
Attribute | Description |
---|---|
<instance-name> |
Specifies the name of the instance. |
<remark-map-name> |
Specifies the name of the remark map. |
The following example configures the remark map for the instance default
:
set forwarding-options class-of-service instance default remark-map-name subs-remarking-residential
commit
The configuration for the remark map for an instance is shown in the following example.
supervisor@rtbrick>LEAF01: cfg> show config forwarding-options class-of-service instance default
{
"rtbrick-config:instance": [
{
"name": "default",
"remark-map-name": "subs-remarking-residential"
}
]
}
supervisor@rtbrick>LEAF01: cfg>