summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1363.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc1363.txt')
-rw-r--r--doc/rfc/rfc1363.txt1123
1 files changed, 1123 insertions, 0 deletions
diff --git a/doc/rfc/rfc1363.txt b/doc/rfc/rfc1363.txt
new file mode 100644
index 0000000..c17a572
--- /dev/null
+++ b/doc/rfc/rfc1363.txt
@@ -0,0 +1,1123 @@
+
+
+
+
+
+
+Network Working Group C. Partridge
+Request for Comments: 1363 BBN
+ September 1992
+
+
+ A Proposed Flow Specification
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard. Distribution of this memo is
+ unlimited.
+
+Abstract
+
+ A flow specification (or "flow spec") is a data structure used by
+ internetwork hosts to request special services of the internetwork,
+ often guarantees about how the internetwork will handle some of the
+ hosts' traffic. In the future, hosts are expected to have to request
+ such services on behalf of distributed applications such as
+ multimedia conferencing.
+
+ The flow specification defined in this memo is intended for
+ information and possible experimentation (i.e., experimental use by
+ consenting routers and applications only). This RFC is a product of
+ the Internet Research Task Force (IRTF).
+
+Introduction
+
+ The Internet research community is currently studying the problems of
+ supporting a new suite of distributed applications over
+ internetworks. These applications, which include multimedia
+ conferencing, data fusion, visualization, and virtual reality, have
+ the property that they require the distributed system (the collection
+ of hosts that support the applications along with the internetwork to
+ which they are attached) be able to provide guarantees about the
+ quality of communication between applications. For example, a video
+ conference may require a certain minimum bandwidth to be sure that
+ the video images are delivered in a timely way to all recipients.
+
+ One way for the distributed system to provide guarantees is for hosts
+ to negotiate with the internetwork for rights to use a certain part
+ of the internetwork's resources. (An alternative is to have the
+ internetwork infer the hosts' needs from information embedded in the
+ data traffic each host injects into the network. Currently, it is
+ not clear how to make this scheme work except for a rather limited
+ set of traffic classes.)
+
+
+
+
+Partridge [Page 1]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ There are a number of ways to effect a negotiation. For example a
+ negotiation can be done in-band or out-of-band. It can also be done
+ in advance of sending data (possibly days in advance), as the first
+ part of a connection setup, or concurrently with sending (i.e., a
+ host starts sending data and starts a negotiation to try to ensure
+ that it will allowed to continue sending). Insofar as is possible,
+ this memo is agnostic with regard to the variety of negotiation that
+ is to be done.
+
+ The purpose of this memo is to define a data structure, called a flow
+ specification or flow spec, that can be used as part of the
+ negotiation to describe the type of service that the hosts need from
+ the internetwork. This memo defines the format of the fields of the
+ data structure and their interpretation. It also briefly describes
+ what purpose the different fields fill, and discusses why this set of
+ fields is thought to be both necessary and sufficient.
+
+ It is important to note that the goal of this flow spec is to able to
+ describe *any* flow requirement, both for guaranteed flows and for
+ applications that simply want to give hints to the internetwork about
+ their requirements.
+
+Format of the Flow Spec
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Version | Maximum Transmission Unit |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Token Bucket Rate | Token Bucket Size |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Maximum Transmission Rate | Minimum Delay Noticed |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Maximum Delay Variation | Loss Sensitivity |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Burst Loss Sensitivity | Loss Interval |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Quality of Guarantee |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Discussion of the Flow Spec
+
+ The flow spec indicates service requirements for a single direction.
+ Multidirectional flows will need to request services in both
+ directions (using two flow specs).
+
+ To characterize a unidirectional flow, the flow spec needs to do four
+ things.
+
+
+
+Partridge [Page 2]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ First, it needs to characterize how the flow's traffic will be
+ injected into the internetwork. If the internetwork doesn't know
+ what to expect (is it a gigabit-per-second flow or a three kilobit-
+ per-second flow?) then it is difficult for the internetwork to make
+ guarantees. (Note the word "difficult" rather than "impossible." It
+ may be possible to statistically manage traffic or over-engineer the
+ network so well that the network can accept almost all flows, without
+ setup. But this problem looks far harder than asking the sender to
+ approximate its behavior so the network can plan.) In this flow
+ spec, injected traffic is characterized as having a sustainable rate
+ (the token bucket rate) a peak rate (the maximum transmission rate),
+ and an approximate burst size (the token bucket size). A more
+ precise definition of each of these fields is given below. The
+ characterization is based, in part, on the work done in [1].
+
+ Second, the flow spec needs to characterize sensitivity to delay.
+ Some applications are more sensitive than others. At the same time,
+ the internetwork will likely have a choice of routes with various
+ delays available from the source to destination. For example, both
+ routes using satellites (which have very long delays) and routes
+ using terrestrial lines (which will have shorter delays) may be
+ available. So the sending host needs to indicate the flow's
+ sensitivity to delay. However, this field is only advisory. It only
+ tells the network when to stop trying to reduce the delay - it does
+ not specify a maximum acceptable delay.
+
+ There are two problems with allowing applications to specify the
+ maximum acceptable delay.
+
+ First, observe that an application would probably be happy with a
+ maximum delay of 100 ms between the US and Japan but very unhappy
+ with a delay of 100 ms within the same city. This observation
+ suggests that the maximum delay is actually variable, and is a
+ function of the delay that is considered achievable. But the
+ achievable delay is largely determined by the geographic distance
+ between the two peers, and this sort of geographical information is
+ usually not available from a network. Worse yet, the advent of
+ mobile hosts makes such information increasingly hard to provide. So
+ there is reason to believe that applications may have difficulty
+ choosing a rational maximum delay.
+
+ The second problem with maximum delays is that they are an attempt to
+ quantify what performance is acceptable to users, and an application
+ usually does not know what performance will be acceptable its user.
+ For example, a common justification for specifying a maximum
+ acceptable delay is that human users find it difficult to talk to
+ each other over a link with more than about 100 ms of delay.
+ Certainly such delays can make the conversation less pleasant, but it
+
+
+
+Partridge [Page 3]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ is still possible to converse when delays are several seconds long,
+ and given a choice between no connection and a long delay, many users
+ will pick the delay. (The phone call may involve an important matter
+ that must be resolved.)
+
+ As part of specifying a flow's delay sensitivity, the flow spec must
+ also characterize how sensitive the flow is to the distortion of its
+ data stream.
+
+ Packets injected into a network according to some pattern will not
+ normally come out of the network still conforming to the pattern.
+ Instead, the pattern will have been distorted by queueing effects in
+ the network. Since there is reason to believe that it may make
+ network design easier to continue to allow the networks slightly
+ distort traffic patterns, it is expected that those applications
+ which are sensitive to distortion will require their hosts to use
+ some amount of buffering to reshape the flow back into its original
+ form. It seems reasonable to assume that buffer space is not
+ infinite and that a receiving system will wish to limit the amount of
+ buffering that a single flow can use.
+
+ The amount of buffer space required for removing distortion at the
+ receiving system is determined by the variation in end-to-end
+ transmission delays for data sent over the flow. If the transmission
+ delay is a mean delay, D, plus or minus a variance, V, the receiving
+ system needs buffer space equivalent to 2 * V * the transmission
+ rate. To see why this is so, consider two packets, A and B, sent T
+ time units apart which must be delivered to the receiving application
+ T time units apart. In the worst case, A arrives after a delay of
+ D-V time units (the minimum delay) and B arrives after a delay of D+V
+ time units (the maximum delay). The receiver cannot deliver B until
+ it arrives, which is T + 2 * V time units after A. To ensure that A
+ is delivered T time units before B, A must be buffered for 2 * V time
+ units. The delay variance field is the value of 2 * V, and allows
+ the receiver to indicate how much buffering it is willing to provide.
+
+ A third function of the flow spec is to signal sensitivity to loss of
+ data. Some applications are more sensitive to the loss of their data
+ than other applications. Some real-time applications are both
+ sensitive to loss and unable to wait for retransmissions of data.
+ For these particularly sensitive applications, hosts may implement
+ forward error correction on a flow to try to absolutely minimize
+ loss. The loss fields allow hosts to request loss properties
+ appropriate for the application's requirements.
+
+ Finally, it is expected that the internetwork may be able to provide
+ a range of service guarantees. At the best, the internetwork may be
+ asked to guarantee (with tight probability bounds) the quality of
+
+
+
+Partridge [Page 4]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ service it will provide. Or the internetwork may simply be asked to
+ ensure that packets sent over the flow take a terrestrial path. The
+ quality of guarantee field indicates what type of service guarantee
+ the application desires.
+
+Definition of Individual Fields
+
+General Format of Fields
+
+ With a few exceptions, fields of the flow spec are expressed using a
+ common 16-bit format. This format has two forms. The first form is
+ shown below.
+
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |0| Exponent | Value |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ In this format, the first bit is 0, followed by 7 bits of an exponent
+ (E), and an 8-bit value (V). This format encodes a number, of the
+ form V * (2**E). This representation was chosen to allow easy
+ representation of a wide range of values, while avoiding over-precise
+ representations.
+
+ In some case, systems will not wish to request a precise value but
+ rather simply indicate some sensitivity. For example, a virtual
+ terminal application like Telnet will likely want to indicate that it
+ is sensitive to delay, but it may not be worth expressing particular
+ delay values for the network to try to achieve. For these cases,
+ instead of a number, the field in the flow spec will take the
+ following form:
+
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |1| Well-defined Constant |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The first bit of the field is one, and is followed by a 15-bit
+ constant. The values of the constants for given fields are defined
+ below. Any additional values can be requested from the Internet
+ Assigned Numbers Authority (IANA).
+
+ Version Field
+
+ This field is a 16-bit integer in Internet byte order. It is the
+ version number of the flow specification. The version number of
+ the flow specification defined in this document is 1. The IANA is
+ responsible for assigning future version numbers for any proposed
+
+
+
+Partridge [Page 5]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ revisions of this flow specification.
+
+ This field does not use the general field format.
+
+ Maximum Transmission Unit (MTU)
+
+ A 16-bit integer in Internet byte order which is the maximum
+ number of bytes in the largest possible packet to be transmitted
+ over this flow.
+
+ This field does not use the general field format.
+
+ The field serves two purposes.
+
+ It is a convenient unit for expressing loss properties. Using the
+ default MTU of the internetwork is inappropriate since the
+ internetwork have very large MTU, such the 64Kbytes of IP, but
+ applications and hosts may be sensitive to losses of far less than
+ an MTU's amount of data -- for example, a voice application would
+ be sensitive to a loss of several consecutive small packets.
+
+ The MTU also bounds the amount of time that a flow can transmit,
+ uninterrupted, on a shared media.
+
+ Similarly, the loss rates of links that suffer bit errors will
+ vary dramatically based on the MTU size.
+
+ Token Bucket Rate
+
+ The token bucket rate is one of three fields used to define how
+ traffic will be injected into the internetwork by the sending
+ application. (The other two fields are the token bucket size and
+ the maximum transmission rate.)
+
+ The token rate is the rate at which tokens (credits) are placed
+ into an imaginary token bucket. For each flow, a separate bucket
+ is maintained. To send a packet over the flow, a host must remove
+ a number of credits equal to the size of the packet from the token
+ bucket. If there are not enough credits, the host must wait until
+ enough credits accumulate in the bucket.
+
+ Note that the fact that the rate is expressed in terms of a token
+ bucket rate does not mean that hosts must implement token buckets.
+ Any traffic management scheme that yields equivalent behavior is
+ permitted.
+
+ The field is in the general field format and counts the number of
+ byte credits (i.e., right to send a byte) per second which are
+
+
+
+Partridge [Page 6]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ deposited into the token bucket. The value must be a number (not
+ a well-known constant).
+
+ The value zero is slightly special. It is used to indicate that
+ the application is not making a request for bandwidth guarantees.
+ If this field is zero, then the Token Bucket Size must also be
+ zero, and the type of guarantee requested may be no higher than
+ predicted service.
+
+ Token Bucket Size
+
+ The token bucket size controls the maximum amount of data that the
+ flow can send at the peak rate. More formally, if the token
+ bucket size is B, and the token bucket rate is R, over any
+ arbitrarily chosen interval T in the life of the flow, the amount
+ of data that the flow sends cannot have exceeded B + (R * T)
+ bytes.
+
+ The token bucket is filled at the token bucket rate. The bucket
+ size limits how many credits the flow may store. When the bucket
+ is full, new credits are discarded.
+
+ The field is in the general field format and indicates the size of
+ the bucket in bytes. The value must be a number.
+
+ Note that the bucket size must be greater than or equal to the MTU
+ size.
+
+ Zero is a legal value for the field and indicates that no credits
+ are saved.
+
+ Maximum Transmission Rate
+
+ The maximum transmission rate limits how fast packets may be sent
+ back to back from the host. Consider that if the token bucket is
+ full, it is possible for the flow to send a series of back-to-back
+ packets equal to the size of the token bucket. If the token
+ bucket size is large, this back-to-back run may be long enough to
+ significantly inhibit multiplexing.
+
+ To limit this effect, the maximum transmission rate bounds how
+ fast successive packets may be placed on the network.
+
+ One can think of the maximum transmission rate control as being a
+ form of a leaky bucket. When a packet is sent, a number of
+ credits equal to the size of the packet is placed into an empty
+ bucket, which drains credits at the maximum transmission rate. No
+ more packets may be sent until the bucket has emptied again.
+
+
+
+Partridge [Page 7]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ The maximum transmission rate is the rate at which the bucket is
+ emptied. The field is in the general field format and indicates
+ the size of the bucket in bytes. The value must be a number and
+ must be greater than or equal to the token bucket rate.
+
+ Note that the MTU size can be used in conjunction with the maximum
+ transmission rate to bound how long an individual packet blocks
+ other transmissions. The MTU specifies the maximum time an
+ individual packet may take. The Maximum Transmission Rate, limits
+ the frequency with which packets may be placed on the network.
+
+ Minimum Delay Noticed
+
+ The minimum delay noticed field tells the internetwork that the
+ host and application are effectively insensitive to improvements
+ in end-to-end delay below this value. The network is encouraged
+ to drive the delay down to this value but need not try to improve
+ the delay further.
+
+ The field is in the general field format.
+
+ If expressed as a number it is the number of microseconds of delay
+ below which the host and application do not care about
+ improvements. Human users only care about delays in the
+ millisecond range but some applications will be computer to
+ computer and computers now have clock times measured in a handful
+ of nanoseconds. For such computers, microseconds are an
+ appreciable time. For this reason, this field measures in
+ microseconds, even though that may seem small.
+
+ If expressed as a well-known constant (first bit set), two field
+ values are accepted:
+
+ 0 - the application is not sensitive to delay
+
+ 1 - the application is moderately delay sensitive
+ e.g., avoid satellite links where possible).
+
+ Maximum Delay Variation
+
+ If a receiving application requires data to be delivered in the
+ same pattern that the data was transmitted, it may be necessary
+ for the receiving host to briefly buffer data as it is received so
+ that the receiver can restore the old transmission pattern. (An
+ easy example of this is a case where an application wishes to send
+ and transmit data such as voice samples, which are generated and
+ played at regular intervals. The regular intervals may be
+ distorted by queueing effects in the network and the receiver may
+
+
+
+Partridge [Page 8]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ have to restore the regular spacing.)
+
+ The amount of buffer space that the receiving host is willing to
+ provide determines the amount of variation in delay permitted for
+ individual packets within a given flow. The maximum delay
+ variation field makes it possible to tell the network how much
+ variation is permitted. (Implementors should note that the
+ restrictions on the maximum transmission rate may cause data
+ traffic patterns to be distorted before they are placed on the
+ network, and that this distortion must be accounted for in
+ determining the receiver buffer size.)
+
+ The field is in the general field format and must be a number. It
+ is the difference, in microseconds, between the maximum and
+ minimum possible delay that a packet will experience. (There is
+ some question about whether microsecond units are too large. At a
+ terabit per second, one microsecond is a megabit. Presumably if a
+ host is willing to receive data at terabit speeds it is willing to
+ provide megabits of buffer space.)
+
+ The value of 0, meaning the receiving host will not buffer out
+ delays, is acceptable but the receiving host must still have
+ enough buffer space to receive a maximum transmission unit sized
+ packet from the sending host. Note that it is expected that a
+ value of 0 will make it unlikely that a flow can be established.
+
+ Loss Sensitivity
+
+ This field indicates how sensitive the flow's traffic is to
+ losses. Loss sensitivity can be expressed in one of two ways:
+ either as a number of losses of MTU-sized packets in an interval,
+ or simply as a value indicating a level of sensitivity.
+
+ The field is in the general field format.
+
+ If the value is a number, then the value is the number of MTU-
+ sized packets that may be lost out of the number of MTU-sized
+ packets listed in the Loss Interval field.
+
+ If the value is a well-known constant, then one of two values is
+ permitted:
+
+ 0 - the flow is insensitive to loss
+
+ 1 - the flow is sensitive to loss (where possible
+ choose the path with the lowest loss rate).
+
+
+
+
+
+Partridge [Page 9]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ Burst Loss Sensitivity
+
+ This field states how sensitive the flow is to losses of
+ consecutive packets. The field enumerates the maximum number of
+ consecutive MTU-sized packets that may be lost.
+
+ The field is in the general field format.
+
+ If the value is a number, then the value is the number of
+ consecutive MTU-sized packets that may be lost.
+
+ If the value is a well-known constant, then the value 0 indicates
+ that the flow is insensitive to burst loss.
+
+ Note that it is permissible to set the loss sensitivity field to
+ simply indicate sensitivity to loss, and set a numerical limit on
+ the number of consecutive packets that can be lost.
+
+ Loss Interval
+
+ This field determines the period over which the maximum number of
+ losses per interval are measured. In other words, given any
+ arbitrarily chosen interval of this length, the number of losses
+ may not exceed the number in the Loss Sensitivity field.
+
+ The field is in the general field format.
+
+ If the Loss Sensitivity field is a number, then this field must
+ also be a number and must indicate the number of MTU-sized packets
+ which constitutes a loss interval.
+
+ If the Loss Sensitivity field is not a number (i.e., is a well-
+ known constant) then this field must use the well-known constant
+ of 0 (i.e., first bit set, all other bits 0) indicating that no
+ loss interval is defined.
+
+ Quality of Guarantee
+
+ It is expected that the internetwork will likely have to offer
+ more than one type of guarantee.
+
+ There are two unrelated issues related to guarantees.
+
+ First, it may not be possible for the internetwork to make a firm
+ guarantee. Consider a path through an internetwork in which the
+ last hop is an Ethernet. Experience has shown (e.g., some of the
+ IETF conferencing experiments) that an Ethernet can often give
+ acceptable performance, but clearly the internetwork cannot
+
+
+
+Partridge [Page 10]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ guarantee that the Ethernet will not saturate at some time during
+ a flow's lifetime. Thus it must be possible to distinguish
+ between flows which cannot tolerate the small possibility of a
+ failure (and thus must guaranteed at every hop in the path) and
+ those that can tolerate islands of uncertainty.
+
+ Second, there is some preliminary work (see [2]) that suggests
+ that some applications will be able to adapt to modest variations
+ in internetwork performance and that network designers can exploit
+ this flexibility to allow better network utilization. In this
+ model, the internetwork would be allowed to deviate slightly from
+ the promised flow parameters during periods of load. This class
+ of service is called predicted service (to distinguish it from
+ guaranteed service).
+
+ The difference between predicted service and service which cannot
+ be perfectly guaranteed (e.g., the Ethernet example mentioned
+ above) is that the imperfect guarantee makes no statistical
+ promises about how it might mis-behave. In the worst case, the
+ imperfect guarantee will not work at all, whereas predicted
+ service will give slightly degraded service. Note too that
+ predicted service assumes that the routers and links in a path all
+ cooperate (to some degree) whereas an imperfect guarantee states
+ that some routers or links will not cooperate.
+
+ The field is a 16-bit field in Internet byte order. There are six
+ legal values:
+
+ 0 - no guarantee is required (the host is simply expressing
+ desired performance for the flow)
+
+ 100 (hex) - an imperfect guarantee is requested.
+
+ 200 (hex) - predicted service is requested and if unavailable,
+ then no flow should be established.
+
+ 201 (hex) - predicted service is requested but an imperfect
+ guarantee is acceptable.
+
+ 300 (hex) - guaranteed service is requested and if a firm
+ guarantee cannot be given, then no flow should be
+ established.
+
+ 301 (hex) - guaranteed service is request and but an imperfect
+ guarantee is acceptable.
+
+ It is expected that asking for predicted service or permitting an
+ imperfect guarantee will substantially increase the chance that a
+
+
+
+Partridge [Page 11]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ flow request will be accepted.
+
+Possible Limitations in the Proposed Flow Spec
+
+ There are at least three places where the flow spec is arguably
+ imperfect, based on what we currently know about flow reservation.
+ In addition, since this is a first attempt at a flow spec, readers
+ should expect modifications as we learn more.
+
+ First, the loss model is not perfect. Simply stating that an
+ application is sensitive to loss and to burst loss is a rather crude
+ indication of sensitivity. However, explicitly enumerating loss
+ requirements within a cycle is also an imperfect mechanism. The key
+ problem with the explicit values is that not all packets sent over a
+ flow will be a full MTU in size. Expressed another way, the current
+ flow spec expects that an MTU-sized packet will be the unit of error
+ recovery. If flows send packets in a range of sizes, then the loss
+ bounds may not be very useful. However, the thought of allowing a
+ flow to request a set of loss models (one per packet size) is
+ sufficiently painful that I've limited the flow to one loss profile.
+ Further study of loss models is clearly needed.
+
+ Second, the minimum delay sensitivity field limits a flow to stating
+ that there is one point on a performance sensitivity curve below
+ which the flow is no longer interested in improved performance. It
+ may be that a single point is insufficient to fully express a flow's
+ sensitivity. For example, consider a flow for supporting part of a
+ two-way voice conversation. Human users will notice improvements in
+ delay down to a few 10s of milliseconds. However, the key point of
+ sensitivity is the delay at which normal conversation begins to
+ become awkward (about 100 milliseconds). By allowing only one
+ sensitivity point, the flow spec forces the flow designer to either
+ ask for the best possible delay (e.g, a few 10's of ms) to try to get
+ maximum performance from the network, or state a sensitivity of about
+ 95 ms, and accept the possibility that the internetwork will not try
+ to improve delay below that value, even if it could (and even though
+ the user would notice the improvement). My expectation is that a
+ simple point is likely to be easier to deal with than attempting to
+ enumerate two (or three or four) points in the sensitivity curve.
+
+ Third, the models for service guarantees is still evolving and it is
+ by no means clear that the service choices provided are the correct
+ set.
+
+
+
+
+
+
+
+
+Partridge [Page 12]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+How an Internetwork is Expected to Handle a Flow Spec
+
+ There are at least two parts to the issue of how an internetwork is
+ expected to handle a flow spec. The first part deals with how the
+ flow spec is interpreted so that the internetwork can find a route
+ which will allow the internetwork to match the flow's requirements.
+ The second part deals with how the network replies to the host's
+ request.
+
+ The precise mechanism for setting up a flow, given a flow spec, is a
+ large topic and beyond the scope of this memo. The purpose of the
+ next few paragraphs is simply to sketch an argument that this flow
+ spec is sufficient to the requirements of the setup mechanisms known
+ to the author.
+
+ The key problem in setting up a flow is determining if there exist
+ one or more routes from the source to the destination(s) which might
+ be able to support the quality of service requested. Once one has a
+ route (or set of candidate routes) one can take whatever actions may
+ be appropriate to confirm that the route is actually viable and to
+ cause the flow's data to follow that route.
+
+ There are a number of ways to find a route. One might try to build a
+ route on the fly by establishing the flow hop-by-hop (as ST-II does)
+ or one might consult a route server which provides a set of candidate
+ source routes derived from a routing database. However, whatever
+ system is used, some basic information about the flow needs to be
+ provided to the routing system. This information is:
+
+ * How much bandwidth the flow may require. There's no point
+ in routing a flow that expects to send at over 10 megabits per
+ second via a T1 (1.5 megabit per second) link.
+
+ * How delay sensitive the application is. One does not wish
+ to route a delay-sensitive application over a satellite link,
+ unless the satellite link is the only possible route from here
+ to there.
+
+ * How much error can be tolerated. Can we send this flow over
+ our microwave channel on a rainy day or is a more reliable link
+ required?
+
+ * How firm the guarantees need to be. Can we put an Ethernet
+ in as one of the hops?
+
+ * How much delay variation is tolerated. Again, can an Ethernet
+ be included in the path? Does the routing system need to worry
+ if the addition of this flow will cause a few routers to run
+
+
+
+Partridge [Page 13]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ at close to capacity? (A side note: we assume that the routers
+ are running with priority queueing systems, so running the router
+ close to capacity doesn't mean that all flows get long and
+ variable delays. Rather, running close to capacity means that
+ high priority flows will be unaffected, and low priority flows
+ will get hit with a lot of delay and variation.)
+
+ The flow spec provides all of this information. So it seems
+ plausible to assume it provides enough information to make routing
+ decisions at setup time.
+
+ The flow spec was designed with the expectation that the network
+ would give a yes or no reply to a request for a guaranteed flow.
+
+ Some researchers have suggested that the negotiation to set up a flow
+ might be an extended negotiation, in which the requesting host
+ initially requests the best possible flow it could desire and then
+ haggles with the network until they agree on a flow with properties
+ that the network can actually provide and the application still finds
+ useful. This notion bothers me for at least two reasons. First, it
+ means setting up a flow is a potentially long process. Second, the
+ general problem of finding all possible routes with a given set of
+ properties is a version of the traveling salesman problem, and I
+ don't want to embed traveling salesman algorithms into a network's
+ routing system.
+
+ The model used in designing this flow spec was that a system would
+ ask for the minimum level of service that was deemed acceptable and
+ the network would try to find a route that met that level of service.
+ If the network is unable to achieve the desired level of service, it
+ refuses the flow, otherwise it accepts the flow.
+
+The Flow Spec as a Return Value
+
+ This memo does not specify the data structures that the network uses
+ to accept or reject a flow. However, the flow spec has been designed
+ so that it can be used to return the type of service being
+ guaranteed.
+
+ If the request is being accepted, the minimum delay field could be
+ set to the guaranteed or predicted delay, and the quality of
+ guarantee field could be set to no guarantee (0), imperfect guarantee
+ (100 hex), predicted service (200 hex), or guaranteed service (300
+ hex).
+
+ If the request is being rejected, the flow spec could be modified to
+ indicate what type of flow the network believes it could accept e.g.,
+ the traffic shape or delay characteristics could be adjusted or the
+
+
+
+Partridge [Page 14]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ type of guarantee lowered). Note that this returned flow spec would
+ likely be a hint, not a promised offer of service.
+
+Why Type of Service is not Good Enough
+
+ The flow spec proposed in this memo takes the form of a set of
+ parameters describing the properties and requirements of the flow.
+ An alternative approach which is sometimes mentioned (and which is
+ currently incorporated into IP) is to use a Type of Service (TOS)
+ value.
+
+ The TOS value is an integer (or bit pattern) whose values have been
+ predefined to represent requested quality of services. Thus, a TOS
+ of 47 might request service for a flow using up to 1 gigabit per
+ second of bandwidth with a minimum delay sensitivity of 100
+ milliseconds.
+
+ TOS schemes work well if the different quality of services that may
+ be requested are both enumerable and reasonably small.
+ Unfortunately, these conditions do not appear to apply to future
+ internetworks. The range of possible bandwidth requests alone is
+ huge. Combine this range with several gradations of delay
+ requirements, and widely different sensitivities to errors and the
+ set of TOS values required becomes extremely large. (At least one
+ person has suggested to the author that perhaps a TOS field combined
+ with a bandwidth parameter might be appropriate. In other words, a
+ two parameter model. That's a tempting idea but my gut feeling is
+ that it is not quite sufficient so I'm proposing a more complete
+ parametric model.)
+
+ Another reason to prefer parametric service is optimization issues.
+ A key issue in flow setup is trying to design the the routing system
+ to optimize its management of flows. One can optimize on a number of
+ criteria. A good example of an optimization problem is the following
+ question (expressed by Isidro Castineyra of BBN):
+
+ "Given a request to establish a flow, how can the internetwork
+ accept that request in such a way as to maximize the chance that
+ the internetwork will also be able to accept the next flow
+ request?"
+
+ The optimization goal here is call-completion - maximizing the chance
+ that requests to establish flows will succeed. One might
+ alternatively try to maximize revenue (if one is charging for flows).
+
+ The internetwork is presumably in a better position to do
+ optimizations if it has more information about the flow's expected
+ behavior. For example, if a TOS system says only that a flow is
+
+
+
+Partridge [Page 15]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ delay sensitive, the routing system must seek out the most direct
+ route for the flow. But if the routing system is told that the flow
+ is sensitive only to delays over 100 milliseconds, there may be a
+ number of routes other than the most direct route which can satisfy
+ this delay, thus leaving the most direct route available for a later
+ flow which needs a far lower delay.
+
+ In fairness, it should be noted that a danger of a parametric model
+ is that it is very easy to have too many parameters. The yearn to
+ optimize can be overdone. The goal of this flow spec is to enumerate
+ just enough parameters that it appears that essential needs can be
+ expressed, and the internetwork has some information it can use to
+ try to manage the flows. Features that would simply be nice or
+ useful to have (but not essential) are left out to keep the parameter
+ space small.
+
+An Implication of the Flow Spec
+
+ It is important to observe that the there are fields in the flow spec
+ that are based on information from the sender (such as rate
+ information) and fields in the flow spec that are based on
+ information from the receiver (such as delay variation). There are
+ also fields that may sender and receiver to negotiate in advance.
+ For example, the acceptable loss rate may depend on whether the
+ sender and receiver both support the same type of forward error
+ correction. The delay sensitivity for a voice connection may depend,
+ in part, on whether both sender and receiver support echo cancelling.
+
+ The implication is that the internetwork must permit the sender and
+ receiver to communicate in advance of setting up a flow, because a
+ flow spec can only be defined once both sender and receiver have had
+ their say. In other words, a reserved flow should not be the only
+ form of communication. There must be some mechanism to perform a
+ short exchange of messages in preparation for setting up a flow.
+
+ (Another aside: it has been suggested that perhaps the solution to
+ this problem is to have the sender establish a flow with an
+ incomplete flow spec, and when the receiver gets the flow spec, have
+ the receiver send the completed flow spec back along the flow, so the
+ internetwork can "revise" the flow spec according to the receiver's
+ desires. I have two problems with this approach. First, it is
+ entirely possible that the receiver's information may lead the
+ internetwork to conclude that the flow established by the sender is
+ no good. For example, the receiver may indicate it has a smaller
+ tolerance for delay variation than expected and force the flow to be
+ rerouted over a completely different path. Second, if we try to
+ avoid having the receiver's information cause the flow to fail, then
+ we have to over-allocate the flow's during the preliminary setup.
+
+
+
+Partridge [Page 16]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ But over allocating the resources requested may lead us to choose
+ better quality paths than we need for this flow. In other words, our
+ attempts to optimize use of the network will fail.)
+
+Advance Reservations and Flow Duration
+
+ The primary purpose of a flow specification is to provide information
+ to the internetwork so the internetwork can properly manage the
+ proposed flow's traffic in the context of other traffic in the
+ internetwork. One question is whether the flow should give the
+ network information about when the flow is expected to start and how
+ long the flow is expected to last.
+
+ Announcing when a flow will start is generally of interest for
+ advance reservations. (If the flow is not be reserved substantially
+ in advance, the presentation of the flow spec to the internetwork can
+ be taken as an implicit request for a flow, now.) It is my view that
+ advance reservation is a distinct problem from the describing the
+ properties of a flow. Advanced reservations will require some
+ mechanism to maintain information in the network about flows which
+ are not currently active but are expected to be activated at some
+ time in the future. I anticipate this will require some sort of
+ distributed database to ensure that information about advanced
+ reservations is not accidentally lost if parts of the internetwork
+ crash. In other words, advance reservations will require
+ considerable additional supporting baggage that it would probably be
+ better to keep out of the average flow spec.
+
+ Deciding whether a flow spec should contain information about how
+ long the flow is expected to run is a harder decision to make.
+ Clearly if we anticipate that the internetwork will support advance
+ reservations, it will be necessary for elements of the internetwork
+ to predict their traffic load, so they can ensure that advance
+ reservations are not compromised by new flow requests. However,
+ there is a school of thought that believes that estimating future
+ load from current behavior of existing flows is more accurate than
+ anything the flows may have declared in their flow specs. For this
+ reason, I've left a duration field out of the flow spec.
+
+Examples
+
+ To illustrate how the flow spec values might be used, this section
+ presents three example flow specs.
+
+ Telnet
+
+ For the first example, consider using the flow spec to request
+ service for an existing application: Telnet. Telnet is a virtual
+
+
+
+Partridge [Page 17]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ terminal protocol, and one can think of it as stringing a virtual
+ wire across the network between the user's terminal and a remote
+ host.
+
+ Telnet has proved a very successful application without a need to
+ reserve bandwidth: the amount of data sent over any Telnet
+ connection tends to be quite small. However, Telnet users are
+ often quite sensitive to delay, because delay can affect the time
+ it takes to echo characters. This suggests that a Telnet
+ connection might benefit from asking the internetwork to avoid
+ long delay paths. It could so so using the following flow spec
+ (for both directions):
+
+ Version=1
+ MTU=80 [40 bytes of overhead + 40 bytes user data]
+ Token Bucket Rate=0/0/0 [don't want a guarantee]
+ Token Bucket Size=0/0/0
+ Maximum Transmission Rate=0/0/0
+ Maximum Delay Noticed=1/1 [constant = delay sensitive]
+ Maximum Delay Variation=0/0/0 [not a concern]
+ Loss Sensitivity=1/0 [don't worry about loss]
+ Burst Loss Sensitivity=1/0
+ Loss Interval=1/0
+ Quality of Guarantee=1/0 [just asking]
+
+ It is worth noting that Telnet's flow spec is likely to be the
+ same for all instantiations of a Telnet connection. As a result,
+ there may be some optimizations possible (such as just tagging
+ Telnet packets as being subject to the well-known Telnet flow
+ spec).
+
+ A Voice Flow
+
+ Now consider transmitting voice over the Internet. Currently,
+ good quality voice can be delivered at rates of 32Kbit/s or
+ 16Kbit/s. Assuming the rate is 32Kbit/s and voice samples are 16
+ bit samples packaged into UDP datagrams (for a data rate of about
+ 60 Kbyte/s), a flow spec might be:
+
+ Version=1
+ MTU=30 [2 byte sample in UDP datagram]
+ Token Bucket Rate=0/10/59 [60.4 Kbytes/s]
+ Token Bucket Size=0/0/30 [save enough to send immediately
+ after pauses]
+ Maximum Transmission Rate=0/10/59 [peak same as mean]
+ Maximum Delay Noticed=0/10/100 [100 ms]
+ Maximum Delay Variation=0/10/10 [keep variation low]
+ Loss Sensitivity=1/1 [loss sensitive]
+
+
+
+Partridge [Page 18]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+ Burst Loss Sensitivity=0/0/5 [keep bursts small]
+ Loss Interval=1/0
+ Quality of Guarantee=1/201 [predicted service and I'll accept
+ worse]
+
+ A Variable Bit-Rate Video Flow
+
+ Variable bit-rate video transmissions vary the rate at which they
+ send data according to the amount of the video image that has
+ changed between frames. In this example, we consider a one-way
+ broadcast of a picture. If we assume 30 frames a second and that
+ a full frame is about 1 megabit of data, and that on average about
+ 10% of the frame changes, but in the worst case the entire frame
+ changes, the flow spec might be:
+
+ Version=1
+ MTU=4096 [big so we can put lots of bits in each packet]
+ Token Bucket Rate=0/20/1 [8 Mbits/s]
+ Token Bucket Size=0/17/2 [2 Mbits/s]
+ Maximum Transmission Rate=0/20/30 [30 Mbits/s]
+ Maximum Delay Noticed=1/1 [somewhat delay sensitive]
+ Maximum Delay Variation=0/10/1 [no more than one second of
+ buffering]
+ Loss Sensitivity=0/0/1 [worst case, one loss per frame]
+ Burst Loss Sensitivity=0/0/1 [no burst errors please]
+ Loss Interval=0/0/33 [one frame in MTU sized packets]
+ Quality of Guarantee=1/300 [guaranteed service only]
+
+ The token bucket is sized to be two frames of data, and the bucket
+ rate will fill the bucket every 250 ms. The expectation is that
+ full scene changes will be rare and that a fast rate with a large
+ bucket size should accommodate even a series of scene changes.
+
+ Disclaimer
+
+ In all cases, these examples are simply to sketch the use of the
+ flow spec. The author makes no claims that the actual values used
+ are the correct ones for a particular application.
+
+Security Considerations
+
+ Security considerations definitely exist. For example, one might
+ assume that users are charged for guaranteed flows. In that case,
+ some mechanism must exist to ensure that a flow request (including
+ flow spec) is authenticated. However I believe that such issues have
+ to be dealt with as part of designing a negotiation protocol, and are
+ not part of designing the flow spec data structure.
+
+
+
+
+Partridge [Page 19]
+
+RFC 1363 A Proposed Flow Specification September 1992
+
+
+Acknowledgements
+
+ I'd like to acknowledge the tremendous assistance of Steve Deering,
+ Scott Shenker and Lixia Zhang of XEROX PARC in writing this RFC.
+ Much of this flow spec was sketched out in two long meetings with
+ them at PARC. Others who have offered notable advice and comments
+ include Isidro Castineyra, Deborah Estrin, and members of the End-
+ to-End Research Group chaired by Bob Braden. All ideas that prove
+ misbegotten are the sole responsibility of the author. This work was
+ funded under DARPA Contract No. MDA903-91-D-0019. The views
+ expressed in this document are not necessarily those of the Defense
+ Advanced Research Projects Agency.
+
+References
+
+ 1. Parekh, A., "A Generalized Processor Sharing Approach
+ to Flow Control in Integrated Services Networks",
+ MIT Laboratory for Information and Decision Systems,
+ Report No. LIDS-TH-2089.
+
+ 2. Clark, D., Shenker, S., and L. Zhang, "Supporting Real-Time
+ Applications in an Integrated Services Packet Network:
+ Architecture and Mechanism", Proceedings of ACM SIGCOMM '92,
+ August 1992.
+
+Author's Address
+
+ Craig Partridge
+ BBN
+ 824 Kipling St
+ Palo Alto, CA 94301
+
+ Phone: 415-325-4541
+
+ EMail: craig@aland.bbn.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Partridge [Page 20]
+ \ No newline at end of file