Table of Contents
Configure a Buffer in the Traditional Model
Example model & SONiC version:
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 provided 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 provides 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 the 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 or queue to egress to the buffer profile. It provides the ability to designate a buffer profile for traffic going through a certain queue of a port. Typically, queues 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, 300m, and 80000m cable length values are supported. When updating the cable length of a port, the BUFFER_PG is not updated.
Netberg SONiC comes with pre-defined balanced profiles. You can load them by issuing the “qos reload” command.
admin@sonic:~$ sudo config qos reload
Operation not completed successfully, please save and reload configuration.
Running command: /usr/local/bin/sonic-cfggen -d --write-to-db -t /usr/share/sonic/platform/aurora-621/buffers.json.j2,config-db -t /usr/share/sonic/platform/aurora-621/qos.json.j2,config-db -y /etc/sonic/sonic_version.yml
admin@sonic:~$ sudo config save -y
admin@sonic:~$ sudo config reload -y
Buffers and QoS configuration will be rendered from templates.
Expert users can manage If you are going to update the configuration of the entire sonic in batch mode, follow the steps below:
Then do config qos reload again.
To display BUFFER_POOL and BUFFER_PROFILE tables, run:
admin@sonic:~$ mmuconfig -l
Pool: egress_lossless_pool
---- --------
mode dynamic
size 16189824
type egress
---- --------
Pool: egress_lossy_pool
---- --------
mode dynamic
size 16189824
type egress
---- --------
Pool: ingress_lossless_pool
---- --------
mode dynamic
size 2940941
type ingress
xoff 14704704
---- --------
Pool: ingress_lossy_pool
---- --------
mode dynamic
size 15031475
type ingress
---- --------
Profile: egress_lossless_profile
---------- --------------------
dynamic_th 1
pool egress_lossless_pool
size 0
---------- --------------------
Profile: egress_lossy_profile
---------- -----------------
dynamic_th 1
pool egress_lossy_pool
size 0
---------- -----------------
Profile: ingress_lossless_profile
---------- ---------------------
dynamic_th 1
pool ingress_lossless_pool
size 0
xoff 244706
xon 1746919
xon_offset 18432
---------- ---------------------
Profile: ingress_lossy_profile
---------- ------------------
dynamic_th 1
pool ingress_lossy_pool
size 0
---------- ------------------
Taoyuan, Taiwan, 20th of January 2025. Netberg, the leading provider of open networking solutions, announces support of Ubuntu 24.04 Noble Numbat on its Broadcom-enabled portfolio.
Taoyuan city, Taiwan, 24th of June 2024. Netberg announced the new Aurora 721 100G and Aurora 421 10G switches, which feature programmable pipelines powered by Broadcom StrataXGS® Trident3 Ethernet switch chips.
Taoyuan city, Taiwan, January 24th, 2024. Netberg announced the release of two new models powered by the Broadcom StrataXGS® Trident3 series , the Netberg Aurora 221 1G switch and Aurora 621 25G switch.
Effective January 12, 2024: The following products are now End of Life (EOL) - Aurora 720 and Aurora 620.
Taoyuan city, Taiwan, December 20th, 2023. Netberg updates its Netberg SONiC distribution to release 2022.11 on Aurora 610, Aurora 710, and Aurora 750 P4-Programmable Intel Tofino IFP systems.
Taipei, Taiwan, 14th of November 2022. 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.