QoS Configuration
Priority Map Configuration
Section titled “Priority Map Configuration”show qos map {all|dot1p_to_tc|dscp_to_tc|tc_to_queue}
Section titled “show qos map {all|dot1p_to_tc|dscp_to_tc|tc_to_queue}”[Command]
show qos map {all|dot1p_to_tc|dscp_to_tc|tc_to_queue}
[Purpose]
Display QoS map configuration information
[View]
System view
[Parameter]
Parameter | Description |
---|---|
all | Display all priority mapping configuration information |
dot1p_to_tc | Mapping of 802.1P priority of packet to internal priority |
dscp_to_tc | Mapping of the DSCP priority of a packet to the internal priority |
tc_to_queue | Mapping the priority of packet to the egress queue |
[Use Cases]
sonic(config)# show qos map all{ "DOT1P_TO_TC_MAP":{ "dot1x-tc":{ "0":"0", "1":"1", "2":"2", "3":"3", "4":"4", "5":"5", "6":"6", "7":"7" } }, "DSCP_TO_TC_MAP":{}, "MAP_PFC_PRIORITY_TO_QUEUE":{}, "PFC_PRIORITY_TO_PRIORITY_GROUP_MAP":{}, "TC_TO_PRIORITY_GROUP_MAP":{}, "TC_TO_QUEUE_MAP":{}}
show interface qos-map-bind
Section titled “show interface qos-map-bind”[Command]
show interface qos-map-bind
[Purpose]
Show all Qos map and interface binding configurations
[View]
System view
[Use Cases]
sonic# show interface qos-map-bind{ "Ethernet1":{ "dot1p_to_tc_map":"[DOT1P_TO_TC_MAP|1]" }}
show queue counters
Section titled “show queue counters”[Command]
show queue counters [ interface_name ]
show queue counters clear
[Purpose]
View export queue statistics
[View]
System view
[Use Cases]
sonic(config)# do show queue counters 1 Port TxQ Counter/pkts Counter/bytes Drop/pkts Drop/bytes--------- ----- -------------- --------------- ----------- ------------Ethernet1 ALL0 0 0 0 0Ethernet1 ALL1 0 0 0 0Ethernet1 ALL2 0 0 0 0Ethernet1 ALL3 0 0 0 0Ethernet1 ALL4 0 0 0 0Ethernet1 ALL5 0 0 0 0Ethernet1 ALL6 0 0 0 0Ethernet1 ALL7 0 0 0 0
qos map {dot1p_to_tc|dscp_to_tc|tc_to_queue}
Section titled “qos map {dot1p_to_tc|dscp_to_tc|tc_to_queue}”[Command]
qos map {dot1p_to_tc|dscp_to_tc|tc_to_queue} profile_name pri_origin pri_mapped
[Purpose]
Add QoS mapping table template
[Parameter]
Parameter | Description |
---|---|
dot1p_to_tc | Mapping of 802.1P priority of packet to internal priority |
dscp_to_tc | Mapping of the DSCP priority of a packet to the internal priority |
tc_to_queue | Mapping the priority of packet to the egress queue |
profile_name | Qos_map name |
pri_origin | Pre-mapping priority |
pri_mapped | Priority after mapping |
[View]
System configuration view
[User Scenario]
If user need to prioritize packets received by a device based on the dot1p/DSCP values carried in the packet for QoS scheduling, user can configure the mapping of packet priorities to local priorities using the qos map {dot1p_to_tc|dscp_to_tc} <profile_name> <in_value> command.
The qos map tc_to_queue <profile_name> <in_value> command configures the mapping of local priorities to output queues, allowing you to implement different QoS strategies based on different scheduling methods for the output queues.
[Notes]
By default, the local priority is mapped to the queue is:
tc | queue |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
[Use Cases]
sonic(config)# qos map tc_to_queue queue 0 0sonic(config)# qos map tc_to_queue queue 1 1sonic(config)# qos map tc_to_queue queue 2 2sonic(config)# qos map tc_to_queue queue 3 3sonic(config)# qos map tc_to_queue queue 4 4sonic(config)# qos map tc_to_queue queue 5 5sonic(config)# qos map tc_to_queue queue 6 6sonic(config)# qos map tc_to_queue queue 7 7
qos-map-all bind tc_to_queue
Section titled “qos-map-all bind tc_to_queue”[Command]
qos-map-all bind tc_to_queue profile_name
[Purpose]
All interfaces are bound to QoS map
[Parameter]
Parameter | Description |
---|---|
profile_name | Qos_map name |
[View]
System configuration view
[Use Cases]
sonic(config)# qos-map-all bind tc_to_queue test
qos-map bind {dscp_to_tc|dot1p_to_tc}
Section titled “qos-map bind {dscp_to_tc|dot1p_to_tc}”[Command]
qos-map bind {dscp_to_tc|dot1p_to_tc} profile_name
[Purpose]
Single interface with QoS map binding
[Parameter]
Parameter | Description |
---|---|
profile_name | Qos_map name |
[View]
Interface view
[Use Cases]
sonic(config)# interface ethernet 1sonic(config-if-1)# qos-map bind dscp_to_tc ceshi
Traffic Regulation
Section titled “Traffic Regulation”show traffic-behavior rule
Section titled “show traffic-behavior rule”[Command]
show traffic-behavior rule
[Purpose]
Displays the configured aboute CAR policies
[View]
System view
[Use Cases]
sonic# show traffic-behavior ruleName Type Mode CIR CBS------ ------ ------ ------ -----test BYTES SR_TCM 100000 64000
show traffic-behavior counter
Section titled “show traffic-behavior counter”[Command]
show traffic-behavior counters
[Purpose]
View the hit statistics for the CAR
[View]
System view
[Use Cases]
sonic# show traffic-behavior counters PolicerId Forward DROP Remark-Forward------------- --------- ------ ----------------flow_controll 1049585 12764 1810877
traffic-behavior
Section titled “traffic-behavior”[Command]
traffic-behavior traffic_behavior_Name
no traffic behavior
[Purpose]
Create a traffic behavior and go to the Traffic behavior view, or go to the existing Traffic behavior view, or bind the traffic behavior to interface
[Purpose]
traffic-behavior-name traffic behavior name
[View]
System view, Interface view
[Use Cases]
sonic# configure terminalsonic(config)# traffic-behavior testsonic(config-traffic-behavior-test)#
car {sr-tcm|tr-tcm} meter-type {bytes|packets}
Section titled “car {sr-tcm|tr-tcm} meter-type {bytes|packets}”[Command]
car {sr-tcm|tr-tcm} [meter-type {bytes|packets}] [cir CIR_value ] [cbs CBS_value ] [pir PIR_value ]
[pbs PBS_value ] [yellow-packet-action {DROP|FORWARD|REMARK}] [red-packet-action {DROP|FORWARD|REMARK}] [remark-dot1p Dot1p_value ] [remark-dscp Dscp_value ] [remark-tc Tc_value ]
[Purpose]
Create a CAR template to bind to traffic behavior
[Parameter]
Parameter | Description |
---|---|
sr-tcm | Single bucket single speed mode, this mode only requires the configuration of cir and cbs |
tr-tcm | Double buckets and double speed mode |
meter-type {bytes|packets} | If meter-type mode is bytes:cir, pir in kBps, cbs, pbs in byteIf meter-type mode is packets:cir, pir in Kpps, cbs, pbs in packetDefault mode is bytes |
CIR_value | Specifies the committed information rate (CIR), which is the allowed rate at which traffic can pass through |
CBS_value | Specifies the committed burst size (CBS), which is the average volume of burst traffic that can pass through an interface. |
PIR_value | Specifies the peak information rate (PIR), which is the maximum rate at which traffic can pass through. |
PBS_value | Specifies the peak burst size (PBS), which is the maximum volume of burst traffic that can pass through an interface. |
[View]
Traffic behavior view
[Notes]
When the burst size of the message < cbs value, the message is marked as green
When cbs value < burst size < pbs value, the message is marked yellow
When burst size > pbs value, the message is marked as red
no car This command removes the CAR template
[Use Cases]
sonic# configure terminalsonic(config)# traffic-behavior testsonic(config-traffic-behavior-test)# car sr-tcm meter-type PACKETS cir 1000000
traffic-behavior bind
Section titled “traffic-behavior bind”[Command]
traffic-behavior bind policer_name
no traffic-behavior bind
[Purpose]
Bind traffic behavior to the interface
[View]
Interface view
[Use Cases]
sonic(config)# interface ethernet 1sonic(config-if-1)# traffic-behavior bind test1
Queue Scheduling
Section titled “Queue Scheduling”show interface uc-tx-queue
Section titled “show interface uc-tx-queue”[Command]
show interface uc-tx-queue
[Purpose]
Display the queue scheduling method of the interface
[View]
System view
[Use Cases]
sonic# show interface uc-tx-queue{ "Ethernet1|0":{ "SCHEDULER|scheduler.Ethernet1_0":{ "type":"STRICT" } }, "Ethernet1|2":{ "SCHEDULER|scheduler.Ethernet1_2":{ "type":"STRICT" } }}
uc-tx-queue scheduler queue_id mode [STRICT|DWRR]
Section titled “uc-tx-queue scheduler queue_id mode [STRICT|DWRR]”[Command]
uc-tx-queue scheduler queue_id mode STRICT
uc-tx-queue scheduler queue_id mode DWRR weight
uc-tx-queue scheduler
[Purpose]
Configure a scheduling mode for queues on an interface
[Parameter]
Parameter | Description |
---|---|
queue_id | Queue ID, value range: 0~7 |
STRICT | Enable strict priority queuing |
DWRR | Enable DWRR priority queuing |
weight | Weight of a queue, Value range: 0~100 |
[View]
Interface view
[Usage Scenario] In a network, the queue scheduling algorithm is a core mechanism for implementing Quality of Service (QoS) control. It manages the usage of link bandwidth for different types of packets, ensuring that various data streams receive services at different levels. Different queues under the same interface can adopt a mixed scheduling mode of STRICT and DWRR. In this mode, queues configured with STRICT mode based on priority are scheduled first. When there are no packets in the STRICT mode queues, the system schedules DWRR queues based on their weights. By default, the scheduling method for queues is DWRR (Deficit Weighted Round Robin), with equal weights of 1. This configuration allows network administrators to manage different types of traffic more flexibly, ensuring that high-priority traffic receives faster processing, while low-priority traffic can still effectively utilize link bandwidth.
[Use Cases]
sonic(config)# interface ethernet 1sonic(config-if-1)# uc-tx-queue scheduler 0 mode strictsonic(config-if-1)# uc-tx-queue scheduler 1 mode strictsonic(config-if-1)# uc-tx-queue scheduler 2 mode DWRR weight 80sonic(config-if-1)# uc-tx-queue scheduler 3 mode DWRR weight 80
uc-tx-queue scheduler queue_id
Section titled “uc-tx-queue scheduler queue_id”[Command]
uc-tx-queue scheduler queue_id [pir PIR_value ][pbs PBS_value ]
[Purpose]
Configure queue rate limiting
[Parameter]
Parameter | Description |
---|---|
pir | Specifies the peak information rate of the queue, the unit is byte/s |
pbs | Specifies the peak burst size of the queue, the unit is byte |
[View]
Interface view
[Use Cases]
sonic(config)# interface ethernet 1sonic(config-if-1)# uc-tx-queue scheduler 0 pir 1000