Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

Embodiments of the present invention disclose a queue scheduling method
and apparatus, which can not only implement scheduling of a large number
of queues, but also ensure that the queues uniformly send service data.
The method includes: determining whether service data exists in each
to-be-scheduled data queue and determining whether the to-be-scheduled
data queues are allowed to send data; if it is determined that the
service data exists in the to-be-scheduled data queues and the
to-be-scheduled data queues are allowed to send data, placing queue marks
of the to-be-scheduled data queues into a mark queue; scheduling queue
marks of the to-be-scheduled data queues from the mark queue in sequence,
scheduling the to-be-scheduled data queues corresponding to the queue
marks, and enabling the to-be-scheduled data queues corresponding to the
queue marks to send service data not exceeding predetermined data
amounts.

Claims:

1. A queue scheduling method comprising: determining whether service data
exists in each to-be-scheduled data queue; determining whether the
to-be-scheduled data queues are allowed to send data; if it is determined
that the service data exists in the to-be-scheduled data queues and the
to-be-scheduled data queues are allowed to send data, placing queue marks
of the to-be-scheduled data queues into a mark queue; and scheduling the
queue marks of the to-be-scheduled data queues from the mark queue in
sequence; scheduling the to-be-scheduled data queues corresponding to the
queue marks according to the queue marks; and enabling the
to-be-scheduled data queues corresponding to the queue marks to send
service data not exceeding predetermined data amounts.

2. The queue scheduling method according to claim 1, wherein the
determining whether the to-be-scheduled data queues are allowed to send
data comprises: determining whether data amounts allowed to be sent by
the to-be-scheduled data queues are nonnegative numbers or not
nonnegative numbers; if the data amounts allowed to be sent by the
to-be-scheduled data queues are nonnegative numbers, determining that the
to-be-scheduled data queues are allowed to send data; and if the data
amounts allowed to be sent by the to-be-scheduled data queues are not
nonnegative numbers, determining that the to-be-scheduled data queues are
not allowed to send data.

3. The queue scheduling method according to claim 2, wherein before the
determining whether data amounts allowed to be sent by the
to-be-scheduled data queues are nonnegative numbers, the method further
comprises: receiving data amounts actually allowed to be sent by data
receiving queues returned by the data receiving queues.

4. The queue scheduling method according to claim 3, wherein before the
determining whether data amounts allowed to be sent by the
to-be-scheduled data queues are nonnegative numbers, the method further
comprises: comparing data amounts theoretically allowed to be sent by the
data receiving queues with the data amounts actually allowed to be sent
by the data receiving queues to obtain data amount adjusting parameters
of the data amounts allowed to be sent by the to-be-scheduled data
queues.

5. The queue scheduling method according to claim 4, wherein before the
determining whether data amounts allowed to be sent by the
to-be-scheduled data queues are nonnegative numbers, the method further
comprises: adjusting, according to the data amount adjusting parameters,
the data amounts allowed to be sent by the to-be-scheduled data queues.

6. The queue scheduling method according to claim 3, wherein after the
obtaining data amount adjusting parameters of the data amounts allowed to
be sent by the to-be-scheduled data queues, the method further comprises
performing low pass filtering processing on the data amount adjusting
parameters.

7. The queue scheduling method according to claim 6, wherein the
adjusting, according to the data amount adjusting parameters, the data
amounts allowed to be sent by the to-be-scheduled data queues comprises:
according to the data amount adjusting parameters that have undergone the
low pass filtering processing, adjusting the data amounts allowed to be
sent by the to-be-scheduled data queues.

8. The queue scheduling method according to claim 3, wherein the
adjusting, according to the data amount adjusting parameters, the data
amounts allowed to be sent by the to-be-scheduled data queues comprises:
performing calculation according to committed information rates CIR and
peak information rates PIR of the to-be-scheduled data queues, and the
data amount adjusting parameters, to obtain data amount increased values
of the data amounts allowed to be sent by the to-be-scheduled data
queues.

9. The queue scheduling method according to claim 8, wherein the
adjusting, according to the data amount adjusting parameters, the data
amounts allowed to be sent by the to-be-scheduled data queues further
comprises: adding the data amounts allowed to be sent by the
to-be-scheduled data queues to the data amount increased values, to
obtain adjusted data amounts allowed to be sent by the to-be-scheduled
data queues.

10. The queue scheduling method according to claim 1, wherein after the
scheduling the to-be-scheduled data queues corresponding to the queue
marks according to the queue marks; and enabling the to-be-scheduled data
queues corresponding to the queue marks to send service data not
exceeding predetermined data amounts, the method further comprises:
subtracting service data amounts already sent by the to-be-scheduled data
queues from the data amounts allowed to be sent by the to-be-scheduled
data queues.

11. A queue scheduling apparatus comprising: a determination unit
configured to determine whether service data exists in each
to-be-scheduled data queue, and determine whether the to-be-scheduled
data queues are allowed to send data; an enqueuing unit configured to,
when the determination unit determines that the service data exists in
the to-be-scheduled data queues and the to-be-scheduled data queues are
allowed to send data, place queue marks of the to-be-scheduled data
queues into a mark queue; and a sending unit configured to schedule the
queue marks of the to-be-scheduled data queues from the mark queue in
sequence, schedule the to-be-scheduled data queues corresponding to the
queue marks according to the queue marks, and enable the to-be-scheduled
data queues corresponding to the queue marks to send service data not
exceeding predetermined data amounts.

12. The queue scheduling apparatus according to claim 11, wherein the
determination unit comprises a first determination module configured to
determine whether data amounts allowed to be sent by the to-be-scheduled
data queues are nonnegative numbers.

13. The queue scheduling apparatus according to claim 12, wherein the
determination unit further comprises a second determination module
configured to, when the first determination module determines that the
data amounts allowed to be sent by the to-be-scheduled data queues are
nonnegative numbers, determine that the to-be-scheduled data queues are
allowed to send data, wherein the second determination module is further
configured to, when the first determination module determines that the
data amounts allowed to be sent by the to-be-scheduled data queues are
not nonnegative numbers, determine that the to-be-scheduled data queues
are not allowed to send data.

14. The queue scheduling apparatus according to claim 12, wherein the
determination unit further comprises: a receiving module configured to,
before the first determination module determines whether the data amounts
allowed to be sent by the to-be-scheduled data queues are the nonnegative
numbers, receive data amounts actually allowed to be sent by data
receiving queues returned by the data receiving queues; a comparison
module configured to compare data amounts theoretically allowed to be
sent by the data receiving queues with the data amounts actually allowed
to be sent by the data receiving queues to obtain data amount adjusting
parameters of the data amounts allowed to be sent by the to-be-scheduled
data queues; and an adjusting module configured to adjust, according to
the data amount adjusting parameters, the data amounts allowed to be sent
by the to-be-scheduled data queues.

15. The queue scheduling apparatus according to claim 14, wherein the
determination unit further comprises a filtering module configured to
perform low pass filtering processing on the data amount adjusting
parameters after the comparison module obtains the data amount adjusting
parameters of the data amounts allowed to be sent by the to-be-scheduled
data queues.

16. The queue scheduling apparatus according to claim 15, wherein the
adjusting module is further configured to adjust the data amounts allowed
to be sent by the to-be-scheduled data queues according to the data
amount adjusting parameters that have undergone the low pass filtering
processing.

17. The queue scheduling apparatus according to claim 14, wherein the
adjusting module is further configured to: perform calculation according
to committed information rates CIR and peak information rates PIR of the
to-be-scheduled data queues, and the data amount adjusting parameters, to
obtain data amount increased values of the data amounts allowed to be
sent by the to-be-scheduled data queues.

18. The queue scheduling apparatus according to claim 17, wherein the
adjusting module is further configured to: add the data amounts allowed
to be sent by the to-be-scheduled data queues to the data amount
increased values, to obtain adjusted data amounts allowed to be sent by
the to-be-scheduled data queues.

19. The queue scheduling apparatus according to claim 11, further
comprising: a subtraction unit configured to subtract service data
amounts already sent by the to-be-scheduled data queues from the data
amounts allowed to be sent by the to-be-scheduled data queues.

20. The queue scheduling apparatus according to claim 11, wherein the
subtraction is performed after the sending unit schedules the
to-be-scheduled data queues corresponding to the queue marks according to
the queue marks, and enables the to-be-scheduled data queues
corresponding to the queue marks to send service data not exceeding the
predetermined data amounts.

Description:

[0001] This application is a continuation of International Application No.
PCT/CN2011/078022, filed on Aug. 4, 2011, which is hereby incorporated by
reference in its entirety.

TECHNICAL FIELD

[0002] The present invention relates to the field of communications
technologies, and in particular, to a queue scheduling method and
apparatus.

BACKGROUND

[0003] In devices for queue scheduling, such as routers or switches,
service data packets to be sent need to be scheduled according to a
certain rule, enabling each queue to obtain a fair scheduling
opportunity, so that data of the queues can be sent uniformly. A
conventional method adopts a weighted fair queue (WFQ). Specifically, the
service data packets to be sent form queues at an input end of a
scheduling device to wait for scheduling. First, an initial value (such
as 0) of a response credit is preset for each queue participating in the
scheduling. When a data packet passes through a queue, the response
credit of the queue is accumulated correspondingly. For a single queue,
the greater the number of bytes of the data packet passing through the
queue is, the greater the accumulated response credit is. At the same
time, a weight ratio is predefined for each queue, and the weight ratio
reflects a priority of each queue, so that the response credit
accumulated for a queue with a high priority is small when the data
packet with the same number of bytes passes through the queue, while the
response credit accumulated for a queue with a low priority is great when
the data packet with the same number of bytes pass through the queue. In
a queue scheduling process, a comparison operation is always performed on
all the response credits, and a queue with the smallest response credit
is selected and then scheduled; at the same time, the response credit is
accumulated for the queue. In this way, queues are uniformly scheduled
and a frequency of scheduling each queue is determined according to the
predefined weight ratio. However, the response credits need to be
compared with each other during selection of the to-be-scheduled queue,
and to prevent the accumulated response credit from overflowing, all the
response credits need to be cut down periodically and uniformly,
resulting in a large amount of comparison and subtraction computations
performed by the scheduling device; however, because the computing
capability of the scheduling device is limited, a large number of input
queues cannot be processed at the same time, and the complex operation
greatly reduces the rate of sending the data packets and limits output
bandwidth.

[0004] In order to process a large number of input queues at the same time
and increase the rate of sending the data packets, in the prior art,
another queue scheduling method is provided, which adopts a modified
deficit round robin (MDRR). The method is specifically as follows: taking
turns to give a scheduling opportunity to each queue participating in the
scheduling; after one queue is scheduled once, scheduling a next adjacent
queue; and performing a round robin in the same manner. Such a round
robin manner does not need complex comparison and subtraction operations,
thereby increasing the rate of scheduling and sending the data packets;
moreover, a scheduler is able to support a large number of input queues
without needing a strong computing capability. However, in this round
robin manner, one queue is merely scheduled once, and the next queue is
not scheduled until the queue sends all data allowed to be sent. The
queue with a large weight is allowed to send a large amount of data in a
single scheduling process. When the weights differ a lot between queues,
and when it is a turn of a queue with a large weight to send service
data, the data amount allowed to be sent is large, and a queue with a
small weight is put aside for a long time; while a queue with a small
weight is allowed to send a small amount of data in a single scheduling
process, so other queues merely need to wait for a short time; as a
result, queues cannot uniformly send the service data.

[0005] In the process of implementing the above queue scheduling, the
inventors find that the prior art at least has the following problem:
queues can uniformly send the service data through the WFQ, but the
comparison between the response credits makes the operation complex,
which results in that a large number of input queues cannot be processed.
The MDRR can support a large number of input queues, but when queues are
scheduled, the amounts of data allowed to be sent differ a lot, which
results in that queues cannot uniformly send the service data.

SUMMARY OF THE INVENTION

[0006] Embodiments of the present invention provide a queue scheduling
method and apparatus, which can not only implement scheduling of a large
number of queues, but also can ensure that queues uniformly send service
data.

[0007] In order to achieve the foregoing objectives, the embodiments of
the present invention adopt the following technical solutions.

[0008] In one embodiment, a queue scheduling method includes determining
whether service data exists in each to-be-scheduled data queue, and
determining whether the to-be-scheduled data queues are allowed to send
data. If it is determined that the service data exists in the
to-be-scheduled data queues and the to-be-scheduled data queues are
allowed to send data, placing queue marks of the to-be-scheduled data
queues into a mark queue. The method further includes scheduling the
queue marks of the to-be-scheduled data queues from the mark queue in
sequence, and scheduling the to-be-scheduled data queues corresponding to
the queue marks according to the queue marks. The to-be-scheduled data
queues corresponding to the queue marks is enabled to send service data
not exceeding predetermined data amounts.

[0009] In another embodiment, a queue scheduling apparatus includes a
determination unit configured to determine whether service data exists in
each to-be-scheduled data queue, and determine whether the
to-be-scheduled data queues are allowed to send data. An enqueuing unit
is configured to, when the determination unit determines that the service
data exists in the to-be-scheduled data queues and the to-be-scheduled
data queues are allowed to send data, place queue marks of the
to-be-scheduled data queues into a mark queue. A sending unit is
configured to schedule the queue marks of the to-be-scheduled data queues
from the mark queue in sequence, schedule the to-be-scheduled data queues
corresponding to the queue marks according to the queue marks, and enable
the to-be-scheduled data queues corresponding to the queue marks to send
service data not exceeding predetermined data amounts.

[0010] In the queue scheduling method and apparatus provided by the
embodiments of the present invention, queue scheduling is implemented by
determining whether each queue is allowed to send data, without needing
complex comparison operations between queues; in this way, a scheduler
does not need to have a high operational capability, and the scheduling
of a large number of queues can be implemented. In addition, each of the
data queues scheduled in sequence according to the queue marks in the
mark queue sends a certain data amount each time, a scheduled data queue
is put aside after sending the service data with a predetermined data
amount, and it is the turn of a to-be-scheduled data queue corresponding
to a next queue mark in the mark queue to send the service data with a
predetermined data amount. In this manner, the to-be-scheduled data
queues corresponding to the queue marks in the mark queue are scheduled
in sequence, so that service data of the queues can be uniformly sent.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011] To illustrate the technical solutions according to the embodiments
of the present invention or in the prior art more clearly, the
accompanying drawings required for describing the embodiments or the
prior art are introduced below briefly. Apparently, the accompanying
drawings in the following descriptions merely show some of the
embodiments of the present invention, and persons of ordinary skill in
the art can obtain other drawings according to the accompanying drawings
without creative efforts.

[0012] FIG. 1 is a flow chart of a method according to Embodiment 1 of the
present invention;

[0013] FIG. 2 is a flow chart of a method according to Embodiment 2 of the
present invention;

[0014] FIG. 3 is a schematic composition diagram of an apparatus according
to Embodiment 3 of the present invention;

[0015] FIG. 4 is a schematic composition diagram of another apparatus
according to Embodiment 3 of the present invention;

[0016] FIG. 5 is a schematic composition diagram of another apparatus
according to Embodiment 3 of the present invention;

[0017] FIG. 6 is a schematic composition diagram of another apparatus
according to Embodiment 3 of the present invention; and

[0018] FIG. 7 is a schematic composition diagram of another apparatus
according to Embodiment 3 of the present invention.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

[0019] The technical solutions of the embodiments of the present invention
are clearly described in the following with reference to the accompanying
drawings. It is obvious that the embodiments to be described are only a
part rather than all of the embodiments of the present invention. All
other embodiments obtained by persons of ordinary skill in the art based
on the embodiments of the present invention without creative efforts
shall fall within the protection scope of the present invention.

Embodiment 1

[0020] The embodiment of the present invention provides a queue scheduling
method. As shown in FIG. 1, the method includes the following steps.

[0022] Determining whether service data exists in a to-be-scheduled data
queue and determining whether the to-be-scheduled data queue is allowed
to send data are two conditions under which the to-be-scheduled data
queue meets a scheduling requirement. Each time the data amount allowed
to be sent by the to-be-scheduled data queue is updated, or each time the
to-be-scheduled data queue receives new service data, determination is
performed, and the queue can be scheduled only when the two conditions
are satisfied at the same time. On the contrary, when any one of the
conditions is not satisfied, it is considered that a scheduling condition
is not satisfied, so a queue that does not satisfy the scheduling
condition is put aside.

[0023] If the data amounts allowed to be sent by the to-be-scheduled data
queues are nonnegative numbers, it is determined that the to-be-scheduled
data queues are allowed to send data; if the data amounts allowed to be
sent by the to-be-scheduled data queues are not nonnegative numbers, it
is determined that the to-be-scheduled data queues are not allowed to
send data.

[0024] 102: If it is determined that the service data exists in the
to-be-scheduled data queues and the to-be-scheduled data queues are
allowed to send data, place queue marks of the to-be-scheduled data
queues into a mark queue.

[0025] The mark queue is formed by the queue marks of to-be-scheduled data
queues satisfying scheduling conditions. According to an attribute of a
queue, a queue mark is placed into the mark queue from a queue tail. At
this time, the to-be-scheduled data queue does not send service data, and
only a queue corresponding to a queue mark that lies in a head of the
mark queue can send data. In addition, multiple mark queues may exist in
one scheduler. Specifically, to-be-scheduled data queues may be grouped,
and each group is corresponding to a mark queue. Enqueuing and dequeuing
of queue marks are processed at the same time through the multiple mark
queues, which may increase the processing speed of the scheduler. It
should be noted that, scheduling of each mark queue may adopt a round
robin, a strict priority, or another rule, and a scheduling manner for
each mark queue is not limited in the embodiment of the present
invention.

[0026] 103: Schedule the queue marks of the to-be-scheduled data queues
from the mark queue in sequence, schedule the to-be-scheduled data queues
corresponding to the queue marks according to the queue marks, and enable
the to-be-scheduled data queues corresponding to the queue marks to send
service data not exceeding predetermined data amounts.

[0027] According to an attribute of the mark queue, scheduling queue marks
from the mark queue starts from the head of the queue and proceeds
backward in sequence. The mark queue may be implemented by adopting a
form of a single linked list or a multiple linked lists, and each mark
queue at least has a queue head, a queue tail, and an identifier for
indicating whether the mark queue is empty, so that the to-be-scheduled
data queues send service data to data receiving queues in sequence.

[0028] In addition, to ensure the uniformity of the service data, the
scheduled data queues can only send service data not exceeding the
predetermined data amounts. That is to say, it is stipulated that each
queue sends a same data amount when being scheduled once, but data
amounts actually sent may be different. It should be noted that,
determining whether the sent service data amount reaches the
predetermined data amount is implemented at the time when the sending of
each complete data packet is completed, and the sending of the data
packet is not interrupted at a midway immediately when the predetermined
data amount is reached, thereby ensuring data integrity. The
predetermined data amount may be set to be very small, so that the
scheduled queue can rapidly complete the sending of the service data; in
this way, the to-be-scheduled data queues in the mark queue take turns to
send service data, and no queue is put aside for a long time due to a
non-uniform data amount sent by each queue. It should be noted that, when
the data amount of the service data in a scheduled data queue is less
than the predetermined data amount, the scheduled data queue ends the
sending of the data this time after sending all service data, and it is
the turn of a to-be-scheduled data queue corresponding to a next queue
mark in the mark queue to send service data.

[0029] In the queue scheduling method provided by the embodiment of the
present invention, the queue scheduling is implemented by determining
whether each queue is allowed to send data, without needing complex
comparison operations between queues; in this way, the scheduler does not
need to have a high operational capability, and the scheduling of a large
number of queues can be implemented.

[0030] In addition, each of the data queues scheduled in sequence
according to the queue marks in the mark queue sends a certain data
amount each time, the scheduled data queue is put aside after sending the
service data with a predetermined data amount, and it is the turn of a
to-be-scheduled data queue corresponding to a next queue mark in the mark
queue to send service data with a predetermined data amount. In this
manner, the to-be-scheduled data queues corresponding to the queue marks
in the mark queue are scheduled in sequence, so that service data of
queues can be uniformly sent.

Embodiment 2

[0031] The embodiment of the present invention provides a queue scheduling
method. As shown in FIG. 2, the method includes the following steps.

[0032] 201: Receive data amounts actually allowed to be sent by data
receiving queues returned by the data receiving queues.

[0033] The data receiving queues are data output queues in a current-level
scheduler, and is also data input queues in a next-level scheduler,
namely, to-be-scheduled data queues in the next-level scheduler. Same as
a to-be-scheduled data queue in the current-level scheduler, a
to-be-scheduled data queue in the next-level scheduler also has a data
amount allowed to be sent by the to-be-scheduled data queue in the
next-level scheduler, and the data amount varies with the sending of the
data in real time, the data amount is for determining whether the
to-be-scheduled data queue in the next-level scheduler is allowed to send
data. For the current-level scheduler, the to-be-scheduled data queue in
the next-level scheduler is the data receiving queue. Therefore, the data
amount actually allowed to be sent by the data receiving queue is
reversely sent to the current-level scheduler, so that the current-level
scheduler controls the data traffic of the current-level scheduler after
receiving the data amount that is actually allowed to be sent by the data
receiving queue.

[0034] 202: Compare data amounts theoretically allowed to be sent by the
data receiving queues with the data amounts actually allowed to be sent
by the data receiving queues to obtain data amount adjusting parameters
of the data amounts allowed to be sent by the to-be-scheduled data
queues.

[0035] A data amount theoretically allowed to be sent by the data
receiving queue is a predefined system parameter in a stage of system
setting, resetting, or programming, and may be an empirical value
obtained through sample data training, and is used for setting a
theoretical value for the data amount actually allowed to be sent by the
data receiving queue. When an actual value fluctuates near the
theoretical value, it indicates that a network lies in a reasonable
congestion degree. When the data amount actually allowed to be sent by
the data receiving queue is higher than the data amount theoretically
allowed to be sent by the data receiving queue, it indicates that the
network lies in a relatively idle state; when the data amount actually
allowed to be sent by the data receiving queue is lower than the data
amount theoretically allowed to be sent by the data receiving queue, it
indicates that the network lies in a relatively congested state.
Therefore, by comparing the actual value with the theoretical value, for
example, obtaining the difference between the two values, the obtained
data amount adjusting parameter may represent the usage of transmission
bandwidth, so as to adjust data amount allowed to be sent by each
to-be-scheduled data queue.

[0037] A data amount actually allowed to be sent by the receiving queue
varies at the time when data is sent, so a data amount adjusting
parameter obtained by comparing the data amount actually allowed to be
sent by the receiving queue and a data amount theoretically allowed to be
sent by the receiving queue also varies at any time. However, the
instantaneous substantial change of the data amount adjusting parameter
cannot represent the overall usage of output bandwidth, so the low pass
filtering processing needs to be performed on the data amount adjusting
parameter to obtain the filtered data amount adjusting parameter, so that
a scheduler adjusts, according to the data amount adjusting parameter
that has undergone low pass filtering processing, the data amount allowed
to be sent by the to-be-scheduled data queue.

[0038] A low pass filter may be in a form of finite impulse response
(FIR), infinite impulse response (IIR), or the like. For example, a low
pass filtering module is formed by an IIR filter and a saturation
limiter, instantaneously mutating clutters are taken out after the data
amount adjusting parameter passes through the low pass filter, and then
an amplitude value of the data amount adjusting parameter is limited
within an interval [0, 1] through the saturation limiter.

[0039] 204: According to the data amount adjusting parameters that have
undergone the low pass filtering processing, adjust the data amounts
allowed to be sent by the to-be-scheduled data queues.

[0040] The specific step of adjusting the data amounts allowed to be sent
by the to-be-scheduled data queues is as follows: perform calculation
according to committed information rates (CIR) and peak information rates
(PIR) of the to-be-scheduled data queue, and the data amount adjusting
parameters, to obtain data amount increased values of the data amounts
allowed to be sent by the to-be-scheduled data queues; and adding the
data amounts allowed to be sent by the to-be-scheduled data queues to the
data amount increased values, to obtain adjusted data amounts allowed to
be sent by the to-be-scheduled data queues. A data amount allowed to be
sent by a to-be-scheduled data queue is reversely adjusted according to
usage of the output bandwidth of the scheduler; a data amount allowed to
be sent by a to-be-scheduled data queue that is corresponding to a
to-be-scheduled data queue with a large weight ratio increases rapidly,
while a data amount allowed to be sent by the to-be-scheduled data queue
that is corresponding to a to-be-scheduled data queue with a small weight
ratio increases slowly, thereby controlling sending bandwidth of each
input queue of the scheduler.

[0041] A data amount increased value may be obtained by calculating
through a predefined adjustment function. For example, the predefined
adjustment function may include a predefined CIR, a predefined PIR, and a
data amount adjusting parameter K that has undergone filtering
processing. For example, the adjustment function may be
BW=CIR+(PIR-CIR)×K. BW obtained through calculation represents the
sending bandwidth that should be allocated to the to-be-scheduled data
queue to send data, so it is obtained that the data amount increased
value, that should be increased per second, of the data amount allowed to
be sent by the to-be-scheduled data queue is BW bytes. It should be noted
that, according to a priority and a weight ratio of each to-be-scheduled
data queue, different CIRs, PIRs and adjustment functions may be
predefined; to-be-scheduled data queues may be divided into several
priority groups, or a weight of each to-be-scheduled data queue is
separately managed, so as to implement flexible allocation of output
bandwidth.

[0042] 205: Determine whether service data exists in each to-be-scheduled
data queue, and determine whether the to-be-scheduled data queues are
allowed to send data; when it is determined that the service data exists
in the to-be-scheduled data queues and that the to-be-scheduled data
queues are allowed to send data, step 206 is executed; when any one of
the two conditions is not satisfied, step 209 is executed.

[0043] Determining whether service data exists in a to-be-scheduled data
queue and determining whether the to-be-scheduled data queue is allowed
to send data are two conditions under which the to-be-scheduled data
queue meets a scheduling requirement. Each time the data amount allowed
to be sent by the to-be-scheduled data queue is updated, or each time the
to-be-scheduled data queue receives new service data, determination is
performed, and the queue can be scheduled only when the two conditions
are satisfied at the same time. On the contrary, when any one of the
conditions is not satisfied, it is considered that a scheduling condition
is not satisfied, so a queue that does not satisfy the scheduling
condition is put aside.

[0044] If the data amounts allowed to be sent by the to-be-scheduled data
queues are nonnegative numbers, it is determined that the to-be-scheduled
data queues are allowed to send data; if the data amounts allowed to be
sent by the to-be-scheduled data queues are not nonnegative numbers, it
is determined that the to-be-scheduled data queues are not allowed to
send data.

[0045] 206: Place queue marks of the to-be-scheduled data queues into a
mark queue.

[0046] The mark queue is formed by the queue marks of the to-be-scheduled
data queues satisfying scheduling conditions. According to an attribute
of a queue, a queue mark is placed into the mark queue from a queue tail.
At this time, the to-be-scheduled data queue does not send service data,
and only a queue corresponding to a queue mark that lies in a head of the
mark queue can send data.

[0047] 207: Schedule the queue marks of to-be-scheduled data queues from
the mark queue in sequence, schedule the to-be-scheduled data queues
corresponding to the queue marks according to the queue marks, and enable
the to-be-scheduled data queues corresponding to the queue marks to send
service data not exceeding predetermined data amounts.

[0048] According to an attribute of the mark queue, scheduling queue marks
from the mark queue starts from the head of the queue and proceeds
backward in sequence. The mark queue may be implemented by adopting a
form of a single linked list or a multiple linked list, and each mark
queue at least has a queue head, a queue tail, and an identifier for
indicating whether the mark queue is empty, so that the to-be-scheduled
data queues send service data to data receiving queues in sequence. In
addition, multiple mark queues may exist in one scheduler. Specifically,
to-be-scheduled data queues may be grouped, and each group is
corresponding to a mark queue. Enqueuing and dequeuing of queue marks are
processed at the same time through the multiple mark queues, which may
increase the processing speed of the scheduler. It should be noted that,
scheduling of each mark queue may adopt a round robin, a strict priority,
or another rule, and a scheduling manner for each mark queue is not
limited in the embodiment of the present invention.

[0049] In addition, to ensure the uniformity of the service data, the
scheduled data queues can only send service data not exceeding the
predetermined data amounts. That is to say, it is stipulated that each
queue sends a same data amount when being scheduled once, but data
amounts actually sent may be different. It should be noted that,
determining whether the sent service data amount reaches the
predetermined data amount is implemented at the time when the sending of
each complete data packet is completed, and the sending of the data
packet is not interrupted at a midway immediately when the predetermined
data amount is reached, thereby ensuring data integrity. The
predetermined data amount may be set to be very small, so that the
scheduled queue can rapidly complete the sending of the service data; in
this way, the to-be-scheduled data queues in the mark queue take turns to
send the service data, and no queue is put aside for a long time due to a
non-uniform data amount sent by each queue. It should be noted that, when
the data amount of the service data in a scheduled data queue is less
than the predetermined data amount, the scheduled data queue ends the
sending of the data this time after sending all service data, and it is
the turn of a to-be-scheduled data queue corresponding to a next queue
mark in the mark queue to send the service data. For example, it is
stipulated that a to-be-scheduled data queue corresponding to a queue
mark at a queue head sends service data not exceeding 1000 bytes, and
when the total service data in the to-be-scheduled data queue
corresponding to the queue mark only is 500 bytes, the queue mark exits
from the mark queue after the sending of the 500-byte service data is
completed. When the total service data in the to-be-scheduled data queue
corresponding to the queue mark is 3000 bytes, the data is sent as a
complete data packet. Assuming that the length of a data packet is 600
bytes, the queue may send two complete data packets this time. At this
time, if it is determined that the data amount allowed to be sent by the
queue is nonnegative, and that there is data to be sent, the queue mark
corresponding to the queue is re-added to the tail of the mark queue.

[0050] 208: Subtract service data amounts already sent by the
to-be-scheduled data queues from the data amounts allowed to be sent by
the to-be-scheduled data queues.

[0051] Each to-be-scheduled data queue is corresponding to a dynamically
adjustable shaper, and the shaper stores a predefined adjustment
function, which includes configuration of PIR and CIR, a data amount
allowed to be sent by a to-be-scheduled data queue, and an upper limit
value of the data amount allowed to be sent by the to-be-scheduled data
queue. The shaper receives a data amount adjusting parameter k,
substitutes the received data amount adjusting parameter k, that
dynamically changes, into the adjustment function, and obtains, through
calculation, an increased value of the data amount allowed to be sent by
the to-be-scheduled data queue, so as to increase the data amount allowed
to be sent by the to-be-scheduled data queue, thereby adjusting sending
bandwidth of each queue. Meanwhile, once the to-be-scheduled data queue
is scheduled, and after the service data is sent, the data amount that is
allowed to be sent by the to-be-scheduled data queue corresponding to the
scheduled data queue is decreased by a decreased value, where the
decreased value of the data amount allowed to be sent by the
to-be-scheduled data queue is a data amount already sent by the scheduled
data queue. The upper limit value of the data amount allowed to be sent
by the to-be-scheduled data queue is used to prevent the data amount
allowed to be sent by the to-be-scheduled data queue from overflowing,
and if the data amount allowed to be sent by the to-be-scheduled data
queue reaches the upper limit value, the increasing is stopped.

[0052] In addition, the shaper of a current-level scheduler further allows
the data amount sent by the to-be-scheduled data queue to be reversely
sent to a previous-level scheduler, and the data amount serves as the
basis for the previous-level scheduler to determine whether output
bandwidth is congested.

[0053] 209: Put the to-be-scheduled data queues aside.

[0054] In step 208, each time after the to-be-scheduled data queues send
the service data, the already sent data amounts need to be subtracted
from the data amounts allowed to be sent by the to-be-scheduled data
queues. At this time, the data amounts allowed to be sent by the
to-be-scheduled data queues may change into negative numbers, and the
scheduler no longer allows the to-be-scheduled data queues to send data,
so the to-be-scheduled data queues are put aside. If network congestion
occurs or a weight ratio of the to-be-scheduled data queue is small,
increased values of the data amounts allowed to be sent by the
to-be-scheduled data queues are small, and the data amounts allowed to be
sent by the to-be-scheduled data queues gradually increase when the
to-be-scheduled data queue are put aside; the to-be-scheduled data queues
are not allowed to send data until the data amounts allowed to be sent by
the to-be-scheduled data queues change into nonnegative numbers again.

[0055] In the queue scheduling method provided by the embodiment of the
present invention, the queue scheduling is implemented by determining
whether each queue is allowed to send data, without needing complex
comparison operations between queues; in this way, the scheduler does not
need to have a high operational capability, and the scheduling of a large
number of queues can be implemented.

[0056] In addition, each of the data queues scheduled in sequence
according to the queue marks in the mark queue send a certain data amount
each time, the scheduled data queue is put aside after sending the
service data with a predetermined data amount, and it is the turn of a
to-be-scheduled data queue corresponding to a next queue mark in the mark
queue to send service data with a predetermined data amount. In this
manner, the to-be-scheduled data queues corresponding to the queue marks
in the mark queue are scheduled in sequence, so that service data of the
queues can be uniformly sent.

Embodiment 3

[0057] The embodiment of the present invention provides a queue scheduling
apparatus, as shown in FIG. 3, including: a determination unit 31, an
enqueuing unit 32, and a sending unit 33.

[0058] The determination unit 31 is configured to determine whether
service data exists in each to-be-scheduled data queue, and determine
whether the to-be-scheduled data queues are allowed to send data.

[0059] Determining whether service data exists in a to-be-scheduled data
queue and determining whether the to-be-scheduled data queue is allowed
to send data are two conditions under which the to-be-scheduled data
queue meets a scheduling requirement. The queue can be scheduled only
when the two conditions are satisfied at the same time. On the contrary,
when any one of the conditions is not satisfied, it is considered that a
scheduling condition is not satisfied, so a queue that does not satisfy
the scheduling condition is put aside.

[0060] If the data amounts allowed to be sent by the to-be-scheduled data
queues are nonnegative numbers, it is determined that the to-be-scheduled
data queues are allowed to send data; if the data amounts allowed to be
sent by the to-be-scheduled data queues are not nonnegative numbers, it
is determined that the to-be-scheduled data queues are not allowed to
send data.

[0061] The enqueuing unit 32 is configured to, when the determination unit
31 determines that the service data exists in the to-be-scheduled data
queues and the to-be-scheduled data queues are allowed to send data,
place queue marks of the to-be-scheduled data queues into a mark queue.

[0062] The mark queue is formed by the queue marks of to-be-scheduled data
queues satisfying scheduling conditions. According to an attribute of a
queue, a queue mark is placed into the mark queue from a queue tail. At
this time, the to-be-scheduled data queue does not send service data, and
only a queue corresponding to a queue mark that lies in a head of the
mark queue can send data.

[0063] The sending unit 33 is configured to schedule the queue marks of
the to-be-scheduled data queues from the mark queue in sequence, schedule
the to-be-scheduled data queues corresponding to the queue marks
according to the queue marks, and enable the to-be-scheduled data queues
corresponding to the queue marks to send service data not exceeding
predetermined data amounts.

[0064] According to an attribute of the mark queue, scheduling queue marks
from the mark queue starts from the head of the queue and proceeds
backward in sequence. The mark queue may be implemented by adopting a
form of a single linked list or a multiple linked list, and each mark
queue at least has a queue head, a queue tail, and an identifier for
indicating whether the mark queue is empty, so that the to-be-scheduled
data queues send service data to data receiving queues in sequence.

[0065] In addition, to ensure the uniformity of the service data, the
scheduled data queues can only send service data not exceeding the
predetermined data amounts. That is to say, it is stipulated that each
queue sends a same data amount when being scheduled once, but data
amounts actually sent may be different. It should be noted that,
determining whether the sent service data amount reaches the
predetermined data amount is implemented at the time when the sending of
each complete data packet is completed, and the sending of the data
packet is not interrupted at a midway immediately when the predetermined
data amount is reached, thereby ensuring data integrity. The
predetermined data amount may be set to be very small, so that the
scheduled queue can rapidly complete the sending of the service data; in
this way, the to-be-scheduled data queues in the mark queue take turns to
send service data, and no queue is put aside for a long time due to a
non-uniform data amount sent by each queue. It should be noted that, when
the data amount of the service data in a scheduled data queue is less
than the predetermined data amount, the scheduled data queue ends the
sending of the data this time after sending all service data, and it is
the turn of a to-be-scheduled data queue corresponding to a next queue
mark in the mark queue to send service data. For example, it is
stipulated that a to-be-scheduled data queue corresponding to a queue
mark at a queue head sends service data not exceeding 1000 bytes, and
when the total service data in the to-be-scheduled data queue
corresponding to the queue mark only is 500 bytes, the queue mark exits
from the mark queue after the sending of the 500-byte service data is
completed. When the total service data in the to-be-scheduled data queue
corresponding to the queue mark is 3000 bytes, the data is sent as a
complete data packet. Assuming that the length of a data packet is 600
bytes, the queue may send two complete data packets this time. At this
time, if it is determined that the data amount allowed to be sent by the
queue is nonnegative, and that there is data to be sent, the queue mark
corresponding to the queue is re-added to the tail of the mark queue.

[0066] Furthermore, as shown in FIG. 4, the determination unit 31 includes
a first determination module 311 configured to determine whether data
amounts allowed to be sent by the to-be-scheduled data queues are
nonnegative numbers. A second determination module 312 is configured to,
when the first determination module 311 determines that the data amounts
allowed to be sent by the to-be-scheduled data queues are nonnegative
numbers, determine that the to-be-scheduled data queues are allowed to
send data. The second determination module 312 is further configured to,
when the first determination module 311 determines that the data amounts
allowed to be sent by the to-be-scheduled data queues are not nonnegative
numbers, determine that the to-be-scheduled data queues are not allowed
to send data.

[0067] Furthermore, as shown in FIG. 5, the determination unit 31 further
includes the following modules.

[0068] A receiving module 313 is configured to, before the first
determination module 311 determines whether the data amounts allowed to
be sent by the to-be-scheduled data queues are nonnegative numbers,
receive data amounts actually allowed to be sent by data receiving queues
returned by the data receiving queues.

[0069] The data receiving queues are data output queues in a current-level
scheduler, and is also data input queues in a next-level scheduler,
namely, to-be-scheduled data queues in the next-level scheduler. Same as
a to-be-scheduled data queue in the current-level scheduler, a
to-be-scheduled data queue in the next-level scheduler also has a data
amount allowed to be sent by the to-be-scheduled data queue in the
next-level scheduler, and the data amount varies with the sending of the
data in real time, the data amount is for determining whether the
to-be-scheduled data queue in the next-level scheduler is allowed to send
data. For the current-level scheduler, the to-be-scheduled data queue in
the next-level scheduler is the data receiving queue. Therefore, the data
amount actually allowed to be sent by the data receiving queue is
reversely sent to the current-level scheduler, so that the current-level
scheduler controls the data traffic of the current-level scheduler after
receiving the data amount that is actually allowed to be sent by the data
receiving queue.

[0070] A comparison module 314 is configured to compare data amounts
theoretically allowed to be sent by the data receiving queues with the
data amounts actually allowed to be sent by the data receiving queues to
obtain data amount adjusting parameters of the data amounts allowed to be
sent by the to-be-scheduled data queues.

[0071] A data amount theoretically allowed to be sent by the data
receiving queue is a predefined system parameter in a stage of system
setting, resetting, or programming, and may be an empirical value
obtained through sample data training, and is used for setting a
theoretical value for the data amount actually allowed to be sent by the
data receiving queue. When an actual value fluctuates near the
theoretical value, it indicates that a network lies in a reasonable
congestion degree. When the data amount actually allowed to be sent by
the data receiving queue is higher than the data amount theoretically
allowed to be sent by the data receiving queue, it indicates that the
network lies in a relatively idle state; when the data amount actually
allowed to be sent by the data receiving queue is lower than the data
amount theoretically allowed to be sent by the data receiving queue, it
indicates that the network lies in a relatively congested state.
Therefore, by comparing the actual value with the theoretical value, for
example, obtaining the difference between the two values, the obtained
data amount adjusting parameter may represent the usage of transmission
bandwidth, so as to adjust data amount allowed to be sent by each
to-be-scheduled data queue.

[0072] An adjusting module 315 is configured to adjust, according to the
data amount adjusting parameters, the data amounts allowed to be sent by
the to-be-scheduled data queues.

[0073] Furthermore, as shown in FIG. 6, the determination unit 31 further
includes a filtering module 316 configured to, after the comparison
module 314 obtains the data amount adjusting parameters of the data
amounts allowed to be sent by the to-be-scheduled data queues, perform
low pass filtering processing on the data amount adjusting parameters.

[0074] A data amount actually allowed to be sent by the receiving queue
varies at the time when data is sent, so a data amount adjusting
parameter obtained by comparing the data amount actually allowed to be
sent by the receiving queue and a data amount theoretically allowed to be
sent by the receiving queue also varies at any time. However, the
instantaneous substantial change of the data amount adjusting parameter
cannot represent the overall usage of output bandwidth, so the low pass
filtering processing needs to be performed on the data amount adjusting
parameter to obtain the filtered data amount adjusting parameter, so that
a scheduler adjusts, according to the data amount adjusting parameter
that has undergone low pass filtering processing, the data amount allowed
to be sent by the to-be-scheduled data queue.

[0075] A low pass filter may be in a form of finite impulse response
(FIR), infinite impulse response (IIR), or the like. For example, a low
pass filtering module is formed by an IIR filter and a saturation
limiter, instantaneously mutating clutters are taken out after the data
amount adjusting parameter passes through the low pass filter, and then
an amplitude value of the data amount adjusting parameter is limited
within an interval [0, 1] through the saturation limiter.

[0076] The adjusting module 315 is further configured to, according to the
data amount adjusting parameters that have undergone the low pass
filtering processing, adjust the data amounts allowed to be sent by the
to-be-scheduled data queues.

[0077] The adjusting module 315 is further configured to perform
calculation according to committed information rates (OR) and peak
information rates (PIR) of the to-be-scheduled data queues, and the data
amount adjusting parameters, to obtain data amount increased values of
the data amounts allowed to be sent by the to-be-scheduled data queues;
and add the data amounts allowed to be sent by the to-be-scheduled data
queues to the data amount increased value, to obtain adjusted data
amounts allowed to be sent by the to-be-scheduled data queues. A data
amount allowed to be sent by a to-be-scheduled data queue is reversely
adjusted according to usage of the output bandwidth of the scheduler; a
data amount allowed to be sent by a to-be-scheduled data queue that is
corresponding to a to-be-scheduled data queue with a large weight ratio
increases rapidly, while a data amount allowed to be sent by the
to-be-scheduled data queue that is corresponding to a to-be-scheduled
data queue with a small weight ratio increases slowly, thereby
controlling sending bandwidth of each input queue of the scheduler.

[0078] A data amount increased value may be obtained by calculating
through a predefined adjustment function. For example, the predefined
adjustment function may include a predefined CIR, a predefined PIR, and a
data amount adjusting parameter K that has undergone filtering
processing. For example, the adjustment function may be
BW=CIR+(PIR-CIR)×K. BW obtained through calculation represents the
sending bandwidth that should be allocated to the to-be-scheduled data
queue to send data, so it is obtained that the data amount increased
value, that should be increased per second, of the data amount allowed to
be sent by the to-be-scheduled data queue is BW bytes. It should be noted
that, according to a priority and a weight ratio of each to-be-scheduled
data queue, different CIRs, PIRs and adjustment functions may be
predefined; to-be-scheduled data queues may be divided into several
priority groups, or a weight of each to-be-scheduled data queue is
separately managed, so as to implement flexible allocation of output
bandwidth.

[0079] Furthermore, as shown in FIG. 7, the queue scheduling apparatus
further includes a subtraction unit 34 configured to, after the sending
unit 33 schedules the to-be-scheduled data queues corresponding to the
queue marks according to the queue marks, and enables the to-be-scheduled
data queues corresponding to the queue marks to send service data not
exceeding the predetermined data amounts, subtract service data amounts
already sent by the to-be-scheduled data queues from the data amounts
allowed to be sent by the to-be-scheduled data queues.

[0080] Each to-be-scheduled data queue is corresponding to a dynamically
adjustable shaper, and the shaper stores a predefined adjustment
function, which includes configuration of PIR and CIR, a data amount
allowed to be sent by a to-be-scheduled data queue, and an upper limit
value of the data amount allowed to be sent by the to-be-scheduled data
queue. The shaper receives a data amount adjusting parameter k,
substitutes the received data amount adjusting parameter k, that
dynamically changes, into the adjustment function, and obtains, through
calculation, an increased value of the data amount allowed to be sent by
the to-be-scheduled data queue, so as to increase the data amount allowed
to be sent by the to-be-scheduled data queue, thereby adjusting sending
bandwidth of each queue. Meanwhile, once the to-be-scheduled data queue
is scheduled, and after the service data is sent, the data amount that is
allowed to be sent by the to-be-scheduled data queue corresponding to the
scheduled data queue is decreased by a decreased value, where the
decreased value of the data amount allowed to be sent by the
to-be-scheduled data queue is a data amount already sent by the scheduled
data queue. The upper limit value of the data amount allowed to be sent
by the to-be-scheduled data queue is used to prevent the data amount
allowed to be sent by the to-be-scheduled data queue from overflowing,
and if the data amount allowed to be sent by the to-be-scheduled data
queue reaches the upper limit value, the increasing is stopped.

[0081] It should be noted that, reference may be made to the content in
Embodiment 1 and Embodiment 2 for specific description of each functional
module in the embodiment of the present invention, and details are not
described again in the embodiment of the present invention.

[0082] In the queue scheduling apparatus provided by the embodiment of the
present invention, the queue scheduling is implemented by determining
whether each queue is allowed to send data, without needing complex
comparison operations between queues; in this way, the scheduler does not
need to have a high operational capability, and the scheduling of a large
number of queues can be implemented.

[0083] In addition, each of the data queues scheduled in sequence
according to the queue marks in the mark queue send a certain data amount
each time, the scheduled data queue is put aside after sending the
service data with a predetermined data amount, and it is the turn of a
to-be-scheduled data queue corresponding to a next queue mark in the mark
queue to send service data with a predetermined data amount. In this
manner, the to-be-scheduled data queues corresponding to the queue marks
in the mark queue are scheduled in sequence, so that service data of the
queues can be uniformly sent.

[0084] Through the foregoing description of the embodiments, persons
skilled in the art can clearly understand that the present invention may
be implemented by software plus necessary universal hardware, and of
course may also be implemented through hardware, but in most cases, the
present invention is preferably implemented through the former method.
Based on such understanding, the technical solutions of the present
invention or the part that makes contributions to the prior art can be
substantially embodied in the form of a software product. The computer
software product is stored in a readable storage medium, for example, a
floppy disk, a hard disk, or an optical disk of a computer, and contains
several instructions used to instruct a computer device (for example, a
personal computer, a server, or a network device) to perform the methods
according to the embodiments of the present invention.

[0085] The foregoing description is merely about specific embodiments of
the present invention, but is not intended to limit the protection scope
of the present invention. Various variations or replacements made by
persons skilled in the art within the technical scope of the present
invention shall fall within the protection scope of the present
invention. Therefore, the protection scope of the present invention is
subject to the appended claims.