diff options
Diffstat (limited to 'doc/rfc/rfc1809.txt')
-rw-r--r-- | doc/rfc/rfc1809.txt | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/doc/rfc/rfc1809.txt b/doc/rfc/rfc1809.txt new file mode 100644 index 0000000..53a6513 --- /dev/null +++ b/doc/rfc/rfc1809.txt @@ -0,0 +1,339 @@ + + + + + + +Network Working Group C. Partridge +Request for Comments: 1809 BBN Systems and Technologies +Category: Informational June 1995 + + + + Using the Flow Label Field in IPv6 + + +Status of this Memo + + This memo provides information for the Internet community. This memo + does not specify an Internet standard of any kind. Distribution of + this memo is unlimited. + +Abstract + + The purpose of this memo is to distill various opinions and + suggestions of the End-to-End Research Group regarding the handling + of Flow Labels into a set of suggestions for IPv6. This memo is for + information purposes only and is not one of the IPv6 specifications. + Distribution of this memo is unlimited. + +Introduction + + This memo originated as the report of a discussion at an End-to-End + Research Group meeting in November 1994. At that meeting the group + discussed several issues regarding how to manage flow identifiers in + IPv6. A report of the meeting was then circulated to the IPv6 + community. Feedback from that community resulted in changes to this + memo and in changes to the IPv6 specification to fix some minor + problems the End-to-End Group had raised. + + While many of the ideas in this memo have found their way into the + IPv6 specification, the explanation of why various design decisions + were made have not. This memo is intended to provide some additional + context for interested parties. + +Brief Description of the Flow Label + + The current draft of the IPv6 specification states that every IPv6 + header contains a 24-bit Flow Label. (Originally the specification + called for a 28-bit Flow ID field, which included the flow label and + a 4-bit priority field. The priority field is now distinct, for + reasons discussed at the end of this memo). + + + + + + +Partridge Informational [Page 1] + +RFC 1809 June 1995 + + + The Flow Label is a pseudo-random number between 1 and FFFFFF (hex) + that is unique when combined with the source address. The zero Flow + Label is reserved to say that no Flow Label is being used. The + specification requires that a source must not reuse a Flow Label + value until all state information for the previous use of the Flow + Label has been flushed from all routers in the internet. + + The specification further requires that all datagrams with the same + (non-zero) Flow Label must have the same Destination Address, Hop- + by-Hop Options header, Routing Header and Source Address contents. + The notion is that by simply looking up the Flow Label in a table, + the router can decide how to route and forward the datagram without + examining the rest of the header. + +Flow Label Issues + + The IPv6 specification originally left open a number of questions, of + which these three were among the most important: + + 1. What should a router do if a datagram with a (non-zero) + Flow Label arrives and the router has no state for that + Flow Label? + + 2. How does an internet flush old Flow Labels? + + 3. Which datagrams should carry (non-zero) Flow Labels? + + This memo summarizes the End-to-End Group's attempts to answer these + questions. + +What Does a Router Do With Flow Labels for Which It Has No State? + + If a datagram with a non-zero Flow Label arrives at a router and the + router discovers it has no state information for that Flow Label, + what is the correct thing for the router to do? + + The IPv6 specification allows routers to ignore Flow Labels and also + allows for the possibility that IPv6 datagrams may carry flow setup + information in their options. Unknown Flow Labels may also occur if + a router crashes and loses its state. During a recovery period, the + router will receive datagrams with Flow Labels it does not know, but + this is arguably not an error, but rather a part of the recovery + period. Finally, if the controversial suggestion that each TCP + connection be assigned a separate Flow Label is adopted, it may be + necessary to manage Flow Labels using an LRU cache (to avoid Flow + Label cache overflow in routers), in which case an active but + infrequently used flow's state may have been intentionally discarded. + + + + +Partridge Informational [Page 2] + +RFC 1809 June 1995 + + + In any case, it is clear that treating this situation as an error + and, say dropping the datagram and sending an ICMP message, is + inappropriate. Indeed, it seems likely that in most cases, simply + forwarding the datagram as one would a datagram with a zero Flow + Label would give better service to the flow than dropping the + datagram. + + Of course, there will be situations in which routing the datagram as + if its Flow Label were zero will cause the wrong result. An example + is a router which has two paths to the datagram's destination, one + via a high-bandwidth satellite link and the other via a low-bandwidth + terrestrial link. A high bandwidth flow obviously should be routed + via the high-bandwidth link, but if the router loses the flow state, + the router may route the traffic via the low-bandwidth link, with the + potential for the flow's traffic to swamp the low-bandwidth link. It + seems likely, however, these situations will be exceptions rather + than the rule. So it seems reasonable to handle these situations + using options that indicate that if the flow state is absent, the + datagram needs special handling. (The options may be Hop-by-Hop or + only handled at some routers, depending on the flow's needs). + + It would clearly be desirable to have some method for signalling to + end systems that the flow state has been lost and needs to be + refreshed. One possibility is to add a state-lost bit to the Flow + Label field, however there is sensitivity to eating into the precious + 24-bits of the field. Other possibilities include adding options to + the datagram to indicate its Flow Label was unknown or sending an + ICMP message back to the flow source. + + In summary, the view is that the default rule should be that if a + router receives a datagram with an unknown Flow Label, it treats the + datagram as if the Flow Label is zero. As part of forwarding, the + router will examine any hop-by-hop options and learn if the the + datagram requires special handling. The options could include simply + the information that the datagram is to be dropped if the Flow Label + is unknown or could contain the flow state the router should have. + There is clearly room here for experimentation with option design. + +Flushing Old Flow Labels + + The flow mechanism assumes that state associated with a given Flow + Label is somehow deposited in routers, so they know how to handle + datagrams that carry the Flow Label. A serious problem is how to + flush Flow Labels that are no longer being used (stale Flow Labels) + from the routers. + + Stale Flow Labels can happen a number of ways, even if we assume that + the source always sends a message deleting a Flow Label when the + + + +Partridge Informational [Page 3] + +RFC 1809 June 1995 + + + source finishes using a Flow. An internet may have partioned since + the flow was created. Or the deletion message may be lost before + reaching all routers. Furthermore, the source may crash before it + can send out a Flow Label deletion message. The point here is that + we cannot expect the source (or, for the same reasons, a third party) + always to clear out stale Flow Labels. Rather, routers will have to + find some mechanism to flush Flow Labels themselves. + + The obvious mechanism is to use a timer. Routers should discard Flow + Labels whose state has not been refreshed within some period of time. + At the same time, a source that crashes must observe a quiet time, + during which it creates no flows, until it knows that all Flow Labels + from its previous life must have expired. (Sources can avoid quiet + time restrictions by keeping information about active Flow Labels in + stable storage that survives crashes). This is precisely how TCP + initial sequence numbers are managed and it seems the same mechanism + should work well for Flow Labels. + + Exactly how the Flow Label and its state should be refreshed needs + some study. There are two obvious options. The source could + periodically send out a special refresh message (such as an RSVP Path + message) to explicitly refresh the Flow Label and its state. Or, the + router could treat every datagram that carries the Flow Label as an + implicit refresh or sources could send explicit refresh options. The + choice is between periodically handling a special update message and + doing an extra computation on each datagram (namely noting in the + Flow Label's entry that the Flow Label has been refreshed). + +Which Datagrams Should Carry (Non-Zero) Flow Labels? + + Interestingly, this is the problem on which the least progress has + been made. + + There were some points of basic agreement. Small exchanges of data + should have a zero Flow Label, because it is not worth creating a + flow for a few datagrams. Real-time flows must obviously always have + a Flow Label, since flows are a primary reason Flow Labels were + created. The issue is what to do with peers sending large amounts of + best effort traffic (e.g., TCP connections). Some people want all + long-term TCP connections to use Flow Labels, others do not. + + The argument in favor of using Flow Labels on individual TCP + connections is that even if the source does not request special + service, a network provider's routers may be able to recognize a + large amount of traffic and use the Flow Label field to establish a + special route that gives the TCP connection better service (e.g., + lower delay or bigger bandwidth). Another argument is to assist in + efficient demux at the receiver (i.e., IP and TCP demuxing could be + + + +Partridge Informational [Page 4] + +RFC 1809 June 1995 + + + done once). + + An argument against using Flow Labels in individual TCP connections + is that it changes how we handling route caches in routers. + Currently one can cache a route for a destination host, regardless of + how many different sources are sending to that destination host. + I.e., if five sources each have two TCP connections sending data to a + server, one cache entry containing the route to the server handles + all ten TCPs' traffic. Putting Flow Labels in each datagram changes + the cache into a Flow Label cache, in which there is a cache entry + for every TCP connection. So there's a potential for cache + explosion. There are ways to alleviate this problem, such as + managing the Flow Label cache as an LRU cache, in which infrequently + used Flow Labels get discarded (and then recovered later). It is not + clear, however, whether this will cause cache thrashing. + + Observe that there is no easy compromise between these positions. + One cannot, for instance, let the application decide whether to use a + Flow Label. Those who want different Flow Labels for every TCP + connection assume that they may optimize a route without the + application's knowledge. And forcing all applications to use Flow + Labels will force routing vendors to deal with the cache explosion + issue, even if we later discover that we don't want to optimize + individual TCP connections. + +Note about the Priority Field + + The original IPv6 specification combined the Priority and Flow Label + fields and allowed flows to redefine the means of different values of + the Priority field. During its discussions, the End-to-End group + realized this meant that if a router forwarded a datagram with an + unknown Flow Label it had to ignore the Priority field, because the + priority values might have been redefined. (For instance, the + priorities might have been inverted). The IPv6 community concluded + this behavior was undesirable. Indeed, it seems likely that when the + Flow Label are unknown, the router will be able to give much better + service if it use the Priority field to make a more informed routing + decision. So the Priority field is now a distinct field, unaffected + by the Flow Label. + +Acknowledgements + + I would like to acknowledge the assistance of the members of the + End-To-End Research Group, chaired by Bob Braden, whose discussions + produced this memo. I would also like to particularly thank Deborah + Estrin for her help in putting this memo together. Also thanks to + Richard Fox, Noel Chiappa, and Tony Li for insightful comments on the + draft. + + + +Partridge Informational [Page 5] + +RFC 1809 June 1995 + + +Security Considerations + + Security issues are not discussed in this memo. + +Author's Address + + Craig Partridge + BBN Systems and Technologies + 10 Moulton St. + Cambridge, MA 02138 + + EMail: craig@aland.bbn.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Partridge Informational [Page 6] + |