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
[Parameter]
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
[View]
System view
[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 [interface-name]
Section titled “show queue counters [interface-name]”[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 1Port 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 type profile_name pri_origin pri_mapped
Section titled “qos map type profile_name pri_origin pri_mapped”[Command]
qos map type profile_name pri_origin pri_mapped
[Purpose]
Add QoS mapping table template
[Parameter]
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
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> <value> command. The qos map tc_to_queue <profile_name> <in_value> <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 |
The DSCP/dot1p priority to the local priority is mapped to priority 0.
[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 profile_name
Section titled “qos-map-all bind tc_to_queue profile_name”[Command]
qos-map-all bind tc_to_queue profile_name
[Purpose]
All interfaces are bound to QoS map
[Parameter]
profile_name qos_map name
[View]
System configuration view
[Use Cases]
sonic(config)# qos-map-all bind tc_to_queue test
qos-map bind type profile_name
Section titled “qos-map bind type profile_name”[Command]
qos-map bind type profile_name
[Purpose]
Single interface with QoS map binding
[Parameter]
type dot1p_to_tc,dscp_to_tc, tc_to_queue
profile_name qos_map name
[View]
Interface view
[Use Cases]
sonic(config)# qos-map bind dscp_to_tc test
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 counters
Section titled “show traffic-behavior counters”[Command]
show traffic-behavior counters
[Purpose]
View the hit statistics for the CAR
[View]
System view
[Use Cases]
sonic# show traffic-behavior countersPolicerId Forward DROP Remark-Forward------------- --------- ------ ----------------flow_controll 1049585 12764 1810877
traffic-behavior traffic-behavior-name
Section titled “traffic-behavior traffic-behavior-name”[Command]
traffic-behavior traffic-behavior-name
no traffic behavior traffic-behavior-name
[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)#
[Command]
car {sr-tcm|tr-tcm} [meter-type {bytes|packets}] cir cir [cbs cbs] [pir pir][pbs pbs] [yellow-packet-action {DROP|FORWARD|REMARK}] [red-packet-action {DROP|FORWARD|REMARK}] [remark-dot1p value] [remark-dscp value] [remark-tc value]
[Purpose]
Create a CAR template to bind to traffic behavior
[Parameter]
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 | If meter-type mode is bytes: cir, pir in kBps, cbs, pbs in byte If meter-type mode is packets: cir, pir in kpps, cbs, pbs in packet Default mode is bytes |
cir | Specifies the committed information rate (CIR), which is the allowed rate at which traffic can pass through. |
cbs | Specifies the committed burst size (CBS), which is the average volume of burst traffic that can pass through an interface. |
pir | Specifies the peak information rate (PIR), which is the maximum rate at which traffic can pass through. |
pbs | Specifies the peak burst size (PBS), which is the maximum volume of burst traffic that can pass through an interface. |
red-packet-action {DROP|FORWARD|REMARK}/ yellow-packet-action {DROP|FORWARD|REMARK} |
Specifies the packet color. The packet color is determined by cbs cbs-value and pbs pbs-value of this command. |
[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 1000
traffic-behavior bind traffic-behavior-name
Section titled “traffic-behavior bind traffic-behavior-name”[Command]
traffic-behavior bind [egress] traffic-behavior-name
no traffic-behavior bind traffic-behavior-name
[Purpose]
Bind traffic behavior to the interface
[Parameter]
egress Bind in the direction of the output 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 [pir value] [pbs value]
uc-tx-queue scheduler queue_id mode DWRR [weight value] [pir value] [pbs value]
uc-tx-queue scheduler unicast
[Purpose]
Configure a scheduling mode for queues on an interface
[Parameter]
queue_id Queue ID, value range: 0~7
STRICT Enable strict priority queuing
DWRR Enable DWRR priority queuing
weight <value> 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 {pir|pbs}
Section titled “uc-tx-queue scheduler queue_id {pir|pbs}”[Command]
uc-tx-queue scheduler queue_id {pir|pbs}
[Purpose]
Configure queue rate limiting
[Parameter]
pir <value> Specifies the peak information rate of the queue, the unit is byte/s
pbs <value> 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
Traffic Shaping
Section titled “Traffic Shaping”port-shaper enable pir pbs
Section titled “port-shaper enable pir pbs”[Command]
port-shaper enable pir pbs
[Purpose]
Configure interface traffic shaping
[Parameter]
pir <value> Specifies the peak information rate of the queue, the unit is byte/s
pbs <value> Specifies the peak burst size of the queue, the unit is byte
[View]
Interface view
[Usage Scenario]
The traffic shaping of the interface can be directly configured based on the interface, and the effective direction is the output direction of the interface.
[Use Cases]
sonic(config)# interface ethernet 1sonic(config-if-1)# port-shaper enable 5000000 2000000