home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc1809 < prev    next >
Text File  |  1995-06-22  |  14KB  |  340 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                       C. Partridge
  8. Request for Comments: 1809                  BBN Systems and Technologies
  9. Category: Informational                                        June 1995
  10.  
  11.  
  12.  
  13.                    Using the Flow Label Field in IPv6
  14.  
  15.  
  16. Status of this Memo
  17.  
  18.    This memo provides information for the Internet community.  This memo
  19.    does not specify an Internet standard of any kind.  Distribution of
  20.    this memo is unlimited.
  21.  
  22. Abstract
  23.  
  24.    The purpose of this memo is to distill various opinions and
  25.    suggestions of the End-to-End Research Group regarding the handling
  26.    of Flow Labels into a set of suggestions for IPv6.  This memo is for
  27.    information purposes only and is not one of the IPv6 specifications.
  28.    Distribution of this memo is unlimited.
  29.  
  30. Introduction
  31.  
  32.    This memo originated as the report of a discussion at an End-to-End
  33.    Research Group meeting in November 1994.  At that meeting the group
  34.    discussed several issues regarding how to manage flow identifiers in
  35.    IPv6.   A report of the meeting was then circulated to the IPv6
  36.    community.  Feedback from that community resulted in changes to this
  37.    memo and in changes to the IPv6 specification to fix some minor
  38.    problems the End-to-End Group had raised.
  39.  
  40.    While many of the ideas in this memo have found their way into the
  41.    IPv6 specification, the explanation of why various design decisions
  42.    were made have not.  This memo is intended to provide some additional
  43.    context for interested parties.
  44.  
  45. Brief Description of the Flow Label
  46.  
  47.    The current draft of the IPv6 specification states that every IPv6
  48.    header contains a 24-bit Flow Label.  (Originally the specification
  49.    called for a 28-bit Flow ID field, which included the flow label and
  50.    a 4-bit priority field.  The priority field is now distinct, for
  51.    reasons discussed at the end of this memo).
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Partridge                    Informational                      [Page 1]
  59.  
  60. RFC 1809                                                       June 1995
  61.  
  62.  
  63.    The Flow Label is a pseudo-random number between 1 and FFFFFF (hex)
  64.    that is unique when combined with the source address.  The zero Flow
  65.    Label is reserved to say that no Flow Label is being used.  The
  66.    specification requires that a source must not reuse a Flow Label
  67.    value until all state information for the previous use of the Flow
  68.    Label has been flushed from all routers in the internet.
  69.  
  70.    The specification further requires that all datagrams with the same
  71.    (non-zero) Flow Label must have the same Destination Address, Hop-
  72.    by-Hop Options header, Routing Header and Source Address contents.
  73.    The notion is that by simply looking up the Flow Label in a table,
  74.    the router can decide how to route and forward the datagram without
  75.    examining the rest of the header.
  76.  
  77. Flow Label Issues
  78.  
  79.    The IPv6 specification originally left open a number of questions, of
  80.    which these three were among the most important:
  81.  
  82.         1.   What should a router do if a datagram with a (non-zero)
  83.              Flow Label arrives and the router has no state for that
  84.              Flow Label?
  85.  
  86.         2.   How does an internet flush old Flow Labels?
  87.  
  88.         3.   Which datagrams should carry (non-zero) Flow Labels?
  89.  
  90.    This memo summarizes the End-to-End Group's attempts to answer these
  91.    questions.
  92.  
  93. What Does a Router Do With Flow Labels for Which It Has No State?
  94.  
  95.    If a datagram with a non-zero Flow Label arrives at a router and the
  96.    router discovers it has no state information for that Flow Label,
  97.    what is the correct thing for the router to do?
  98.  
  99.    The IPv6 specification allows routers to ignore Flow Labels and also
  100.    allows for the possibility that IPv6 datagrams may carry flow setup
  101.    information in their options.  Unknown Flow Labels may also occur if
  102.    a router crashes and loses its state.  During a recovery period, the
  103.    router will receive datagrams with Flow Labels it does not know, but
  104.    this is arguably not an error, but rather a part of the recovery
  105.    period.  Finally, if the controversial suggestion that each TCP
  106.    connection be assigned a separate Flow Label is adopted, it may be
  107.    necessary to manage Flow Labels using an LRU cache (to avoid Flow
  108.    Label cache overflow in routers), in which case an active but
  109.    infrequently used flow's state may have been intentionally discarded.
  110.  
  111.  
  112.  
  113.  
  114. Partridge                    Informational                      [Page 2]
  115.  
  116. RFC 1809                                                       June 1995
  117.  
  118.  
  119.    In any case, it is clear that treating this situation as an error
  120.    and, say dropping the datagram and sending an ICMP message, is
  121.    inappropriate.  Indeed, it seems likely that in most cases, simply
  122.    forwarding the datagram as one would a datagram with a zero Flow
  123.    Label would give better service to the flow than dropping the
  124.    datagram.
  125.  
  126.    Of course, there will be situations in which routing the datagram as
  127.    if its Flow Label were zero will cause the wrong result.  An example
  128.    is a router which has two paths to the datagram's destination, one
  129.    via a high-bandwidth satellite link and the other via a low-bandwidth
  130.    terrestrial link.  A high bandwidth flow obviously should be routed
  131.    via the high-bandwidth link, but if the router loses the flow state,
  132.    the router may route the traffic via the low-bandwidth link, with the
  133.    potential for the flow's traffic to swamp the low-bandwidth link.  It
  134.    seems likely, however, these situations will be exceptions rather
  135.    than the rule.   So it seems reasonable to handle these situations
  136.    using options that indicate that if the flow state is absent, the
  137.    datagram needs special handling.  (The options may be Hop-by-Hop or
  138.    only handled at some routers, depending on the flow's needs).
  139.  
  140.    It would clearly be desirable to have some method for signalling to
  141.    end systems that the flow state has been lost and needs to be
  142.    refreshed.  One possibility is to add a state-lost bit to the Flow
  143.    Label field, however there is sensitivity to eating into the precious
  144.    24-bits of the field.  Other possibilities include adding options to
  145.    the datagram to indicate its Flow Label was unknown or sending an
  146.    ICMP message back to the flow source.
  147.  
  148.    In summary, the view is that the default rule should be that if a
  149.    router receives a datagram with an unknown Flow Label, it treats the
  150.    datagram as if the Flow Label is zero.  As part of forwarding, the
  151.    router will examine any hop-by-hop options and learn if the the
  152.    datagram requires special handling.  The options could include simply
  153.    the information that the datagram is to be dropped if the Flow Label
  154.    is unknown or could contain the flow state the router should have.
  155.    There is clearly room here for experimentation with option design.
  156.  
  157. Flushing Old Flow Labels
  158.  
  159.    The flow mechanism assumes that state associated with a given Flow
  160.    Label is somehow deposited in routers, so they know how to handle
  161.    datagrams that carry the Flow Label.  A serious problem is how to
  162.    flush Flow Labels that are no longer being used (stale Flow Labels)
  163.    from the routers.
  164.  
  165.    Stale Flow Labels can happen a number of ways, even if we assume that
  166.    the source always sends a message deleting a Flow Label when the
  167.  
  168.  
  169.  
  170. Partridge                    Informational                      [Page 3]
  171.  
  172. RFC 1809                                                       June 1995
  173.  
  174.  
  175.    source finishes using a Flow.  An internet may have partioned since
  176.    the flow was created.  Or the deletion message may be lost before
  177.    reaching all routers.  Furthermore, the source may crash before it
  178.    can send out a Flow Label deletion message.  The point here is that
  179.    we cannot expect the source (or, for the same reasons, a third party)
  180.    always to clear out stale Flow Labels.  Rather, routers will have to
  181.    find some mechanism to flush Flow Labels themselves.
  182.  
  183.    The obvious mechanism is to use a timer.  Routers should discard Flow
  184.    Labels whose state has not been refreshed within some period of time.
  185.    At the same time, a source that crashes must observe a quiet time,
  186.    during which it creates no flows, until it knows that all Flow Labels
  187.    from its previous life must have expired.  (Sources can avoid quiet
  188.    time restrictions by keeping information about active Flow Labels in
  189.    stable storage that survives crashes).  This is precisely how TCP
  190.    initial sequence numbers are managed and it seems the same mechanism
  191.    should work well for Flow Labels.
  192.  
  193.    Exactly how the Flow Label and its state should be refreshed needs
  194.    some study.  There are two obvious options.  The source could
  195.    periodically send out a special refresh message (such as an RSVP Path
  196.    message) to explicitly refresh the Flow Label and its state.  Or, the
  197.    router could treat every datagram that carries the Flow Label as an
  198.    implicit refresh or sources could send explicit refresh options.  The
  199.    choice is between periodically handling a special update message and
  200.    doing an extra computation on each datagram (namely noting in the
  201.    Flow Label's entry that the Flow Label has been refreshed).
  202.  
  203. Which Datagrams Should Carry (Non-Zero) Flow Labels?
  204.  
  205.    Interestingly, this is the problem on which the least progress has
  206.    been made.
  207.  
  208.    There were some points of basic agreement.  Small exchanges of data
  209.    should have a zero Flow Label, because it is not worth creating a
  210.    flow for a few datagrams.  Real-time flows must obviously always have
  211.    a Flow Label, since flows are a primary reason Flow Labels were
  212.    created.  The issue is what to do with peers sending large amounts of
  213.    best effort traffic (e.g., TCP connections).  Some people want all
  214.    long-term TCP connections to use Flow Labels, others do not.
  215.  
  216.    The argument in favor of using Flow Labels on individual TCP
  217.    connections is that even if the source does not request special
  218.    service, a network provider's routers may be able to recognize a
  219.    large amount of traffic and use the Flow Label field to establish a
  220.    special route that gives the TCP connection better service (e.g.,
  221.    lower delay or bigger bandwidth).  Another argument is to assist in
  222.    efficient demux at the receiver (i.e., IP and TCP demuxing could be
  223.  
  224.  
  225.  
  226. Partridge                    Informational                      [Page 4]
  227.  
  228. RFC 1809                                                       June 1995
  229.  
  230.  
  231.    done once).
  232.  
  233.    An argument against using Flow Labels in individual TCP connections
  234.    is that it changes how we handling route caches in routers.
  235.    Currently one can cache a route for a destination host, regardless of
  236.    how many different sources are sending to that destination host.
  237.    I.e., if five sources each have two TCP connections sending data to a
  238.    server, one cache entry containing the route to the server handles
  239.    all ten TCPs' traffic.  Putting Flow Labels in each datagram changes
  240.    the cache into a Flow Label cache, in which there is a cache entry
  241.    for every TCP connection.  So there's a potential for cache
  242.    explosion.  There are ways to alleviate this problem, such as
  243.    managing the Flow Label cache as an LRU cache, in which infrequently
  244.    used Flow Labels get discarded (and then recovered later).  It is not
  245.    clear, however, whether this will cause cache thrashing.
  246.  
  247.    Observe that there is no easy compromise between these positions.
  248.    One cannot, for instance, let the application decide whether to use a
  249.    Flow Label.  Those who want different Flow Labels for every TCP
  250.    connection assume that they may optimize a route without the
  251.    application's knowledge.  And forcing all applications to use Flow
  252.    Labels will force routing vendors to deal with the cache explosion
  253.    issue, even if we later discover that we don't want to optimize
  254.    individual TCP connections.
  255.  
  256. Note about the Priority Field
  257.  
  258.    The original IPv6 specification combined the Priority and Flow Label
  259.    fields and allowed flows to redefine the means of different values of
  260.    the Priority field.  During its discussions, the End-to-End group
  261.    realized this meant that if a router forwarded a datagram with an
  262.    unknown Flow Label it had to ignore the Priority field, because the
  263.    priority values might have been redefined.  (For instance, the
  264.    priorities might have been inverted). The IPv6 community concluded
  265.    this behavior was undesirable.  Indeed, it seems likely that when the
  266.    Flow Label are unknown, the router will be able to give much better
  267.    service if it use the Priority field to make a more informed routing
  268.    decision.  So the Priority field is now a distinct field, unaffected
  269.    by the Flow Label.
  270.  
  271. Acknowledgements
  272.  
  273.    I would like to acknowledge the assistance of the members of the
  274.    End-To-End Research Group, chaired by Bob Braden, whose discussions
  275.    produced this memo.  I would also like to particularly thank Deborah
  276.    Estrin for her help in putting this memo together.  Also thanks to
  277.    Richard Fox, Noel Chiappa, and Tony Li for insightful comments on the
  278.    draft.
  279.  
  280.  
  281.  
  282. Partridge                    Informational                      [Page 5]
  283.  
  284. RFC 1809                                                       June 1995
  285.  
  286.  
  287. Security Considerations
  288.  
  289.    Security issues are not discussed in this memo.
  290.  
  291. Author's Address
  292.  
  293.    Craig Partridge
  294.    BBN Systems and Technologies
  295.    10 Moulton St.
  296.    Cambridge, MA 02138
  297.  
  298.    EMail: craig@aland.bbn.com
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Partridge                    Informational                      [Page 6]
  339.  
  340.