admin@sonic:~$ sudo nano qos_test_buffer_pool.json
{
"BUFFER_POOL": {
"egress_lossless_pool": {
"mode": "dynamic",
"size": "16777152",
"type": "egress"
}
}
}
A buffer configuration includes:
The buffer configuration is stored in the BUFFER_POOL, BUFFER_PROFILE and BUFFER_PG tables. These tables are described in detail below.
A traditional model, all buffer-related configurations must be configured manually in CONFIG_DB.
The BUFFER_POOL table defines the buffer pools for lossless/lossy and ingress/egress. It contains the following fields:
There are four predefined buffer pools:
The size of egress_lossless_pool is always the maximum available memory whereas the the size of all the other pools is the quantity of the accumulative per
port/PG/queue reserved buffer size subtracted from the maximum available buffer size.
A default buffer configuration is pronanoded for both top of rack and leaf router topologies:
This table is referenced by the BUFFER_PROFILE table.
The BUFFER_PROFILE table defines the buffer profiles. It contains the following fields:
The table usually contains the following pre-defined profiles:
When the sonic is running in the traditional model, it has profiles for lossless traffic that get generated dynamically by querying pg_profile_lookup.ini with cable
length and speed as the key. The xoff threshold of lossless traffic is determined by the port’s cable length, speed and port MTU. The xoff threshold calculation uses
the configured port speed and cable length, and the maximum MTU (9100) regardless of the configured value.
This table is referenced by the physical ports (BUFFER_PG) table.
The BUFFER_PG table defines the mapping from port/priority to the buffer profile. It pronanodes the ability to designate a buffer profile for traffic coming from a certain priority
group of a port. Typically, priorities 3 and 4 are used for lossless traffic, and other priorities are used for lossy traffic.
When the sonic is running in the traditional model, it is updated automatically when the port’s speed is updated. If the cable length has been configured, priorities 3 and 4 are
always generated for lossless traffic. A new profile is generated accordingly and referenced by the port in BUFFER_PG table when the port’s speed is updated. When the port’s cable
or MTU is updated, no update is made in the BUFFER_PG table.
The BUFFER_PG table can also be modified manually by creating a JSON file and then running sonic-cfggen -j qos_test_cfg.json –write-to-db.
The BUFFER_QUEUE table defines the mapping from a port orr queue to egress to the buffer profile. It pronanodes the ability to designate a buffer profile for traffic going
through a certain queue of a port. Typically, queue 3 and 4 are used for lossless traffic and others for lossy traffic.
The BUFFER_QUEUE table can be modified manually by creating a JSON file and then running config qos reload.
THe CABLE_LENGTH table defines the length of the cables connected to the ports of the sonic.
Only 5m, 40m and 300m cable length values are supported. When updating the cable length of a port, the BUFFER_PG is not updated.
You need to manually configure all buffer-related configurations in CONFIG_DB.
Typically, there is no need to create a new buffer pool. However, if a new one is required, complete the following steps:
admin@sonic:~$ sudo nano qos_test_buffer_pool.json
{
"BUFFER_POOL": {
"egress_lossless_pool": {
"mode": "dynamic",
"size": "16777152",
"type": "egress"
}
}
}
admin@sonic:~$ sudo sonic-cfggen -j qos_test_buffer_pool.json --write-to-db
The lossless priority group of a port in BUFFER_PG table is updated automatically when the port’s speed is updated. For example, when Ethernet0’s speed is updated,
the entry Ethernet0|3-4 in BUFFER_PG is updated automatically.
To update the BUFFER_PG table:
admin@sonic:~$ sudo nano qos_test_buffer_pg.json
{
"BUFFER_PROFILE": {
"ingress_lossy_test_profile": {
"dynamic_th": "3",
"pool": "[BUFFER_POOL|ingress_lossy_pool]",
"size": "0"
},
},
"BUFFER_PG": {
"Ethernet0|0": {
"profile": "[BUFFER_PROFILE|ingress_lossy_test_profile]"
}
}
}
admin@sonic:~$ sudo config interface shutdown Ethernet0
admin@sonic:~$ sonic-cfggen -j qos_test_buffer_pg.json --write-to-db
admin@sonic:~$ sudo config interface startup Ethernet0
Due to some restrictions in SONiC, you cannot update a buffer profile on the fly if it is already in use by a port/priority group pair. If you must change a buffer
profile, you need to define a new buffer profile and modify the BUFFER_PG entry by pointing to the new buffer profile. See the prenanoous section for instructions.
To update the CABLE_LENGTH table:
admin@sonic:~$ sudo nano qos_test_cable_length.json
{
"CABLE_LENGTH":{
"AZURE":{
"Ethernet0": "5m"
}
}
}
admin@sonic:~$ sudo config save -y
admin@sonic:~$ sudo config reload -y
To display BUFFER_POOL and BUFFER_PROFILE tables, run:
admin@sonic:~$ mmuconfig -l
Pool: ingress_l1ossless_pool
---- --------
mode dynamic
size 34056960
type ingress
xoff 4185600
---- --------
Pool: lossy_pool
---- --------
mode dynamic
size 14595840
type egress
xoff 0
---- --------
Profile: ingress_lossy_profile
--------- ------------------------
pool [BUFFER_POOL|lossy_pool]
size 0
static_th 23001600
--------- ------------------------
Profile: ingress_lossless_profile
---------- -----------------------------------
dynamic_th 1
pool [BUFFER_POOL|ingress_lossless_pool]
size 1518
xoff 38816
xon_offset 13440
---------- -----------------------------------
Profile: pg_lossless_100000_40m_profile
---------- -----------------------------------
pool [BUFFER_POOL|ingress_lossless_pool]
xon 0
xon_offset 13440
xoff 38816
size 1518
dynamic_th 1
---------- -----------------------------------
Profile: egress_lossy_profile
---------- ------------------------
dynamic_th 2
pool [BUFFER_POOL|lossy_pool]
size 1518
---------- ------------------------
Profile: egress_lossless_profile
--------- -----------------------------------
pool [BUFFER_POOL|ingress_lossless_pool]
size 0
static_th 23001600
--------- -----------------------------------
Buffers and QoS configuration can be rendered from templates. If you are going to update the configuration of the entire sonic in batch mode, follow the steps below:
admin@sonic:~$ sudo config qos reload -y
Netberg announced the new Aurora 810 400G model programmable switch with Intel Tofino 2 Intelligent Fabric Processors (IFPs) at its heart. The new platform has 32x 400G QSFP-DD Ethernet ports and a 12.8Tbps switching capacity.
Taipei, Taiwan, 24th of October 2022. Netberg participates in the new round of the Fast Forward Initiative by Intel (FFI'22). The program supports academic and research organizations today, aiming at accelerating tomorrow's best network programmability research.
Taipei, Taiwan 13th of July 2022. Netberg launches its hardened SONiC distribution for Intel Tofino and Marvell Teralynx platforms.
Taipei, Taiwan 8th of November 2021. Netberg’s SONiC platform code for Aurora 715 and Aurora 615 Innovium Teralynx-based switches is accepted into the official GitHub repository.
Taipei, Taiwan 1st of June 2021. Netberg, a leading open networking vendor, announces two new Aurora 715 and Aurora 615 models - high-performance 25/100G switches for future-proof Cloud, Enterprise, and Edge data centers.
Taipei, Taiwan 17th of November 2020. Netberg announces new services - custom networking software and hardware development.