Network Working Group A. Doria (co-editor) Internet-Draft ETRI Expires: March 26, 2005 September 25, 2004 ForCES Protocol Specification draft-ietf-forces-protocol-00.txt Status of this Memo By submitting this Internet-Draft, I certify that any applicable patent or other IPR claims of which I am aware have been disclosed, and any of which I become aware will be disclosed, in accordance with RFC 3668. 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." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on March 26, 2005. Copyright Notice Copyright (C) The Internet Society (2004). All Rights Reserved. Abstract This specification documents the Forwarding and Control Element Seperation protocol. This protocol is desgined to be used between a Control Element and a Forwarding Element in a Routing Network Element. Authors The participants in the ForCES Protocol Team, authors and co-editors, of this draft, are: Doria (co-editor) Expires March 26, 2005 [Page 1] Internet-Draft ForCES September 2004 Ligang Dong, Zhejiang Gongshang University Avri Doria, ETRI Ram Gopal, Nokia Robert Haas, IBM Jamal Hadi Salim, Znyx Hormuzd M Khosravi, Intel Weiming Wang, Zhejiang Gongshang University Acknowledgment The authors of this draft would like to acknowledge and thank all the protocol proposal authors including Alex Audu, Steven Blake, Chaoping Wu, Jeff Pickering, Yunfei Guo, and Guangming Wang for their contributions. We would also like to thank David Putzolu, and Patrick Droz for their comments and suggestions on the protocol. Doria (co-editor) Expires March 26, 2005 [Page 2] Internet-Draft ForCES September 2004 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1 Sections of this document . . . . . . . . . . . . . . . . 5 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1 Protocol Framework . . . . . . . . . . . . . . . . . . . . 9 3.1.1 The PL layer . . . . . . . . . . . . . . . . . . . . . 11 3.1.2 The TML layer . . . . . . . . . . . . . . . . . . . . 12 3.1.3 The FEM/CEM Interface . . . . . . . . . . . . . . . . 12 3.2 ForCES Protocol Phases . . . . . . . . . . . . . . . . . . 13 3.2.1 Pre-association . . . . . . . . . . . . . . . . . . . 13 3.2.2 Post-association . . . . . . . . . . . . . . . . . . . 14 3.3 Protocol Mechanisms . . . . . . . . . . . . . . . . . . . 15 3.3.1 Of Transactions, Atomicity and 2 Phase Commits . . . . 15 3.3.2 FE Protocol Object . . . . . . . . . . . . . . . . . . 15 3.3.3 Scaling by Concurrency . . . . . . . . . . . . . . . . 16 4. TML Requirements . . . . . . . . . . . . . . . . . . . . . . . 18 4.1 TML Parameterization . . . . . . . . . . . . . . . . . . . 19 5. Common Header . . . . . . . . . . . . . . . . . . . . . . . . 20 6. Protocol Messages . . . . . . . . . . . . . . . . . . . . . . 23 6.1 Association Messages . . . . . . . . . . . . . . . . . . . 23 6.1.1 Association Setup Message . . . . . . . . . . . . . . 23 6.1.2 Association Setup Response Message . . . . . . . . . . 24 6.1.3 Association Teardown Message . . . . . . . . . . . . . 25 6.2 Query and Response Messages . . . . . . . . . . . . . . . 25 6.2.1 Query Message . . . . . . . . . . . . . . . . . . . . 26 6.2.2 Query Response Message . . . . . . . . . . . . . . . . 29 6.3 Configuration Messages . . . . . . . . . . . . . . . . . . 31 6.3.1 Config Message . . . . . . . . . . . . . . . . . . . . 31 6.3.2 Config Response Message . . . . . . . . . . . . . . . 33 6.4 Event Notification and Response Messages . . . . . . . . . 34 6.4.1 Event Notification Message . . . . . . . . . . . . . . 35 6.4.2 Event Notification Response Message . . . . . . . . . 37 6.5 Packet Redirect Message . . . . . . . . . . . . . . . . . 38 6.6 State Maintenance Messages . . . . . . . . . . . . . . . . 42 6.6.1 State Maintenance Message . . . . . . . . . . . . . . 42 6.6.2 State Maintenance Response Message . . . . . . . . . . 43 6.7 Heartbeat Message . . . . . . . . . . . . . . . . . . . . 44 7. Protocol Scenarios . . . . . . . . . . . . . . . . . . . . . . 45 7.1 Association Setup state . . . . . . . . . . . . . . . . . 45 7.2 Association Established state or Steady State . . . . . . 46 8. High Availability Support . . . . . . . . . . . . . . . . . . 49 8.1 Responsibilities for HA . . . . . . . . . . . . . . . . . 51 9. Security Considerations . . . . . . . . . . . . . . . . . . . 52 9.1 No Security . . . . . . . . . . . . . . . . . . . . . . . 52 9.1.1 Endpoint Authentication . . . . . . . . . . . . . . . 52 9.1.2 Message authentication . . . . . . . . . . . . . . . . 53 Doria (co-editor) Expires March 26, 2005 [Page 3] Internet-Draft ForCES September 2004 9.2 ForCES PL and TML security service . . . . . . . . . . . . 53 9.2.1 Endpoint authentication service . . . . . . . . . . . 53 9.2.2 Message authentication service . . . . . . . . . . . . 53 9.2.3 Confidentiality service . . . . . . . . . . . . . . . 54 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 55 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 55 10.1 Normative References . . . . . . . . . . . . . . . . . . . . 55 10.2 Informational References . . . . . . . . . . . . . . . . . . 55 A. Individual Authors/Editors Contact . . . . . . . . . . . . . . 56 B. IANA considerations . . . . . . . . . . . . . . . . . . . . . 57 C. Implementation Notes . . . . . . . . . . . . . . . . . . . . . 58 C.1 TML considerations . . . . . . . . . . . . . . . . . . . . 58 C.1.1 PL Flag inference by TML . . . . . . . . . . . . . . . 58 C.1.2 Message type inference to Mapping at the TML . . . . . 59 Intellectual Property and Copyright Statements . . . . . . . . 60 Doria (co-editor) Expires March 26, 2005 [Page 4] Internet-Draft ForCES September 2004 1. Introduction This specification provides a draft definition of an IP-based protocol for Control Element control of an Forwarding Element. The protocol is a TLV based protocol that include commands for transport of LFB information as well as TLVs for association, configuration, status, and events. This specification does not specify a transport mechanism for messages, but does include a discussion of the services that must be provided by the transport interface. 1.1 Sections of this document Section 2 provides a glossary of terminology used in the specification. Section 3 provides an overview of the protocol including a discussion on the protocol framework, descriptions of the protocol layer (PL) and a transport mapping layer (TML), as well as of the ForCES protocol mechanisms. While this document does not define the TML, Section 4 details the services that the TML must provide. The Forces protocol is defined to have a common header for all other message types. The header is defined in Section 5, while the protocol messages are defined in Section 6. Section 7 describes several Protocol Scenarios and includes message exchange descriptions. Section 8 describes mechanism in the protocol to support high availability mechanisms including redundancy and fail over. Section 9 defines the security mechanisms provided by the PL and TML. Doria (co-editor) Expires March 26, 2005 [Page 5] Internet-Draft ForCES September 2004 2. Definitions This document follows the terminologies defined by the ForCES Requirements in [RFC3654] and by the ForCES framework in [RFC3746]. This document also uses the terminologies defined by ForCES FE model in [FE-MODEL]. We copy the definitions of some terminologies as below: Addressable Entity (AE) - A physical device that is directly addressable given some interconnect technology. For example, on IP networks, it is a device to which we can communicate using an IP address; and on a switch fabric, it is a device to which we can communicate using a switch fabric port number. Forwarding Element (FE) - A logical entity that implements the ForCES protocol. FEs use the underlying hardware to provide per-packet processing and handling as directed/controlled by a CE via the ForCES protocol. Control Element (CE) - A logical entity that implements the ForCES protocol and uses it to instruct one or more FEs how to process packets. CEs handle functionality such as the execution of control and signaling protocols. Pre-association Phase - The period of time during which a FE Manager (see below) and a CE Manager (see below) are determining which FE and CE should be part of the same network element. Post-association Phase - The period of time during which a FE does know which CE is to control it and vice versa, including the time during which the CE and FE are establishing communication with one another. FE Model - A model that describes the logical processing functions of a FE. FE Manager (FEM) - A logical entity that operates in the pre-association phase and is responsible for determining to which CE(s) a FE should communicate. This process is called CE discovery and may involve the FE manager learning the capabilities of available CEs. A FE manager may use anything from a static configuration to a pre-association phase protocol (see below) to determine which CE(s) to use. Being a logical entity, a FE manager might be physically combined with any of the other logical entities such as FEs. CE Manager (CEM) - A logical entity that operates in the pre-association phase and is responsible for determining to which FE(s) a CE should communicate. This process is called FE discovery Doria (co-editor) Expires March 26, 2005 [Page 6] Internet-Draft ForCES September 2004 and may involve the CE manager learning the capabilities of available FEs. A CE manager may use anything from a static configuration to a pre-association phase protocol (see below) to determine which FE to use. Being a logical entity, a CE manager might be physically combined with any of the other logical entities such as CEs. ForCES Network Element (NE) - An entity composed of one or more CEs and one or more FEs. To entities outside a NE, the NE represents a single point of management. Similarly, a NE usually hides its internal organization from external entities. High Touch Capability - This term will be used to apply to the capabilities found in some forwarders to take action on the contents or headers of a packet based on content other than what is found in the IP header. Examples of these capabilities include NAT-PT, firewall, and L7 content recognition. Datapath -- A conceptual path taken by packets within the forwarding plane inside an FE. LFB (Logical Function Block) type -- A template representing a fine-grained, logically separable and well-defined packet processing operation in the datapath. LFB types are the basic building blocks of the FE model. LFB (Logical Function Block) Instance -- As a packet flows through an FE along a datapath, it flows through one or multiple LFB instances, with each implementing an instance of a certain LFB type. There may be multiple instances of the same LFB in an FE's datapath. Note that we often refer to LFBs without distinguishing between LFB type and LFB instance when we believe the implied reference is obvious for the given context. LFB Metadata -- Metadata is used to communicate per-packet state from one LFB to another, but is not sent across the network. The FE model defines how such metadata is identified, produced and consumed by the LFBs, but not how metadata is encoded within an implementation. LFB Attribute -- Operational parameters of the LFBs that must be visible to the CEs are conceptualized in the FE model as the LFB attributes. The LFB attributes include, for example, flags, single parameter arguments, complex arguments, and tables that the CE can read or/and write via the ForCES protocol (see below). LFB Topology -- Representation of how the LFB instances are logically interconnected and placed along the datapath within one FE. Sometimes it is also called intra-FE topology, to be distinguished from inter-FE topology. Doria (co-editor) Expires March 26, 2005 [Page 7] Internet-Draft ForCES September 2004 FE Topology -- A representation of how the multiple FEs within a single NE are interconnected. Sometimes this is called inter-FE topology, to be distinguished from intra-FE topology (i.e., LFB topology). Inter-FE Topology -- See FE Topology. Intra-FE Topology -- See LFB Topology. Following terminologies are defined by this document: ForCES Protocol - While there may be multiple protocols used within the overall ForCES architecture, the term "ForCES protocol" refers only to the protocol used at the Fp reference point in the ForCES Framework in RFC3746 [RFC3746]. This protocol does not apply to CE-to-CE communication, FE-to-FE communication, or to communication between FE and CE managers. Basically, the ForCES protocol works in a master-slave mode in which FEs are slaves and CEs are masters. This document defines the specifications for this ForCES protocol. ForCES Protocol Layer (ForCES PL) -- A layer in ForCES protocol architecture that defines the ForCES protocol messages, the protocol state transfer scheme, as well as the ForCES protocol architecture itself (including requirements of ForCES TML (see below)). Specifications of ForCES PL are defined by this document. ForCES Protocol Transport Mapping Layer (ForCES TML) -- A layer in ForCES protocol architecture that specifically addresses the protocol message transportation issues, such as how the protocol messages are mapped to different transport media (like TCP, IP, ATM, Ethernet, etc), and how to achieve and implement reliability, multicast, ordering, etc. The ForCES TML is specifically addressed in a separate ForCES TML Specification document. Doria (co-editor) Expires March 26, 2005 [Page 8] Internet-Draft ForCES September 2004 3. Overview The reader is referred to the Framework document [RFC3746], and in particular sections 3 and 4, for architectural overview and where and how the ForCES protocol fits in. There may be some content overlap between the framework document and this section in order to provide clarity. 3.1 Protocol Framework Figure 1 below is reproduced from the Framework document for clarity. It shows a NE with two CEs and two FEs. --------------------------------------- | ForCES Network Element | -------------- Fc | -------------- -------------- | | CE Manager |---------+-| CE 1 |------| CE 2 | | -------------- | | | Fr | | | | | -------------- -------------- | | Fl | | | Fp / | | | Fp| |----------| / | | | | |/ | | | | | | | | | Fp /|----| | | | | /--------/ | | -------------- Ff | -------------- -------------- | | FE Manager |---------+-| FE 1 | Fi | FE 2 | | -------------- | | |------| | | | -------------- -------------- | | | | | | | | | | | ----+--+--+--+----------+--+--+--+----- | | | | | | | | | | | | | | | | Fi/f Fi/f Fp: CE-FE interface Fi: FE-FE interface Fr: CE-CE interface Fc: Interface between the CE Manager and a CE Ff: Interface between the FE Manager and an FE Fl: Interface between the CE Manager and the FE Manager Fi/f: FE external interface Figure 1: ForCES Architectural Diagram The ForCES protocol domain is found in the Fp Reference Point. The Protocol Element configuration reference points, Fc and Ff also play a role in the booting up of the Forces Protocol. The protocol Doria (co-editor) Expires March 26, 2005 [Page 9] Internet-Draft ForCES September 2004 element configuration is out of scope of the ForCES protocol but is touched on in this document since it is an integral part of the protocol pre-association phase. Figure 2 below shows further breakdown of the Fp interface by example of a MPLS QoS enabled Network Element. ------------------------------------------------- | | | | | | | |OSPF |RIP |BGP |RSVP |LDP |. . . | | | | | | | | ------------------------------------------------- | ForCES Interface | ------------------------------------------------- ^ ^ | | ForCES | |data control | |packets messages| |(e.g., routing packets) | | v v ------------------------------------------------- | ForCES Interface | ------------------------------------------------- | | | | | | | |LPM Fwd|Meter |Shaper |MPLS |Classi-|. . . | | | | | |fier | | ------------------------------------------------- Figure 2: Examples of CE and FE functions The ForCES Interface shown in Figure B constitutes two pieces: the PL and TML layer. Doria (co-editor) Expires March 26, 2005 [Page 10] Internet-Draft ForCES September 2004 This is depicted in Figure 3 below. +------------------------------------------------ | CE PL layer | +------------------------------------------------ | CE TML layer | +------------------------------------------------ ^ | ForCES | (i.e Forces data + control PL | packets ) messages | over | specific | TML | encaps | and | transport | | v +------------------------------------------------ | FE TML layer | +------------------------------------------------ | FE PL layer | +------------------------------------------------ Figure 3: ForCES Interface The PL layer is in fact the ForCES protocol. Its semantics and message layout are defined in this document. The TML Layer is necessary to connect two ForCES PL layers as shown in Figure 3 above. The TML is out of scope for this document but is within scope of ForCES. This document defines requirements the PL needs the TML to meet. Both the PL and TML layers are standardized by the IETF. While only one PL layer is defined, different TMLs are expected to be standardized. To interoperate the TML layer at the CE and FE are expected to be of the same definition. On transmit, the PL layer delivers its messages to the TML layer. The TML layer delivers the message to the destination TML layer(s). On receive, the TML delivers the message to its destination PL layer(s). 3.1.1 The PL layer The PL is common to all implementations of ForCES and is standardized Doria (co-editor) Expires March 26, 2005 [Page 11] Internet-Draft ForCES September 2004 by the IETF as defined in this document. The PL layer is responsible for associating an FE or CE to an NE. It is also responsible for tearing down such associations. An FE uses the PL layer to throw various subscribed-to events to the CE PL layer as well as respond to various status requests issued from the CE PL. The CE configures both the FE and associated LFBs attributes using the PL layer. In addition the CE may send various requests to the FE to activate or deactivate it, reconfigure its HA parametrization, subscribe to specific events etc. More details in section Section 6. 3.1.2 The TML layer The TML layer is essentially responsible for transport of the PL layer messages. The TML is where the issues of how to achieve transport level reliability, congestion control, multicast, ordering, etc are handled. It is expected more than one TML will be standardized. The different TMLs each could implement things differently based on capabilities of underlying media and transport. However, since each TML is standardized, interoperability is guaranteed as long as both endpoints support the same TML. All ForCES Protocol Layer implementations should be portable across all TMLs, because all TMLs have the same top edge semantics as defined in this document. 3.1.3 The FEM/CEM Interface The FEM and CEM components, although valuable in the setup and configurations of both the PL and TML layers, are out of scope of the ForCES protocol. The best way to think of them are as configurations/parameterizations for the PL and TML before they become active (or even at runtime based on implementation). In the simplest case, the FE or CE read a static configuration file which they use as the FEM/CEM interface. RFC 3746 has a lot more detailed descriptions on how the FEM and CEM could be used. We discuss the pre-association phase where the CEM and FEM play briefly in section Section 3.2.1. An example of typical things FEM/CEM would configure would be TML specific parameterizations such as: a. how the TML connection should happen (example what IP addresses to use, transport modes etc); b. the ID for the FE or CE would also be issued at this point. c. Security parameterization such as keys etc. d. Connection association parameters Example "send up to 3 association messages each 1 second apart" Vs " send up to 4 association messages with increasing exponential timeout". Doria (co-editor) Expires March 26, 2005 [Page 12] Internet-Draft ForCES September 2004 3.2 ForCES Protocol Phases ForCES in relation to NEs involves two phases: the Pre-Association phase where configuration/initialization/bootup of the TML and PL layer happens, and the association phase where the ForCES protocol operates. 3.2.1 Pre-association The ForCES interface is configured during the Pre association phase. In a simple setup, the configuration is static and is read from some saved config file. All the parameters for the association phase are well known after the pre association phase is complete. A protocol such as DHCP may be used to retrieve the config parameters instead of reading from a static config file. Note this will still be considered static pre-association. Dynamic configuration may also happen in the Fc, Ff and Fl reference points. Vendors may use their own proprietary service discovery protocol to pass the parameters. We reproduce some scenarios from the Framework Document to show a pre-association example. <----Ff ref pt---> <--Fc ref pt-------> FE Manager FE CE Manager CE | | | | | | | | (security exchange) (security exchange) 1|<------------>| authentication 1|<----------->|authentication | | | | (FE ID, attributes) (CE ID, attributes) 2|<-------------| request 2|<------------|request | | | | 3|------------->| response 3|------------>|response (corresponding CE ID) (corresponding FE ID) | | | | | | | | Figure 4: Examples of a message exchange over the Ff and Fc reference points Doria (co-editor) Expires March 26, 2005 [Page 13] Internet-Draft ForCES September 2004 <-----------Fl ref pt--------------> | FE Manager FE CE Manager CE | | | | | | | | (security exchange) | | 1|<------------------------------>| | | | | | (a list of CEs and their attributes) | 2|<-------------------------------| | | | | | (a list of FEs and their attributes) | 3|------------------------------->| | | | | | | | | | Figure 5: An example of a message exchange over the Fl reference point Before the transition to the association phase, the FEM will have established contact with the appropriate CEM component. Initialization of the ForCES interface will be completed, and Authentication and capabilities discovery may be complete as well. Both the FE and CE would know how to connect to each other for configuration, accounting, identification and authentication purposes. Both sides are also knowledgeable of all necessary protocol parameters such as timers, etc. The Fl reference point may continue to operate during the association phase and may be used to force a disassociation of an FE or CE. Because the Pre-association phase is out of scope, we do not discuss these details any further. The reader is referred to the framework document for more detailed discussion. 3.2.2 Post-association In this phase, the FE and CE components talk to each other using the ForCES protocol (PL over TML) as defined in this document. There are three sub-phases: Association setup state, Established State, and Association teardown state. 3.2.2.1 Association setup state The FE attempts to join the NE. The FE may be rejected or accepted. Once granted access into the NE, capabilities exchange happen with the CE querying the FE. Armed with the FE capability knowledge, the CE can offer an initial configure (possibly to restore state) and query certain attributes within either an LFB or the FE itself. Doria (co-editor) Expires March 26, 2005 [Page 14] Internet-Draft ForCES September 2004 A lot more details are provided in the protocol scenarios section. On successful completion of this state, the FE joins the NE and is moved to the Established State. 3.2.2.2 Association Established state In this state the FE is continuously updated or queried. The FE may also send asynchronous event notifications to the CE or synchronous heartbeat notifications. This continues until a termination is initiated by either the CE or FE. Refer to section on protocol scenarios for more details. 3.3 Protocol Mechanisms Various semantics are exposed to the protocol users via the PL header including: Transaction capabilities, atomicity of transactions, two phase commits, batching/parallelization, High Availability and failover as well as command windows. 3.3.1 Of Transactions, Atomicity and 2 Phase Commits A transaction is a sequence of operations that is guaranteed to be atomic in the presence of any failures by the CEs or FEs. Operation in this sense implies the PL operation within the message body TLV. An example of a transaction could be a config PL msg with a sequence of operations: "route-add A B,C:route-del X" (each operation in its own TLV). If a transaction is split across more than one message, then all message batch must arrive at the destination before they are executed on either the LFB or FE. All operations are executed serially in the order specified by the transaction. If any of the sequence of operations in a transaction fails then the transaction is declared as a failure. This is an all-or-nothing approach and is needed to ensure consistency of a transaction across multiple FEs. A transaction may be atomic within an FE alone or across the NE. In both cases the atomic requirement for a transaction MUST be met. The PL message header exposes ability to mark a start of transaction and end of transaction using flags. These flags can be used to derive a classical transactional two phase commit[ACID paper ref here]. 3.3.2 FE Protocol Object The FE Protocol Object is a logical entity in each FE that is used to control the ForCES protocol. It is defined in the same fashion as Doria (co-editor) Expires March 26, 2005 [Page 15] Internet-Draft ForCES September 2004 LFBs. The FE Protocol Object can be manipulated using the standard Config/Query messages. The FE Protocol Object Type ID is assigned the value 0x1. The FE Protocol Instance ID is assigned the value 0x1. There must always be one and only one instance of the FE Protocol Object in an FE. The values of the attributes in the FE Protocol Object have pre-defined default values that are specified here. Unless explicit changes are made to these values using Config messages from the CE, these default values MUST be used for the operation of the protocol. The FE Protocol Object consists of the following elements: FE Protocol events that can be subscribed/unsubscribed: FE heartbeat FE TML events (TBD) FE Protocol capabilities: Supported ForCES protocol version(s) by the FE Supported ForCES FE model(s) by the FE Some TML capability description(s) FE Protocol attributes: current version of the ForCES protocol current version of the FE model Association Expiry Timer Heartbeat Interval Primary CE FE failover and restart policy The FE Object (referred to as "FE attributes" in the model draft) should not be confused with the FE Protocol Object. The FE Object contains attributes relative to the FE itself, and not to the operation of the ForCES protocol between the CE and the FE. Such attributes can be FEState (refer to model draft), vendor, etc. The FE Object Type ID is assigned the value 0x2. The FE Protocol Instance ID is assigned the value 0x1. There must always be one and only one instance of the FE Object in an FE. The FE Object consists of the following elements FE Events: FEStatusChange (FE Up/Down/Active/Inactive/Failover) FE DoS alert FE capability change FE attributes: FE Behavior Exp. Timer HA Mode 3.3.3 Scaling by Concurrency It is desirable that the PL layer is not the bottleneck when larger bandwidth pipes become available. To pick a mythical example in Doria (co-editor) Expires March 26, 2005 [Page 16] Internet-Draft ForCES September 2004 todays terms, if a 100Gbps pipe was made available and there is sufficient work then the PL layer should take advantage and use all of the 100Gbps pipe. Two semantics are allowed to achieve this. The first one is batching and the second one is a command window. Batching is ability to send multiple commands (such as config) in one PDU. The size of the batch will be affected by amongst other things the path MTU. The commands may be part of the same transaction or unrelated transactions which are independent of each other. Command windowing allows for pipelining of independent transactions which do not affect each other. Each independent transaction could be one or more batches. 3.3.3.1 Batching TBD 3.3.3.2 Command Pipelining TBD Doria (co-editor) Expires March 26, 2005 [Page 17] Internet-Draft ForCES September 2004 4. TML Requirements The requirements below are expected to be delivered by the TML. This text does not define how such mechanisms are delivered. As an example they could be defined to be delivered via hardware or inter-TML protocol level schemes. Each TML must describe how it contributes to achieving the listed ForCES requirements. If for any reason a TML does not provide a service listed below a justification needs to be provided. 1. Reliability As defined by RFC 3654, section 6 #6. 2. Security TML provides security services to the ForCES PL. TML layer should support following security services and describe how they are achieved. * Endpoint authentication of FE and CE. * Message Authentication * Confidentiality service 3. Congestion Control The congestion control scheme used needs to be defined. Additionally, under what circumstances is notification sent to the PL to notify it of congestion. 4. Uni/multi/broadcast addressing/delivery if any If theres any mapping between PL and TML level Uni/Multi/ Broadcast addressing it needs to be defined. 5. Timeliness Editorial Note: Does the TML allow for obsoleting msgs? If yes, it needs to say how. 6. HA decisions It is expected that availability of transport links is the TMLs responsibility. However, on config basis, the PL layer may wish to participate in link failover schemes and therefore the TML must provide this capability. Please refer to the HA Section Section 8 for details. 7. Encapsulations used. Different types of TMLs will encapsulate the PL messages on different types of headers. The TML needs to specify the encapsulation used. 8. Prioritization It is expected that the TML will be able to handle up to 8 priority levels needed by the PL layer and will provide preferential treatment. TML needs to define how this is achieved. Doria (co-editor) Expires March 26, 2005 [Page 18] Internet-Draft ForCES September 2004 4.1 TML Parameterization It is expected that it should be possible to use a configuration reference point, such as the FEM or the CEM, to configure the TML. Some of the parameters may include: o PL ID o Connection Type and associated data. For example if a TML uses IP/TCP/UDP then parameters such as TCP and UDP ports, IP addresses need to be configured. o number of transport connections o Connection Capability, such as bandwidth, etc. o Allowed/Supported Connection QoS policy (or Congestion Control Policy) Doria (co-editor) Expires March 26, 2005 [Page 19] Internet-Draft ForCES September 2004 5. Common Header 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 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |version| rsvd | Message Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 6: Common Header The message is 32 bit aligned. Version (4 bit): Version with a 2 bit major and 2 bit minor. rsvd (4 bit): Unused at this point. A receiver should not interpret this field. Command (8 bits): Commands are defined in Section 6. Source ID (32 bit): Dest ID (32 bit): * Above are 32 bit IDs which recognize the termination point. Ideas discussed so far are desire to recognize if ID belongs to FE or CE by inspection. Suggestions for achieving this involves partitioning of the ID allocation. Another alternative maybe to use flags to indicate direction (this avoids partition). * IDs will allow multi/broad/unicast * Addressing a. As ForCES may run between multiple CEs and FEs and over different protocols such as IPv4 and IPv6, or directly over Ethernet or other switching-fabric interconnects, it is necessary to create an addressing scheme for ForCES entities. Mappings to the underlying TML-level addressing can then be defined as appropriate. b. Fundamentally, unique IDs are assigned to CEs and FEs. A split address space is used to distinguish FEs from CEs. Even though we can assume that in a large NE there are typically two or more orders of magnitude more FEs than CEs, the address space is split uniformly for simplicity. Doria (co-editor) Expires March 26, 2005 [Page 20] Internet-Draft ForCES September 2004 c. Special IDs are reserved for FE broadcast, CE broadcast, and NE broadcast. d. Subgroups of FEs belonging, for instance, to the same VPN, may be assigned a multicast ID. Likewise, subgroups of CEs that act, for instance, in a back-up mode may be assigned a multicast ID. These FEs and CE multicast IDs are chosen in a distinct portion of the ID address space. Such a multicast ID may comprise FEs, CEs, or a mix of both. e. As a result, the address space allows up to 2^30 (over a billion) CEs and the same amount of FEs. 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 0 1 2 3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |TS | sub-ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7: ForCES ID Format f. The ForCES ID is 32 bits. The 2 most significant bits called Type Switch (TS) are used to split the ID space as follows: A. TS Corresponding ID range Assignment B. -- ---------------------- ---------- C. 0b00 0x00000000 to 0x3FFFFFFF FE IDs (2^30) D. 0b01 0x40000000 to 0x7FFFFFFF CE IDs (2^30) E. 0b10 0x80000000 to 0xBFFFFFFF reserved F. 0b11 0xC0000000 to 0xFFFFFFEF multicast IDs (2^30 - 16) G. 0b11 0xFFFFFFF0 to 0xFFFFFFFC reserved H. 0b11 0xFFFFFFFD all CEs broadcast I. 0b11 0xFFFFFFFE all FEs broadcast J. 0b11 0xFFFFFFFF all FEs and CEs (NE) broadcast g. It is desirable to address multicast and/or broadcast messages to some LFB instances of a given class. For instance, assume FEs FEa and FEb: - FEa has LFBs LFBaX1 and LFBaX2 of class X - similarly, FEb has two LFBs LFBbX1 and LFBbX2 of class X. A broadcast message should be addressable to only LFBs LFBaX1 and LFBbX1 (this can be the case for instance if these two LFBs belong to the same VPN). To achieve this, a VPN ID (3 octets OUI and 4 octets VPN Index) as defined in RFC 2685 should be used within the ForCES message body as a TLV. Doria (co-editor) Expires March 26, 2005 [Page 21] As an alternative, a particular multicast ID MAY be associated to a given VPN ID through some configuration means. Messages delivered to such a multicast ID MUST only be applied to LFBs belonging to that VPN ID. Sequence (32 bits) Unique to a PDU. [Discussion: There may be impact on the effect of subsequence numbers]. length (16 bits): length of header + the rest of the message in DWORDS (4 byte increments). Flags(32 bits): Identified so far: * ACK indicator(2 bit) The description for using the two bits is: 'NoACK' (00) | 'SuccessACK'(01) | 'UnsuccessACK'(10) | 'ACKAll' (11) * unknown/undecided. * Throttle flag? * batch (2 bits) * Atomicity (1 or 2 bits) Editorial Note: There are several open issues, listed below, in the header which still need to be settled: 1. Parallelization of PL Windowing/subsequence Someone to look into ISCSI 2. events and replies and relation to peer to peer vs master slave 3. We need to discuss whether some of the Flags such as those for Atomicity, Batching are needed in the common header or only belong to the Config message. Doria (co-editor) Expires March 26, 2005 [Page 22] Internet-Draft ForCES September 2004 6. Protocol Messages 6.1 Association Messages The ForCES Association messages are used to establish and teardown associations between FEs and CEs. 6.1.1 Association Setup Message This message is sent by the FE to the CE to setup a ForCES association between them. This message could also be used by CEs to join a ForCES NE, however CE-to-CE communication is not covered by this protocol. Message transfer direction: FE to CE Message Header: The Message Type in the header is set MessageType= 'Association Setup'. The ACK flag in the header is ignored, because the setup message will always expect to get a response from the message receiver (CE) whether the setup is successful or not. The Src ID (FE ID) may be set to O in the header which means that the FE would like the CE to assign a FE ID for the FE in the setup response message. Message body: The setup message body consists of one optional TLV, the format of which is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = HBI | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Heartbeat Interval | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 8 Type (16 bits): Currently only one Type defined, HBI-heart beat interval. Length (16 bits): Length of the TLV including the T and L fields, in bytes. Heartbeat Interval (32 bits): This indicates the current HB interval on the FE in milliseconds. A default value for this will be defined. Doria (co-editor) Expires March 26, 2005 [Page 23] Internet-Draft ForCES September 2004 Editorial Note: Whether HBI belongs to the setup is still under discussion. Editorial Note: In certain situations (such as use of multicast IDs), it might not be possible to make use of the procedure described above for the FE to dynamically obtain an ID from the CE. Such situations need to be identified. 6.1.2 Association Setup Response Message This message is sent by the CE to the FE in response to the Setup message. It indicates to the FE whether the setup is successful or not, i.e. whether an association is established. Message transfer direction: CE to FE Message Header: The Message Type in the header is set MessageType= 'Setup Response'. The ACK flag in the header is always ignored, because the setup response message will never expect to get any more response from the message receiver (FE). The Dst ID in the header will be set to some FE ID value assigned by the CE if the FE had requested that in the setup message (by SrcID = 0). Message body: The setup response message body consists of one TLV, the format of which is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = Result | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Result | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 9 Type (16 bits): Currently only one Type i.e. Setup Result is required. Other TLVs are optional. Length (16 bits): Length of the TLV including the T and L fields, in bytes. Result (16 bits): This indicates whether the setup msg was successful or whether the FE request was rejected by the CE. Doria (co-editor) Expires March 26, 2005 [Page 24] Internet-Draft ForCES September 2004 6.1.3 Association Teardown Message This message can be sent by the FE or CE to any ForCES element to end its ForCES association with that element. Message transfer direction: CE to FE, or FE to CE (or CE to CE) Message Header: The Message Type in the header is set MessageType= "Asso. Teardown"(TBD?). The ACK flag in the header is always ignored, because the teardown message will never expect to get any response from the message receiver. Message body: The association teardown message body consists of one TLV, the format of which is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = T.reason | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reason (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 10 Type (16 bits): Currently only one Type defined - Teardown Reason. Length (16 bits): Length of the TLV including the T and L fields, in bytes. T.reason (32 bits): This indicates the reason why the association is being terminated. 6.2 Query and Response Messages Editorial Note: If the approach of using an FE Protocol & FE Object is fully adopted and no other reason for having FE TLVs is identified, then no distinction will be further made in the TLV types between FE* and LFB*. As a result, the Type ID and Instance ID in the TLV will also be used to identify the FE Protocol Object, with specific values as mentioned in Section 3.3.2 The ForCES query and response messages are used for one ForCES element (CE or FE) to query other ForCES element(s) for various kinds Doria (co-editor) Expires March 26, 2005 [Page 25] Internet-Draft ForCES September 2004 of information. Current version of ForCES protocol limits the use of the messages only for CE to query information of FE. The information to be queried in FE can be categorized into two types: 1) FE (coarse layer) information This type of information is about the property of an FE, taking the FE as a whole, e.g., the total available memory space in the FE. To query this type of information, we should take the whole FE as the addressing destination. Information of this type includes: o Inter-FE topology o Intra-FE topology, that is, LFB topology o FE capabilities o FE attributes o FE statistics Another way to recognize FE coarse layer property is to define two objects, the 'FE Protocol Object' and the 'FE Object' at this coarse layer. See Section 3.3.2 for more details. 2) LFB information This type of information is about property of an LFB inside an FE, e.g., routing rules of a Forwarder LFB in an FE. To query this type of information, we should take the LFB as the addressing destination. Information of this type include: o LFB capabilities o LFB attributes o LFB statistics 6.2.1 Query Message As usual, a query message is composed of a common header and a message body that consists of one or more TLV data format. Detailed description of the message is as below. Message transfer direction: Current version limits the query message transfer direction only from CE to FE. Message Header: The Message Type in the header is set to MessageType= 'Query'. The ACK flag in the header SHOULD be set 'ACKAll', meaning a full response for a query message is always expected. If the ACK flag is set other values, the meaning of the flag will then be ignored, and a full response will still be returned by message receiver. Doria (co-editor) Expires March 26, 2005 [Page 26] Internet-Draft ForCES September 2004 Message body: The query message body consists of (at least) one or more than one TLVs that describe entries to be queried. According to the queried information being FE (coarse layer) information or LFB information as described above, the message body TLV has different data format as below: To query FE (coarse layer) information, the message body TLV data format is: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='FEQuery' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Query Entry #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Query Entry #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Query Entry #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ To query LFB information, the message body TLV data format is: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='LFBQuery' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type ID | Instance ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Query Entry #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Query Entry #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Query Entry #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 11 Editorial Note: 1. Under discussion is, when an 'FE Protocol Object' idea is adopted, above two kind of data formats may be mapped into one format, with the Type ID and Instance ID changed to Managed Object (MO) Type ID and MO Instance ID, and with two specific MO Type ID and Doria (co-editor) Expires March 26, 2005 [Page 27] Internet-Draft ForCES September 2004 Instance ID for 'FE Protocol Object' and 'FE Object', and others for 'FE LFB Object'. 2. Under discussion is, do we need to support multiple objects addressing at the LFB Type and LFB Instance layer? One simple way to support multiple LFB types or instances is to use TLVs to identify the group of Type IDs and Instance IDs, rather than only one Type and Instance ID. A range of Instance IDs may also be supported in this way. Query Entry: This is a TLV that describes the entry to be queried, as follows: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Description of the Query Entry ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 12 Type: [Under discussion and TBD] Editorial Note: There is a debate on how the Type here can be used. One possible use for the Type is to specify the encoding type for the TLV value. The possible encoding types are that like XML, binary ID based TLV coding, etc, therefore, the possible value for the Type may be 'XMLEncoding', 'ID-BasedBinaryEncoding', etc. The Cons say that it may be impractical to directly use XML encoding in the protocol format, leaving no encoding type other than ID-based binary encoding to be specified, hence no need to specify encoding type. Another possible use of the Type is to number the entries, by which a more flexible response based on the number may become be achieved. Description of the Query Entry: This field presents the detailed description about the entry to be queried. The encoding of the description is based on the ForCES FE model if the entry is defined by FE model, or based on vendor specifications if the entry is defined by vendors. Note that the encoding is responsible for the 32 bits alignment of the description field. Usually, the description should include Doria (co-editor) Expires March 26, 2005 [Page 28] Internet-Draft ForCES September 2004 information about the name (or the name ID) of the entry to be queried. Occasionally, it may also include some more information, like some conditions that the queried entry is required to meet. For instance, consider a case in which a CE is going to query a Forwarder LFB in an FE for its current routing table information. In this case, CE may be interested in knowing (querying) all routing rules in the table, CE may also be interested in only knowing (querying) a few routing rules that meet some specific conditions, e.g., routing rules whose source IP address should match '210.33.X.X'. In the former case, only the name of the LFB attribute (as 'routing table') should be told in the query entry description, while in the latter case, the matching conditions should also be told in the description. Taking another policer LFB as one more example, the policer LFB may have attribute like the provisions (rules) for the policer, therefore, in the query entry TLV, we may set the queied entry name as the 'Provision'. To only set the name of the attribute as 'Provision' will dump all provision items in the LFB; while to set the attribute name and followed by some conditions will dump the provision items that meet the conditions. The index of the provision items can also be as the conditions, e.g., to set the conditions as 'the index of the provision items should range from 11 to 15', then will return query result that only include the provision items ranging from 11 to 15. 6.2.2 Query Response Message When receiving a query message, the receiver should process the message and come up with a query result. The receiver sends the query result by use of the Query Response Message back to the query message sender. The query result can be the information being queried if the query operation is successful, or can also be error codes if the query operation fails, indicating the reasons for the failure. A query response message is also composed of a common header and a message body consists of one or more TLVs describing the query result. Detailed description of the message is as below. Message transfer direction: Current version limits the query response message transfer direction only from FE to CE. Message Header: The Message Type in the header is set to MessageType= 'QueryResponse'. The ACK flag in the header SHOULD be set 'NoACK', meaning no further response for a query response message is expected. If the ACK flag is set other values, the meaning of the flag will then be ignored. The Sequence Number in the header Doria (co-editor) Expires March 26, 2005 [Page 29] Internet-Draft ForCES September 2004 SHOULD keep the same as that of the query message to be responded, so that the query message sender can keep track of the responses. Message body: The message body for a query response message consists of (at least) one or more than one TLVs that describe query results to individual queried entries. According to the queried information being FE (coarse layer) information or LFB information as described above, the response message body TLV has different data format as below: To respond to the query for FE (coarse layer) information, the response TLV has following data format: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='FEQueryResponse' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Response to Query Entry #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Response to Query Entry #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Response to Query Entry #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 13 To respond to the query for LFB information, the response TLV has data format as: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='LFBQueryResponse' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type ID | Instance ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Response to Query Entry #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Response to Query Entry #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Response to Query Entry #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 14 Doria (co-editor) Expires March 26, 2005 [Page 30] Internet-Draft ForCES September 2004 Response to Query Entry: This is a TLV that describes the response to the queried entry, as follows: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Description of Response to Query Entry ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 15 Type: [Under discussion and TBD] Description of Response to Query Entry: This field presents the detailed description about the query result of an entry. The encoding of the description is based on the ForCES FE model if the entry is defined by FE model, or based on vendor specifications if the entry is defined by vendors. Note that the encoding is responsible for the 32 bits alignment of the description field. When the query is successful, the response result will include the information being queried. When the query is failed, the response result will usually include the information about the reason for the failure. 6.3 Configuration Messages Editorial Note: If the approach of using an FE Protocol & FE Object is fully adopted and no other reason for having FE TLVs is identified, then no distinction will be further made in the TLV types between FE* and LFB*. As a result, the Type ID and Instance ID in the TLV will also be used to identify the FE Protocol Object, with specific values as mentioned in Section 3.3.2 The ForCES Configuration messages are used by the CEs to configure the FEs in a ForCES NE and report the results back to the CE. 6.3.1 Config Message This message is sent by the CE to the FE to configure FE or LFB attributes. This message is also used by the CE to subscribe/ unsubscribe to FE, LFB events. Doria (co-editor) Expires March 26, 2005 [Page 31] Internet-Draft ForCES September 2004 Message transfer direction: CE to FE Message Header: The Message Type in the header is set MessageType= 'Config'. The ACK flag in the header is can be used by the CE to turn off any response from the FE. The default behavior is to turn on the ACK to get the config response from the FE. Message body: The Config message body consists of one or more TLVs, the format of a single (LFB) TLV is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = LFB Operations | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved/ Event Type | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type ID | Instance ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Config data | . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 16 The format for a FE attributes TLV is as follows 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type = FE operations | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |Reserved/ Event Type | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Config data | . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 17 Type (16 bits): This is a combination of FE, LFB attributes with operations. The operations include, ADD, DEL, UPDATE/REPLACE, DEL ALL, SUBSCRIBE, UNSUBSCRIBE, CANCEL. The following Types are defined for this TLV: * FE Add, Del, Update, Del All, Cancel, Subscribe, Unsubscribe events * LFB Add, Del, Update, Del All, Cancel, Subscribe, Unsubscribe events Doria (co-editor) Expires March 26, 2005 [Page 32] Internet-Draft ForCES September 2004 For any of the FE attribute Types, the Type, and Instance ID fields are not present in this TLV. Length (16 bits): Length of the TLV including the T and L fields, in bytes. Flags (16 bits): These can be used to indicate Atomicity, Batching, etc. Type ID (16 bits): This field uniquely recognizes the LFB type. Instance ID (16 bits): This field uniquely identifies the LFB instance. Config Data (variable length): This will carry LFB specific data (single or Array LFB specific entries). The config data might itself be of the form of a TLV. Event Type (16 bits): For SUBSCRIBE, UNSUBSCRIBE Events Type TLVs, an Event Type field will define the Events of interest. Examples of Event Type include, All Events, FE Events, LFB Events, Packets, Packet Mirroring. 6.3.2 Config Response Message This message is sent by the FE to the CE in response to the Config message. It indicates whether the Config was successful or not on the FE and also gives a detailed response regarding the configuration result of each attribute. Message transfer direction: FE to CE Message Header: The Message Type in the header is set MessageType= 'Config Response'. The ACK flag in the header is always ignored, because the config response message will never expect to get any more response from the message receiver (CE). Message body: The Config response message body consists of one or more TLVs, the format of a single TLV is as follows: Doria (co-editor) Expires March 26, 2005 [Page 33] Internet-Draft ForCES September 2004 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = LFB Operations | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Overall Result | reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type ID | Instance ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Config Result | . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The format for a FE response TLV is as follows 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type = FE operations | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Overall Result | reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Config Result | . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 18 Type (16 bits): Same as that for Config message. For any of the FE attribute Types, the Type, and Instance ID fields are not present in this TLV. Length (16 bits): Length of the TLV including the T and L fields, in bytes. Overall Result (16 bits): This indicates the overall result of the config message, whether it was successful or it failed. Type ID (16 bits): This field uniquely recognizes the LFB type. Instance ID (16 bits): This field uniquely identifies the LFB instance. Config Result (variable length): This will carry LFB specific results (single or Array LFB specific result entries). The config result might itself be of the form of a TLV. 6.4 Event Notification and Response Messages Doria (co-editor) Expires March 26, 2005 [Page 34] Internet-Draft ForCES September 2004 Editorial Note: If the approach of using an FE Protocol & FE Object is fully adopted and no other reason for having FE TLVs is identified, then no distinction will be further made in the TLV types between FE* and LFB*. As a result, the Type ID and Instance ID in the TLV will also be used to identify the FE Protocol Object, with specific values as mentioned in Section 3.3.2 The Event Notification Message is used for one ForCES element to asynchronously notify one or more other ForCES elements in the same ForCES NE on just happened events in it. The Event Notification Response Message is used for the receiver of the Event Notification Message to acknowledge the reception of the event notification. Events in current ForCES protocol can be categorized into following three types: o Events happened in CE o Events happened in FE at the FE coarse layer (in FE protocol object and FE object) o Events happened in LFB inside an FE Events can also be categorized into two classes according to whether they need subscription or not. An event in one ForCES element that needs to be subscribed will send notifications to other ForCES elements only when the other elements have subscribed to the element for the event notification. How to subscribe/unsubscribe for an event is described in the Configure Message in Section 6.3. An event that needs not to be subscribed will always send notifications to other ForCES elements when the event happens. An event definition made by ForCES FE model or by vendors will state if the event needs subscription or not. Editorial Note: There is an argument that it is preferable to have all events subscribable. 6.4.1 Event Notification Message As usual, an Event Notification Message is composed of a common header and a message body that consists of one or more TLV data format. Detailed description of the message is as below. Message Transfer Direction: FE to CE, or CE to FE Message Header: The Message Type in the message header is set to MessageType = 'EventNotification'. The ACK flag in the header can be set as: ACK flag ='NoACK'|'SuccessAck'|'UnsuccessACK'|'ACKAll'. Doria (co-editor) Expires March 26, 2005 [Page 35] Internet-Draft ForCES September 2004 Note that the 'Success' here only means the receiver of the message has successfully received the message. Message Body: The message body for an event notification message consists of (at least) one or more than one TLVs that describe the notified events. According to the different event types described above, the message body TLV has different data format, which is defined as follows: For events generated by CE or by FE coarse layer, the TLV has following data format: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='FEEventNotification' | Length | | or 'CEEventNotification' | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Event #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Event #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Event #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ For events generated by LFB in FE, the TLV has data format as: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='LFBEventNotification' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type ID | Instance ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Event #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Event #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Event #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 19 Doria (co-editor) Expires March 26, 2005 [Page 36] Internet-Draft ForCES September 2004 Event: This is a TLV that describes the event to be notified, as follows: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Description of Event ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 20 Type: [TBD] Description of Event: This field will make a detailed description of the happened event. The encoding of the description is based on the ForCES FE model if the event is defined by FE model, or based on vendor specifications if the event is defined by vendors. Note that the encoding is responsible for the 32 bits alignment of the description field.The description will usually include the name (or the name ID) of the event. It may also include some other information like parameters that are related to the happened event. 6.4.2 Event Notification Response Message After sending out an Event Notification Message, the sender may be interested in ensuring that the message has been received by receivers, especially when the sender thinks the event notification is vital for system management. An Event Notification Response Message is used for this purpose. The ACK flag in the Event Notification Message header are used to signal if such acknowledge is requested or not by the sender. Detailed description of the message is as below: Message Transfer Direction: From FE to CE or from CE to FE, just inverse to the direction of the Event Notification Message that it responses. Message Header: The Message Type in the header is set MessageType= 'EventNotificationResponse'. The ACK flag in the header SHOULD be set 'NoACK', meaning no further response for the message is expected. If the ACK flag is set other values, the meaning of the flag will then be ignored. The Sequence Number in the header SHOULD keep the same as that of the message to be responded, so that the event notificatin message sender can keep track of the responses. Doria (co-editor) Expires March 26, 2005 [Page 37] Internet-Draft ForCES September 2004 This contains a TLV that describe the response result as below: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='ResponseResult' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Result | Reason | Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 21 Result: This describes the reception result of the event notification message as below: Result Value Meaning 'Success' The event has been successfully received. 'Unsuccess' The event has not been successfully received. Reason, Code: This describes the reason and possible error code when the message is not successfully received. Note that only the failure at the protocol layer rather than the transport layer can be allocated here, that is, if even the header part of the message to be responded can not be correctly received, the response to the message will not be able to be generated by the receiver. Editorial Note: There is a debate on whether the Event Notification Response Message is necessary or not. The pro for it is some event notification senders may be interested in knowing if receivers have had success/unsuccess receptions of the events or not. An alternative to generate such response is for the protocol to define a universal ACK message so that it can act as responses for any types of messages as well as the event notification messages, when the message senders are interested in knowing whether the messages have been successfully received or not (different from the responses for the message processing results). 6.5 Packet Redirect Message Packet redirect message is used to transfer data packets between CE and FE. Usually these data packets are IP packets, though they may sometimes associated with some metadata generated by other LFBs in the model, or they may occasionally be other protocol packets, which usually happen when CE and FE are jointly implementing some Doria (co-editor) Expires March 26, 2005 [Page 38] Internet-Draft ForCES September 2004 high-touch operations. Packets redirected from FE to CE are the data packets that come from forwarding plane, and usually are the data packets that need high-touch operations in CE. Packets redirected from CE to FE are the data packets that are generated by CE and are decided by CE to put into forwarding plane in FE. By properly configuring related LFBs in FE, a packet can also be mirrored to CE instead of purely redirected to CE, i.e., the packet is duplicated and one is redirected to CE and the other continues its way in the LFB topology. Editorial Note: There are also discussions on how LFBs in FE model that are related to packet redirect operations should be defined. Although it is out of the scope of forces protocol, how to define the LFBs affect the Packet Redirect Message described here. Because currently it is still in progress in FE model on how to define such LFBs, we try to post some thoughts on this here for discussion. They will be removed later along with the progress of the FE model work. Thought 1: To define LFBs called 'RedirectSink' and 'RedirectTap' for packet redirect. An LFB in FE called 'RedirectSink' is responsible to collect data packets that need to be redirected to CE. From the perspective of the FE LFB topology, the 'RedirectSink' LFB is an LFB with only one input port and without any output port, and the input port can then be connected to any other LFB in FE model by means of a datapath in the forwarding plane. From the perspective of the ForCES protocol layer, the 'RedirectSink' LFB will generate the Packet Redirect Messages when it receives data packets from forwarding plane. An LFB in FE called 'RedirectTap' is responsible to receive data packets that are redirected from CE. From the perspective of the FE LFB topology, the 'RedirectTap' LFB is an LFB with only one output port and without any input port, and the output port can then be connected to any other LFB in FE model by means of a datapath in the forwarding plane. From the perspective of ForCES protocol layer, the 'RedirectTap' LFB can receive the Packet Redirect Messages from CE, and un-encapsulate the data packets from the message and put them to datapaths in the forwarding plane. Actually the 'RecirectTap' LFB acts more like a transcoder that transfers the Doria (co-editor) Expires March 26, 2005 [Page 39] Internet-Draft ForCES September 2004 ForCES protocol messages to normal data packets in IP forwarding plane. As a result, if we need to have redirected packets connected to some LFB (say a Scheduler) in FE model, we only need to connect the 'RedirectTap LFB to the Scheduler LFB directly via a datapath as follows: +-----------------+ +-----------+ | RedirectTap LFB |------>| | +-----------------+ | | | Scheduler | From other LFB ---->| LFB | | | +-----------+ Figure 23 By use of several 'RedirectSink' LFBs and several 'RedirectTap' LFBs that connect to several different datapaths in FE forwarding plane, multiple packet redirect paths between CE and FE can be constructed. Thought 2: There might be another way a packet could be redirected: directly by a forwarding path, e.g., by FPGA/ASIC/NP microcode. In such a case we do not need to put in a lot of smartness. Probably a link layer or even network level header is enough. The receiver demuxes it only based on some protocol type in the link layer or network transport layer. The pros for this appraoch is it may provide a fast and cost-effective path for packet redirect. The cons for this is it may more or less confuses the Fp reference point definition in ForCES framework. We describe the Packet Redirect Message data format in details as follows: Message Direction: CE to FE or FE to CE Message Header: The Message Type in the header is set to MessageType= 'PacketRedirect'. The ACK flags in the header SHOULD be set 'NoACK', meaning no response is expected by this message. If the ACK flag is set other values, the meanings will be ignored. Doria (co-editor) Expires March 26, 2005 [Page 40] Internet-Draft ForCES September 2004 Message Body: Consists of one or more TLVs, with every TLV having the following data format: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type='RedirectData' | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type ID | Instance ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Redirected Data #1 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Redirected Data #2 ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Redirected Data #N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 24 Type ID: There are only two possible LFB types here, the 'RedirectSink' LFB or the 'RedirectTap' LFB. If the message is from FE to CE, the LFB type should be 'RedirectSink'. If the message is from CE to FE, the LFB type should be 'RedirectTap'. Instance ID: Instance ID for the 'RedirectSink' LFB or 'RedirectTap' LFB. Redirected Data: This is a TLV describing one packet of data to be directed via the specified LFB above. The order of the data number is also the order the data packet arrives the redirector LFB, that is, the Redirected Data #1 should arrive earlier than the Redirected Data #2 in this redirector LFB. The TLV format is as follows: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Description of Redirected Data ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 25 Type: [TBD] Description of Redirected Data: This field will make a detailed description of the data to be redirected as well as the data itself. The encoding of the description is based on the ForCES FE model if the redirector LFB Doria (co-editor) Expires March 26, 2005 [Page 41] Internet-Draft ForCES September 2004 is defined by FE model, or based on vendor specifications if the redirector LFB is defined by vendors. The description will usually include the name (or the name ID) of the redirected packet data (such as 'IPv4 Packet', 'IPv6 Packet'), and the packet data itself. It may also include some metadata (metadata name (or name ID) and its value)associated with the redirected data packet. 6.6 State Maintenance Messages The State Maintenance Messages are used by the CE to change state related information on the FE. Editorial Note: As work progresses in defining the FE model, it may happen that the messages defined here (State Maintenance messages) become redundant. For instance, FE activation/deactivation may be performed by configuring the FE State attribute in the FE Object. Such inconsistencies will be resolved 6.6.1 State Maintenance Message This message is sent by the CE to change the state of the FE, e.g. to Activate/Deactivate the FE, shutdown the FE, etc. Message transfer direction: CE to FE Message Header: The Message Type in the header is set MessageType= 'State Maintenance'. The ACK flag in the header is can be used by the CE to turn off any response from the FE. The default behavior is to turn on the ACK to get the state maintenance response from the FE. Message body: The state maintenance message body consists of one or more TLVs, the format of a single TLV is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type= FE De/Activate,Shutdown | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TBD | . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 26 Doria (co-editor) Expires March 26, 2005 [Page 42] Internet-Draft ForCES September 2004 Type (16 bits): These can be FE Activate, FE Deactivate, Shutdown FE. Activating an FE means asking it to forward packets, Deactivate means the FE stops forwarding packets. The default state of the FE is deactivated till it explicitly activated by the CE. Editorial Note: These Types may be extended to include LFB Activate/Deactivate as well. However this is still being discussed. Length (16 bits): Length of the TLV including the T and L fields, in bytes. FE State object (variable): This is an TLV which can be defined and extended to represent FE specific state information. It will contain information such as the HA Mode, Primary CE ID, etc for the FE. 6.6.2 State Maintenance Response Message This message is sent by the FE to the CE in response to the state m. message. It indicates whether the state m. was successful or not on the FE. Message transfer direction: FE to CE Message Header: The Message Type in the header is set MessageType= 'state m. Response'. The ACK flag in the header is always ignored, because the state m. response message will never expect to get any more response from the message receiver (CE). Message body: The state maintenance response message body consists of one or more TLVs, the format of a single TLV is as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type= S.M.Result | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Result | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 27 Type (16 bits): Same as that for state maintenance message. Length (16 bits): Length of the TLV including the T and L fields, in bytes. Doria (co-editor) Expires March 26, 2005 [Page 43] Internet-Draft ForCES September 2004 Overall Result (16 bits): This indicates the overall result of the state maintenance message, whether it was successful or it failed. 6.7 Heartbeat Message The Heartbeat (HB) Message is used for one ForCES element (FE or CE) to asynchronously notify one or more other ForCES elements in the same ForCES NE on its liveness. A Heartbeat Message is sent by a ForCES element periodically. The time interval to send the message is set by the Association Setup Message described in Section 6.1.1. A little different from other protocol messages, a Heartbeat messge is only composed of a common header, withe the message body left empty. Detailed description of the message is as below. Message Transfer Direction: FE to CE, or CE to FE Message Header: The Message Type in the message header is set to MessageType = 'Heartbeat'. The ACK flag in the header SHOULD be set to 'NoACK', meaning no response from receiver(s) is expected by the message sender. Other values of the ACK flag will always be ignored by the message receiver. Message Body: The message body is empty for the Heartbeat Message, so as to grasp more efficiency for message transportation and processing. Doria (co-editor) Expires March 26, 2005 [Page 44] Internet-Draft ForCES September 2004 7. Protocol Scenarios 7.1 Association Setup state The associations among CEs and FEs are initiated via Association setup message from the FE. If a setup request is granted by the CE, a successful setup response message is sent to the FE. If CEs and FEs are operating in an insecure environment then the security association have to be established between them before any association messages can be exchanged. The TML will take care of establishing any security associations. This is followed by capability query, topology query. When the FE is ready to start forwarding data traffic, it sends a FE UP Event message to the CE. The CE responds with a FE ACTIVATE State Maintenance message to ask the FE to go active and start forwarding data traffic. At this point the association establishment is complete. These sequences of messages are illustrated in the Figure below. Doria (co-editor) Expires March 26, 2005 [Page 45] Internet-Draft ForCES September 2004 FE PL CE PL | | | Asso Setup Req | |---------------------->| | | | Asso Setup Resp | |<----------------------| | | | Capability Query | |<----------------------| | | | Query Resp | |---------------------->| | | | Topo Query | |<----------------------| | | | Topo Query Resp | |---------------------->| | | | FE UP Event | |---------------------->| | | | S.M. Activate FE | |<----------------------| | | Figure 28: Message exchange between CE and FE to establish an NE association On successful completion of this state, the FE joins the NE and is moved to the Established State or Steady state. 7.2 Association Established state or Steady State In this state the FE is continously updated or queried. The FE may also send asynchronous event notifications to the CE or synchronous heartbeat messages. This continues until a termination (or deactivation) is initiated by either the CE or FE. Figure below helps illustrate this state. FE PL CE PL | | Doria (co-editor) Expires March 26, 2005 [Page 46] Internet-Draft ForCES September 2004 | Heart Beat | |<----------------------| | | | Heart Beat | |---------------------->| | | | Config-Subscribe Ev | |<----------------------| | | | Config Resp | |---------------------->| | | | Config-Add LFB Attr | |<----------------------| | | | Config Resp | |---------------------->| | | | Query LFB Stats | |<----------------------| | | | Query Resp | |---------------------->| | | | FE Event Report | |---------------------->| | | | Config-Del LFB Attr | |<----------------------| | | | Config Resp | |---------------------->| | | | Packet Redirect | |---------------------->| | | | Heart Beat | |<----------------------| . . . . | | | S.M. FE Deactivate | |<----------------------| | | Figure 29: Message exchange between CE and FE during steady-state communication Doria (co-editor) Expires March 26, 2005 [Page 47] Internet-Draft ForCES September 2004 Note that the sequence of messages shown in the figure serve only as examples and the messages exchange sequences could be different from what is shown in the figure. Also, note that the protocol scenarios described in this section do not include all the different message exchanges which would take place during failover. That is described in the HA section 8. Doria (co-editor) Expires March 26, 2005 [Page 48] Internet-Draft ForCES September 2004 8. High Availability Support Editorial Note: This section currently focuses only on CE-CE redundancy. We need to further discuss the FE-FE view. We also need to discuss Multiple Primary CEs. The ForCES protocol provides mechanisms for CE redundancy and failover, in order to support High Availability. There can be multiple redundant CEs and FEs in a ForCES NE. However, at any time there can only be one Primary CE controlling the FEs and there can be multiple secondary CEs. The FE and the CE PL are aware of the primary and secondary CEs. This information (primary, secondary CEs) is configured in the FE, CE PLs during pre-association by FEM, CEM respectively. Only the primary CE sends Control messages to the FEs. The FE may send its event reports, redirection packets to only the Primary CE (Report Primary Mode) or it may send these to both primary and secondary CEs (Report All Mode). (The latter helps with keeping state between CEs synchronized, although it does not guarantee synchronization.) This behavior or HA Modes are configured during Association setup phase but can be changed by the CE anytime during protocol operation. A CE-to-CE synchronization protocol will be needed in most cases to support fast failover, however this will not be defined by the ForCES protocol. During a communication failure between the FE and CE (which is caused due to CE or link reasons, i.e. not FE related), the TML on the FE will trigger the FE PL regarding this failure. The FE PL will send a message (Event Report) to the Secondary CEs to indicate this failure or the CE PL will detect this and one of the Secondary CEs takes over as the primary CE for the FE. An explicit message (State Maintenance Move command) from the primary CE, can also be used to change the Primary CE for an FE during normal protocol operation. In order to support fast failover, the FE will establish association (setup msg) as well as complete the capability exchange with the Primary as well as all the Secondary CEs (in all scenarios/modes). Doria (co-editor) Expires March 26, 2005 [Page 49] Internet-Draft ForCES September 2004 These two scenarios (Report All, Report Primary) have been illustrated in the figures below. FE CE Primary CE Secondary | | | | Asso Estb,Caps exchg | | 1 |<--------------------->| | | | | | Asso Estb,Caps|exchange | 2 |<----------------------|------------------->| | | | | All msgs | | 3 |<--------------------->| | | | | | packet redirection,|events, HBs | 4 |-----------------------|------------------->| | | | | FAILURE | | | | Event Report (pri CE down) | 5 |------------------------------------------->| | | | All Msgs | 6 |------------------------------------------->| Figure 30: CE Failover for Report All mode Doria (co-editor) Expires March 26, 2005 [Page 50] Internet-Draft ForCES September 2004 FE CE Primary CE Secondary | | | | Asso Estb,Caps exchg | | 1 |<--------------------->| | | | | | Asso Estb,Caps|exchange | 2 |<----------------------|------------------->| | | | | All msgs | | 3 |<--------------------->| | | | | | (HeartBeats| only) | 4 |-----------------------|------------------->| | | | | FAILURE | | | | Event Report (pri CE down) | 5 |------------------------------------------->| | | | All Msgs | 6 |------------------------------------------->| Figure 31: CE Failover for Report Primary Mode 8.1 Responsibilities for HA TML level - Transport level: 1. The TML controls logical connection availability and failover. 2. The TML also controls peer HA managements. At this level, control of all lower layers example transport level (such as IP addresses, MAC addresses etc) and associated links going down are the role of the TML. PL Level: All the other functionality including configuring the HA behavior during setup, the CEIDs are used to identify primary, secondary CEs, protocol Messages used to report CE failure (Event Report), Heartbeat messages used to detect association failure, messages to change primary CE (state maintenance move), and other HA related operations described before are the PL responsibility. To put the two together, if a path to a primary CE is down, the TML would take care of failing over to a backup path, if one is available. If the CE is totally unreachable then the PL would be informed and it will take the appropriate actions described before. Doria (co-editor) Expires March 26, 2005 [Page 51] Internet-Draft ForCES September 2004 9. Security Considerations ForCES architecture identified several [Reference Arch] levels of security. ForCES PL uses security services provided by the ForCES TML layer. TML layer provides security services such as endpoint authentication service, message authentication service and confidentiality service. Endpoint authentication service is invoked at the time of pre-association connection establishment phase and message authentication is performed whenever FE or CE receives a packet from its peer. Following are the general security mechanism that needs to be in place for ForCES PL layer. o Security mechanism are session controlled that is once the security is turned ON depending upon the chosen security level (No Security, Authentication only, Confidentiality), it will be in effect for the entire duration of the session. o Operator should configure the same security policies for both primary and backup FE's and CE's (if available). This will ensure uniform operations, and to avoid unnecessary complexity in policy configuration. o ForCES PL endpoints SHOULD pre-established connections with both primary and backup CE's. This will reduce the security messages and enable rapid switchover operations for HA. 9.1 No Security When No security is chosen for ForCES protocol communication, both endpoint authentication and message authentication service needs be performed by ForCES PL layer. Both these mechanism are weak and does not involve cryptographic operation. Operator can choose "No security" level when the ForCES protocol endpoints are within an single box. In order to have interoperable and uniform implementation across various security levels, each CE and FE endpoint MUST implement this level. The operations that are being performed for "No security" level is required even if lower TML security services are being used. 9.1.1 Endpoint Authentication Each CE and FE PL layer maintain set of associations list as part of configuration. This is done via CEM and FEM interfaces. FE MUST connect to only those CE's that are configured via FEM similarly CE should accept the connection and establish associations for the FE's which are configured via CEM. CE should validate the FE identifier before accepting the connection during the pre-association phase. Doria (co-editor) Expires March 26, 2005 [Page 52] Internet-Draft ForCES September 2004 9.1.2 Message authentication When CE or FE generates initiates a message, the receiving endpoint MUST validate the initiator of the message by checking the common header CE or FE identifiers. This will ensure proper protocol functioning. We recommend this extra step processing even if the underlying TLM layer security services. 9.2 ForCES PL and TML security service This section is applicable if operator wishes to use the TML security services. ForCES TML layer MUST support one or more security service such as endpoint authentication service, message authentication service, confidentiality service as part of TML security layer functions. It is the responsibility of the operator to select appropriate security service and configure security policies accordingly. The details of such configuration is outside the scope of ForCES PL and is depending upon the type of transport protocol, nature of connection. All these configurations should be done prior to starting the CE and FE. When certificates-based authentication is being used at TML layer, the certificate can use ForCES specific naming structure as certificate names and accordingly the security policies can be configured at CE and FE. 9.2.1 Endpoint authentication service When TML security services are enabled. ForCES TML layer performs endpoint authentication. Security association is established between CE and FE and is transparent to the ForCES PL layer. We recommend that FE after establishing the connection with the primary CE, should establish the security association with the backup CE (if available). During the switchover operation CE's security state associated with each SA's are not transferred. SA between primary CE and FE and backup CE and FE are treated as two separate SA's. 9.2.2 Message authentication service This is TML specific operation and is transparent to ForCES PL layer[TML document]. Doria (co-editor) Expires March 26, 2005 [Page 53] Internet-Draft ForCES September 2004 9.2.3 Confidentiality service This is TML specific operation and is transparent to ForCES PL layer.[TML document] Doria (co-editor) Expires March 26, 2005 [Page 54] Internet-Draft ForCES September 2004 10. References 10.1 Normative References [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, June 1999. [RFC3654] Khosravi, H. and T. Anderson, "Requirements for Separation of IP Control and Forwarding", RFC 3654, November 2003. [RFC3746] Yang, L., Dantu, R., Anderson, T. and R. Gopal, "Forwarding and Control Element Separation (ForCES) Framework", RFC 3746, April 2004. 10.2 Informational References [FE-MODEL] Yang, L., "ForCES Forwarding Element Model", Feb. 2004. Author's Address Avri Doria ETRI Phone: +1 401 663 5024 EMail: avri@acm.org Doria (co-editor) Expires March 26, 2005 [Page 55] Internet-Draft ForCES September 2004 Appendix A. Individual Authors/Editors Contact The participants in the ForCES Protocol Team: +--------------------+------------------------------+ | Author | Email | +--------------------+------------------------------+ | Ligang Dong | donglg@mail.hzic.edu.cn | | | | | Avri Doria | avri@acm.org | | | | | Ram Gopal | ram.gopal@nokia.com | | | | | Robert Haas | rha@zurich.ibm.com | | | | | Jamal Hadi Salim | hadi@znyx.com | | | | | Hormuzd M Khosravi | hormuzd.m.khosravi@intel.com | | | | | Weiming Wang | wmwang@mail.hzic.edu.cn | +--------------------+------------------------------+ Table 1 Doria (co-editor) Expires March 26, 2005 [Page 56] Internet-Draft ForCES September 2004 Appendix B. IANA considerations tbd Doria (co-editor) Expires March 26, 2005 [Page 57] Internet-Draft ForCES September 2004 Appendix C. Implementation Notes C.1 TML considerations Having separated the PL from the TML layer, it became clear that the TML layer needed to understand the desires of the PL layer to service it. Example: How does the TML layer map prioritization or reliability needs of a PL message? To see the challenge involved, assume that all of the FE TML, FE PL, CE TML and CE PL are implemented by different authors probably belonging to different organizations. Three implementation alternatives were discussed. As an example, consider a TML which defines that PL messages needing reliability get sent over a TCP connection; then TML-PL interfaces are: o PL to call a special API: example send_reliable(msg) which is translated by the TML to mean send via TCP. o PL to call a generic API: example send(msg) with explicit msg flags turned to say "reliability needed" and the TML translates this to mean send via TCP. o PL sends the Forces Messages such a message is inferred to mean send via TCP by the TML. in #1 and #2 the msg includes a ForCES msg with metadata flags which are consumed by the TML layer. #3 is a technique that will be referred as inference-by-TML technique. It simplifies the standardization effort since both #1 and #2 will require standardization of an API. Two ideas discussed for TML inference of PL messages are: 1. Looking at the flags in the header. 2. Looking at the message type. #1 and #2 can still be used if a single organization implements both (PL and TML) layers. It is also reasonable that one organization implements the TML and provides an abstraction to another organization to implement a PL layer on. C.1.1 PL Flag inference by TML 1. Reliability This could be "signalled" from the PL to the TML via the ACK flag. The message type as well could be used to indicate this. 2. No reliability Could be signalled via missing ACK flag. The message type as well could be used to indicate this. 3. Priorities A remapping to be defined via the FEM or the CEM interface depending on the number of TML priorities available. Doria (co-editor) Expires March 26, 2005 [Page 58] Internet-Draft ForCES September 2004 4. Addressing This is TML specific. For example a TML that is capable of multicast transport may map a multicast PL ID to a multicast transport address. 5. Event notifications The TML must be able to send to the PL notifications. 1. The TML should be able to send Transport level congestion notifications to the PL. 2. Link events for HA purposes if configuration requires it 3. Events that will trigger PL layer events from the TML. As an example, an HA event at the TML layer like a failure of CE detected at TML on the FE may belong to this. In this case, a PL event msg will be triggered and sent to CE. 4. Events that are intrinsic to the same CE or FE a TML is located. These will not trigger any PL msg, instead, they just act as notification to PL core (FE object). The congestion event generated at the transmission source side may belong to this, because it usually only needs to tell the upper PL at the same side rather than the opposite side that congestion has happened along the path. E.g., a congestion event at CE TML layer only need to tell CE PL of this, rather than the opposite FE via a PL msg. C.1.2 Message type inference to Mapping at the TML In this case one would define the desires of the different message types and what they expect from the TML. For example: 1. Association Setup, Teardown, Config, Query the PL will expect the following services from TML: Reliable delivery and highest prioritization. 2. Packet Redirect, HB Message Types, and Event Reports the PL will require the following services from TML: Medium Prioritization, and notifications when excessive losses are reached. Doria (co-editor) Expires March 26, 2005 [Page 59] Internet-Draft ForCES September 2004 Intellectual Property Statement The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Disclaimer of Validity This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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. Copyright Statement Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society. Doria (co-editor) Expires March 26, 2005 [Page 60]