(19)
(11)EP 1 884 065 B1

(12)EUROPEAN PATENT SPECIFICATION

(45)Mention of the grant of the patent:
01.01.2014 Bulletin 2014/01

(21)Application number: 06758438.3

(22)Date of filing:  20.04.2006
(51)International Patent Classification (IPC): 
H04L 12/853(2013.01)
H04L 12/823(2013.01)
H04L 12/841(2013.01)
H04L 12/883(2013.01)
(86)International application number:
PCT/US2006/014900
(87)International publication number:
WO 2006/127187 (30.11.2006 Gazette  2006/48)

(54)

METHOD AND SYSTEM FOR PROVIDING DELAY BOUND AND PRIORITIZED PACKET DROPPING

VERFAHREN UND SYSTEM ZUR BEREITSTELLUNG VON VERZÖGERUNGSBEGRENZUNG UND PRIORISIERTEM PAKETVERWURF

PROCEDE ET SYSTEME DE DISTRIBUTION DE PAQUETS OBEISSANT A DES DELAIS ET DES PRIORITES


(84)Designated Contracting States:
AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

(30)Priority: 23.05.2005 US 134898

(43)Date of publication of application:
06.02.2008 Bulletin 2008/06

(73)Proprietor: Cisco Technology, Inc.
San Jose, CA 95134 (US)

(72)Inventors:
  • CHARNY, Anna
    Sudbury, Massachusetts 01776 (US)
  • KAPPLER, Christopher
    Waltham, Massachusetts 02451 (US)
  • BAJAJ, Sandeep
    Fremont, California 94536 (US)
  • COHEN, Earl, T.
    Oakland, CA 94618 (US)

(74)Representative: Kazi, Ilya et al
Mathys & Squire LLP 120 Holborn
London EC1N 2SQ
London EC1N 2SQ (GB)


(56)References cited: : 
WO-A1-00/60817
US-A1- 2003 235 202
WO-A2-01/86913
US-B1- 6 594 264
  
  • SURI S ET AL: "A comparative evaluation of space priority strategies in ATM networks", INFOCOM '94. NETWORKING FOR GLOBAL COMMUNICATIONS., 13TH PROCEEDINGS IEEE TORONTO, ONT., CANADA 12-16 JUNE 1994, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, 12 June 1994 (1994-06-12), pages 516-523, XP010098458, DOI: DOI:10.1109/INFCOM.1994.337691 ISBN: 978-0-8186-5570-8
  
Note: Within nine months from the publication of the mention of the grant of the European patent, any person may give notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art. 99(1) European Patent Convention).


Description

BACKGROUND OF THE INVENTION



[0001] The present invention relates generally to data networking and, more specifically, to providing delay bound and prioritized packet dropping for MLPP (Multilevel Precedence and Preemption) applications.

[0002] The Defense Information Systems Agency (DISA) of the United States Department of Defense, with its contractors, has proposed a service architecture for military (NATO and related agencies) telephone systems. It is called Assured Service, and is defined in two documents: Pierce, et al. "Architecture for Assured Service Capabilities in Voice over IP", Internet Draft, Internet Engineering Task Force, June 2003, and Pierce, et al. "Requirements for Assured Service Capabilities in Voice over IP", Internet Draft, Internet Engineering Task Force, June 2003. The Assured Service environment provides voice calls with different levels of precedence. In the event of traffic congestion, mission critical calls will be unaffected while calls of lower level precedence may experience reduced quality.

[0003] In overview, the requirement is to support calls of multiple precedence levels. In the absence of congestion, all calls have the same QoS requirements, typically expressed in terms of a bound on queuing delay. However, in the case of contention, when it becomes impossible to satisfy the delay bound for all packets, the requirement is to drop packets of lower preemption (precedence) calls before packets of higher preemption. All the packets which are not dropped must satisfy the specified delay bound for their precedence level.

[0004] Several datapath mechanisms have been proposed to satisfy these requirements. One such method is known as MLEF PHB (Multi-Level Expedited Forwarding Per Hop Behavior). The conceptual idea of MLEF PHB is to use a priority queue supplemented with preferential dropping mechanisms (via thresholds, policers, or other suitable mechanisms). The different thresholds intend to facilitate dropping lower precedence packets before the higher precedence packets. One difficulty with MLEF is finding a suitable trade-off between sufficient threshold spacing across all levels to ensure appropriate differentiation across precedence levels (irrespective of packet arrival order) and short enough overall queue size to ensure sufficiently tight delay and jitter bounds. Tuning the thresholds is a daunting task with no clear guidance available at this point.

[0005] Another approach is to utilize coupled policers (CP), which build upon the simple token bucket policer by allowing tokens to be shared among different token buckets. However, if multiple classes draw tokens from a common bucket, the resulting behavior depends on the arrival order and may introduce undesirable delays. A drawback with all of the data-path mechanisms described above is that in the case of congestion, while these methods discriminate among precedence levels with respect to dropping packets, they do not discriminate among calls of the same precedence level. This issue is described in Baker, et al., "MLEF Without Capacity Admission Does Not Satisfy MLPP Requirements," Internet Draft, Internet Engineering Task Force, February 2004. Baker et al. describe how Call Admission Control (CAC) procedures are also necessary to achieve the desired Assured Service capabilities. In particular, CAC ensures that, during contention within one level of priority, the system does not end up degrading the quality of service of all the calls at that priority so that no effective communication can actually happen at that priority. Rather, in case of contention, CAC can reject the excessive calls which are beyond the current system capacity to make sure that all the calls within the system capacity experience satisfactory quality of service allowing effective communication at that priority.

[0006] It has been found that the well-known RSVP protocol can be used to provide such CAC procedures in combination with certain other mechanisms to fully support the Assured Service Capabilities using EF (Expedited Forwarding) PHB (per hop behavior) in the data path. See Baker, et al. "Implementing MLPP for Voice and Video in the Internet Protocol Suite," Internet Draft, Internet Engineering Task Force, February 2004. The CAC procedures operated by the control plane avoid contention by data packets under normal (non-transient conditions). Some loss could potentially occur, however, in some special circumstances such as due to routing transients or to variable rate beat frequencies. In particular, CAC cannot deal with transient congestion resulting from below-peak rate reservations, or from transient state resulting from network failures, which are frequent occurrences in typical DISA environments. Thus, even in the presence of CAC, an additional mechanism is desired to address transient congestion.

[0007] An article entitled "A comparative evaluation of space priority strategies in ATM networks" by Suri S., et al, published in INFOCOM'94. Networking for Global Communications, 13th Proceedings IEEE Toronto, Ont., Canada 12-16 June 1994, Los Alamitos, CA, USA, IEEE Comput. Soc., XP010098458, discloses an adjustable space priority scheme where a cell upon arriving to a full buffer can push out a cell of opposite priority depending upon an adjustable parameter.

[0008] There is, therefore, a need for a method and system that can be used to meet delay bound and prioritized dropping requirements in environments where CAC is not used or in combination with CAC if strict QoS requirements need to be adhered to under transient conditions.

SUMMARY OF THE INVENTION



[0009] A method for providing delay bound and prioritized packet dropping according to claim 1 includes providing at least one lower precedence queue and at least one higher precedence queue configured to deliver packets in FIFO order;
limiting the size of said queues by a threshold based on a specified delay bound, wherein said threshold corresponds to a length of a FIFO Scoreboard maintaining a schedule of the order in which the lower precedence and higher precedence queues experience arrivals of packets;
receiving a packet having a precedence level;
queuing said received packet in a corresponding precedence queue if said threshold is not exceeded; and
if said threshold is exceeded, dropping a packet from said lower precedence queue having a precedence level less than that of the precedence level of said received packet or dropping said received packet if all packets in said queues have a precedence level greater than that of said received packet;
wherein dropping a packet having a precedence level less than that of the precedence level of said received packet comprises:

incrementing a counter at said lower precedence queue that indicates the number of transmit slots said lower precedence queue owes to said higher precedence queue; and

incrementing a counter at said higher precedence queue that indicates the number of transmit slots owed by said lower precedence queue.



[0010] A computer program product for providing delay bound and prioritized packet dropping according to claim 4 comprises: code that causes the performance of all the steps of a method according to one of the claims 1 to 3.

[0011] An apparatus for providing delay bound and prioritized packet dropping according to claim 5 comprises: a processor; and a memory device that stores code that causes the processor to carry out all the steps of the method of any one of claims 1 to 3.

[0012] Further understanding of the nature and advantages of the inventions herein may be realized by reference to the remaining portions of the specification and the attached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS



[0013] 

Fig. 1 depicts a network architecture to which embodiments of the present invention may be applied.

Fig. 2 is a flowchart illustrating a process for providing delay bound and prioritized packet dropping using a FIFO implemented as a doubly-linked list.

Fig. 3 is a flowchart illustrating a process for providing delay bound and prioritized packet dropping using two-pass queuing and per-precedence counters.

Fig. 4 is a flowchart illustrating a process for providing delay bound and prioritized packet dropping using a FIFO scoreboard and per-precedence queues.

Fig. 5 depicts a network device useful in implementing embodiments of the present invention.


DESCRIPTION OF SPECIFIC EMBODIMENTS



[0014] The following description is presented to enable one of ordinary skill in the art to make and use the invention. Descriptions of specific embodiments and applications are provided only as examples and various modifications will be readily apparent to those skilled in the art. The general principles described herein may be applied to other embodiments and applications without departing from the scope of the invention. Thus, the present invention is not to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features described herein. For purpose of clarity, details relating to technical material that is known in the technical fields related to the invention have not been described in detail.

[0015] The present invention is described herein with reference to a representative application but is not limited to this application. In the representative application, calls such as voice or video calls are carried across a packet network such as an IP network. Calls are assigned various precedence levels. When a router of the network encounters congestion packets are discarded based on their assigned precedence levels.

[0016] Fig. 1 depicts elements of such a network 100. Packets are originated or terminated by various user agents 102 which are devices such as telephones, video phones, computers, etc. Data traffic flows through an access router 106 into a network cloud 108 that includes further routers (not shown). On the other side of the cloud there is another access router 110, other user agents (not shown) and a proxy (also not shown).

[0017] Embodiments of the present invention provide a system (data-path mechanism) that operates to keep or drop packets in the desired fashion and satisfy a specified delay bound for packets which are not dropped. In particular, the system delivers a strict delay bound to all precedence levels and provides packet dropping in the strict order of precedence. In addition, the system does not require explicit knowledge of per-precedence rates. The system may operate in the access router 106 or in any router where congestion could be encountered.

[0018] A service rate is available collectively to the traffic under consideration. Call admission procedures may be used to assure that this service rate is not exceeded by the aggregate rate of the traffic. However, there may be congestion where admission control is not used, or where admission control is used but certain transient conditions cause the service rate to be exceeded. To enforce the relative priority in access to bandwidth across precedences, packets from the lower precedence may be dropped to allow higher precedence packets to flow.

[0019] The decision to keep or drop a packet depends on the packet precedence level. The precedence level of each packet is determined for each packet and assigned by the user agent 102, possibly in conjunction with an authentication mechanism. The assigned precedence level may be inferred from information in the packet header. As a particular example, the precedence may be conveyed in the Diffserv field of the IP packet header. The system may use DSCP (Differentiated Services Codepoint) based classification with a different DSCP value used for each precedence level, for example.

[0020] The system may operate in combination with a CAC mechanism to avoid indiscriminate degradation of all calls at the precedence layer straddling congestion. The addition of a CAC mechanism (e.g., RSVP) resolves the "straddling layer" problem while maintaining strict delay and drop precedence in transient conditions that may occur. The fact that the system does not require explicit knowledge of per-precedence rates is an additional benefit, since this may be difficult to know in transient conditions even in the presence of CAC. As described below, the system may also be configured to resolve the straddling layer problem in environments where CAC is not available.

[0021] At a high level, the system performs the following functions:
  • serve packets in FIFO order (i.e., arrival order) when there is no congestion;
  • limit the size of the total queue by a threshold computed from a desired delay bound;
  • queue newly arrived packets as long as the queue threshold is not reached; and
  • when a newly arrived packet exceeds the threshold, drop a lower precedence packet that is already queued, and add the newly arrived packet to the tail of the actual (or emulated) FIFO queue. (If the new packet is of the lowest active precedence, the new packet is dropped).
In order to determine if the threshold is exceeded, either packets or bytes may be tracked. The packet (either new packet or lower precedence packet) may be dropped upon receiving the new packet or on transmission of a packet, as described in detail below.

[0022] The following sets forth different implementations for performing these operations. An example uses a packet FIFO implemented as a doubly-linked list. Embodiments of the invention avoid the use of doubly-linked lists and use a FIFO scoreboard. Various implementations of the FIFO scoreboard are described below.

Doubly-Linked List



[0023] As noted above, an example uses a packet FIFO implemented as a doubly-linked list. The size of the queue is limited by the desired delay bound. In addition, per-precedence linked lists are maintained to keep track of virtual per-precedence queues inside the FIFO.

[0024] Fig. 2 is a flowchart describing steps of handling a received packet. When a new packet of any precedence arrives at step 202, as long as the size of the FIFO is below the threshold, the packet is added to the tail of the doubly-linked list (steps 204 and 206). Also, the corresponding per-precedence list is updated to include the new arrival (step 208).

[0025] If the newly arrived packet would cause the queue threshold to be exceeded, the following actions are taken. If it is of the lowest active precedence, the packet is dropped (steps 210 and 212). Otherwise the packet at the head (or tail) of the lowest active precedence packet list is dropped from the FIFO and the newly arrived packet is added to the tail of the FIFO, as well as linked to its corresponding precedence list (steps 214, 216, and 218).

[0026] Since the FIFO is implemented as a doubly-linked list, dropping a packet from the middle of the FIFO is an O(1) (order (1)) operation once a packet to be dropped is identified, while maintaining the per-precedence virtual queues make finding the packet to drop an O(1) operation as well. It should be noted that it does not matter exactly which lowest active precedence packet is dropped.

[0027] The system thus operates to meet the following objectives:
  • a packet is only dropped when otherwise it, or another packet, will be delayed beyond the allowable delay bound;
  • no higher precedence packet will be dropped if there is a lower precedence packet in the queue; and
  • all packets which are not dropped are guaranteed the delay bound.


[0028] In some implementations, doubly-linked lists may not be feasible since they are memory intensive. The double-linked list in the FIFO implementation may be avoided by using an overwrite process. For example, when a higher precedence packet needs to be queued while a lower precedence packet needs to be dropped from the queue, the newly arrived packet can overwrite the packet that is being dropped in the packet FIFO. Such overwriting eliminates the need to "collapse the hole" in the middle of the FIFO that is due to a dropped packet, and hence can be accomplished in the regular FIFO structure (i.e., a regular link list). However, such straightforward overwrite may result in packet reordering among packets of the same precedence, since the lower precedence packet that is being dropped and overwritten by a higher precedence packet may be ahead of other packets of the same (high) precedence in the FIFO. Since the packets at the same precedence level may belong to the same flow, such flow-level packet reordering is undesirable.

[0029] The following embodiments of the invention avoid the reordering and the doubly-linked list in the FIFO implementation.

FIFO Queue and FIFO Scoreboard



[0030] The following provides a comparison of using an equivalence of a FIFO queue and a FIFO scoreboard with per-flow queues. A classic queue of FIFO includes a control component and a data component. The control information is the order in which packets are linked in the queue. The data component consists of the packets themselves. The implementations set forth below each rely on the existence of the following information:
  • the arrival order of the packets, which would ideally dictate the departure order; and
  • per-precedence and aggregate accounting information of packet and/or byte counts.


[0031] FIFO service can be implemented using a single queue, as is typically done. Alternatively, FIFO service can be implemented by allowing arriving packets to enter separate per-precedence queues, and recording a scoreboard or schedule of the order in which those per-precedence queues experienced arrivals. If this arrival schedule is also used at transmit time to determine the order in which the queues are served, then the system will behave like a FIFO.

[0032] The principal differences between the two implementations represent the ability to trade off various forms of time and space costs. While one singly linked queue is less expensive in memory cost than N singly linked queues, it is likely that N singly linked queues are less expensive than one doubly linked queue. Likewise, the time cost of possibly dropping low precedence packets from a FIFO in hopes of discovering a high precedence packet behind it may not be acceptable. The implementation choice is preferably made based on the resources available and the statistical performance envelope of the requirements.

Two-pass Queuing and Per-Precedence Counters



[0033] Two-pass queuing and per-precedence counters are examples that could be utilized where the traffic to be managed is sufficiently understood. The system comprises:
  • an uncommitted arrival queue;
  • a committed transmit queue;
  • per-precedence packet or byte counters; and
  • aggregate packet or byte counters.


[0034] As each packet arrives, two sets of counters may be incremented, the aggregate counters and the counters for the precedence level of the arriving packet. The intent is for the majority of queued packets to wait in the uncommitted upstream queue, with only a small number of packets waiting in the committed downstream queue. As such, the committed queue can be considered as a small, constant delay and more or less ignored, though its constant delay must be considered as part of the total expected delay that packets will experience.

[0035] Fig. 3 is a flowchart describing steps of handling a received packet. If the arrival queue is not longer than the desired delay when a new packet arrives at step 302, no packets are dropped (steps 304 and 306). The debt counter for the appropriate precedence level is incremented and the packet is added at the arrival queue (steps 316 and 318). If the arrival queue is longer than the desired delay, either the arriving packet must be dropped without being enqueued, or a lower precedence packet must be dropped. The per-precedence counters are used to determine which is the case. If a lower precedence packet is to be dropped, then a debt counter for the donor precedence level is incremented and the packet is added to the arrival queue (steps 308, 310, 312, and 313). If no such lower precedence packet exists, then the arriving packet must be dropped without being enqueued (step 314).

[0036] Periodically, packets are transferred from the uncommitted upstream queue to the committed downstream queue. This transfer is lossy. As each packet is popped from the upstream queue, it may be dropped if the debt counter for its precedence level is non-zero. If the draining of the upstream queue is sufficiently fast, the downstream queue should be able to remain non-empty even with long strings of dropped packets from the head of the upstream queue.

[0037] Optimizations to reduce system complexity are possible because of the enqueue processing where all packets are enqueued. All drop decisions can be put off for the point in time that packets are being transferred from the upstream queue to the downstream queue. However, this may slow down the transfer by adding additional processing to each transferred packet and by allowing packets to join the upstream queue that will ultimately be dropped

[0038] The above described example has low complexity and may be implemented on many existing systems. However, the following embodiments provide some preferred performance characteristics in cases where the committed downstream queue actually does under-run.

FIFO Scoreboard and Per-Precedence Queues



[0039] Instead of maintaining packets in a single packet FIFO, per-precedence packet queues may be used. For this embodiment, the FIFO service order is enforced by maintaining a FIFO scoreboard (or schedule of the order in which the per-precedence queues experienced arrivals). The schedule may be described as a FIFO of slots, where the slot corresponds to a scheduling opportunity and is assigned to a particular precedence queue. The mechanism of "assigning" a transmit slot to a particular precedence queue may vary. One way to describe it is to assume that the transmit slots contain pointers to (or an ID of) the packet queues of the corresponding precedence level. The length threshold of the FIFO scoreboard is defined by the desired delay bound (just as the packet FIFO threshold was defined by the delay bound in the implementation described above). The implementation of the FIFO scoreboard may vary, and several variations are described below.

[0040] Fig. 4 is a flowchart describing the general steps involved in handling a received packet. When a new packet arrives at step 402, and the length of the FIFO scoreboard is below the threshold (step 404), the packet is added to the tail of its precedence packet queue (step 406), and a transmit slot pointing to this packet queue is added to the end of the schedule (step 408).

[0041] When a new packet arrives to an already full schedule, and it is the lowest precedence of all packets already queued, the packet is dropped (steps 410 and 412). If, however, a lower precedence packet than the newly arrived packet is already queued, then:
  • the newly arrived packet is added to the tail of the packet queue at its precedence (step 414);
  • a head (or tail) packet from the lowest precedence busy packet queue is dropped (step 416); and
  • an entry in the FIFO scoreboard "belonging" to the lower precedence queue is overwritten to point to the higher precedence queue (step 418). (The transmit slot of a lower precedence is "commandeered" to the higher precedence.)


[0042] It should be noted that if the FIFO scoreboard is represented by a simple linked list, then the process of commandeering is an O(1) operation after the slot has been located. However, this does not cause packet reordering within a precedence, because the FIFO scoreboard points to a queue rather than a packet, and so "commandeering of a transmit slot" can be done without causing packet reordering. Nor does this commandeering add delay to any already-arrived packet.

[0043] Just as in the case of the implementation described above for doubly-linked list, finding the lower precedence transmit slot in the schedule efficiently requires maintaining additionally a linked list of transmit slots per precedence.

[0044] The following describes various implementation approaches to maintain the FIFO scoreboard and to implement "commandeering".

[0045] The transmit activity may be represented as slots and tokens in the implementation of the FIFO scoreboard discussed above. Each packet transmit opportunity is referred to as a "slot". The ownership of a particular transmit slot is called the token. As each packet arrives to an un-congested system, two things occur. First, the packet is enqueued in a data queue corresponding to its particular precedence level. Second, that queue is given the token for the next unclaimed transmit slot.

[0046] Different ownership paradigms (FIFO service and prioritized commandeering of slots) are described below. In each case the transmit slot holds the queue ID of the queue that owns the slot.

[0047] With FIFO service, transmitting a packet is done by reading the FIFO scoreboard, obtaining the ID number of the per-precedence queue that should transmit in that slot, and popping from the head of that queue. Along with this pop operation, the transmit slot that was just consumed is deducted from accounting of slots that the queue owns. As long as no packets are dropped, each packet arrival for any precedence j will advance the tail pointer on the global FIFO scoreboard and will dedicate the corresponding transmit slot to precedence j. Each packet departure will advance the head pointer on the global FIFO scoreboard and will transmit from the queue indicated in the FIFO scoreboard. This arrival and departure process provides FIFO service.

[0048] With prioritized commandeering of slots (token transfer), when congestion is detected (that is, when the FIFO scoreboard is larger than the threshold), the arrival process is altered to drop one packet. The dropped packet is from the lowest precedence non-empty queue. If the newly arrived packet belongs to a flow that is lower precedence than any of the other active flows, then that packet is simply dropped. If the newly arrived packet belongs to a flow that is higher precedence than other active per-flow queues, the commandeering process executes to drop a packet other than the newly arrived packet.

[0049] As noted above, since slots represent transmit opportunities, and not actual packets, there are no packet ordering issues associated with re-allocation of slots with prioritized commandeering of slots. The slot that is ultimately commandeered from a lower precedence queue may lie between slots that were already allocated for a higher precedence queue. As long as the number of slots in the FIFO scoreboard and the number of packets among all of the queues are identical, the system's assumptions are maintained.

Slot Ownership for FIFO Scoreboard



[0050] Slot ownership for the FIFO scoreboard may be implicit or explicit. In the case where slot ownership is implicit, packets are only dropped at arrival time (RX). When a packet is dropped from a lower-precedence queue to make room for a higher-precedence packet, the FIFO scoreboard may remain unmodified, but the lower precedence and higher precedence queues have counters incremented. The lower precedence queue, which experienced the drop, increments the number of transmit slots that it owes to higher-precedence queues. Likewise, the higher precedence queue increments the number of transmit slots that it is owed by lower-precedence queues.

[0051] At each transmit opportunity, if the FIFO scoreboard indicates that the slot belongs to a queue that owes transmit slots to other queues, the precedence list is preferably inspected to find the highest precedence queue that is owed a transmit slot. That higher-precedence queue is then served in place of the lower-precedence queue. In addition, both the lower precedence and the higher precedence queues have their token ('owed to' and 'owed by') counters decremented accordingly.

[0052] the example of explicit slot ownership implies a list of the specific slots owned by per-flow queues, and may be maintained in any list structure, but the scanning, insertion and removal costs may vary. As described below, explicit slot ownership may use bit masks, FIFOs, or linked lists.

[0053] Since the number of total transmit slots is well known with explicit slot ownership, a bit mask may be used to adhere more tightly to the FIFO intent of the system, and has some advantages over generic linked lists. Though there is no requirement for a donor queue to surrender its earliest slot, a hierarchical bit mask would make it easy for the donor queue to scan for the first slot token that it holds after the head of the global FIFO scoreboard. Clearing this bit, and setting the corresponding bit for the high precedence receiving queue would involve a small number of memory operations amounting to O(1) cost.

[0054] In addition, on a packet transmit event, the same mechanism can be used to remove the transmit slot from a queue's ownership list. This is an alternative to the token counts listed above. It provides a more direct transfer of ownership from the donor queue to the receiver queue, and therefore does not give undue latency preference to the highest priority queue.

[0055] The following describes explicit slot ownership using FIFOs or linked lists. Unlike bit masks, FIFOs and linked lists imply O(n) or O(log n) cost to insert a value into its sorted position in the middle of the list. The commandeering operation may therefore become too expensive. With each transmitted packet, the list of slots owned by a queue must eliminate the current slot from its list. This is most easily done if the list is sorted by slot ID.

[0056] This implies that either the insert operation or the remove operation from the list of owned slots must be able to access the middle of the list. If the list of owned slots were allowed to be unordered, then there would be times when a queue would donate invalid slots to a higher precedence queue. A transmit slot in the middle of the list may be overwritten as an O(1) operation by additionally maintaining linked lists of per-precedence slots, at the cost of maintaining additional state.

[0057] The following describes alternative dropping actions. Rather than dropping a packet from the donor lower precedence queue immediately, a drop count may be incremented corresponding to the donor lower precedence queue ID. Then, whenever the next event occurs for the lower precedence queue, one or more packets can be dropped at that time. If the next event for the donor lower precedence queue is a packet arrival, then the arriving packet can be dropped with no update to queuing (and the drop count can be decremented by one). If the next event is a transmit event, and if the current drop count is N, then N+1 packets may be popped from the head of the queue dropping N of them and only transmitting one of them, after which the drop count can be zeroed.

[0058] Similarly, assuming the token counter method above, the heads of two queues may be popped at transmit time. One from the donor queue for dropping, and one from the higher-precedence queue for transmit.

[0059] In the above approach, the FIFO scoreboard may become idle while some queues are still non-empty and marked for drops. In that event, and depending on the usefulness of the old packets in the low precedence queues, these queues can recycle all of their data immediately, or they can be re-introduced into the FIFO scoreboard.

Resolving Straddling Layer Issue



[0060] The following sets forth an implementation designed for resolving the straddling layer problem in the environments where CAC is not available for some reason. The "straddling layer" problem arises when packets of a lower precedence are dropped indiscriminately to the actual calls to which they belong, thus potentially unnecessarily affecting all calls at a given precedence level. A preferred solution is to drop some calls entirely while keeping the rest of the calls at this precedence layer intact.

[0061] One way to achieve this-without resorting to a CAC is to enhance the framework described above to maintain per-call queues within a given precedence level, effectively adding another layer of hierarchy. The slot in the FIFO scoreboard points to a "precedence group" rather than a precedence FIFO queue, and a per-flow scheduler (e.g. a RR or a WFQ scheduler) is used to choose which queue to serve when the precedence group is scheduled.

[0062] When there is a need to drop a packet of a given precedence and commandeer its service slot in the FIFO scoreboard to a higher precedence packet, a low precedence packet is dropped from some queue, and the queue from which this packet is dropped is remembered as a "victim queue". Once a queue has been marked as "victim", whenever a packet needs to be dropped at this precedence, a packet from a victim queue is chosen as long as the victim queue is active. If there are no active victim queues, a new queue is chosen, and is also labeled as victim. It may be desirable to implement some ordering of the victim queues (e.g., a non-empty lower-indexed victim queue is dropped before a higher-indexed one).

[0063] If the straddling layer moves to a lower precedence layer, all of the victim markings can be cleared.

Network Device



[0064] Fig. 5 depicts a network device 500 that may be used to implement any of the network elements of Fig. 1. In one embodiment, network device 500 is a programmable machine that may be implemented in hardware, software, or any combination thereof. A processor 502 executes codes stored in a program memory 504. Program memory 504 is one example of a computer-readable medium. Program memory 504 can be a volatile memory. Another form of computer-readable medium storing the same codes would be some type of non-volatile storage such as floppy disks, CD-ROMs, DVD-ROMs, hard disks, flash memory, etc. A carrier wave that carries the code across the network is another example of a computer-readable medium.

[0065] Network device 500 interfaces with physical media via a plurality of linecards 506. Linecards 506 may incorporate Ethernet interfaces, DSL interfaces, Gigabit Ethernet interfaces, 10-Gigabit Ethernet interfaces, SONET interfaces, etc. As packets are received, processed, and forwarded by network device 500, they may be stored in a packet memory 508. To implement functionality according to the present invention, linecards 506 may incorporate processing and memory resources similar to those discussed above in connection with the network device as a whole.

Conclusion



[0066] As can be observed from the foregoing, the system and method described herein provide many advantages. Strict delay bound and prioritized dropping requirements can be met irrespective of traffic patterns. The various implementation options allow for substantial flexibility.

[0067] It is understood that the examples and embodiments that are described herein are for illustrative purposes only and that various modifications and changes in light thereof will be suggested to persons skilled in the art and are to be included within the spirit and purview of this application and scope of the appended claims and their full scope of equivalents.


Claims

1. A method for providing delay bound and prioritized packet dropping, the method comprising:

providing at least one lower precedence queue and at least one higher precedence queue configured to deliver packets in FIFO order;

limiting the size of said queues by a threshold based on a specified delay bound, wherein said threshold corresponds to a length of a FIFO Scoreboard (404) maintaining a schedule of the order in which the lower precedence and higher precedence queues experience arrivals of packets;

receiving (402) a packet having a precedence level;

queuing said received packet in a corresponding precedence queue if said threshold is not exceeded (406); and

if said threshold is exceeded (404), dropping (416) a packet from said lower precedence queue having a precedence level less than (410) that of the precedence level of said received packet or dropping (412) said received packet if all packets in said queues have a precedence level greater than (410) that of said received packet;

wherein dropping a packet having a precedence level less than that of the precedence level of said received packet comprises:

incrementing a counter at said lower precedence queue that indicates the number of transmit slots said lower precedence queue owes to said higher precedence queue; and

incrementing a counter at said higher precedence queue that indicates the number of transmit slots owed by said lower precedence queue.


 
2. The method of claim 1 wherein dropping a packet comprises dropping a packet (416) upon arrival of said received packet.
 
3. The method of claim 1 further comprising adding (408) a transmit slot pointing to said corresponding precedence queue to said FIFO Scoreboard.
 
4. A computer program product for providing delay bound and prioritized packet dropping, said computer program product comprising:

code that causes the performance of all the steps of a method according to any preceding claim.


 
5. Apparatus for providing delay bound and prioritized packet dropping, said apparatus comprising:

a processor (502);

a memory device (504) that stores code that causes the processor to carry out all the steps of the method of any one of claims 1 to 3.


 


Ansprüche

1. Verfahren zur Bereitstellung von Verzögerungsbegrenzung und priorisiertem Paketverwurf, umfassend:

Bereitstellen mindestens einer Warteschlange mit niedrigerer Priorität und mindestens einer Warteschlange mit höherer Priorität, die dazu ausgebildet sind, Pakete in FIFO-Reihenfolge zuzustellen;

Begrenzen der Größe der Warteschlangen durch eine auf einer vorgegebenen Verzögerungsbegrenzung basierenden Schwelle, wobei die Schwelle der Länge einer FIFO-Anzeigetafel (404) entspricht, die einen Plan über die Reihenfolge führt, mit der Pakete in den Warteschlangen niedrigerer und höher Priorität ankommen;

Empfangen (402) eines Pakets mit einer Prioritätsstufe;

Einreihen des empfangenen Pakets in eine Warteschlange mit entsprechender Priorität, solange die Schwelle nicht überschritten (406) wird; und

falls die Schwelle überschritten (404) wird, Verwerfen (416) eines Pakets aus der Warteschlange niedrigerer Priorität, deren Prioritätsstufe kleiner als (410) die Prioritätsstufe des empfangenen Pakets ist, oder Verwerfen (412) des empfangenen Pakets, wenn alle Pakete in den Warteschlangen eine Prioritätsstufe aufweisen, die höher als (410) die Prioritätsstufe des empfangenen Pakets ist;

wobei das Verwerfen eines Pakets, dessen Prioritätsstufe niedriger als die Prioritätsstufe des empfangenen Pakets ist, umfasst:

Inkrementieren eines Zählers an der Warteschlange mit niedrigerer Priorität, der die Anzahl der Sendeslots angibt, die die Warteschlange mit niedrigerer Priorität der Warteschlange mit höherer Priorität schuldet; und

Inkrementieren eines Zählers an der Warteschlange mit höherer Priorität, der die Anzahl der von der Warteschlange mit niedrigerer Priorität geschuldeten Sendeslots angibt.


 
2. Verfahren nach Anspruch 1, wobei das Verwerfen eines Pakets das Verwerfen eines Pakets (416) nach Ankunft des empfangenen Pakets umfasst.
 
3. Verfahren nach Anspruch 1, ferner umfassend das Zufügen (408) eines auf die entsprechende Prioritätsschlange weisenden Sendeslots zu der FIFO-Anzeigetafel.
 
4. Computerprogrammprodukt zum Bereitstellen von Verzögerungsbegrenzung und priorisiertem Paketverwurf, umfassend:

Code, der die Ausführung aller Schritte eines Verfahrens nach einem der vorhergehenden Ansprüche bewirkt.


 
5. Vorrichtung zum Bereitstellen von Verzögerungsbegrenzung und priorisiertem Paketverwurf, umfassend:

einen Prozessor (502);

eine Speichervorrichtung (504), die Code speichert, der bewirkt, dass der Prozessor alle Schritte des Verfahrens nach einem der Ansprüche 1 bis 3 ausführt.


 


Revendications

1. Procédé de distribution de paquets obéissant à des délais et des priorités, le procédé comportant :

l'étape consistant à mettre en oeuvre au moins une file d'attente à priorité inférieure et au moins une file d'attente à priorité supérieure configurées à des fins de distribution de paquets dans un ordre PEPS ;

l'étape consistant à limiter la taille desdites files d'attente au moyen d'un seuil basé sur un délai spécifié, dans lequel ledit seuil correspond à une longueur d'un tableau de bord PEPS (404) qui maintient une liste de l'ordre dans lequel les files d'attente à priorité inférieure et à priorité supérieure subissent les arrivées des paquets ;

l'étape consistant à recevoir (402) un paquet ayant un niveau de priorité ;

l'étape consistant à mettre en file d'attente ledit paquet reçu dans une file d'attente à priorité correspondante si ledit seuil n'est pas dépassé (406) ; et

si ledit seuil est dépassé (404), l'étape consistant à distribuer (416) un paquet en provenance de ladite file d'attente à priorité inférieure ayant un niveau de priorité inférieur à (410) celui du niveau de priorité dudit paquet reçu ou l'étape consistant à distribuer (412) ledit paquet reçu si tous les paquets dans lesdites files d'attente ont un niveau de priorité supérieur à (410) celui dudit paquet reçu ;

dans lequel l'étape consistant à distribuer un paquet ayant un niveau de priorité inférieur à celui du niveau de priorité dudit paquet reçu comporte :

l'étape consistant à augmenter un compteur au niveau de ladite file d'attente à priorité inférieure qui indique le nombre d'intervalles de temps d'émission que ladite file d'attente à priorité inférieure doit à ladite file d'attente à priorité supérieure ; et

l'étape consistant à augmenter un compteur au niveau de ladite file d'attente à priorité supérieure qui indique le nombre d'intervalles de temps d'émission dus par ladite file d'attente à priorité inférieure.


 
2. Procédé selon la revendication 1, dans lequel l'étape consistant à distribuer un paquet comporte l'étape consistant à distribuer un paquet (416) dès l'arrivée dudit paquet reçu.
 
3. Procédé selon la revendication 1, comportant par ailleurs l'étape consistant à ajouter (408) un intervalle de temps d'émission pointant sur ladite file d'attente à priorité correspondante audit tableau de bord PEPS.
 
4. Produit de programme informatique de distribution de paquets obéissant à des délais et des priorités, ledit produit de programme informatique comportant :

un code qui amène l'exécution de toutes les étapes d'un procédé selon l'une quelconque des revendications précédentes.


 
5. Appareil de distribution de paquets obéissant à des délais et des priorités, ledit appareil comportant :

un processeur (502) ;

un dispositif de mémoire (504) qui stocke un code qui amène le processeur à effectuer toutes les étapes du procédé selon l'une quelconque des revendications 1 à 3.


 




Drawing




















Cited references

REFERENCES CITED IN THE DESCRIPTION



This list of references cited by the applicant is for the reader's convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard.

Non-patent literature cited in the description