Guaranteed minimum bandwidth (GMB)

GMB provides a method for ensuring that each of a given port's outbound traffic priority queues has a specified minimum consideration for sending traffic out on the link to another device. This can prevent a condition where applications generating lower-priority traffic in the network are frequently or continually "starved" by high volumes of higher-priority traffic. You can configure GMB per-port and, in the case of the HP 2920, 3800, and 5400R switches, per static trunk.

GMB operation


[NOTE: ]

NOTE: Earlier software releases supported GMB configuration on a per-port basis. Beginning with software release 15.18, the HP 2920, 3800, and 5400R switches also support GMB configuration on static trunks. (GMB configuration is not supported on dynamic LACP or distributed (DT) trunks.

For application to static trunk interfaces (HP 2920, 3800, and 5400r only), GMB enforcement is applied individually to each port belonging to the trunk, and not to the trunk as a whole.


For any port, group of ports or (for the 2920, 3800, or 5400R switches), static trunks, you can use the default minimum bandwidth settings for each outbound priority queue or a customized bandwidth profile. It is also possible to disable the feature entirely.

The switch services per-port outbound traffic in a descending order of priority; that is, from the highest priority to the lowest priority. By default, each port (including each port in a static trunk) offers eight prioritized, outbound traffic queues. Tagged VLAN traffic is prioritized according to the 802.1p priority the traffic carries. Untagged VLAN traffic is assigned a priority of 0 (normal).

Per-port outbound priority queues

802.1p Priority settings in tagged VLAN packets[a] Outbound priority queue for a given port
1 (low) 1
2 (low) 2
0 (normal) 3
3 (normal) 4
4 (medium) 5
5 (medium) 6
6 (high) 7
7 (high) 8

[a] The switch processes outbound traffic from an untagged port at the "0" (normal) priority level.

You can use GMB to reserve a specific percentage of each port's available outbound bandwidth for each of the eight priority queues. This means that regardless of the amount of high-priority outbound traffic on a port (including each port in a static trunk), you can ensure that there will always be bandwidth reserved for lower-priority traffic.

Since the switch services outbound traffic according to priority (highest to lowest), the highest-priority outbound traffic on a given port automatically receives the first priority in servicing. Thus, in most applications, it is necessary only to specify the minimum bandwidth you want to allocate to the lower priority queues. In this case, the high-priority traffic automatically receives all unassigned bandwidth without starving the lower-priority queues.

Conversely, configuring a bandwidth minimum on only the high-priority outbound queue of a port or static trunk (and not providing a bandwidth minimum for the lower-priority queues) is not recommended, because it may "starve" the lower-priority queues.


[NOTE: ]

NOTE: For a given port, when the demand on one or more outbound queues exceeds the minimum bandwidth configured for those queues, the switch apportions unallocated bandwidth to these queues on a priority basis. As a result, specifying a minimum bandwidth for a high-priority queue but not specifying a minimum for lower-priority queues can starve the lower-priority queues during periods of high demand on the high priority queue. For example, if a port or static trunk configured to allocate a minimum bandwidth of 80% for outbound high-priority traffic experiences a demand above this minimum, this burst starves lower-priority queues that do not have a minimum configured. Normally, this will not altogether halt lower priority traffic on the network, but will likely cause delays in the delivery of the lower-priority traffic.

The sum of the GMB settings for all outbound queues on a given port or static trunk cannot exceed 100%.


Impacts of QoS queue configuration on GMB operation

The section Configuring GMB for outbound traffic assumes the ports on the switch offer eight prioritized, outbound traffic queues. This may not always be the case, however, because the switch supports a QoS queue configuration feature that allows you to reduce the number of outbound queues from eight (the default) to four queues, or two.

Changing the number of queues affects the GMB commands (interface bandwidth-min and show bandwidth output) such that they operate only on the number of queues currently configured. If the queues are reconfigured, the guaranteed minimum bandwidth per queue is automatically re-allocated according to the following percentages:

Default GMB percentage allocations per QoS queue configuration

802.1p priority 8 queues (default) 4 queues 2 queues
1 (lowest) 2% 10% 90%
2 3%
0 (normal) 30% 70%
3 10%
4 10% 10% 10%
5 10%
6 15% 10%
7 (highest) 20%

[NOTE: ]

NOTE: For more information on queue configuration and the associated default minimum bandwidth settings, see the chapter "Quality of Service (QoS): Managing Bandwidth More Effectively" in the Advanced Traffic Management Guide for your switch.


Configuring GMB for outbound traffic

For any port, group of ports, or static trunk, you can configure either the default minimum bandwidth settings for each outbound priority queue or a customized bandwidth allocation. For most applications, HP recommends configuring GMB with the same values on all ports on the switch so that the outbound traffic profile is consistent for all outbound traffic. However, there may be instances where it may be advantageous to configure special profiles on connections to servers or to the network infrastructure (such as links to routers, other switches, or to the network core).

Syntax:

[no] int <port-list|trk_#> bandwidth-min output

Configures the default minimum bandwidth allocation for the outbound priority queue for each port or static trunk in the <port-list|trk_#>. In the eight-queue configuration, the default values per priority queue are:

  • Queue 1 (low priority): 2%

  • Queue 2 (low priority): 3%

  • Queue 3 (normal priority): 30%

  • Queue 4 (normal priority): 10%

  • Queue 5 (medium priority): 10%

  • Queue 6 (medium priority): 10%

  • Queue 7 (high priority): 15%

  • Queue 8 (high priority): 20%

The no form of the command disables GMB for all ports and trunks in the <port-list>. In this state, which is the equivalent of setting all outbound queues on a port or static trunk to 0 (zero), a high level of higher-priority traffic can starve lower-priority queues, which can slow or halt lower-priority traffic in the network.

You can configure bandwidth minimums from either the global configuration level (as shown above) or from the port or static trunk context level. For information on outbound port queues, see Per-port outbound priority queues.

Syntax:

[no] int <<port-list|trk_#>> bandwidth-min output [0-100|strict] [0-100]

Select a minimum bandwidth.

For ports and trunks in <port-list|trk_#>, specifies the minimum outbound bandwidth as a percent of the total bandwidth for each outbound queue. The queues receive service in descending order of priority of each port.


[NOTE: ]

NOTE: For application to static trunk interfaces (HP 2920, 3800, and 5400R only), GMB enforcement is applied individually to each port belonging to the trunk, and not to the trunk as a whole.


You must specify a bandwidth percent value for all except the highest priority queue, which may instead be set to "strict" mode. The sum of the bandwidth percentages below the top queue cannot exceed 100%. (0 is a value for a queue percentage setting.)

Configuring a total of less than 100% across the eight queues results in unallocated bandwidth that remains harmlessly unused unless a given queue becomes oversubscribed. In this case, the unallocated bandwidth is apportioned to oversubscribed queues in descending order of priority. For example, if you configure a minimum of 10% for queues 1 to 7 and 0% for queue 8, the unallocated bandwidth is available to all eight queues in the following prioritized order:

Queue 8 (high priority)
Queue 7 (high priority)
Queue 6 (medium priority)
Queue 5 (medium priority)
Queue 4 (normal priority)
Queue 3 (normal priority)
Queue 2 (low priority)
Queue 1 (low priority)

A setting of 0 (zero percent) on a queue means that no bandwidth minimum is specifically reserved for that queue for each of the ports (including trunked ports) in the <port-list|trk_#>.

Also, there is no benefit to setting the high-priority queue (queue 8) to 0 (zero) unless you want the medium queue (queues 5 and 6) to be able to support traffic bursts above its guaranteed minimum.

[strict]: Provides the ability to configure the highest priority queue as strict. Per-queue values must be specified in priority order, with queue 1 having the lowest priority and queue 8 (or 4, or 2) having the highest priority (the highest queue is determined by how many queues are configured on the switch. Two, four, and eight queues are permitted (see the qos queue-config command). The strict queue is provided all the bandwidth it needs. Any remaining bandwidth is shared among the non-strict queues based on need and configured bandwidth profiles (the profiles are applied to the leftover bandwidth in this case). The total sum of percentages for non-strict queues must not exceed 100.


[NOTE: ]

NOTE: Configuring 0% for a queue can result in that queue being starved if any higher queue becomes over-subscribed and is then given all unused bandwidth.

The switch applies the bandwidth calculation to the link speed the port or trunk is currently using. For example, if a 10/100 Mbs port negotiates to 10 Mbps on the link, it bases its GMB calculations on 10 Mbps, not 100 Mbps.

Use show bandwidth output <<port-list|trk_#>> to display the current GMB configuration. (The show config and show running commands do not include GMB configuration data.)


Example:

For example, suppose you want to configure the following outbound minimum bandwidth availability for ports 1 and 2:

Priority of outbound port queue Minimum bandwidth % Effect on outbound bandwidth allocation
8 20%

Queue 8 has the first priority use of all outbound bandwidth not specifically allocated to queues 1 to 7.

If, For example, bandwidth allocated to queue 5 is not being used and queues 7 and 8 become oversubscribed, queue 8 has first-priority use of the unused bandwidth allocated to queue 5.

7 15%

Queue 7 has a GMB of 15% available for outbound traffic. If queue 7 becomes oversubscribed and queue 8 is not already using all of the unallocated bandwidth, queue 7 can use the unallocated bandwidth.

Also, any unused bandwidth allocated to queues 6 to queue 1 is available to queue 7 if queue 8 has not already claimed it.

6 10%

Queue 6 has a GMB of 10% and, if oversubscribed, is subordinate to queues 8 and 7 in priority for any unused outbound bandwidth available on the port.

5 10%

Queue 5 has a GMB of 10% and, if oversubscribed, is subordinate to queues 8, 7, and 6 for any unused outbound bandwidth available on the port.

4 10%

Queue 4 has a GMB of 10% and, if oversubscribed, is subordinate to queues, 8, 7, 6, and 5 for any unused outbound bandwidth available on the port.

3 30%

Queue 3 has a GMB of 30% and, if oversubscribed, is subordinate to queues, 8, 7, 6, 5, and 4 for any unused outbound bandwidth available on the port.

2 3%

Queue 2 has a GMB of 3% and, if oversubscribed, is subordinate to queues, 8, 7, 6, 5, 4, and 3 for any unused outbound bandwidth available on the port.

1 2%

Queue 1 has a GMB of 2% and, if oversubscribed, is subordinate to all the other queues for any unused outbound bandwidth available on the port.

Either of the following commands configures ports 1 through 5 with bandwidth settings:

HP Switch(config) # int 1-5 bandwidth-min output 2 3 30 10 10 10 15 strict
HP Switch(eth-1-5) # bandwidth-min output 2 3 30 10 10 10 15 strict

Viewing the current GMB configuration

This command displays the per-port GMB configuration in the running-config file.

Syntax:

show bandwidth output <port-list|trk_#>

Without <port-list|trk_#>, this command lists the GMB configuration for all ports and static trunks on the switch.

With <port-list|trk_#>, this command lists the GMB configuration for the specified ports and static trunks.

This command operates the same way in any CLI context. If the command lists Disabled for a port or trunk, there are no bandwidth minimums configured for any queue on the port or trunk. (See the description of the no form of the bandwidth-min output command.)

Listing the GMB configuration displays the GMB configuration resulting from either of the above commands.

Listing the GMB configuration

HP Switch(config)# show bandwidth output 1-5, trk1
 Outbound Guaranteed Minimum Bandwidth %
  Port   Q1  Q2     Q3  Q4     Q5  Q6  Q7  Q8
  ------ --- ------ --- ------ --- --- --- ------
  1      2   3      30  10     10  10  15  strict
  2      2   3      30  10     10  10  15  strict
  3      2   3      30  10     10  10  15  strict
  4      2   3      30  10     10  10  15  strict
  5      2   3      30  10     10  10  15  strict
  Trk1   2   3      30  10     10  10  15  strict

GMB operating notes

Impact of QoS queue configuration on GMB commands

Changing the number of queues causes the GMB commands (interface bandwidth-min and show bandwidth output) to operate only on the number of queues currently configured. In addition, when the qos queue-config command is executed, any previously configured bandwidth-min output settings are removed from the startup configuration. For the default GMB percentage allocations per number of queues, see Default GMB percentage allocations per QoS queue configuration.