[Contents] [Prev] [Next] [Index] [Report an Error]


Queue Profiles

A queue is a set of FIFO buffers that buffer packets on the data path. QoS associates queues with a traffic class/interface pair. For example, if you create 4,000 IP interfaces and configure each interface with four traffic classes, then 16,000 queues are created.

The E-series router dynamically manages the shared memory on egress line modules to provide a good balance between sharing the memory among queues and protecting an individual queue's claim on its fair share of the egress memory.

When egress packet memory is in high demand and aggregate utilization of the 32-MB memory is high, queue lengths are set to lengths that strictly partition egress memory into per-queue memory sections. This conservative buffer-management strategy reserves a fair share of buffers for each queue, so that high bandwidth consumers cannot starve out moderate traffic consumers by allocating all the shared memory resource for themselves.

When egress packet memory is in low demand, a more liberal buffer management strategy is used to provide active queues with more access to the shared memory resource.

The router dynamically varies queue lengths for all queues as the real-time demand on the egress packet memory changes. You can configure limits to prevent the router from setting queue lengths too low or too high.

Static Oversubscription

Static oversubscription lets the router vary queue thresholds based on the number of queues currently configured, which is relatively static. Static oversubscription is based on the assumption that, when a few queues are configured, it is likely that many of the queues will be active at the same time; and when a large number of queues are configured, it is likely that fewer queues will be active at the same time.

When few queues are configured, buffer memory is strictly partitioned between queues to ensure that buffers are available for all queues. As the number of configured queues increases, buffer memory is increasingly oversubscribed to allow more buffer sharing. It is unnecessary and wasteful to reserve buffer space for all queues when many are expected to be idle.

Dynamic Oversubscription

Dynamic oversubscription lets the router vary queue thresholds based on the amount of egress buffer memory in use. The router divides egress buffer memory into eight regions of 4 MB each. When buffer memory is in low demand, queues are given large amounts of buffer memory. As the demand for buffer memory increases, queues are given progressively smaller amounts of buffer memory.

Overriding Default Queue Allocation

To prevent the router from setting queue thresholds too low or too high, you can specify minimum and maximum queue thresholds. You can also specify the conformed length and exceeded length as percentages of the committed length.

You may want to limit latency of your multicast traffic by bounding the queue length. The following example configures the multicast queues so that the committed threshold never exceeds 20 KB, even when the egress memory is lightly loaded. The forfeited buffers are allocated to other queues.

host1(config)#queue-profile multicast
host1(config-queue)#committed-length 0 20000
host1(config-queue)#exit

You can also set the buffer weight to ensure that some sets of queues get higher thresholds than others. Buffer weight is analogous to weight in a scheduler profile. It directs the router to set the queue thresholds proportionately.

For example, suppose a line module with 4000 IP interfaces is configured with four queues per IP interface, corresponding to four traffic classes. Suppose that queues in two of the traffic classes are configured with a buffer weight of 24 to increase burst tolerance. The following example configures the video queue:

host1(config)#queue-profile video
host1(config-queue)#buffer-weight 24
host1(config-queue)#exit
host1(config)#

When the egress memory is fully loaded, dynamic oversubscription is 0 percent, and the 8000 queues with the default buffer weight strictly partition 25 percent of the 32-MB memory, leaving 75 percent of the memory for the queues weighted 24 (corresponding to the ratio 75 percent:25 percent, or 24:8). Therefore, these queues have committed thresholds of 1 KB each, and queues with the buffer weight of 24 have committed thresholds of 3 KB each. As the egress memory becomes progressively less loaded, all the queue thresholds increase proportionally, based on dynamic oversubscription, but the queues with buffer weight 24 are always set with thresholds three times larger than the default thresholds.

If the queue thresholds are constrained by committed or conformed threshold settings, any unused memory is redistributed to queues whose thresholds are not constrained. This use of thresholds is analogous to the way that shaping rates constrain bandwidth and cause bandwidth redistribution to unconstrained queues.

JUNOSe software uses 128-byte buffers. When setting very small queue thresholds, keep the following guidelines in mind:

For example, a 64-byte packet consumes a single 128-byte buffer. If you specify a maximum queue length of 256 bytes, then either two packets of 64-128 bytes in length or a single packet of 129-256 bytes can be queued.

Color-Based Thresholding

Packets within the router are tagged with a drop precedence:

When the queue fills above the exceeded threshold, the router drops red packets, but still queues yellow and green packets. When the queue fills above the conformed drop threshold, the router queues only green packets.

NOTE: All color-based thresholds vary in proportion to the dynamic queue length.


Configuring Queue Profiles

A queue profile controls the buffering and dropping behavior of a set of egress queues by letting you set the buffer weight of the queue, the drop thresholds, and the constraints on queue lengths.

Set the queue lengths as follows:

If you do not set the queue lengths, the router varies the queue length dynamically between 1 KB and 7 MB.

  1. Create a queue profile and enter Queue Configuration mode.
  2. host1(config)#queue-profile video
    
    host1(config-queue)#
    
    
    
  3. (Optional) Set the buffer weight of the queue.
  4. host1(config-queue)#buffer-weight 16
    
    
    
  5. (Optional) Set a minimum or maximum queue length for committed packets.
  6. host1(config-queue)#committed-length 11000 15000
    
    
    
  7. (Optional) Set a minimum or maximum queue length for conformed packets.
  8. host1(config-queue)#conformed-length 10000 14000
    
    
    
  9. (Optional) Set a minimum or maximum queue length for exceeded packets.
  10. host1(config-queue)#exceeded-length 9000 10000
    
    
    
  11. (Optional) Set the conformed drop threshold as a percentage of the committed threshold.
  12. host1(config-queue)#conformed-fraction 60
    
    
    
  13. (Optional) Set the exceeded drop threshold as a percentage of the committed threshold.
  14. host1(config-queue)#exceeded-fraction 40
    

buffer-weight

committed-length
    conformed-length
    exceeded-length

conformed-fraction
    exceeded-fraction

queue-profile


[Contents] [Prev] [Next] [Index] [Report an Error]