RFC 3654

Requirements for Separation of IP Control and Forwarding

๐Ÿ“… published December 2003, from ietf

RFC 3654: Requirements for Separation of IP Control and Forwarding ๐Ÿฆ‹

bestie, this is the RFC that asks: what if a router's brain and its muscles were separate? ๐Ÿง ๐Ÿ’ช Here's the title block so you know who wrote it:

  • Authors: H. Khosravi, Ed. and T. Anderson, Ed., both from Intel ๐Ÿ’œ
  • Category: Informational, so this is info, not a binding standard ๐ŸŽ€
  • Date: November 2003 ๐Ÿ“
  • Obsoletes and updates: the header doesn't list any RFCs it obsoletes or updates โœจ

Status of this Memo โœจ

okay so this memo is just giving info to the internet community ๐Ÿ“š It does not set any kind of Internet standard. Distribution is totally unlimited, so share it with everyone ๐Ÿ’…

Copyright (C) The Internet Society (2003). All Rights Reserved.

Abstract ๐Ÿ”ฎ

this doc introduces ForCES (Forwarding and Control Element Separation) and gives you a set of terms to talk about it ๐Ÿงš It also lays out the architecture, modeling, and protocol requirements for logically splitting a networking device's control plane from its data forwarding plane. This works for IP devices (IPv4, IPv6, and so on) ๐ŸŒˆ

Table of Contents ๐Ÿ“‹

1.  Introduction. . . . . . . . . . . . . . . . . . . . . . . . .   2
2.  Definitions . . . . . . . . . . . . . . . . . . . . . . . . .   2
3.  Architecture. . . . . . . . . . . . . . . . . . . . . . . . .   4
4.  Architectural Requirements. . . . . . . . . . . . . . . . . .   5
5.  FE Model Requirements . . . . . . . . . . . . . . . . . . . .   7
    5.1.  Types of Logical Functions. . . . . . . . . . . . . . .   8
    5.2.  Variations of Logical Functions . . . . . . . . . . . .   8
    5.3.  Ordering of Logical Functions . . . . . . . . . . . . .   8
    5.4.  Flexibility . . . . . . . . . . . . . . . . . . . . . .   8
    5.5   Minimal Set of Logical Functions. . . . . . . . . . . .   9
6.  ForCES Protocol Requirements. . . . . . . . . . . . . . . . .  10
7.  References. . . . . . . . . . . . . . . . . . . . . . . . . .  14
    7.1.  Normative References. . . . . . . . . . . . . . . . . .  14
    7.2.  Informative References. . . . . . . . . . . . . . . . .  15
8.  Security Considerations . . . . . . . . . . . . . . . . . . .  15
9.  Authors' Addresses & Acknowledgments. . . . . . . . . . . . .  15
10. Editors' Contact Information. . . . . . . . . . . . . . . . .  17
11. Full Copyright Statement. . . . . . . . . . . . . . . . . . .  18

1. Introduction ๐ŸŽ€

okay so an IP network element is actually a bunch of logically separate parts that work together to do one job, like routing or IP switching ๐Ÿ”€ but from the outside it just looks like one normal box ๐Ÿ“ฆ There are two main kinds of parts: control-plane parts and forwarding-plane parts ๐Ÿง ๐Ÿ’ช Forwarding-plane parts are usually ASICs, network processors, or general-purpose processor devices, and they handle all the data path stuff ๐ŸŽ๏ธ Control-plane parts are usually general-purpose processors that handle things like routing or signaling protocols ๐Ÿ“ก

Here's the tea โ˜• If you have a standard set of ways for these parts to connect, you get better scalability, and the control and forwarding planes can evolve on their own. That means faster innovation for everyone ๐Ÿš€โœจ

To make this concrete, let's look at a router ๐Ÿ–ฅ๏ธ A router has two main pieces that are mostly independent of each other. At the bottom is the forwarding path, which lives in the data-forwarding plane and handles per-packet processing and forwarding ๐Ÿ“ฆ Above that is the network operating system, which runs the control plane ๐Ÿ‘‘ For a router or switch, that OS runs routing, signaling, and control protocols (like RIP, OSPF, and RSVP) and decides how forwarding behaves by changing forwarding tables, per-flow QoS tables, and access control lists ๐Ÿ’… Usually all of this gets bundled into one single unit as far as the outside world is concerned ๐ŸŽ

2. Definitions ๐Ÿ“–

okay bestie, let's get the vocab down. These are the terms the rest of the doc relies on ๐Ÿซถ

  • Addressable Entity (AE) - a physical device you can directly address, given some interconnect technology ๐Ÿ“ On IP networks, it's a device you talk to using an IP address. On a switch fabric, it's a device you talk to using a switch fabric port number ๐Ÿ”Œ
  • Physical Forwarding Element (PFE) - an AE that has the hardware doing per-packet processing and handling โšก That hardware could include (but isn't limited to) network processors, ASICs, line cards with multiple chips, or a standalone box with general-purpose processors ๐Ÿงฉ
  • Physical Control Element (PCE) - an AE that has the hardware doing control functionality ๐Ÿง  That hardware usually includes a general-purpose processor ๐Ÿ’ป
  • Forwarding Element (FE) - a logical entity that implements the ForCES protocol ๐Ÿฆ‹ FEs use the underlying hardware to do per-packet processing and handling, as directed and controlled by a CE over the ForCES protocol ๐ŸŽฏ An FE might be a single blade (or PFE), a partition of a PFE, or multiple PFEs ๐Ÿฐ
  • Control Element (CE) - a logical entity that implements the ForCES protocol and uses it to tell one or more FEs how to process packets ๐Ÿ‘‘ CEs handle stuff like running control and signaling protocols ๐Ÿง  A CE might be made of PCE partitions or whole PCEs ๐Ÿงฉ
  • Pre-association Phase - the stretch of time when an FE Manager (see below) and a CE Manager (see below) are figuring out which FE and CE should belong to the same network element ๐Ÿค Any partitioning of PFEs and PCEs happens during this phase ๐Ÿ•
  • Post-association Phase - the stretch of time when an FE does know which CE is controlling it (and vice versa), including the time they spend setting up communication with each other ๐Ÿ“ž
  • ForCES Protocol - there might be several protocols in the overall ForCES architecture, but when this doc says "ForCES protocol," it only means the ForCES post-association phase protocol (see below) ๐ŸŽฏ
  • ForCES Post-Association Phase Protocol - the protocol used for communication between CEs and FEs after association ๐Ÿ’ฌ It does not cover CE-to-CE talk, FE-to-FE talk, or talk between FE and CE managers ๐Ÿšซ It's a master-slave protocol where FEs are the slaves and CEs are the masters ๐Ÿ‘‘๐Ÿซ  It covers both managing the communication channel (like connection setup and heartbeats) and the control messages themselves ๐Ÿ’“ It could be one protocol or several working together ๐Ÿงถ
  • FE Model - a model that describes the logical processing functions of an FE ๐Ÿ“
  • FE Manager - a logical entity that works in the pre-association phase and decides which CE(s) an FE should talk to ๐Ÿ•ต๏ธโ€โ™€๏ธ This is called CE discovery, and it may involve the FE Manager learning what the available CEs can do ๐Ÿ” An FE Manager can use anything from static configuration to a pre-association phase protocol (see below) to pick a CE ๐ŸŽ€ Just note that this pre-association phase protocol is currently out of scope ๐Ÿ™ˆ Since it's a logical entity, an FE Manager might be physically combined with any of the other logical entities in this section ๐Ÿซถ
  • CE Manager - a logical entity that works in the pre-association phase and decides which FE(s) a CE should talk to ๐Ÿ•ต๏ธ This is called FE discovery, and it may involve the CE Manager learning what the available FEs can do ๐Ÿ”Ž A CE Manager can use anything from static configuration to a pre-association phase protocol (see below) to pick an FE ๐Ÿ’ซ Again, that pre-association phase protocol is currently out of scope ๐Ÿ™ˆ Since it's a logical entity, a CE Manager might be physically combined with any of the other logical entities in this section ๐Ÿงธ
  • Pre-association Phase Protocol - a protocol between FE Managers and CE Managers that's used to decide which CEs or FEs to use ๐Ÿค It may include a CE and/or FE capability discovery mechanism ๐Ÿ” Note that this capability discovery is totally separate from (and does not replace) what's used inside the ForCES protocol (see Section 6, requirement #1) ๐Ÿšซ However, the two capability discovery mechanisms may use the same FE model (see Section 5) ๐Ÿ“ Pre-association phase protocols aren't discussed any further in this document ๐Ÿ™ƒ
  • ForCES Network Element (NE) - an entity made of one or more CEs and one or more FEs ๐Ÿ  To anything outside the NE, it looks like a single point of management ๐ŸŽฏ And an NE usually hides its internal organization from outside entities ๐Ÿฅท
  • ForCES Protocol Element - an FE or a CE ๐Ÿงฉ
  • High Touch Capability - this term covers the capabilities some forwarders have for acting on the contents or headers of a packet based on something other than what's in the IP header ๐Ÿ‘€ Examples include NAT-PT, firewall, and L7 content recognition ๐Ÿ›ก๏ธ

3. Architecture ๐Ÿ—๏ธ

the main parts of an NE architecture are the CE, the FE, and the interconnect protocol ๐Ÿ’– The CE handles operations like signaling, control protocol processing, and implementing management protocols ๐Ÿง  Based on what it learns through control processing, the CE(s) decide how the FE(s) forward packets, and they do that through the interconnect protocol ๐ŸŽฎ For example, a CE might control an FE by changing its forwarding tables, the state of its interfaces, or by adding or removing a NAT binding ๐ŸŒ

The FE lives in the forwarding plane and handles per-packet processing and handling ๐Ÿ“ฆ Since the control and forwarding planes evolve independently, you can build different kinds of FEs, some general-purpose and some more specialized ๐Ÿง FEs could do things like layer 3 forwarding, metering, shaping, firewall, NAT, encapsulation (like tunneling), decapsulation, encryption, accounting, and more ๐ŸŽ€ Almost any combo of these functions could show up in real FEs ๐Ÿญ

Here's a diagram of an example NE with one CE and two FEs ๐Ÿฆ‹ Both the FEs and the CE need minimal configuration as part of pre-configuration, which an FE Manager and a CE Manager might handle, respectively ๐Ÿงธ Other than that, FE Managers and CE Managers don't have any defined role here ๐Ÿ™…โ€โ™€๏ธ They're out of scope for the architecture and requirements of the ForCES protocol, which only involves CEs and FEs ๐Ÿ’…

      --------------------------------
      | NE                           |
      |        -------------         |
      |        |    CE     |         |
      |        -------------         |
      |          /        \          |
      |         /          \         |
      |        /            \        |
      |       /              \       |
      |  -----------     ----------- |
      |  |   FE    |     |    FE   | |
      |  -----------     ----------- |
      |    | | | |         | | | |   |
      |    | | | |         | | | |   |
      |    | | | |         | | | |   |
      |    | | | |         | | | |   |
      --------------------------------
           | | | |         | | | |
           | | | |         | | | |

Part 1 done, bestie! ๐ŸŒˆโœจ More parts are coming, so stay tuned ๐Ÿ’œ๐ŸŽ€

4. Architectural Requirements โœจ

okay so bestie, these are the architectural requirements, and they are a whole vibe ๐ŸŽ€

  1. CEs and FEs MUST be able to connect by a variety of interconnect technologies. ๐Ÿ”Œ Examples of interconnect technologies used in current architectures include Ethernet, bus backplanes, and ATM (cell) fabrics. FEs MAY be connected to each other via a different technology than that used for CE/FE communication.
  2. FEs MUST support a minimal set of capabilities necessary for establishing network connectivity (e.g., interface discovery, port up/down functions). ๐Ÿงš Beyond this minimal set, the ForCES architecture MUST NOT restrict the types or numbers of capabilities that FEs may contain. the freedom is giving ๐Ÿ’…
  3. Packets MUST be able to arrive at the NE by one FE and leave the NE via a different FE. ๐Ÿฆ‹
  4. A NE MUST support the appearance of a single functional device. ๐Ÿ‘‘ For example, in a router, the TTL of the packet should be decremented only once as it traverses the NE regardless of how many FEs through which it passes. However, external entities (e.g., FE managers and CE managers) MAY have direct access to individual ForCES protocol elements for providing information to transition them from the pre-association to post-association phase.
  5. The architecture MUST provide a way to prevent unauthorized ForCES protocol elements from joining a NE. ๐Ÿ”’ (For more protocol details, refer to section 6 requirement #2)
  6. A FE MUST be able to asynchronously inform the CE of a failure or increase/decrease in available resources or capabilities on the FE. Thus, the FE MUST support error monitoring and reporting. ๐Ÿšจ (Since there is not a strict 1-to-1 mapping between FEs and PFEs, it is possible for the relationship between a FE and its physical resources to change over time). For example, the number of physical ports or the amount of memory allocated to a FE may vary over time. The CE needs to be informed of such changes so that it can control the FE in an accurate way.
  7. The architecture MUST support mechanisms for CE redundancy or CE failover. ๐Ÿ›Ÿ This includes the ability for CEs and FEs to determine when there is a loss of association between them, ability to restore association and efficient state (re)synchronization mechanisms. This also includes the ability to preset the actions an FE will take in reaction to loss of association to its CE e.g., whether the FE will continue to forward packets or whether it will halt operations.
  8. FEs MUST be able to redirect control packets (such as RIP, OSPF messages) addressed to their interfaces to the CE. They MUST also redirect other relevant packets (e.g., such as those with Router Alert Option set) to their CE. The CEs MUST be able to configure the packet redirection information/filters on the FEs. The CEs MUST also be able to create packets and have its FEs deliver them. ๐Ÿ“ฆ
  9. Any proposed ForCES architectures MUST explain how that architecture supports all of the router functions as defined in [RFC1812]. ๐Ÿง  IPv4 Forwarding functions such IP header validation, performing longest prefix match algorithm, TTL decrement, Checksum calculation, generation of ICMP error messages, etc defined in RFC 1812 should be explained.
  10. In a ForCES NE, the CE(s) MUST be able to learn the topology by which the FEs in the NE are connected. ๐Ÿ—บ๏ธ
  11. The ForCES NE architecture MUST be capable of supporting (i.e., must scale to) at least hundreds of FEs and tens of thousands of ports. ๐Ÿ“ˆ
  12. The ForCES architecture MUST allow FEs AND CEs to join and leave NEs dynamically. ๐Ÿ”„
  13. The ForCES NE architecture MUST support multiple CEs and FEs. However, coordination between CEs is out of scope of ForCES. ๐Ÿ™…โ€โ™€๏ธ
  14. For pre-association phase setup, monitoring, configuration issues, it MAY be useful to use standard management mechanisms for CEs and FEs. The ForCES architecture and requirements do not preclude this. In general, for post-association phase, most management tasks SHOULD be done through interaction with the CE. In certain conditions (e.g., CE/FE disconnection), it may be useful to allow management tools (e.g., SNMP) to be used to diagnose and repair problems. The following guidelines MUST be observed: ๐Ÿ› ๏ธ
    1. The ability for a management tool (e.g., SNMP) to be used to read (but not change) the state of FE SHOULD NOT be precluded.
    2. It MUST NOT be possible for management tools (e.g., SNMP, etc) to change the state of a FE in a manner that affects overall NE behavior without the CE being notified.

5. FE Model Requirements ๐Ÿฆ‹

okay the FE functionality variety is a whole mood, and it's kinda a problem for CEs ๐Ÿ˜ญ The variety of FE functionality that the ForCES architecture allows poses a potential problem for CEs. To control a FE properly, the CE has to understand how the FE processes packets. So we REQUIRE that a FE model be created that can express the logical packet processing capabilities of a FE. This model will be used in the ForCES protocol to describe FE capabilities (see Section 6, requirement #1). The FE model MUST define both a capability model and a state model, which expresses the current configuration of the device. The FE model MUST also support multiple FEs in the NE architecture.

5.1. Types of Logical Functions ๐Ÿ’…

The FE model MUST express what logical functions can be applied to packets as they pass through a FE. Logical functions are the packet processing functions that are applied to the packets as they are forwarded through a FE. Examples of logical functions are layer 3 forwarding, firewall, NAT, and shaping. Section 5.5 defines the minimal set of logical functions that the FE Model MUST support.

5.2. Variations of Logical Functions ๐ŸŒธ

The FE model MUST be capable of supporting/allowing variations in the way logical functions are implemented on a FE. For example, on a certain FE the forwarding logical function might have information about both the next hop IP address and the next hop MAC address, while on another FE these might be implemented as separate logical functions. Another example would be NAT functionality that can have several flavors such as Traditional/Outbound NAT, Bi-directional NAT, Twice NAT, and Multihomed NAT [RFC2663]. The model must be flexible enough to allow such variations in functions. โœจ

5.3. Ordering of Logical Functions ๐Ÿงฉ

The model MUST be capable of describing the order in which these logical functions are applied in a FE. The ordering of logical functions is important in many cases. For example, a NAT function may change a packet's source or destination IP address. Any number of other logical functions (e.g., layer 3 forwarding, ingress/egress firewall, shaping, and accounting) may make use of the source or destination IP address when making decisions. The CE needs to know whether to configure these logical functions with the pre-NAT or post-NAT IP address. Furthermore, the model MUST be capable of expressing multiple instances of the same logical function in a FE's processing path. Using NAT again as an example, one NAT function is typically performed before the forwarding decision (packets arriving externally have their public addresses replaced with private addresses) and one NAT function is performed after the forwarding decision (for packets exiting the domain, their private addresses are replaced by public ones). ๐Ÿ”

5.4. Flexibility ๐ŸŒˆ

Finally, the FE model SHOULD provide a flexible infrastructure in which new logical functions and new classification, action, and parameterization data can be easily added. In addition, the FE model MUST be capable of describing the types of statistics gathered by each logical function. ๐Ÿ“Š

5.5. Minimal Set of Logical Functions ๐ŸŽ€

okay bestie, the rest of this section lays out a minimal set of logical functions that any FE model MUST support ๐Ÿ’… this minimal set does not mean every FE has to provide all of this stuff ๐Ÿ™ˆ it's more like the model has to be able to describe the capabilities that FEs might choose to offer. the model needs the vocab, not the whole party ๐ŸŽ‰

1) Port Functions ๐Ÿ”Œ

the FE model MUST be capable of expressing how many ports the device has, the static attributes of each port (like port type and link speed), and the configurable attributes of each port (like IP address and administrative status). basically, every port needs its own little profile card ๐Ÿชชโœจ

2) Forwarding Functions ๐Ÿš—

the FE model MUST be capable of expressing the data that the forwarding function can use to make a forwarding decision. IPv4 and IPv6 unicast and multicast forwarding functions MUST be provided by the model. no skipping any of these, they're all main character energy ๐Ÿ‘‘

3) QoS Functions ๐Ÿ“Š

the FE model MUST allow a FE to express its QoS capabilities in terms of, e.g., metering, policing, shaping, and queuing functions ๐Ÿšฆ the model MUST also be capable of expressing how these functions get used to provide IntServ or DiffServ functionality, as described in [RFC2211], [RFC2212], [RFC2215], [RFC2475], and [RFC3290]. the QoS glow-up is real ๐Ÿฆ‹

4) Generic Filtering Functions ๐Ÿงน

the FE model MUST be capable of expressing complex sets of filtering functions. the model MUST be able to express where these functions exist at arbitrary points in the sequence of a FE's packet processing functions ๐Ÿ“ it also MUST be capable of expressing a wide range of classification abilities, from single fields (e.g., destination address) all the way up to arbitrary n-tuples ๐Ÿงฉ and similarly, the FE model MUST be capable of expressing what actions these filtering functions can perform on the packets that the classifier matches ๐ŸŽฏ the sorting hat is serving ๐Ÿง™โ€โ™€๏ธ

5) Vendor-Specific Functions ๐Ÿท๏ธ

the FE model SHOULD be extensible so that new, currently unknown FE functionality can be expressed ๐ŸŒˆ but the FE Model SHOULD NOT be extended to express standard or common functions in a proprietary manner. that would not be ForCES compliant ๐Ÿ™…โ€โ™€๏ธ no proprietary side quests for the basics, periodt ๐Ÿ’€

6) High-Touch Functions ๐Ÿซถ

the FE model MUST be capable of expressing the encapsulation and tunneling capabilities of a FE. the FE model MUST support functions that mark the class of service a packet should receive (i.e., the IPv4 header TOS octet or the IPv6 Traffic Class octet) ๐Ÿท๏ธ the FE model MAY support other high-touch functions (e.g., NAT, ALG). those are optional extras, so totally your call ๐Ÿ“

7) Security Functions ๐Ÿ”

the FE model MUST be capable of expressing the types of encryption that may be applied to packets in the forwarding path. locking it down, fr fr ๐Ÿ”’

8) Off-loaded Functions ๐Ÿงš

okay this one is kinda deep so stay with me ๐Ÿซ  per-packet processing can leave state in the FE, so that logical functions executed during packet processing can behave in a consistent manner. for example, each packet may update the token bucket occupancy of a given policer, so the state stays accurate across the stream ๐Ÿชฃ in addition, the FE Model MUST allow logical functions to execute asynchronously from packet processing, according to a certain finite-state machine. this is how stuff gets off-loaded from the CE to the FE ๐Ÿšš the FE model MUST be capable of expressing these asynchronous functions. examples include the finite-state machine execution needed for TCP termination or OSPF Hello processing, which can be triggered not only by packet events but by timer events as well โฐ

this does not mean off-loading any piece of code to an FE. it just means the FE Model should be able to express existing Off-loaded functions on an FE ๐Ÿ“ the model describes it, it doesn't ship your code over ๐Ÿ™ƒ

9) IPFLOW/PSAMP Functions ๐Ÿ“ˆ

several applications, such as usage-based accounting and traffic engineering, need flow-based IP traffic measurements from network elements ๐Ÿ“ก [IPFLOW] defines an architecture for IP traffic flow monitoring, measuring, and exporting. the FE model SHOULD be able to express the metering functions and flow accounting needed for exporting IP traffic flow information ๐Ÿงพ similarly, to support measurement-based applications, [PSAMP] describes a framework for defining a standard set of capabilities that let network elements sample subsets of packets by statistical and other methods ๐ŸŽฒ the FE model SHOULD be able to express statistical packet filtering functions and the packet information needed to support packet sampling applications. data girlies unite ๐Ÿ’œ

6. ForCES Protocol Requirements โœจ

okay so this section lays out some of the requirements the ForCES protocol MUST meet ๐Ÿ’… think of them as the non-negotiables, bestie ๐Ÿซถ

  1. Configuration of Modeled Elements ๐ŸŽ€ The ForCES protocol MUST let the CEs figure out what each FE can do. Those capabilities SHALL be described using the FE model from Section 5. The protocol MUST also give the CEs a way to control every FE capability they discover through that model. The protocol MUST be able to add/remove classification/action entries, set/delete parameters, query statistics, and register for and receive events.
  2. Support for Secure Communication ๐Ÿ” this one is a whole vibe, so let's go through it
    • a) FE configuration holds stuff the network literally can't run without, like IP Forwarding Tables ๐Ÿ˜ญ So it MUST be possible to ensure the integrity of all ForCES protocol messages and protect against man-in-the-middle attacks.
    • b) FE configuration can also include info from business deals, like service level agreements. Since that's confidential, it MUST be possible to secure (make private) all ForCES protocol messages.
    • c) To make sure only authorized CEs and FEs are taking part in an NE, and to defend against CE or FE impersonation attacks, the ForCES architecture MUST select a means of authentication for CEs and FEs.
    • d) In some deployments, CEs and FEs are connected inside a box over a backplane. The box's physical security makes man-in-the-middle, snooping, and impersonation attacks impossible, so the ForCES architecture MAY rely on that physical security to defend against these attacks, and protocol mechanisms may be turned off.
    • e) When CEs and FEs are connected over a network, security mechanisms MUST be specified or selected that protect the ForCES protocol against such attacks. Any security solution used for ForCES MUST specify how it deals with such attacks.
  3. Scalability ๐Ÿ“ˆ The ForCES protocol MUST be capable of supporting (i.e., must scale to) at least hundreds of FEs and tens of thousands of ports. For example, the ForCES protocol field sizes corresponding to FE or port numbers SHALL be large enough to support the minimum required numbers. This requirement does not relate to the performance of an NE as the number of FEs or ports in the NE grows.
  4. Multihop ๐Ÿ›ฃ๏ธ When the CEs and FEs are separated beyond a single L3 routing hop, the ForCES protocol will use an existing RFC2914 compliant L4 protocol with adequate reliability, security and congestion control (e.g., TCP, SCTP) for transport.
  5. Message Priority ๐Ÿšฆ The ForCES protocol MUST provide a means to express the protocol message priorities.
  6. Reliability ๐Ÿ’Ž different payloads need different levels of reliability, so let's break it down
    • a) ForCES will carry information that needs varying levels of reliability. By strict or robust reliability here, we mean no losses, no corruption, no re-ordering of the information being transported, and delivery in a timely fashion.
    • b) Some payloads, like redirected packets or packet sampling, don't need robust reliability and can tolerate some losses. For information of this sort, ForCES MUST NOT be restricted to strict reliability.
    • c) Payloads like configuration information (ACLs, FIB entries, or FE capability information described in section 6, (1)) are mission critical and must be delivered in a robust reliable fashion. So for this information, ForCES MUST either provide built-in protocol mechanisms or use a reliable transport protocol to achieve robust/strict reliability.
    • d) Some payloads, like heartbeat packets used to detect loss of association between CE and FEs (see section 6, (8)), may prefer timeliness over reliable delivery. For information of this sort, ForCES MUST NOT be restricted to strict reliability.
    • e) When ForCES is carried over multi-hop IP networks, it is a requirement that ForCES MUST use a [RFC2914]-compliant transport protocol.
    • f) When ForCES isn't running over an IP network, like Ethernet or a cell fabric between CE and FE, reliability still MUST be provided when carrying critical information of the types in (c) above. That can come from the underlying link/network/transport layers or from built-in protocol mechanisms.
  7. Interconnect Independence ๐Ÿ”Œ The ForCES protocol MUST support a variety of interconnect technologies. (refer to section 4, requirement #1)
  8. CE redundancy or CE failover ๐Ÿฆบ The ForCES protocol MUST support mechanisms for CE redundancy or CE failover. This includes the ability for CEs and FEs to determine when there is a loss of association between them, the ability to restore association, and efficient state (re)synchronization mechanisms. It also includes the ability to preset the actions an FE will take in reaction to loss of association with its CE, e.g., whether the FE will continue to forward packets or whether it will halt operations. (refer to section 4, requirement #7)
  9. Packet Redirection/Mirroring ๐Ÿชž
    • a) The ForCES protocol MUST define a way to redirect packets from the FE to the CE and vice-versa. Packet redirection terminates any further processing of the redirected packet at the FE.
    • b) The ForCES protocol MUST define a way to mirror packets from the FE to the CE. Mirroring lets the packet duplicated by the FE at the mirroring point be sent to the CE, while the original packet keeps being processed by the FE.

Examples of packets that may be redirected or mirrored include control packets (such as RIP, OSPF messages) addressed to the interfaces, or any other relevant packets (such as those with Router Alert Option set). The ForCES protocol MUST also define a way for the CE to configure the behavior of a) and b) (above), to specify which packets are affected by each.

  1. Topology Exchange ๐Ÿ—บ๏ธ The ForCES protocol or information carried in the ForCES protocol MUST allow those FEs which have inter-FE topology information to provide that information to the CE(s).
  2. Dynamic Association ๐Ÿ’ƒ The ForCES protocol MUST allow CEs and FEs to join and leave an NE dynamically. (refer to section 4, requirement #12)
  3. Command Bundling ๐Ÿ“ฆ The ForCES protocol MUST be able to group an ordered set of commands to an FE. Each such group of commands SHOULD be sent to the FE in as few messages as possible. Furthermore, the protocol MUST support the ability to specify whether a command group MUST have all-or-nothing semantics.
  4. Asynchronous Event Notification ๐Ÿ”” The ForCES protocol MUST be able to asynchronously notify the CE of events on the FE, such as failures or changes in available resources or capabilities. (refer to section 4, requirement #6)
  5. Query Statistics ๐Ÿ“Š The ForCES protocol MUST provide a means for the CE to query statistics (monitor performance) from the FE.
  6. Protection against Denial of Service Attacks (based on CPU overload or queue overflow) ๐Ÿ›ก๏ธ Systems using the ForCES protocol can be attacked with denial of service attacks based on CPU overload or queue overflow. ForCES could be exploited by such attacks to leave the CE unable to control the FE or to communicate properly with other routers and systems. The ForCES protocol MUST therefore provide mechanisms for controlling FE capabilities that can be used to protect against such attacks. FE capabilities that MUST be manipulated via ForCES include the ability to install classifiers and filters to detect and drop attack packets, as well as the ability to install rate limiters that limit the rate of packets which appear to be valid but may be part of an attack (e.g., bogus BGP packets).

7. References ๐Ÿ“š

7.1. Normative References

[RFC3290]  Bernet, Y., Blake, S., Grossman, D. and A. Smith, "An
           Informal Management Model for DiffServ Routers", RFC 3290,
           May 2002.

[RFC1812]  Baker, F., "Requirements for IP Version 4 Routers", RFC
           1812, June 1995.

[RFC2211]  Wroclawski, J., "Specification of the Controlled-Load
           Network Element Service", RFC 2211, September 1997.

[RFC2212]  Shenker, S., Partridge, C. and R. Guerin, "Specification
           of Guaranteed Quality of Service", RFC 2212, September
           1997.

[RFC2215]  Shenker, S. and J. Wroclawski, "General Characterization
           Parameters for Integrated Service Network Elements", RFC
           2215, September 1997.

[RFC2475]  Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z.
           and W. Weisss, "An Architecture for Differentiated
           Service", RFC 2475, December 1998.

[RFC2914]  Floyd, S., "Congestion Control Principles", BCP 14, RFC
           2914, September 2000.

[RFC2663]  Srisuresh, P. and M. Holdrege, "IP Network Address
           Translator (NAT) Terminology and Considerations", RFC
           2663, August 1999.

7.2. Informative References

[RFC3532]  Anderson, T. and J. Buerkle, "Requirements for the Dynamic
           Partitioning of Switching Elements", RFC 3532, May 2003.

[IPFLOW]   Quittek, et al., "Requirements for IP Flow Information
           Export", Work in Progress, February 2003.

[PSAMP]    Duffield, et al., "A Framework for Passive Packet
           Measurement ", Work in Progress, March 2003.

8. Security Considerations ๐Ÿ”’

this section is short, but it's SO important ๐Ÿ’€ See architecture requirement #5 and protocol requirement #2 for the full tea ๐Ÿซ–


9. Authors' Addresses & Acknowledgments ๐ŸŽ€

This document was written by the ForCES Requirements design team:

Todd A. Anderson (Editor)


Ed Bowen
IBM Zurich Research Laboratory
Saumerstrasse 4
CH-8803 Rueschlikon Switzerland

Phone: +41 1 724 83 68
EMail: edbowen@us.ibm.com


Ram Dantu
Department of Computer Science
University of North Texas,
Denton, Texas, 76203

Phone: 940 565 2822
EMail: rdantu@unt.edu


Avri Doria
ETRI
161 Gajeong-dong, Yuseong-gu
Deajeon 305-350 Korea

EMail: avri@acm.org
Ram Gopal
Nokia Research Center
5, Wayside Road,
Burlington, MA 01803

Phone: 1-781-993-3685
EMail: ram.gopal@nokia.com


Jamal Hadi Salim
Znyx Networks
Ottawa, Ontario
Canada

EMail: hadi@znyx.com


Hormuzd Khosravi (Editor)


Muneyb Minhazuddin
Avaya Inc.
123, Epping road,
North Ryde, NSW 2113, Australia
Phone: +61 2 9352 8620
EMail: muneyb@avaya.com


Margaret Wasserman
Nokia Research Center
5 Wayside Road
Burlington, MA 01803
Phone: +1 781 993 3858
EMail: margaret.wasserman@nokia.com

The authors would like to thank Vip Sharma and Lily Yang for their valuable contributions. ๐Ÿซถ


10. Editors' Contact Information ๐Ÿ’Œ

Hormuzd Khosravi
Intel
2111 NE 25th Avenue
Hillsboro, OR 97124 USA

Phone: +1 503 264 0334
EMail: hormuzd.m.khosravi@intel.com


Todd A. Anderson
Intel
2111 NE 25th Avenue
Hillsboro, OR 97124 USA

Phone: +1 503 712 1760
EMail: todd.a.anderson@intel.com

Okay bestie, this part is the legal stuff, but it's actually pretty simple once you read it. ๐Ÿ’…

Copyright (C) The Internet Society (2003). All Rights Reserved. ๐ŸŒธ

So basically, anyone is allowed to copy this document and share it with others. People can also write derivative works that comment on it, explain it, or help people implement it, and they can publish and distribute those too, in whole or in part, with no restrictions of any kind. ๐Ÿฆ‹ The one big condition is that the above copyright notice and this paragraph have to stay on every copy and every derivative work. ๐Ÿ’œ

Here's the catch: this document itself can't be modified in any way. You can't remove the copyright notice or the references to the Internet Society or other Internet organizations. ๐Ÿ™ˆ The only exceptions are two. First, you can make changes needed for developing Internet standards, but then you have to follow the copyright procedures defined in the Internet Standards process. Second, you can translate it into languages other than English. ๐ŸŒˆ

The permissions granted above are perpetual, which means they will not be revoked by the Internet Society or its successors or assignees. โญ That's a forever kind of promise. ๐Ÿซถ

This document and the information in it are provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐Ÿ’€ Translation: they're not promising it'll work perfectly or that it won't step on anyone's rights. Plan accordingly, babe. โœจ

Acknowledgement ๐Ÿงš

Funding for the RFC Editor function is currently provided by the Internet Society. ๐Ÿ‘‘ So the people who keep the RFC library running get their paycheck from them right now. Iconic support. ๐Ÿ“


That's the whole document, bestie! ๐ŸŒˆ๐Ÿ’– Thanks for being the best study buddy, and go forth and implement ForCES like the networking queen you are. ๐Ÿ‘‘๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from