[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Diffserv] Model - queues



All,
I had an action item out of the Washington meeting to come up with a more 
general model of queueing in the DS model draft.  Before I try to propose text 
for the draft, I'd like to have some discussion on the list of the following 
concepts:

A queuing element is composed of one or more FIFO element, one or more 
scheduling element, and possibly one or more discarding element. [I was 
thinking about making the buffer data structure more general than 'FIFO' but 
decided not to for lack of a reason why one would need another data structure 
-- can anybody think of one?]

A FIFO element is a data structure which at any time may contain zero or more 
buffers.  It has a depth, and may have one or more threshold associated with 
it.  If there are multiple instances of a FIFO element, their buffers may or 
may not be allocated out of the same free buffer pool.  Free buffer pools may 
also have one or more threshold associated with them.  A FIFO element has one 
or more inputs and exactly one output.

A scheduling element is a functional element which gates the departure of each 
packet that arrives at one of its inputs,  based on a service discipline.  It 
has more than one [?] input and exactly one output.   The service discipline 
is an algorithm which may take as its inputs fixed parameters (such as 
relative priority, relative weighting and/or absolute token bucket parameters 
for maximum or minimum rates) associated with each of its inputs; parameters 
(such as packet length or DSCP [?]) associated with the packet present at its 
input; absolute time and/or local state.  Service disciplines may be work 
conserving or non-work conserving.

A discarding element is a functional element which selectively discards 
packets that arrive at its input, based on a discarding discipline.  It has 
one input and one output.  The discarding discipline is an algorithm which 
takes as its parameters some set of dynamic parameters (such as averaged FIFO 
depth) and some set of fixed parameters (such as  queue depth or free buffer 
pool thresholds) and possibly parameters associated with the packet (e.g. its 
DSCP).  RED is an example of a discarding discipline.

A queueing element is thus constructed by concatenation of these elements so 
as to meet meta-policy [I don't think we've discussed this, but it makes a lot 
of sense] objectives.  The input of a FIFO element may be the input of the 
queuing element, or it may be connected to the output of a discarding element 
or to an output of a scheduling element.  An input of a scheduling element may 
be connected to the output of a queuing element or of another scheduling 
element.  The input of a discarding element may be the input of the queueing 
element, or it may be connected to the output of a FIFO element (e.g., head 
dropping).  The output of the queueing element may be the output of a FIFO 
element, a discarding element or a scheduling element. [are there other 
reasonable concatenations from input to output?].  

Note, in particular, that scheduling elements may operate in series such that 
a packet at the head of a queue feeding the concatenated scheduling elements 
is serviced only after all of the scheduling criteria are met.  For example, 
EF traffic streams may be served first by a non-work conserving scheduler to 
achieve limit maximum rate, then mixed with other traffic streams by a work 
conserving scheduler.  Alternatively, there might be a FIFO element and/or a 
discarding element between the two schedulers.

[All of which begs for a picture, which would be a horror show to do in ASCII 
art. But since Yoram et al set such a fine example, I suppose I'd have to 
break down and do it once we got closure on the principles.]

Comments?

Dan


_______________________________________________
diffserv mailing list
diffserv@ietf.org
http://www.ietf.org/mailman/listinfo/diffserv
Archive: http://www-nrg.ee.lbl.gov/diff-serv-arch/