home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 1000s / rfc1046.txt < prev    next >
Text File  |  1988-02-24  |  29KB  |  619 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                            W. Prue
  8. Request for Comments:  1046                                    J. Postel
  9.                                                                      ISI
  10.                                                            February 1988
  11.  
  12.  
  13.       A Queuing Algorithm to Provide Type-of-Service for IP Links
  14.  
  15. Status of this Memo
  16.  
  17.    This memo is intended to explore how Type-of-Service might be
  18.    implemented in the Internet.  The proposal describes a method of
  19.    queuing which can provide the different classes of service.  The
  20.    technique also prohibits one class of service from consuming
  21.    excessive resources or excluding other classes of service.  This is
  22.    an "idea paper" and discussion is strongly encouraged.  Distribution
  23.    of this memo is unlimited.
  24.  
  25. Introduction
  26.  
  27.    The Type-of-Service (TOS) field in IP headers allows one to chose
  28.    from none to all the following service types; low delay, high
  29.    throughput, and high reliability.  It also has a portion allowing a
  30.    priority selection from 0-7.  To date, there is nothing describing
  31.    what should be done with these parameters.  This discussion proposes
  32.    an approach to providing the different classes of service and
  33.    priorities requestable in the TOS field.
  34.  
  35. Desired Attributes
  36.  
  37.    We should first consider how we want these services to perform.  We
  38.    must first assume that there is a demand for service that exceeds
  39.    current capabilities.  If not, significant queues do not form and
  40.    queuing algorithms become superfluous.
  41.  
  42.    The low delay class of service should have the ability to pass data
  43.    through the net faster than regular data.  If a request is for low
  44.    delay class of service only, not high throughput or high reliability,
  45.    the Internet should provide low delay for relatively less throughput,
  46.    with less than high reliability.  The requester is more concerned
  47.    with promptness of delivery than guaranteed delivery.  The Internet
  48.    should provide a Maximum Guaranteed Delay (MGD) per node, or better,
  49.    if the datagram successfully traverses the Internet.  In the worst
  50.    case, a datagram's arrival will be MGD times the number of nodes
  51.    traversed.  A node is any packet switching element, including IP
  52.    gateways and ARPANET IMP's.  The MGD bound will not be affected by
  53.    the amount of traffic in the net.  During non-busy hours, the delay
  54.    provided should be better than the guarantee.  If the delay a
  55.  
  56.  
  57.  
  58. Prue & Postel                                                   [Page 1]
  59.  
  60. RFC 1046                Type-of-Service Queuing            February 1988
  61.  
  62.  
  63.    satellite link introduces is less than the MGD, that link should be
  64.    considered in the route.  If however, the MGD is less than the
  65.    satellite link can provide, it should not be used.  For this
  66.    discussion it is assumed that delay for individual links are low
  67.    enough that a sending node can provide the MGD service.
  68.  
  69.    Low delay class of service is not the same as low Round Trip Time
  70.    (RTT).  Class of service is unidirectional.  The datagrams responding
  71.    to low delay traffic (i.e., Acking the data) might be sent with a
  72.    high reliability class of service, but not low delay.
  73.  
  74.    The performance of TCP might be significantly improved with an
  75.    accurate estimate of the round trip time and the retransmission
  76.    timeout.  The TCP retransmission timeout could be set to the maximum
  77.    delay for the current route (if the current route could be
  78.    determined).  The timeout value would have to be redetermined when
  79.    the number of hops in the route changes.
  80.  
  81.    High throughput class of service should get a large volume of data
  82.    through the Internet.  Requesters of this class are less concerned
  83.    with the delay the datagrams have crossing the Internet and the
  84.    reliability of their delivery.  This type of traffic might be served
  85.    well by a satellite link, especially if the bandwidth is high.
  86.    Another attribute this class might have is consistent one way
  87.    traversal time for a given burst of datagrams.  This class of service
  88.    will have its traversal times affected by the amount of Internet
  89.    load.  As the Internet load goes up, the throughput for each source
  90.    will go down.
  91.  
  92.    High reliability class of service should see most of its datagrams
  93.    delivered if the Internet is not too heavily loaded.  Source Quenches
  94.    (SQ) should not be sent only when datagrams are discarded.  SQs
  95.    should be sent well before the queues become full, to advise the
  96.    sender of the rate that can be currently supported.
  97.  
  98.    Priority service should allow data that has a higher priority to be
  99.    queued ahead of other lower priority data.  It is important to limit
  100.    the amount of priority data.  The amount of preemption a lower
  101.    priority datagram suffers must also be limited.
  102.  
  103.    It is assumed that a queuing algorithm provides these classes of
  104.    service.  For one facility to be used over another, that is, making
  105.    different routing decisions based upon the TOS, requires a more
  106.    sophisticated routing algorithm and larger routing database.  These
  107.    issues are not discussed in this document.
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Prue & Postel                                                   [Page 2]
  115.  
  116. RFC 1046                Type-of-Service Queuing            February 1988
  117.  
  118.  
  119. Applications for Class of Service
  120.  
  121.    The following are examples of how classes of service might be used.
  122.    They do not necessarily represent the best choices, but are presented
  123.    only to illustrate how the different classes of service might be used
  124.    to advantage.
  125.  
  126.    Interactive timesharing access using a line-at-a-time or character-
  127.    at-a-time terminal (TTY) type of access is typically low volume
  128.    typing speed input with low or high volume output.  Some Internet
  129.    applications use echoplex or character by character echoing of user
  130.    input by the destination host.  PC devices also have local files that
  131.    may be uploaded to remote hosts in a streaming mode.  Supporting such
  132.    traffic can require several types of service.  User keyboard input
  133.    should be forwarded with low delay.  If echoplex is used, all user
  134.    characters sent and echoed should be low delay to minimize the
  135.    echoing delay.  The computer responses should be regular or high
  136.    throughput depending upon the volume of data sent and the speed of
  137.    the output device.  If the computer response is a single datagram of
  138.    data, the user should get low delay for the response, to minimize the
  139.    human/computer interaction time.  If however the output takes a while
  140.    to read and digest, low delay computer responses are a waste of
  141.    Internet resources.  When streaming input is being sent the data
  142.    should be sent requesting high throughput or regular class of
  143.    service.
  144.  
  145.    The IBM 3270 class of terminals typically have traffic volumes
  146.    greater than TTY access.  Echoplex is not needed.  The output devices
  147.    usually handle higher speed output streams and most sites do not have
  148.    the ability to stream input.  Input is typically a screen at a time,
  149.    but some PC implementations of 3270 use a variation of the protocol
  150.    to effectively stream in volumes of data.  Low delay for low volume
  151.    input and output is appropriate.  High throughput is appropriate for
  152.    the higher volume traffic.
  153.  
  154.    Applications that transfer high volumes of data are typically
  155.    streaming in one direction only, with acks for the data, on the
  156.    return path.  The data transfer should be high throughput and the
  157.    acks should probably be regular class of service.  Transfer
  158.    initiation and termination might be served best with low delay class
  159.    of service.
  160.  
  161.    Requests to, and responses from a time service might use low delay
  162.    class of service effectively.
  163.  
  164.    These suggestions for class of service usage implies that the
  165.    application sets the service based on the knowledge it has during the
  166.    session.  Thus, the application should have control of this setting
  167.  
  168.  
  169.  
  170. Prue & Postel                                                   [Page 3]
  171.  
  172. RFC 1046                Type-of-Service Queuing            February 1988
  173.  
  174.  
  175.    dynamically for each send data request, not just on a per
  176.    session/conversation/transaction basis.  It would be possible for the
  177.    transport level protocol to guess (i.e., TCP), but it would be sub-
  178.    optimal.
  179.  
  180. Algorithm
  181.  
  182.    When we provide class of service queuing, one class may be more
  183.    desirable than the others.  We must limit the amount of resources
  184.    each class consumes when there is contention, so the other classes
  185.    may also operate effectively.  To be fair, the algorithm provides the
  186.    requested service by reducing the other service attributes.  A
  187.    request for multiple classes of service is an OR type of request not
  188.    an AND request.  For example, one can not get low delay and high
  189.    throughput unless there is no contention for the available resources.
  190.  
  191. Low Delay Queuing
  192.  
  193.    To support low delay, use a limited queue so requests will not wait
  194.    longer than the MGD on the queue.  The low delay queue should be
  195.    serviced at a lower rate than other classes of service, so low delay
  196.    requests will not consume excessive resources.  If the number of low
  197.    delay datagrams exceeds the queue limit, discard the datagrams.  The
  198.    service rate should be low enough so that other data can still get
  199.    through. (See discussion of service rates below.)  Make the queue
  200.    limit small enough so that, if the datagram is queued, it will have a
  201.    guaranteed transit time (MGD).  It seems unlikely that Source Quench
  202.    flow control mechanisms will be an effective method of flow control
  203.    because of the small size of the queue.  It should not be done for
  204.    this class of service.  Instead, datagrams should just be discarded
  205.    as required.  If the bandwidth or percentage allocated to low delay
  206.    is such that a large queue is possible (see formula below), SQs
  207.    should be reconsidered.
  208.  
  209.    The maximum delay a datagram with low delay class of service will
  210.    experience (MGD), can be determined with the following information:
  211.  
  212.       N = Queue size for low delay queue
  213.       P = Percentage of link resources allocated to low delay
  214.       R = Link rate (in datagrams/sec.)
  215.                       N
  216.       Max Delay =   -----
  217.                     P * R
  218.  
  219.    If Max Delay is held fixed, then as P and R go up, so does N.  It is
  220.    probable that low delay service datagrams will prove to be, on the
  221.    average, smaller than other traffic.  This means that the number of
  222.    datagrams that can be sent in the allocated bandwidth can be larger.
  223.  
  224.  
  225.  
  226. Prue & Postel                                                   [Page 4]
  227.  
  228. RFC 1046                Type-of-Service Queuing            February 1988
  229.  
  230.  
  231. High Reliability Queuing
  232.  
  233.    To support high reliability class of service, use a queue that is
  234.    longer than normal (longer queue means higher potential delay).  Send
  235.    SQ earlier (smaller percentage of max queue length) and don't discard
  236.    datagrams until the queue is full.  This queue should have a lower
  237.    service rate than high throughput class of service.
  238.  
  239.    Users of this class of service should specify a Time-to-Live (TTL)
  240.    which is made appropriately longer so that it will survive longer
  241.    queueing times for this class of service.
  242.  
  243.    This queuing procedure will only be effective for Internet
  244.    unreliability due to congestion.  Other Internet unreliability
  245.    problems such as high error rate links or reliability features such
  246.    as forward error correcting modems must be dealt with by more
  247.    sophisticated routing algorithms.
  248.  
  249. High Throughput Queuing
  250.  
  251.    To support high throughput class of service have a queue that is
  252.    treated like current IP queuing.  It should have the highest service
  253.    rate.  It will experience higher average through node delay than low
  254.    delay because of the larger queue size.
  255.  
  256.    Another thing that might be done, is to keep datagrams of the same
  257.    burst together when possible.  This must be done in a way that will
  258.    not block other traffic.  The idea is to deliver all the data to the
  259.    other end in a contiguous burst.  This could be an advantage by
  260.    allowing piggybacking acks for the whole burst at one time.  This
  261.    makes some assumptions about the overlying protocol which may be
  262.    inappropriate.
  263.  
  264. Regular Service Queuing
  265.  
  266.    For datagrams which request none of the three classes of service,
  267.    queue the datagrams on the queue representing the least delay between
  268.    the two queues, the high throughput queue or the high reliability
  269.    queue.  If one queue becomes full, queue on the other.  If both
  270.    queues are full, follow the source quench procedure for regular class
  271.    of service (see RFC-1016), not the procedure for the queue the
  272.    datagram failed to attain.
  273.  
  274.    In the discussion of service rates described below, it is proposed
  275.    that the high throughput queue get service three times for every two
  276.    times for the high reliability queue.  Therefore, the queue length of
  277.    the high reliability queue should be increased by 50% (in this
  278.    example) to compare the lengths of the two queues more accurately.  A
  279.  
  280.  
  281.  
  282. Prue & Postel                                                   [Page 5]
  283.  
  284. RFC 1046                Type-of-Service Queuing            February 1988
  285.  
  286.  
  287.    simplification to this method is to just queue new data on the queue
  288.    that is the shortest.  The slower service rate queue will quickly
  289.    exceed the size of the faster service rate queue and new data will go
  290.    on the proper queue.  This however, would lead to more packet
  291.    reordering than the first method.
  292.  
  293.  
  294. Service Rates
  295.  
  296.    In this discussion, a higher service rate means that a queue, when
  297.    non-empty, will consume a larger percentage of the available
  298.    bandwidth than a lower service rate queue.  It will not block a lower
  299.    service rate queue even if it is always full.
  300.  
  301.    For example, the service pattern could be; send low delay 17% of the
  302.    time, high throughput 50% of the time, and high reliability 33% of
  303.    the time.  Throughput requires the most bandwidth and high
  304.    reliability requires medium bandwidth.  One could achieve this split
  305.    using a pattern of L, R,R, T,T,T, where low delay is "L", high
  306.    reliability is "R", and high throughput is "T'.  We want to keep the
  307.    high throughput datagrams together.  We therefore send all of the
  308.    high throughput data at one time, that is, not interspersed with the
  309.    other classes of service.  By keeping all of the high throughput data
  310.    together, we may help higher level protocols, such as TCP, as
  311.    described above.  This would still be done in a way to not exceed the
  312.    allowed service rate of the available bandwidth.
  313.  
  314.    These service rates are suggestions.  Some simplifications can be
  315.    considered, such as having only two routing classes; low delay, and
  316.    other.
  317.  
  318. Priority
  319.  
  320.    There is the ability to select 8 levels of priority 0-7, in addition
  321.    to the class of service selected.  To provide this without blocking
  322.    the least priority requests, we must give preempted datagrams
  323.    frustration points every time a higher priority request cuts in line
  324.    in front of it.  Thus if a datagram with low priority waits, it will
  325.    always get through even when competing against the highest priority
  326.    requests.  This assumes the TTL (Time-to-Live) field does not expire.
  327.  
  328.    When a datagram with priority arrives at a node, the node will queue
  329.    the datagram on the appropriate queue ahead of all datagrams with
  330.    lower priority.  Each datagram that was preempted gets its priority
  331.    raised (locally).  The priority data will not bump a lower priority
  332.    datagram off its queue, discarding the data.  If the queue is full,
  333.    the newest data (priority or not) will be discarded.  The priority
  334.    preemption will preempt only within the class of service queue to
  335.  
  336.  
  337.  
  338. Prue & Postel                                                   [Page 6]
  339.  
  340. RFC 1046                Type-of-Service Queuing            February 1988
  341.  
  342.  
  343.    which the priority data is targeted.  A request specifying regular
  344.    class of service, will contend on the queue where it is placed, high
  345.    throughput or high reliability.
  346.  
  347.    An implementation strategy is to multiply the requested priority by 2
  348.    or 4, then store the value in a buffer overhead area.  Each time the
  349.    datagram is preempted, increment the value by one.  Looking at an
  350.    example, assume we use a multiplier of 2.  A priority 6 buffer will
  351.    have an initial local value of 12.  A new priority 7 datagram would
  352.    have a local value of 14.  If 2 priority 7 datagrams arrive,
  353.    preempting the priority 6 datagram, its local value is incremented to
  354.    14.  It can no longer be preempted.  After that, it has the same
  355.    local value as a priority 7 datagram and will no longer be preempted
  356.    within this node.  In our example, this means that a priority 0
  357.    datagram can be preempted by no more than 14 higher priority
  358.    datagrams.  The priority is raised only locally in the node.  The
  359.    datagram could again be preempted in the next node on the route.
  360.  
  361.    Priority queuing changes the effects we were obtaining with the low
  362.    delay queuing described above.  Once a buffer was queued, the delay
  363.    that a datagram would see could be determined.  When we accepted low
  364.    delay data, we could guarantee a certain maximum delay.  With this
  365.    addition, if the datagram requesting low delay does not also request
  366.    high priority, the guaranteed delay can vary a lot more.  It could be
  367.    1 up to 28 times as much as without priority queuing.
  368.  
  369. Discussion and Details
  370.  
  371.    If a low delay queue is for a satellite link (or any high delay
  372.    link), the max queue size should be reduced by the number of
  373.    datagrams that can be forwarded from the queue during the one way
  374.    delay for the link.  That is, if the service rate for the low delay
  375.    queue is L datagrams per second, the delay added by the high delay
  376.    link is D seconds and M is the max delay per node allowed (MGD) in
  377.    seconds, then the maximum queue size should be:
  378.  
  379.          Max Queue Size = L ( M - D),  M > D
  380.                         = 0         ,  M <= D
  381.  
  382.    If the result is negative (M is less than the delay introduced by the
  383.    link), then the maximum queue size should be zero because the link
  384.    could never provide a delay less than the guaranteed M value.  If the
  385.    bandwidth is high (as in T1 links), the delay introduced by a
  386.    terrestrial link and the terminating equipment could be significant
  387.    and greater than the average service time for a single datagram on
  388.    the low delay queue.  If so, this formula should be used to reduce
  389.    the queue size as well.  Note that this is reducing the queue size
  390.    and is not the same as the allocated bandwidth.  Even though the
  391.  
  392.  
  393.  
  394. Prue & Postel                                                   [Page 7]
  395.  
  396. RFC 1046                Type-of-Service Queuing            February 1988
  397.  
  398.  
  399.    queue size is reduced, the chit scheme described below will give low
  400.    delay requesters a chance to use the allocated bandwidth.
  401.  
  402.    If a datagram requests multiple classes of service, only one class
  403.    can be provided.  For example, when both low delay and high
  404.    reliability classes are requested, and if the low delay queue is
  405.    full, queue the data on the high reliability queue instead.  If we
  406.    are able to queue the data on the low delay queue, then the datagram
  407.    gets part of the high reliability service it also requested, because,
  408.    once data is queued, data will not be discarded.  However, the
  409.    datagram will be routed as a low delay request.  The same scheme is
  410.    used for any other combinations of service requested.  The order of
  411.    selection for classes of service when more than one is requested
  412.    would be low delay, high throughput, then high reliability.  If a
  413.    block of datagrams request multiple classes of service, it is quite
  414.    possible that datagram reordering will occur.  If one queue is full
  415.    causing the other queue to be used for some of the data, data will be
  416.    forwarded at different service rates.  Requesting multiple classes of
  417.    service gives the data a better chance of making it through the net
  418.    because they have multiple chances of getting on a service queue.
  419.    However, the datagrams pay the penalty of possible reordering and
  420.    more variability in the one way transmission times.
  421.  
  422.    Besides total buffer consumption, individual class of service queue
  423.    sizes should be used to SQ those asking for service except as noted
  424.    above.
  425.  
  426.    A request for regular class of service is handled by queuing to the
  427.    high reliability or high throughput queues evenly (proportional to
  428.    the service rates of queue).  The low delay queue should only receive
  429.    data with the low delay service type.  Its queue is too small to
  430.    accept other traffic.
  431.  
  432.    Because of the small queue size for low delay suggested above, it is
  433.    difficult for low delay service requests to consume the bandwidth
  434.    allocated.  To do so, low delay users must keep the small queue
  435.    continuously non-empty.  This is hard to do with a small queue.
  436.    Traffic flow has been shown to be bursty in nature.  In order for the
  437.    low delay queue to be able to consume the allocated bandwidth, a
  438.    count of the various types being forwarded should be kept.  The
  439.    service rate should increase if the actual percentage falls too low
  440.    for the low delay queue.  The measure of service rates would have to
  441.    be smoothed over time.
  442.  
  443.    While this does sound complicated, a reasonably efficient way can be
  444.    described.  Every Q seconds, where Q is less than or equal to the
  445.    MGD, each class gets N M P chits proportional to their allowed
  446.    percentage.  Send data for the low delay queue up to the number of
  447.  
  448.  
  449.  
  450. Prue & Postel                                                   [Page 8]
  451.  
  452. RFC 1046                Type-of-Service Queuing            February 1988
  453.  
  454.  
  455.    chits it receives decrementing the chits as datagrams are sent.  Next
  456.    send from the high reliability queue as many as it has chits for.
  457.    Finally, send from the high throughput queue.  At this point, each
  458.    queue gets N M P chits again.  If the low delay queue does not
  459.    consume all of its chits, when a low delay datagram arrives, before
  460.    chit replenishment, send from the low delay queue immediately.  This
  461.    provides some smoothing of the actual bandwidth made available for
  462.    low delay traffic.  If operational experience shows that low delay
  463.    requests are experiencing excessive congestion loss but still not
  464.    consuming the classes allocated bandwidth, adjustments should be
  465.    made.  The service rates should be made larger and the queue sizes
  466.    adjusted accordingly.  This is more important on lower speed links
  467.    where the above formula makes the queue small.
  468.  
  469.    What we should see during the Q seconds is that low delay data will
  470.    be sent as soon as possible (as long as the volume is below the
  471.    allowed percentage).  Also, the tendency will be to send all the high
  472.    throughput datagrams contiguously.  This will give a more regular
  473.    measured round trip time for bursts of datagrams.  Classes of service
  474.    will tend to be grouped together at each intermediate node in the
  475.    route.  If all of the queues with datagrams have consumed all of
  476.    their allocated chits, but one or more classes with empty queues have
  477.    unused chits then a percentage of these left over chits should be
  478.    carried over.  Divide the remaining chit counts by two (with round
  479.    down), then add in the refresh chit counts.  This allows a 50% carry
  480.    over for the next interval.  The carry over is self limiting to less
  481.    than or equal to the refresh chit count.  This prevents excessive
  482.    build up.  It provides some smoothing of the percentage allocation
  483.    over time but will not allow an unused queue to build up chits
  484.    indefinitely.  No timer is required.
  485.  
  486.    If only a simple subset of the described algorithm is to be
  487.    implemented, then low delay queuing would be the best choice.  One
  488.    should use a small queue.  Service the queue with a high service rate
  489.    but restrict the bandwidth to a small reasonable percentage of the
  490.    available bandwidth.  Currently, wide area networks with high traffic
  491.    volumes do not provide low delay service unless low delay requests
  492.    are able to preempt other traffic.
  493.  
  494. Applicability
  495.  
  496.    When the output speed and volume match the input speed and volume,
  497.    queues don't get large.  If the queues never grow large enough to
  498.    exceed the guaranteed low delay performance, no queuing algorithm
  499.    other than first in, first out, should be used.
  500.  
  501.    The algorithm could be turned on when the main queue size exceeds a
  502.    certain threshold.  The routing node can periodically check for queue
  503.  
  504.  
  505.  
  506. Prue & Postel                                                   [Page 9]
  507.  
  508. RFC 1046                Type-of-Service Queuing            February 1988
  509.  
  510.  
  511.    build up.  This queuing algorithm can be turned on when the maximum
  512.    delays will exceed the allowed nodal delay for low delay class of
  513.    service.  It can also be turned off when queue sizes are no longer a
  514.    problem.
  515.  
  516. Issues
  517.  
  518.    Several issues need to be addressed before type of service queuing as
  519.    described should be implemented.  What percentage of the bandwidth
  520.    should each class of service consume assuming an infinite supply of
  521.    each class of service datagrams?  What maximum delay (MGD) should be
  522.    guaranteed per node for low delay datagrams?
  523.  
  524.    It is possible to provide a more optimal route if the queue sizes for
  525.    each class of service are considered in the routing decision.  This,
  526.    however, adds additional overhead and complexity to each routing
  527.    node.  This may be an unacceptable additional complexity.
  528.  
  529.    How are we going to limit the use of more desirable classes of
  530.    service and higher priorities?  The algorithm limits use of the
  531.    various classes by restricting queue sizes especially the low delay
  532.    queue size.  This helps but it seems likely we will want to
  533.    instrument the number of datagrams requesting each Type-of-Service
  534.    and priority.  When a datagram requests multiple classes of service,
  535.    increment the instrumentation count once based upon the queue
  536.    actually used, selecting, low delay, high throughput, high
  537.    reliability, then regular.  If instrumentation reveals an excessive
  538.    imbalance, Internet operations can give this to administrators to
  539.    handle.  This instrumentation will show the distribution for types of
  540.    service requested by the Internet users.  This information can be
  541.    used to tune the Internet to service the user demands.
  542.  
  543.    Will the routing algorithms in use today have problems when routing
  544.    data with this algorithm?  Simulation tests need to be done to model
  545.    how the Internet will react.  If, for example, an application
  546.    requests multiple classes of service, round trip times may fluctuate
  547.    significantly.  Would TCP have to be more sophisticated in its round
  548.    trip time estimator?
  549.  
  550.    An objection to this type of queuing algorithm is that it is making
  551.    the routing and queuing more complicated.  There is current interest
  552.    in high speed packet switches which have very little protocol
  553.    overhead when handling/routing packets.  This algorithm complicates
  554.    not simplifies the protocol.  The bandwidth being made available is
  555.    increasing.  More T1 (1.5 Mbps) and higher speed links are being used
  556.    all the time.  However, in the history of communications, it seems
  557.    that the demand for bandwidth has always exceeded the supply.  When
  558.    there is wide spread use of optical fiber we may temporarily
  559.  
  560.  
  561.  
  562. Prue & Postel                                                  [Page 10]
  563.  
  564. RFC 1046                Type-of-Service Queuing            February 1988
  565.  
  566.  
  567.    experience a glut of capacity.  As soon as 1 gigabit optical fiber
  568.    link becomes reasonably priced, new applications will be created to
  569.    consume it all.  A single full motion high resolution color image
  570.    system can consume, as an upper limit, nearly a gigabit per second
  571.    channel (30 fps X 24 b/pixel X 1024 X 1024 pixels).
  572.  
  573.    In the study of one gateway, Dave Clark discovered that the per
  574.    datagram processing of the IP header constituted about 20% of the
  575.    processing time.  Much of the time per datagram was spent on
  576.    restarting input, starting output and queuing datagrams.  He thought
  577.    that a small additional amount of processing to support Type-of-
  578.    Service would be reasonable.  He suggests that even if the code does
  579.    slow the gateway down, we need to see if TOS is good for anything, so
  580.    this experiment is valuable.  To support the new high speed
  581.    communications of the near future, Dave wants to see switches which
  582.    will run one to two orders of magnitude faster.  This can not be done
  583.    by trimming a few instructions here or there.
  584.  
  585.    From a practical perspective, the problem this algorithm is trying to
  586.    solve is the lack of low delay service through the Internet today.
  587.    Implementing only the low delay queuing portion of this algorithm
  588.    would allow the Internet to provide a class of service it otherwise
  589.    could not provide.  Requesters of this class of service would not get
  590.    it for free.  Low delay class of datagram streams get low delay at
  591.    the cost of reliability and throughput.
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Prue & Postel                                                  [Page 11]
  619.