Internet Engineering Task Force RMT WG INTERNET-DRAFT Ken Calvert/UKY draft-ietf-rmt-gra-fspec-00.txt Christos Papadopoulos/USC Tony Speakman/Cisco Don Towsley/UMASS Swapna Yelamanchi/Cisco 13 July 2001 Expires: January 2002 Generic Router Assist - Functional Specification Status of this Document This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. 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 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 a "work in progress". The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt To view the list Internet-Draft Shadow Directories, see http://www.ietf.org/shadow.html. This document is a product of the IETF RMT WG. Comments SHOULD be addressed to the authors, or the WG's mailing list at rmt@lbl.gov. Lexical Conventions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119. Abstract Calvert et al. [Page 1] INTERNET-DRAFT Expires: January 2002 July 2001 This draft specifies the functional requirements which any implementation of GRA must meet. It broadly describes the context in which GRA operates, and it specifies the contents of GRA headers and GRA filter specifications. In the process, it specifies some principles of operation for GRA in the context of a router. Calvert et al. [Page 2] INTERNET-DRAFT Expires: January 2002 July 2001 Table of Contents 1. Introduction. . . . . . . . . . . . . . . . . . . . . . 4 2. Definitions . . . . . . . . . . . . . . . . . . . . . . 4 3. Context and Model of Use. . . . . . . . . . . . . . . . 5 3.1. Establishing Filters and Sending GRA Packets . . . . 6 3.2. GRA Packet Processing. . . . . . . . . . . . . . . . 6 4. GRA Neighbour Discovery . . . . . . . . . . . . . . . . 7 5. Filter Specifications . . . . . . . . . . . . . . . . . 7 6. The GRA Header. . . . . . . . . . . . . . . . . . . . . 8 6.1. Transport Session Identifier (TSI) . . . . . . . . . 9 6.2. Filter Identifier (TFID) . . . . . . . . . . . . . . 10 6.3. Service Identifier (FSID). . . . . . . . . . . . . . 10 6.4. Key (SKEY) . . . . . . . . . . . . . . . . . . . . . 10 6.5. Operands . . . . . . . . . . . . . . . . . . . . . . 10 7. More on Filter Specifications . . . . . . . . . . . . . 11 7.1. Identifiers. . . . . . . . . . . . . . . . . . . . . 12 7.2. Filter, Service, and Key State . . . . . . . . . . . 12 7.3. Housekeeping Functions:. . . . . . . . . . . . . . . 12 7.4. GRA Header Formats . . . . . . . . . . . . . . . . . 12 7.5. Actions. . . . . . . . . . . . . . . . . . . . . . . 13 8. Contextual State. . . . . . . . . . . . . . . . . . . . 13 9. Implosion Control . . . . . . . . . . . . . . . . . . . 13 10. Security Considerations. . . . . . . . . . . . . . . . 13 11. IANA Considerations. . . . . . . . . . . . . . . . . . 14 Calvert et al. [Page 3] INTERNET-DRAFT Expires: January 2002 July 2001 1. Introduction An architecture for Generic Router Assist (GRA) was introduced in [1]. This draft extends on that document by specifying the functionality of GRA in more concrete terms. It expands on the requirements on the larger context in which GRA must function by describing both GRA header contents and the filter specifications in routers against which those headers are matched and processed. In doing so, it specifies the requirements on the GRA control protocol for establishing filter specifications in routers, on the GRA signalling protocol for encoding and processing GRA headers, and on the general capabilities routers must have to be able to support GRA such as detecting and parsing GRA headers, managing GRA-related state, and handling (i.e., discarding, modifying, forwarding, etc.) GRA packets. The intent of this draft is to provide a comprehensive list and broad description of all of the functions that must come together to implement GRA in a network: a control protocol to establish GRA filters in routers, GRA headers to be prepended to the transport headers of packets intended for GRA processing in routers, and GRA filter specifications to define the specific semantics of that processing. 2. Definitions The definitions in this section apply in the text that follows. Distribution Tree The multicast distribution tree of routers defined by network-layer multicast routing information for a given multicast transport session rooted at a single root router (at the host that is the source of the data in the transport session), and fanning out (possibly through transit routers) to one or more leaf routers (at the hosts that are the receivers of the data in the transport session). Downstream In the direction away from the source and toward receivers. Upstream In the direction away from receivers and toward the source. GRA hop The single logical hop between any two GRA-capable routers adjacent (in a strictly upstream/downstream sense) to each other in the distribution tree (i.e., not separated in the distribution tree by Calvert et al. Section 2. [Page 4] INTERNET-DRAFT Expires: January 2002 July 2001 any other GRA-capable router). Neighbours Two GRA-capable routers separated by a single GRA hop. GRA packet A packet bearing a GRA header. Suppression Potential transmitters of some packet refrain from the transmission of that packet because they see its duplicate. Elimination A potential forwarder of some packet refrains from forwarding that packet because it has a record of already having forwarded a duplicate of that packet. Aggregation Multiple identically sized operands are combined in a bit-wise fashion that results in a compositely encoded operand of the same size. Accumulation Multiple operands are concatenated together to form an operand list whose length is greater than length of any of the constituent operands. 3. Context and Model of Use The assumption here is that GRA may be implemented in some fraction of the routers in a source-specific multicast distribution tree, that those GRA-capable routers discover their upstream neighbours through transport-session-specific announcements flowing down the distribution tree, that a GRA control protocol establishes filter specifications in those routers, and that the source and the receivers in the transport session direct GRA packets into the distribution tree. Those packets are detected by routers and processed against established filters the specifications of which determine, amongst other things, the subsequent fate of the packet. In a bit more detail, GRA is designed for use primarily in the context of a source-specific multicast distribution tree, in which some subset Calvert et al. Section 3. [Page 5] INTERNET-DRAFT Expires: January 2002 July 2001 of routers implement GRA services. Filter specifications are established in these routers for each session via GRA control protocol; each filter specification defines a set of GRA headers that may be borne by a subset of the session's packets and the processing to be applied to that subset. Under some circumstances it may be feasible to establish the necessary session-related state without the control protocol. GRA packets are recognized as such during unicast or multicast forwarding, and are processed according to the appropriate filter specification as described below. 3.1. Establishing Filters and Sending GRA Packets GRA filter specifications describe the (fixed) processing that can be applied to packets to implement some functionality. An example is the "duplicate elimination and subcasting" filter described in [1]. Router vendors choose which GRA services to support in their routers. The filter identifier space will be defined to accommodate both fixed, standard services, and dynamic, custom services. Users (i.e. end system GRA implementations) control which services are applied to their packets, and (to the extent allowed by the chosen service) how that processing proceeds and affects their per-session state, by placing identifiers and operands in the GRA headers of packets sent via the distribution tree. 3.2. GRA Packet Processing GRA packets are recognized as such during the unicast or multicast forwarding process. The GRA header is parsed to identify the session to which the packet belongs and the applicable filter specification from that session, if any. Each GRA packet matches at most one filter specification; GRA packets that fail to match any filter specification at a router are forwarded normally. The processing defined by the service associated with the filter specification is then carried out, using the values from the GRA header and the state associated with the filter spec. This processing may modify the contents of the GRA header (only) by overwriting the values in some fields. When GRA processing concludes successfully, the packet is either discarded or forwarded, as specified by the selected service. There are two forwarding functions. Multicast forwarding on a group of interfaces or unicast forwarding to a network-layer destination. Note that a session may have more than one filter specification. Each Calvert et al. Section 3.2. [Page 6] INTERNET-DRAFT Expires: January 2002 July 2001 filter specification's state information is isolated from that of other filter specs in the same session or in other sessions. This allows different filter specs to specify the same GRA service within the same session, without interference. 4. GRA Neighbour Discovery Since GRA requires upstream GRA neighbour information per transport session, any transport protocol that requires GRA services from routers must provide a per-transport-session upstream neighbour discovery mechanism that permits GRA-capable routers to associate any given transport session identifier with an upstream GRA neighbour. GRA- capable routers then use upstream neighbour information to address GRA packets returning from receivers toward the source on the exact reverse of the distribution tree. Note that, due to unicast routing asymmetries, an upstream GRA packet that traverses a non-contiguous GRA hop and arrives at the neighbour on other than the interface to which it was addressed must, upon receipt, be reassociated with the interface to which it was addressed. 5. Filter Specifications The GRA control protocol enables and disables GRA filter specifications in GRA-enabled routers. A GRA filter specification (discussed in more detail in Section 5 below) includes: o the transport-session-specific filter identifier (TFID) (the predicate eliminating and subcasting filter from [1] is an example of a filter) o the filter-specific housekeeping functions (a life timer for the availability of the filter, for example) o the filter-specific service identifiers (FSIDs) (RCVR_UPDATE and FORWARD from [1] are examples of services) o the filter-specific services: o the service-specific housekeeping functions (a life timer for the availability of the service, for example) o the service-specific GRA header formats including a (possibly null) sub-session-specific key (SKEY) (i.e., a key that further constrains the service to a specific attribute of a Calvert et al. Section 5. [Page 7] INTERNET-DRAFT Expires: January 2002 July 2001 session such as a sequence number) (SQN from [1] is an examples of a sub-session-specific key) o the service-specific action(s) to take predicated on whether the SKEY, when specified, matches existing key-specific state; unconditionally otherwise (the specifications of predicates and their associated f(v)/f(s)/f(p) in [1] are examples of actions) o the action-specific predicates to be evaluated in applying the action-specific functions o the action-specific functions for disposing of the GRA packet, and for transforming the (possibly key-specific) state including the (possibly key-specific) interface list o the (possibly key-specific) state housekeeping functions (ET and LT from [1] are examples of key-specific state housekeeping functions) o the key-specific state 6. The GRA Header The GRA header is best conceived of as a pre-amble to the transport header and must be available at any layer in the communications stack at which the transport header is also available. The GRA header should be self-contained. That is, all parameters should be provided in the GRA header itself. This may necessitate duplicating information carried elsewhere in the packet, most obviously the transport session identifier. Note that when a GRA header is present, a given transport protocol is free to refer to the GRA header for values that normally would be carried elsewhere in the packet. The GRA header must carry the following parameters: Calvert et al. Section 6. [Page 8] INTERNET-DRAFT Expires: January 2002 July 2001 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Demux | GHTYPE/GHSIZE | /+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | TSI | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Identifiers | TFID | \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ | FSID | \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /| SKEY | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | operand 1 | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Operands | operand 2 | \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ | operand 3 | \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ | ..... | \+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 1 - Schematic GRA Header Format GHTYPE/GHSIZE GRA Header Type/ GRA Header Size TSI Transport Session Identifier TFID Transport-session-specific Filter Identifier FSID Filter-specific Service Identifier SKEY Sub-session-specific label corresponding to key-specific state 6.1. Transport Session Identifier (TSI) The TSI must be globally unique. If GRA is to be truly generic and independent of even network-layer Calvert et al. Section 6.1. [Page 9] INTERNET-DRAFT Expires: January 2002 July 2001 protocol context, this uniqueness must be established by the TSI alone without reference to any other qualifiers such as, say, a transport protocol identifier. Alternatively, an implementation of GRA may be network-protocol specific and make use of network-layer protocol context to scope TSIs by the relevant network-layer protocol's transport protocol identifiers. To the extent that an implementation of GRA is network-layer-protocol specific, it is incompatible with a fully generic implementation of GRA. The TSI must be large enough to name the universe (scoped or not) of transport sessions, but still be scalable enough to be efficiently sorted and searched in the forwarding path in routers. A TSI scoped by a transport protocol identifier must number 2^48 sessions. The TSI is used to locate the filter specifications and filter-specific state for a given transport session. 6.2. Filter Identifier (TFID) The TFID is the transport-session-specific name of the filter specification against which the GRA header must be matched. The TFID must number on the order of 256 filters per transport session. 6.3. Service Identifier (FSID) The FSID is the filter-specific name of the service to be used to process the GRA header. The FSID must number on the order of 16 different services per filter. 6.4. Key (SKEY) The SKEY is the sub-session-specific label to be attached to any key- specific state established by the service used to process the GRA header. It may also be treated as an operand by the service. The SKEY must be large enough to provide substantial granularity within the transport session, but, like the TSI, still be scalable enough to be efficiently sorted and searched in the forwarding path in routers. 6.5. Operands An implementation of GRA must support GRA headers with either a fixed number of operands in fixed formats, or a variable number of operands in variable formats. Fixed format GRA headers should be used in filter specifications where forwarding-time processing performance is the Calvert et al. Section 6.5. [Page 10] INTERNET-DRAFT Expires: January 2002 July 2001 priority. Variable format GRA headers should be used in filter specifications where syntactic flexibility is the priority. Variable format GRA headers must be self-describing to the extent that the type, length, and value of all operands can be determined dynamically. While operands may represent a whole range of meaningful (to the transport) attributes, they are not interpreted by GRA in other than the context of the operators of each type supported by GRA. That is, the numerical and relational operators treat operands as unsigned integers, and the logical operators treat operands as bit fields. 7. More on Filter Specifications While GRA headers carry only inert identifiers and operands, it is the filter specifications in routers that embody the procedural power of GRA. A filter specification requires a fairly rich language of operators for operating on the operands in the GRA header, for forming predicates, for constructing expressions, for binary control decisions, and for maintaining state. Numerical Operators Addition and subtraction. "+, -" Logical Operators Bit-wise AND, inclusive OR, exclusive OR, and one's complement. "&, |, ^, ~" Relational Operators EQ, GT, GTE, LT, LTE. "==, >, >=, <, <=" Expressions Logical AND, inclusive OR, and NEGATION. "&&, ||, !" Control Flow Non-compoundable "if/else". Calvert et al. Section 7. [Page 11] INTERNET-DRAFT Expires: January 2002 July 2001 Assignment " = " 7.1. Identifiers A filter specification consists first of specific values for each of the identifiers described above: a TSI for the transport session, a TFID for the specific filter within that session, and an FSID for each service provided by the filter. 7.2. Filter, Service, and Key State Any state associated with each filter and each service provided must also be specified. For services whose actions are predicated on matching SKEY against existing key state, that key state must be specified. Such state may consist of timers and variables. Timers may be used to expire a filter or service or key, or for other purposes. Variables may be used to maintain filter-,service-, and key-specific state. These timers and variables may be used in housekeeping functions as well as in action specifications. 7.3. Housekeeping Functions: The only non-data driven events associated with GRA are the expirations of life timers on local state. That is, once established, a filter specification does not change and results in no non-data-driven activity other than the expiry of timers that discard the filter, its services, or any key state associated with those services. 7.4. GRA Header Formats The specification then provides the format of the GRA header for each service possibly including an SKEY. (SKEY is just an operand that happens to be used to label filter state within the session.) Fixed format headers specify the fixed sequence and size of the operands. Variable format headers specify the syntax and size of the operand descriptors. Calvert et al. Section 7.4. [Page 12] INTERNET-DRAFT Expires: January 2002 July 2001 7.5. Actions A single service-specific action must be specified for each service. If the service is conditional on SKEY matching existing state, two actions must be specified, one for the match and the other for the miss. An action consists of a single predicate that may evaluate GRA header operands and local state including variables and timers. Conditional upon the predicate, are 3 functions. The first function specifies how to transform local state which may include filter state, service state, or key state. Transformations include assigning values to variables, setting, resetting, or clearing timers, and discarding key state. The second function specifies how to transform the interface list associated with either the service or the key. Transformations include adding or deleting interfaces in the list, and assigning values to variables associated with interfaces in the list. The third function specifies how to handle the GRA packet. It may be discarded (DISCARD), it may be forwarded downstream on one or more outgoing interfaces (FORWARD), or it may be forwarded upstream to the upstream GRA neighbour for the session (REVERSE). The FORWARD function must be capable of iterating on a list of outgoing interfaces. Before being forwarded in either direction, the operands (and only the operands) in the GRA header may be modified. Modifications consists solely of assigning new values to existing operands in the GRA header without altering the format of that header in any way. 8. Contextual State To carry out a particular GRA action, both the identity of the incoming interface upon which a GRA packet was received and of the upstream GRA neighbour for the transport session must be available to GRA. 9. Implosion Control 10. Security Considerations Calvert et al. Section 10. [Page 13] INTERNET-DRAFT Expires: January 2002 July 2001 11. IANA Considerations No information in this specification is subject to IANA registration. Intellectual Property Issues Acknowledgments References [1] Cain, B., Speakman, T., and Towsley, D., "Generic Router Assist (GRA) Building Block, Motivation and Architecture", Internet Draft draft-ietf-rmt-gra-arch-02.txt, a work in progress. Authors' Addresses Ken Calvert calvert@netlab.uky.edu Christos Papadopoulos christos@catarina.usc.edu Tony Speakman speakman@cisco.com Don Towsley towsley@cs.umass.edu Swapna Yelamanchi syelaman@cisco.com Calvert et al. Section 11. [Page 14] INTERNET-DRAFT Expires: January 2002 July 2001 Full Copyright Statement Copyright (C) The Internet Society (2000). All Rights Reserved. This document and translations of it MAY be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation MAY be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself MAY NOT be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE." Calvert et al. Section 11. [Page 15]