Network Working Group Stefan Schmid Internet Draft Martin Dunmore Document: draft-schmid-rsvp-fl-01.txt Nicholas Race Expires February 1999 Andrew Scott Lancaster University, UK August 1998 RSVP Extensions for IPv6 Flow Label Support Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). This document suggests a proposed protocol for the Internet community, and requests discussion and suggestions for improvements. Distribution of this draft is unlimited. Abstract This document is an addendum to Version 1 of RSVP (Resource ReSerVation Protocol) as defined in the proposed standard [RFC2205]. The flow label, one of the new header fields of the IPv6 protocol, allows improvements to resource reservation protocols on IPv6 capable networks. Utilization of the flow label simplifies packet classification and optimizes packet processing in routers along the transport path. The main objectives of this document are to specify the proper usage of the IPv6 flow label and to promote its support within RSVP. This memo defines extensions required to the Version 1 specification and additional processing rules needed to ensure correct operation. Schmid [Page 1] Internet Draft RSVP Extension for Flow Label Support August 1998 Rather than simply presenting the specification with no justification, we have tried to present the benefits of adopting the flow label within RSVP for IPv6. This addendum does not have any effect on the implementation or usage of RSVP for IPv4. Table of Contents 1. Introduction .................................................. 2 2. Description of the IPv6 Flow Label ............................ 3 3. The Layer Violation Problem ................................... 4 4. The Flow Label as Packet Classifier ........................... 6 5. Implementation of the Flow Label .............................. 8 5.1. Recommendation ........................................... 8 5.2. Object Definition ........................................ 8 5.3. Processing Rules ......................................... 9 5.4. Reservation Styles .......................................10 5.4.1. Explicit Sender Selection ..............................10 5.4.2. Wildcard Sender Selection ..............................11 5.5. Packet Classification ....................................12 6. Benefits of Using the Flow Label ..............................13 6.1. Efficient Packet Classification ..........................13 6.2. Enabling Network Layer Security Mechanisms ...............15 6.3. Efficient Packet Forwarding ..............................16 6.4. Additional Prospects .....................................16 7. Security Considerations .......................................17 8. References ....................................................17 9. Acknowledgments ...............................................19 10. Authors' Addresses ............................................19 APPENDIX A. Alternative Solutions .................................20 APPENDIX B. Revised IPv6 Header ...................................22 1 Introduction Today's RSVP implementations in routers suffer from the lack of flow semantics within IPv4. However, the flow label provided with the new Internet Protocol Version 6 enables these problems to be overcome. We believe that the IPv6 standard is now mature enough for other protocols to fully exploit its capabilities. In particular, the specification of IPv6 flow label utilization in RSVP should be completed. The two main objectives of this memo are: firstly, to motivate researchers and developers to adopt the flow label as an efficient means of classifying packets, and secondly, since the use of the flow label is only briefly described in the Version 1 specification of Schmid [Page 2] Internet Draft RSVP Extension for Flow Label Support August 1998 RSVP, this memo aims to clearly specify how the flow label should be used in RSVP. The next section gives a description of the flow label and its benefits in the context of resource reservation. Section 3 discusses the problems facing present RSVP implementations in routers due to the limitations of IPv4. Section 4 discusses the use of the flow label as a packet classifier. Section 5 describes the required extensions to the RSVP specification necessary for proper utilization of the flow label. Section 6 lists the benefits of using the flow label in RSVP. In Section 7, additional security considerations due to the extensions are discussed. Appendix A describes alternative approaches to the solutions presented throughout this memo. Appendix B outlines the revised IPv6 header of the IPng working group along with the discussion leading to the decision. 2 Description of the IPv6 Flow Label When the designers of the next generation Internet protocol, IPv6, included a 24 bit header field for a flow label, they were convinced that the flow identifier was a promising extension to IP. According to the IPv6 specification [RFC1883], the flow label field might be used by a source to label packets which require special handling by intervening IPv6 routers, such as non-default quality of service (QoS) or "real-time" service. The idea was to use the flow label field to label packets of a data flow with the same value. Therefore, the definition of a "flow" comes implicitly from the definition of the flow label itself. A flow is defined as a sequence of packets sent from a particular source to the same (unicast or multicast) destination for which the source desires special handling by the intervening routers. The flow label is assigned to a flow by the source or sending node. A source can never have more than one flow with the same flow label at a given time. A discussion on how to ensure unique local flow labels is presented in [Deerin98]. Based on this definition, flows can be unambiguously distinguished by the combination of the source IP address and a non-zero flow label. Packets that do not belong to a flow must have their flow label set to zero. New flow labels must be chosen (pseudo-)randomly and uniformly. The reason for the random allocation is to make any set of bits within the flow label field suitable for use as a hash key by routers for looking up the state associated with a flow. As we will see later, this feature has an important impact on the processing of flows within RSVP implementations in routers. Schmid [Page 3] Internet Draft RSVP Extension for Flow Label Support August 1998 A more detailed description of the general processing rules for the IPv6 flow labels, not related to RSVP, can be read in the IPv6 specification. Additional information regarding the usage of the IPv6 flow label field is presented in [RFC1809]. Although the flow label field is 24 bits long according to the IPv6 specification, the IPng working group within the IETF has recently agreed to reduce the flow label size to 20 bits. In Appendix B, we present the revised IPv6 header and a brief summary of the discussion. Further on in this memo, we implicitly assume a flow label size of 20 bits, although this does not affect the mechanisms described. When the IPv6 designers decided to include a flow label in the new IP header, they clearly had packet classification in mind. The routers along the path between the source and destination use the flow label to easily identify packets that are related and may need special handling, such as QoS services. The type of service (TOS) field of IPv4 or the Class field of IPv6 is also intended to be used as a packet classifier [RFC791, RFC1349]. However, the latter is used to classify packets with regard to different service classes, whereas the former enables classification in terms of packet/flow affiliation. The addition of the flow label field provides the IP protocol with the concept of a flow. As a result, RSVP routers are now capable of classifying packets and mapping their flow specific QoS requirements based on IP semantics only. In the next section, we review how packet classification is achieved in the context of RSVP for IPv4 and IPv6 when no notion of flows is available. Besides the "layer violation problem", we address further drawbacks regarding the lack of flow semantics. 3 The Layer Violation Problem Routers along a reserved path are required to identify packets from different data flows in order to process them according to their desired QoS needs. However, since IPv4 does not directly support the concept of flows, intervening routers have to make use of transport protocol or application level data to achieve proper packet classification. The fact that a router which is supposed to process data only at the network layer, according to the OSI reference model, requires information from the transport or application protocol to provide QoS support within RSVP, introduces what is known as the "layer violation Schmid [Page 4] Internet Draft RSVP Extension for Flow Label Support August 1998 problem" [Zhang95]. According to Version 1 of RSVP, routers with traffic control support require a packet classifier responsible for identifying the QoS parameters of incoming packets. Once a packet is classified, it is handed over to the packet scheduler which processes it based on its QoS requirements. The classification is achieved by determining a packet's session and applying the filters of the session. If the packet could be identified as belonging to one of the locally registered flows, the corresponding flowspec defines its QoS requirements. A session in RSVP is defined by the triple: (DestAddress, ProtocolId [, DstPort]). Here, DestAddress, the IP destination address of the data packets, may be a unicast or multicast address. ProtocolId is the IP protocol ID. The optional DstPort parameter is a "generalized destination port", i.e., some further demultiplexing in the transport or application protocol layer. In present implementations, the DstPort is usually defined by the UDP or TCP destination port, since UDP and TCP are the only widely deployed transport protocols on the Internet at this time. A filter spec is defined by the tuple (SrcAddress [, SrcPort]). Here SrcAddress is the IP address of the sending host. The optional SrcPort parameter is also a "generalized source port" that allows further differentiation between flows from the same source address. The SrcPort is usually defined by the UDP or TCP port of the sending application. By reviewing the classification process of currently deployed RSVP implementations, it is obvious that routers on IP networks must look inside the IP payload to access the UDP or TCP ports within the transport protocol header. This inherent layer violation is necessary due to the lack of network level flow semantics within IPv4 and a result of not exploiting the flow label within RSVP for IPv6. Layer violation has serious drawbacks for traffic control performance in routers. Routers have to look inside every arriving packet for any destination which has a RSVP session registered in order to classify the packet, even if the packet does not belong to a reserved flow. The issue here is that, aside from the IPv6 flow label, there is no support in IP for distinguishing packets that belong to a flow and those that do not. In the case of IPv4, accessing the transport protocol ports is not too expensive; the IPv4 header explicitly defines the header length allowing relatively easy access to the ports. However, in IPv6 this can be a costly task, since all the extension headers need to be skipped in order to get to the transport protocol header. Furthermore, this performance loss increases the Schmid [Page 5] Internet Draft RSVP Extension for Flow Label Support August 1998 processing time of a packet in each intervening router and, as a result, the end-to-end delay which is the limiting factor in many real-time streaming applications in the first place. Another disadvantage caused by the dependency on transport or application protocol information is that no IP-level security mechanisms can be used in conjunction with RSVP. IP-level Security, under either IPv4 or IPv6, may encrypt the entire transport header, hiding the port numbers of data packets from intermediate routers. In order to overcome this problem, an extension to RSVP for IP security under IPv4 and IPv6 was defined in [RFC2207]. However, when using RSVP with the IPv6 flow label, this extension will become obsolete for IP-level security (see section 6.2 for further discussion). The lack of flow semantics in IPv4 forces RSVP routers to use "work arounds", as described above, for proper classification of data packets. However, in IPv6 networks, the "layer violation problem" can be solved by deploying the flow label. The next section discusses the advantages of using the flow label as a packet classifier. 4 The Flow Label as Packet Classifier The flow label was added to the IPv6 header to extend the network protocol to include the concept of flows supporting the management and processing of data streams in the network. According to [RFC1809], "real-time flows must obviously always have a flow label, since flows are a primary reason flow labels were created." Therefore, RSVP which is primarily used to support real- time flows by reserving resources for them should not lack a clear specification of how the flow label should be used. The main purpose of using the flow label in RSVP is to properly set- up packet classification in routers in order to improve its efficiency. We will see that the properties of flow labels are ideal for this task: First, a flow label of zero indicates that a particular packet does not belong to a flow. This allows routers to immediately identify (by a simple check within the IPv6 header) whether a packet needs special treatment due to specific QoS requirements or not. However, this benefit can only be fully exploited if the flow label is consistently used within RSVP for IPv6. As a result, we highly recommend the mandatory use of the flow label within RSVP for IPv6. Schmid [Page 6] Internet Draft RSVP Extension for Flow Label Support August 1998 Second, the flow label in conjunction with the source IP address uniquely identifies a flow. This is true because the IPv6 specification requires that each host ensures unique local flow labels. The great benefit for packet classification is that all the information needed to uniquely classify packets is available within the IP header, where it should be. Third, flow labels are chosen (pseudo-)randomly and uniformly, and assigned to a flow by the flow's source node. The advantage of this attribute is that any set of bits within the flow label field should be suitable for use as a hash key by routers. This is extremely valuable for use within RSVP, since routers along a reserved path need to identify the session to which every packet belongs, and match the filter spec in order to access the QoS parameters in the flowspec. Hash table based access to this data can be performed very efficiently by using a set of contiguous bits from the flow label as a key. In summary, utilization of the flow label simplifies the processing of traffic control in routers and should greatly improve efficiency. Nevertheless, there are still a number of open questions: o How do routers deal with packets that carry a flow label that has no locally defined state? 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 were zero [RFC1809]. The implications for RSVP are that any packet with an "unknown" flow label is forwarded in the same way as normal best-effort traffic. These packets are treated in the same manner as if they would not belong to a flow. o How do routers handle flows with equal flow labels? In theory, flows with equal flow labels do not cause problems since flows are uniquely identified by the pair (source IP address, flow label). However, when taking full advantage of the flow label properties, namely uniqueness and randomness, it might be more efficient to hash only on the flow label or any set of bits within the flow label field. In the case of a hash collision, the source IP address is used to unambiguously distinguish the flows. Nevertheless, hash collisions based on the randomly distributed flow label are fairly unlikely if the hash key is not too short. For example, when using 14 bits of the flow label as a hash key, the probability of a collision in the local flow state table is 1/(2^14) = 1/16384. Schmid [Page 7] Internet Draft RSVP Extension for Flow Label Support August 1998 5 Implementation of the Flow Label The objective of this section is to clearly specify how support for the IPv6 flow label should be achieved within RSVP. It describes the changes required to the Version 1 specification and explains additional processing rules. In Appendix A, we present alternative approaches that could be adopted for flow label processing within RSVP along with our reasons for discarding them. We decided on the following solution since we believe that this is the most elegant way to define the usage of the IPv6 flow label within RSVP. As we will see, the number of changes required to the original specification is minimal and the implementations are simple. 5.1 Recommendation The analysis of the IPv6 flow label properties in section 4 has shown that the usage of the flow label within RSVP has provision to greatly improve the packet classification processing. Section 6 explores additional benefits of flow label use. Thus, in order to fully exploit their advantages, it is important that flow labels are consistently used within RSVP for IPv6 to classify packets. As a result, the IPv6 flow label SHOULD be used within RSVP for IPv6. Furthermore, we highly recommend that any future standards define usage of the flow label to be mandatory. We do not suggest that use of the flow label should be compulsory at this stage, since there are still IPv6 implementations that do not properly support flow label usage. Since the changes required to enable flow label usage are minor, we believe that as soon as applications and protocols, i.e. RSVP, make use of the flow label, IP software developers and vendors will upgrade their releases. 5.2 Object Definition This approach does not require additional session or filter spec objects. Rather than adding new objects to the protocol, we have tried to reuse the objects already defined and simply extend them by adding extra processing rules. However, since the flow label size in the IPv6 header was revised by the IPng working group of the IETF (see Appendix B for further information), we decided to redefine the obsolete FILTER_SPEC (Class 10) and SENDER_TEMPLATE (Class 11) objects with C-Type 3 of the original specification. The revised filter spec object is shown here: Schmid [Page 8] Internet Draft RSVP Extension for Flow Label Support August 1998 FILTER_SPEC object: Class = 10, C-Type = 3 +-------------+-------------+-------------+-------------+ | | + + | | + IPv6 SrcAddress (16 bytes) + | | + + | | +--------------------+------+-------------+-------------+ | /////// | Flow Label (20 bits) | +--------------------+------+-------------+-------------+ The revised SENDER_TEMPLATE object has the same format. When using RSVP with flow label support, the revised FILTER_SPEC and SENDER_TEMPLATE objects MUST be used in PATH and RESV messages. The SESSION object may be either the IPv6/UDP SESSION object (C-Type 2), as defined in [RFC2205], or the IPv6/GPI SESSION object (C-Type 4), as defined in [RFC2207]. The former uses the destination UDP port as part of the session identifier whereas the latter uses a virtual destination port to demultiplex sessions beyond the IP destination address. The virtual destination port was introduced to support protocols that do not contain transport level ports. 5.3 Processing Rules Although the RESV and PATH message formats do not change, the processing of these messages will require modification. Specifically, the (virtual) destination port and the protocol ID of the session object must be used in an appropriate manner for RSVP with flow label support. According to the Version 1 RSVP specification, the destination port and the protocol ID of the session object is used for packet classification, especially to choose the reserved resources of a flow's packet for sessions with the same destination IP address. Since the flow label in RSVP for IPv6 is used as a more efficient packet classifier, neither the destination port nor the protocol ID is used for that purpose anymore. Traffic will be mapped (classified) to reservations entirely based on the flow identifier, namely the tuple (source IP address, flow label). However, the destination ports (DstPort and vDstPort) are still required for session management reasons in order to establish multiple reservations for different sessions with the same destination. Schmid [Page 9] Internet Draft RSVP Extension for Flow Label Support August 1998 Avoiding reliance on the destination port information is absolutely necessary in order to resolve the implicit layer violation problem of standard RSVP packet classification. Furthermore, the protocol ID should not be used for classification since accessing the protocol ID in IPv6 might be very costly due to the variable number of extension headers that need to be skipped first. As a result of this processing modification, all flows to the same IP destination address would share the same reservation when the wildcard filter (WF) reservation style is used. Note, WF style reservation messages do not include explicit sender filterspecs. However, in section 5.4.2 we present a solution which allows multiple WF reservations for the same destination node without need of destination ports and protocol IDs for packet classification. In order to ensure error-free operation of RSVP with flow label support, RSVP implementations in end-user hosts and within the network MUST verify the proper use of the flow label field. Therefore, if the SENDER_TEMPLATE or FILTER_SPEC object (C-Type 3) for flow labels is used in PATH or RESV messages, a unique and (pseudo-) random flow label greater than zero MUST be used. Upon receiving a zero flow label, an error message need to be generated. We suggest use of the Error Code = 09 in the ERROR_SPEC object to indicate that the flow label is unspecified. 5.4 Reservation Styles The extended processing rules, as described above, have some ramifications depending upon the reservation style, namely the Fixed- Filter (FF), Shared Explicit (SE), or Wildcard-Filter (WF). 5.4.1 Explicit Sender Selection The FF and SE styles have an explicit sender selection. Therefore, the FILTER_SPEC object contains the (SrcAddress, FlowLabel) pair. This allows the receiver to uniquely identify senders based on both elements of the pair. When merging explicit sender descriptors, the senders may only be considered identical when both elements are equal. Upon receiving a RESV message with FF or SE style, RSVP implementations pass the flow identifier of the FILTER_SPEC object along with the flow spec of the FLOW_SPEC object to the local packet classifier. Figure 1 illustrates how the RSVP messages are processed in order to install the included packet filters in the classifier. Schmid [Page 10] Internet Draft RSVP Extension for Flow Label Support August 1998 PATH: s(DstAddr, PId, vPort) PATH: s(DstAddr, PId, vPort) st(SndAddr, FlowLabel) -------- st(SndAddr, FlowLabel) <---------------------------- | | <----------------------------- | RSVPD | ----------------------------> | | -----------------------------> RESV: s(DstAddr, PId, vPort) -------- RESV: s(DstAddr, PId, vPort) filt(SndAddr, FlowLabel) | filt(SndAddr, FlowLabel) flow(...) | flow(...) filt(SndAddr, | flow(...) FlowLabel) | \ / s: SESSION ------------- st: SENDER_TEMPLATE | CLASSIFIER | flow: FLOW_SPEC ------------- filt: FILTER_SPEC Figure 1: Installation of Filters for FF and SE Style Reservations 5.4.2 Wildcard Sender Selection In a WF style reservation, the RESV message does NOT contain a FILTER_SPEC since it would be superfluous to specify senders explicitly in a "shared" reservation with "wildcard" sender selection. As a result, classifiers may match all packets containing the session's destination IP address to the same WF reservation. Note, according to the processing rules defined above, we do not make use of the destination port and protocol ID to map traffic to reservations. Therefore, when using WF style reservations, all flows to the same IP destination address using the same IP protocol ID will share the same reservation. A solution for this limitation can be achieved by transparently (from an end user's point of view) simulating the WF reservation style by means of SE reservations. Upon a received RESV message with WF style, intervening routers could identify the corresponding PATH message based on the session object. The router can then extract the sender IP address and the flow label from the SENDER_TEMPLATE object of the PATH message and pass it as a filterspec together with the flow spec to the local packet classifier (see Figure 2). Consequently, packet classification for flows belonging to a WF style reservation is achieved based on individual filterspecs, as in the case of FF or SE style reservations. The drawback of this approach is that the RSVP process must reliably update the filterspecs in the classifier when path state changes. Schmid [Page 11] Internet Draft RSVP Extension for Flow Label Support August 1998 PATH: s(DstAddr, PId, vPort) PATH: s(DstAddr, PId, vPort) st(SndAddr, FlowLabel) -------- st(SndAddr, FlowLabel) <---------------------------- | | <----------------------------- | RSVPD | ----------------------------> | | -----------------------------> RESV: s(DstAddr, PId, vPort) -------- RESV: s(DstAddr, PId, vPort) flow(...) | flow(...) | filt(SndAddr, | flow(...) FlowLabel) | \ / ------------- | CLASSIFIER | ------------- Figure 2: Installation of Filter for WF Style Reservations This solution, suggested by Bob Braden [Braden94] and Markus Jork, makes use of the (virtual) destination port and protocol ID to manage multiple sessions with the same destination IP address. By explicitly defining each sender, the IPv6 flow label can be used to map (classify) packets to their respective QoS reservations. The main disadvantage of this solution is that the scalability feature of WF style reservations disappears when using explicit filters for each sender. However, the advantages of this approach are: it preserves the semantics of the WF reservation style from an end user's viewpoint and exploits the (virtual) destination port and protocol ID exclusively for session management reasons. Packet classification is done entirely based on source address and flow label. Thus, the problem of inefficient classification due to layer violation is resolved. An alternative approach to resolve the limitation of WF style, which is not seen as beneficial as the solution described here, is presented in Appendix A.2. 5.5 Packet Classification Besides the changes necessary to the protocol processing rules, the packet classifier also needs to be adapted to make the most of the flow label. These changes are the most promising of all, since use of the flow label allows a significant reduction in the processing cost per packet seen by routers. In order to enable the packet classifier to access state information Schmid [Page 12] Internet Draft RSVP Extension for Flow Label Support August 1998 of active flows with minimal processing cost, it is important that local hash tables or databases of flows are indexed by means of the flow label. This modification is essential as the classification of data packets is primarily based on the flow label when it is non- zero. During the transition period, routers will need mechanisms to provide fast access to flow state information based on the IP address and port, as well as new mechanisms based on the flow label. 6 Benefits of Using the Flow Label In this section, we explore the benefits of adopting the flow label for IPv6 based RSVP use. The most important advantage arising from flow label utilization is that it allows RSVP to be implemented without recourse to "clandestine" techniques. Due to the flow semantics of IPv6, the implicit "layer violation problem" is resolvable. As shown in section 5, routers no longer depend on transport or application level protocols to correctly classify packets. The next two subsections discuss advantages directly related to the avoidance of layer violation. In section 6.3 and 6.4, we present additional benefits of the flow label approach. 6.1 Efficient Packet Classification In order to show that packet classification based on the flow label improves efficiency, we need some form of measurement to compute the processing cost of packet classification in routers in order to compare the different approaches. For the purpose of illustration, we use a simplified model of the packet classifier which processes packets purely in software. By looking at the operations necessary to classify packets for both approaches, namely IPv4/IPv6 RSVP without flow label support and IPv6 RSVP with flow label support, we try to show the complexity decrease and efficiency improvement of the flow label utilization. In general, packet classification in routers is done by identifying a packet's session and matching the packet against the filters of the corresponding session. Without support for flow labels, packet classification requires the following steps: First, the classifier needs to check whether the packet destination IP address belongs to a session. This address Schmid [Page 13] Internet Draft RSVP Extension for Flow Label Support August 1998 lookup could be done by means of hashing. In order to achieve better hashing results, a hash key based on the IP address might have to be computed first. Second, in the case of a hash hit, the DstPort needs to be compared with the session description. This port comparison, which is an inherent layer violation, and therefore costly (especially for IPv6), must be performed frequently if multiple sessions are active for a particular destination node. Third, if the port is identical, a check for the correct protocol ID is required. This test is performed last since it is likely that the second test fails first due to the unsuited distribution of port numbers (individual applications use usually the same ports). After the identification of the packet's session, the filterspec must be matched. This is done by searching a list of filters associated with the session. In order to find the correct filter, the fourth step, comparing the source IP address, needs to be performed. And finally, if it matches any of the filter's addresses, the source port must be checked. This is also very likely, if we assume that sessions have multiple flows, for example one for audio and one for video. A serious problem in this approach is the inability to identify whether a packet belongs to a flow that requires special handling or not without performing the expensive classification first. Packet classification based on the IPv6 flow label has important advantages over the former approach. As already mentioned in section 4, the flow label can be used to immediately identify whether packets belong to a flow or not. Another advantage arising from the flow label property that they are (pseudo-)randomly assigned is: the flow label or any set of bits within the flow label field can be used as a hash key. No additional cost due to hash key generation is incurred. Furthermore, since the flow label is (pseudo-)randomly selected, it is most likely a "better" hash key than a hash key generated from the source address in the sense that it causes less hash collisions and, as a result, less processing costs for classification. In the case of packet classification with flow label support, the processing required in the router is much simpler: First, the flow label is used as a hash key to look up whether flow state exists for a packet. In the case of a hash hit, it is most likely that the correct flow state entry is directly identified due to the random nature of flow labels. However, to make sure it is not a collided hash entry, the source IP addresses must be matched against the filterspec address as a final step. Even without exploring the exact costs for each of the operations described above, and the actual probability that packets belong to a Schmid [Page 14] Internet Draft RSVP Extension for Flow Label Support August 1998 session or flow, it seems clear that the processing efficiency of packet classification with flow label is a significant improvement over that currently exploited by RSVP. A more detailed analysis with numerical results is given in [Schmid98]. The main reason for the efficiency gain of the latter approach lies in the fact that flow state information can be indexed with the flow label as an identifier instead of using a key based on destination IP addresses and the avoidance of layer violation. The performance comparison outlined here is based on a software processing model. One could easily argue that this does not hold if these operations are processed in hardware or with hardware support as in real routers. However, even then, the analysis still gives insights about the complexity of the required operations and, therefore, provides information about possible hardware implementation costs. 6.2 Enabling Network Layer Security Mechanisms Network layer security in the currently deployed Internet is usually achieved using IP security, or IPSEC, protocols [RFC1825] such as packet level authentication [RFC1826] and integrity and confidentiality [RFC1827]. The IPSEC extensions provide service by adding new headers, namely the Authentication Header (AH) and/or Encapsulating Security Payload (ESP), between the IP header and the transport protocol header. When using the IPSEC protocol within RSVP, first, access to the transport protocol ports requires modifications in the case of IPv4 and second, transport ports might be hidden from intervening routers when encryption is used. Therefore, security mechanisms within Version 1 of RSVP are only applicable on a per host, rather than a per flow basis. Hence, RSVP Extensions for IPSEC were defined in [RFC2207] so that data flows containing IPSEC protocols can be controlled at a granularity similar to that already specified for UDP and TCP. The RSVP extension proposes the usage of the IPSEC Security Parameter Index, or SPI, in place of the UDP/TCP-like ports. The announcement of flow specific SPIs for the intermediate RSVP routers nodes requires a new FILTER_SPEC and SESSION object which includes the IPSEC SPI. However, in IPv6 RSVP, the flow label can be used directly as an identifier to distinguish multiple flows from a source address to the same destination. The advantage of using the flow label to demultiplex flows is that the flow label field of the IPv6 header is Schmid [Page 15] Internet Draft RSVP Extension for Flow Label Support August 1998 not encrypted by any network level security mechanism and, therefore, it can easily be used for packet classification in conjunction with IPSEC by the routers along a reserved path. As a result, when using RSVP with flow label support, the IPSEC extensions for RSVP become obsolete. 6.3 Efficient Packet Forwarding The IP packet forwarding process of routers is computationally expensive when options (in IPv4) or extension headers (IPv6) need to be processed. Each packet carrying such additional routing information increases the processing load and the end-to-end delay. According to the IPv6 specification, all datagrams with the same (non-zero) flow label and source address must have the same destination address, Hop-by-Hop options header (excluding the Next Header field) and Routing header contents. As a result, by exploiting the flow label, the IP packet forwarding can be performed more efficiently. Simply by looking up the flow label in a flow information table, the router can decide how to route and forward the datagram without examining the rest of the header. Therefore, the expensive options or extension header processing must not be done on a per packet basis. In summary, use of the flow label within RSVP also allows simplification and improvement of the standard IP packet forwarding task. 6.4 Additional Prospects of the Flow Label Utilizing the flow label within resource reservation protocols such as RSVP for real-time data streaming has, besides the advantages mentioned above, additional potential. Reserving resources by means of the flow label has provision to reduce problems caused by frequent route changes, e.g. route "fluttering". Currently deployed IP routing protocols cause route changes either when "new routes becoming available" for a given destination or as a result of "existing routes being lost". For the latter case, IP routing provides a sophisticated error recovery mechanism for RSVP. For example, if a link is going down, IP routing protocols try to find a new path to a given destination node. RSVP PATH and RESV messages automatically adopt this path and try to establish resource reservations for the relevant flows. A local repair mechanism was defined in order to establish reservations on new links immediately Schmid [Page 16] Internet Draft RSVP Extension for Flow Label Support August 1998 after a router change. In the cases when required resources are not available on the new link, the flows lose their QoS. This behavior is perfectly acceptable if a route is lost. However, route changes due to "new routes becoming available" are not desirable since they might cause unnecessary QoS loss. The flow semantics of IPv6 could be exploited in future RSVP implementations to support route "pinning" mechanisms for reserved flows. For example, data flows of QoS sensitive real-time streams could be "pinned" to a route which would prevent the flow from being moved to another route unless this is essential. Furthermore, the IPv6 flow label facilitates simplified QoS based flow routing techniques when interworking with connection-orientated networks such as ISDN and ATM [Race98]. Finally, ongoing research in the area of label switching proposes approaches that make use of IPv6 flow labels to identify the appropriate reservation state of RSVP for a packet based on its label value. Thus, the packet is switched with respect to its reservation state. The Internet Draft [Davie98] suggests a way to distribute label bindings using RSVP messages by introducing a new RSVP object RSVP_LABEL to carry a label in an RSVP message. 7 Security Considerations Since the adoption of the flow label to RSVP as described in this note does not introduce new data fields, besides the flow label, and does not require additional messages, we can apply the security considerations stated in [RFC2205] to this note. In addition, the flow label represents another data element about the IP flow that might be available to an adversary. The label values might be useful to an adversary engaging in traffic analysis by monitoring not only the data packets of the IP flow but also the RSVP control messages associated with the flow. One possible approach to prevent such attacks would be the deployment and the use of appropriate link-layer encryption mechanisms. However, protection against traffic analysis attacks is outside the scope of this memo. 8 References [Braden94] Braden, B., "Presentation: RSVP for IPv6", RSVP working group meeting, San Jose, December 1994, online at: ftp://ftp.isi.edu/rsvp/ietf.meetings/sanjose.ietf/ braden.issues.ps. Schmid [Page 17] Internet Draft RSVP Extension for Flow Label Support August 1998 [Davie98] Davie, B., Rekhter, Y., Rosen, E., Viswanathan, A., Srinivasan, V., and Blake, S., "Use of Label Switching With RSVP", IETF Internet-Draft (work in progress), draft-ietf-mpls-rsvp-00.txt, March 1998. [Deerin98] Deering, S. and Hinden, R., "Internet Protocol, Version 6 (IPv6) Specification", IETF Internet-Draft (work in pro- gress), draft-ietf-ipngwg-ipv6-spec-v2-02.txt, August 1998 [Hinden97] Hinden, B., "Minutes of the IETF IPng Working Group Meeting in Munich", August 1997, online at: http://www.cs-ipv6.lancs.ac.uk/ipv6/documents/standards/ general-comms/ietf/ipngwg/ipngwg-minutes-97aug.txt. [Race98] Race, N., Dunmore, M., Shepherd, D., "Supporting QoS over Heterogeneous Networks using RSVP and IPv6", Proceedings of IDC'98 'Technology Serving the Information Society', Lisbon, September 1998. [RFC791] Postel, J., "Internet Protocol", RFC 791, DARPA, September 1981. [RFC1349] Almquist, P., "Type of Service in the Internet Protocol Suite". RFC 1349, July 1992. [RFC1809] Partridge, C.,"Using the Flow Label Field in IPv6" RFC 1809, June 1995. [RFC1825] Atkinson, R., "Security Architecture for the Internet Protocol", RFC 1825, NRL, August 1995. [RFC1883] Deering, S. and Hinden, R., "Internet Protocol, Version 6 (IPv6) Specification", RFC 1883, Xerox PARC and Ipsilon Networks, December 1995. [RFC2205] Braden, R., Ed., Zhang, L., Estrin, D., Herzog, S., and S. Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification", RFC 2205, September 1997. [RFC2207] Berger, L. and O'Malley, T., "RSVP Extensions for IPSEC Data Flows", RFC 2207, September 1997. [RFC2209] Braden, R., Ed., Zhang, "Resource ReSerVation Protocol (RSVP) -- Version 1 Message Processing Rules", RFC 2209, September 1997. Schmid [Page 18] Internet Draft RSVP Extension for Flow Label Support August 1998 [Schmid98] Schmid, S., Scott, A., Hutchison, D., and Froitzheim, K., "QoS based Real Time Audio Streaming in IPv6 Networks", VV98, Proceedings of SPIE Vol. 3529, Internet Routing and Quality of Service, Boston, 1998. [Zhang95] Zhang, L., "Presentation: IPv6 Flow Label", RSVP working group meeting, Danvers, April 1995, online at: ftp://ftp.isi.edu/rsvp/ietf.meetings/danvers.ietf/ zhang.flow-labels6up.ps 9 Acknowledgments The work presented in this memo was done within CoBrow - a research project funded in parts by the European Community under the Telematics Applications Program and the Swiss Federal Office of Science and Education. Initial research and prototype implementation was carried out in Eurescom project P702 'IPv6 - Opportunities for Service Providers and Public Network Operators'. Special appreciation goes to Bob Braden and Markus Jork for their technical advise. Finally, we like to thank Laurent Mathy and Joe Finney for their editorial and technical comments. 10 Authors' Addresses Stefan Schmid Dr. Andrew Scott Distributed Multimedia RG Distributed Multimedia RG Computing Department Computing Department Lancaster University Lancaster University Lancaster LA1 4YR Lancaster LA1 4YR United Kingdom United Kingdom Phone: (+44) 7970 419935 Phone: (+44) 1524 65201 EMail: sschmid@comp.lancs.ac.uk EMail: acs@comp.lancs.ac.uk Martin Dunmore Nicholas Race Distributed Multimedia RG Distributed Multimedia RG Computing Department Computing Department Lancaster University Lancaster University Lancaster LA1 4YR Lancaster LA1 4YR United Kingdom United Kingdom Phone: (+44) 1524 593819 Phone: (+44) 1524 593819 EMail: dunmore@comp.lancs.ac.uk EMail: race@comp.lancs.ac.uk Schmid [Page 19] Internet Draft RSVP Extension for Flow Label Support August 1998 A Alternative Solutions This Appendix describes alternative approaches for the various solutions presented throughout this memo that could be adopted for flow label processing within RSVP along with our reasons for discarding them. A.1 Ignore (Virtual) Destination Port and Protocol ID in SESSION Object The approach presented in this section proposes an alternative solution for the utilization of the IPv6 flow label within RSVP (compare section 5). The alternative approach suggests that the (v)DstPort and protocol ID of the session object should be ignored avoiding ambiguity by mandating it to be zero. By doing this, we implicitly limit the number of sessions per destination to one. For RSVP without flow label support, the destination port and protocol ID of the session object were required only to enable routers to differentiate multiple flows originating from the same port and destined to the same IP address. Without these additional identification criterias, all flows would have shared the same reservations. However, when exploiting the flow label within RSVP, all flows can be unambiguously distinguished based on the sender address and flow label. Thus, the (virtual) destination port and protocol ID of the session object is not necessarily required anymore. This argument, however, holds only in the case of explicit sender selection which is used for FF and SE style reservations. When using WF, due to the lack of filterspecs, all reservations would be established with respect to the destination's IP address. Without using the destination port and protocol ID as further demultiplexing information, all the flows would automatically share the same reservations. Nevertheless, since our main concern is to resolve the implicit layer violation problem of RSVP which is caused by the dependency of higher layer demultiplexing information such as the transport level ports, ignoring the (virtual) destination port in the session object seems to be the logical conclusion. However, in section 5.4.2 we have shown that the additional session demultiplexing information provided by (virtual) destination ports can be used to establish multiple WF reservations which do not depend on this higher level information to achieve proper packet classification. Since we could not gain anything from the "reduced" session Schmid [Page 20] Internet Draft RSVP Extension for Flow Label Support August 1998 semantics, except simplicity, but lost the capability of resolving the problem of multiple WF style reservations for a single destination, we came to the conclusion that this approach should be rejected. A.2 Use of "Receiver Selected" or "Predefined" Flow Labels An alternative approach to resolve the limitation of WF style reservations by means of the IPv6 flow label (compare section 5.4.2) is to utilize "receiver selected" flow labels. Here, the destination selects the flow label which is then used by the sender to label the data packets and by the classifier to map them to their QoS reservations. One problem arising from the fact that receivers choose the flow label is: the flow label must be propagated to the sender nodes. This could be done either within the RSVP protocol itself by using the RESV message or by means of any session description (e.g. SDP, SAP) or session setup protocol (e.g. SIP, RTSP). In order to transmit the flow label, the former approach would demand either a modification of the session object or a new definition of the SESSION object. In the case of multicast sessions with multiple senders and receivers, the approach described is not suitable since multiple receivers would select different flow labels which would then create different sessions. Therefore, "predefined" flow labels could be required. Session announcement including a flow label could be achieved by adopting the currently deployed mechanisms for multicast session announcement (i.e. SDP, SAP). The advantage of this approach is that packet classifiers require only one filter per session for WF style reservations. In contrast to the solutions proposed in section 5.4.2, this practice preserves the scalability property of WF style reservations. On the other hand, the major drawback of this approach is: it implicitly changes the flow label semantics defined in [RFC1889, RFC1809]. The flow label would not be "sender selected" anymore. This modification causes further problems that would have to be resolved first. For example: how would a sender react on receiving a "receiver selected" or "predefined" flow label which is already in use by another flow? The fact that the flow label semantics (which is a fundamental part of the basic IPv6 specification [RFC1889]) would implicitly be changed when deploying this alternative approach, led the authors to dismiss this alternative. Schmid [Page 21] Internet Draft RSVP Extension for Flow Label Support August 1998 B Revised IPv6 Header In the meeting of the IETF in Munich in August 1997, the IPng working group agreed to redefine the priority and flow label field [Hinden97]. The Priority field is renamed in a "Class" field and its length is enlarged to eight bits. The fact that a change to the priority semantics took place (relative priorities were discarded) due to open loop transmission problems, and the need for more control bits to improve the congestion avoidance algorithm of RED, led the working group to the decision to revise the priority field. As a result of the increased length of the "Class" field, the flow label field was reduced to 20 bits. The leading four octets of the revised IPv6 header are presented here: 4 8 20 +-----+----------+---------------------------------------+ | Ver | Class | Flow Label | +-----+----------+---------------------------------------+ See [Deerin98] for further information on the IPv6 protocol. Schmid [Page 22]