RFC 5813

Forwarding and Control Element Separation (ForCES) MIB

๐Ÿ“… published March 2010, from ietf

RFC 5813: Forwarding and Control Element Separation (ForCES) MIB โœจ

okay bestie, this is the spec for a ForCES MIB, which is a Management Information Base module for network management protocols ๐Ÿฆ‹ It's by R. Haas at IBM, it's on the Standards Track (so it's an actual Internet Standard, not just a vibe), and it was published in March 2010. Its ISSN is 2070-1721. The header doesn't list anything it obsoletes or updates, so it's not replacing or patching any other RFC ๐ŸŒธ

Quick cast list: the ForCES Working Group produced it, Robert Haas is the editor, and the chairs are Patrick Droz and Jamal Hadi Salim ๐Ÿ’œ

Abstract ๐ŸŒˆ

This memo defines a Management Information Base (MIB) module for network management protocols used across the Internet community. Specifically, it defines managed objects for the Forwarding and Control Element Separation (ForCES) Network Element (NE) ๐Ÿ”ฅ

Status of This Memo ๐Ÿ“

This is an Internet Standards Track document ๐Ÿ’…

It's a product of the Internet Engineering Task Force (IETF), so it represents IETF community consensus. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 5741 ๐ŸŽ€

For the current status, any errata, and how to give feedback, go to http://www.rfc-editor.org/info/rfc5813 ๐ŸŒธ

Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved ๐Ÿซถ

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication. Please actually read those, because they spell out your rights and restrictions. Code Components pulled from this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License โญ

Table of Contents ๐Ÿ“š

   1. The Internet-Standard Management Framework ......................2
   2. Introduction ....................................................2
   3. Requirements Notation ...........................................3
   4. ForCES MIB Overview .............................................3
   5. ForCES MIB Definition ...........................................4
   6. Associations Kept in the MIB ...................................13
   7. Support for Multiple CEs and FEs ...............................14
   8. Security Considerations ........................................14
   9. IANA Considerations ............................................15
   10. References ....................................................15
      10.1. Normative References .....................................15
      10.2. Informative References ...................................16
   Appendix A.  Acknowledgments ......................................17

1. The Internet-Standard Management Framework ๐Ÿงš

For the full rundown on the current Internet-Standard Management Framework docs, check section 7 of [RFC3410] โœจ

Managed objects get accessed through a virtual information store called the Management Information Base, or MIB. Usually you reach MIB objects through the Simple Network Management Protocol (SNMP). MIB objects are defined with the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that complies with SMIv2, which is described in STD 58, [RFC2578], STD 58, [RFC2579] and STD 58, [RFC2580] ๐Ÿ’–

2. Introduction ๐Ÿฆ‹

The ForCES MIB module is a read-only MIB module that captures information about the ForCES protocol ([RFC3654], [RFC3746], [FORCES-APP], and [RFC5810]) ๐ŸŒท

The ForCES MIB module does not include information that lives in other MIB modules, like packet counters for interfaces, etc. ๐Ÿ™ˆ

More specifically, for associations between Control Elements and Forwarding Elements that are in the UP state, the ForCES MIB module tracks:

  • identifiers of the elements in the association,
  • configuration parameters of the association, and
  • statistics of the association.

3. Requirements Notation ๐Ÿ“

Okay, this part's important. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] ๐Ÿ”ฅ

4. ForCES MIB Overview ๐Ÿ‘‘

The MIB module holds the latest ForCES protocol version supported by the Control Element (CE), which is forcesLatestProtocolVersionSupported. Note that the CE also has to allow interaction with Forwarding Elements (FEs) that run earlier versions ๐Ÿ’…

For each association identified by the pair of CE ID and FE ID, the MIB module gives you the following info as an entry (forcesAssociationEntry) in the association table (forcesAssociationTable) ๐Ÿ“

  • Version number of the ForCES protocol running in this association (forcesAssociationRunningProtocolVersion).
  • Time when the association entered the UP state (forcesAssociationTimeUp).
  • Time when the association left the UP state (forcesAssociationTimeDown). Note that this is only used for notification purposes, because the association is removed from the MIB immediately after it leaves the UP state ๐Ÿ’€
  • Number of ForCES Heartbeat messages sent from the CE (forcesAssociationHBMsgSent) and received by the CE (forcesAssociationHBMsgReceived) since the association entered the UP state.
  • Number of operational ForCES messages sent from the CE (forcesAssociationOperMsgSent) and received by the CE (forcesAssociationOperMsgReceived) since the association entered the UP state. Only messages other than Heartbeat, Association Setup, Association Setup Response, and Association Teardown get counted ๐Ÿงฎ

Finally, the MIB module defines these notifications ๐Ÿ””

  • Whenever an association enters the UP state, a notification (forcesAssociationEntryUp) is issued containing the version of the ForCES protocol running. CE ID and FE ID are concatenated to form the table index, so they show up in the OID of the ForCES-protocol running-version object. Optionally, a notification (forcesAssociationEntryUpStats) can be issued instead, with all the associated info for this association except forcesAssociationTimeDown โœจ
  • Whenever an association leaves the UP state, a notification (forcesAssociationEntryDown) is issued containing the version of the ForCES protocol running. Optionally, a notification (forcesAssociationEntryDownStats) can be issued instead, with all the associated info for this association. The reason is that the association and all its associated info get removed from the MIB right after this notification goes out ๐Ÿ˜ญ

5. ForCES MIB Definition ๐Ÿ’…

Here's the actual MIB module, written in SMI, so copy it exactly ๐Ÿค“

      FORCES-MIB DEFINITIONS ::= BEGIN

      IMPORTS
          MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
            mib-2, Integer32
            FROM SNMPv2-SMI

          TEXTUAL-CONVENTION, TimeStamp
            FROM SNMPv2-TC

          MODULE-COMPLIANCE, OBJECT-GROUP,
          NOTIFICATION-GROUP
            FROM SNMPv2-CONF

          ZeroBasedCounter32
            FROM RMON2-MIB;

      forcesMib MODULE-IDENTITY
          LAST-UPDATED "201003100000Z"  -- March 10, 2010
          ORGANIZATION "IETF Forwarding and Control Element
                        Separation (ForCES) Working Group"
          CONTACT-INFO
              "WG Charter:
                http://www.ietf.org/html.charters/forces-charter.html

                Mailing lists:
                    General Discussion: forces@ietf.org
                    To Subscribe:
                    https://www.ietf.org/mailman/listinfo/forces

                Chairs: Patrick Droz
                        Email: dro@zurich.ibm.com
                        Jamal Hadi Salim
                        Email: hadi@mojatatu.com

                Editor: Robert Haas
                        IBM
                        Email:  rha@zurich.ibm.com"
          DESCRIPTION
              "This MIB module contains managed object definitions
               for the ForCES Protocol.

               Copyright (c) 2010 IETF Trust and the persons identified
               as authors of the code.  All rights reserved.

               Redistribution and use in source and binary forms, with
               or without modification, is permitted pursuant to, and
               subject to the license terms contained in, the
               Simplified BSD License set forth in Section 4.c of the
               IETF Trust's Legal Provisions Relating to IETF Documents
               (http://trustee.ietf.org/license-info).

               This version of this MIB module is part of RFC 5813;
               see the RFC itself for full legal notices."
          REVISION "201003100000Z"  -- March 10, 2010
          DESCRIPTION
             "Initial version, published as RFC 5813."
         ::= { mib-2 187 }

 --****************************************************************

      forcesMibNotifications OBJECT IDENTIFIER ::= { forcesMib 0 }
      forcesMibObjects       OBJECT IDENTIFIER ::= { forcesMib 1 }
      forcesMibConformance   OBJECT IDENTIFIER ::= { forcesMib 2 }

      ForcesID ::= TEXTUAL-CONVENTION
          STATUS      current
          DESCRIPTION
              "The ForCES identifier is a 4-octet quantity."
          SYNTAX      OCTET STRING (SIZE (4))

      ForcesProtocolVersion ::= TEXTUAL-CONVENTION
          DISPLAY-HINT "d"
          STATUS      current
          DESCRIPTION
              "ForCES protocol version number.
               The version numbers used are defined in the
               specifications of the respective protocol:
               1 - ForCESv1, RFC 5810."
          SYNTAX      Integer32 (1..255)

okay bestie, the notifications are up first and they're so iconic ๐Ÿฆ‹ each one fires off when an association moves into or out of the UP state, and they all say the same thing: the CE should be the one throttling setups ๐Ÿ’…

-- Notifications

      forcesAssociationEntryUp NOTIFICATION-TYPE
         OBJECTS     {
            forcesAssociationRunningProtocolVersion
         }
         STATUS      current
         DESCRIPTION
              "This notification is generated as soon
               as an association enters the UP state.
               Note that these notifications are not
               throttled as the CE itself should
               throttle the setup of associations."
         ::= { forcesMibNotifications 1 }

       forcesAssociationEntryDown NOTIFICATION-TYPE
         OBJECTS     {
            forcesAssociationRunningProtocolVersion
         }
         STATUS      current
         DESCRIPTION
              "This notification is generated as soon
               as an association leaves the UP state.
               Note that these notifications are not
               throttled as the CE itself should
               throttle the setup of associations."
         ::= { forcesMibNotifications 2 }

      forcesAssociationEntryUpStats NOTIFICATION-TYPE
         OBJECTS     {
            forcesAssociationRunningProtocolVersion,
            forcesAssociationTimeUp
         }
         STATUS      current
         DESCRIPTION
              "This notification is generated as soon
               as an association enters the UP state.
               Note that these notifications are not
               throttled as the CE itself should
               throttle the setup of associations."
         ::= { forcesMibNotifications 3 }

       forcesAssociationEntryDownStats NOTIFICATION-TYPE
         OBJECTS     {
            forcesAssociationRunningProtocolVersion,
            forcesAssociationTimeUp,
            forcesAssociationTimeDown,
            forcesAssociationHBMsgSent,
            forcesAssociationHBMsgReceived,
            forcesAssociationOperMsgSent,
            forcesAssociationOperMsgReceived,
            forcesAssociationCounterDiscontinuityTime
            }
         STATUS      current
         DESCRIPTION
              "This notification is generated as soon
               as an association leaves the UP state.
               Note that these notifications are not
               throttled as the CE itself should
               throttle the setup of associations."
         ::= { forcesMibNotifications 4 }

-- Objects

      forcesLatestProtocolVersionSupported OBJECT-TYPE
          SYNTAX      ForcesProtocolVersion
          MAX-ACCESS  read-only
          STATUS      current
          DESCRIPTION
                 "The ForCES protocol version supported by the CE.
                  The current protocol version is 1.
                  Note that the CE must also allow interaction
                  with FEs supporting earlier versions."
          ::= { forcesMibObjects 1 }

      forcesAssociations OBJECT IDENTIFIER ::= { forcesMibObjects 2 }

      forcesAssociationTable OBJECT-TYPE
          SYNTAX SEQUENCE OF ForcesAssociationEntry
          MAX-ACCESS not-accessible
          STATUS current
          DESCRIPTION
                 "The (conceptual) table of associations."
          ::= { forcesAssociations 1 }

      forcesAssociationEntry OBJECT-TYPE
          SYNTAX ForcesAssociationEntry
          MAX-ACCESS not-accessible
          STATUS current
          DESCRIPTION
                 "A (conceptual) entry for one association."
          INDEX { forcesAssociationCEID, forcesAssociationFEID }
          ::= { forcesAssociationTable 1 }

      ForcesAssociationEntry ::= SEQUENCE {
              forcesAssociationCEID             ForcesID,
              forcesAssociationFEID             ForcesID,

              forcesAssociationRunningProtocolVersion
                                          ForcesProtocolVersion,

              forcesAssociationTimeUp           TimeStamp,
              forcesAssociationTimeDown         TimeStamp,

              forcesAssociationHBMsgSent        ZeroBasedCounter32,
              forcesAssociationHBMsgReceived    ZeroBasedCounter32,
              forcesAssociationOperMsgSent      ZeroBasedCounter32,
              forcesAssociationOperMsgReceived  ZeroBasedCounter32,
              forcesAssociationCounterDiscontinuityTime  TimeStamp
     }

      forcesAssociationCEID OBJECT-TYPE
          SYNTAX ForcesID
          MAX-ACCESS not-accessible
          STATUS current
          DESCRIPTION
                 "The ForCES ID of the CE."
          ::= { forcesAssociationEntry 1 }

      forcesAssociationFEID OBJECT-TYPE
          SYNTAX ForcesID
          MAX-ACCESS not-accessible
          STATUS current
          DESCRIPTION
                 "The ForCES ID of the FE."
          ::= { forcesAssociationEntry 2 }

      forcesAssociationRunningProtocolVersion OBJECT-TYPE
          SYNTAX      ForcesProtocolVersion
          MAX-ACCESS  read-only
          STATUS      current
          DESCRIPTION
                 "The current ForCES protocol version used in
                  this association.
                  The current protocol version is 1."
          ::= { forcesAssociationEntry 3 }

      forcesAssociationTimeUp OBJECT-TYPE
          SYNTAX TimeStamp
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
                 "The value of sysUpTime at the time this
                  association entered the UP state.
                  If this association started prior to the last
                  initialization of the network subsystem, then
                  this object contains a zero value.
                  This object allows to uniquely identify
                  associations with the same CE and FE IDs."
          ::= { forcesAssociationEntry 4 }

      forcesAssociationTimeDown OBJECT-TYPE
          SYNTAX TimeStamp
          MAX-ACCESS accessible-for-notify
          STATUS current
          DESCRIPTION
                 "The value of sysUpTime at the time this
                  association left the UP state."
          ::= { forcesAssociationEntry 5 }

      forcesAssociationHBMsgSent OBJECT-TYPE
          SYNTAX ZeroBasedCounter32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
                 "A counter of how many Heartbeat messages have
                  been sent by the CE on this association
                  since the association entered the UP state.
                  Discontinuities in the value of this counter
                  can occur at reinitialization of the management
                  system, and at other times as indicated by the
                  value of forcesAssociationCounterDiscontinuityTime."
          ::= { forcesAssociationEntry 6 }

      forcesAssociationHBMsgReceived OBJECT-TYPE
          SYNTAX ZeroBasedCounter32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
                 "A counter of how many Heartbeat messages
                  have been received by the CE on this association
                  since the association entered the UP state.
                  Discontinuities in the value of this counter
                  can occur at reinitialization of the management
                  system, and at other times as indicated by the
                  value of forcesAssociationCounterDiscontinuityTime."
          ::= { forcesAssociationEntry 7 }

      forcesAssociationOperMsgSent OBJECT-TYPE
          SYNTAX ZeroBasedCounter32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
                 "A counter of how many messages other than
                  Heartbeat (i.e., Config and Query)
                  have been sent by the CE on this association
                  since the association entered the UP state.
                  Discontinuities in the value of this counter
                  can occur at reinitialization of the management
                  system, and at other times as indicated by the
                  value of forcesAssociationCounterDiscontinuityTime."
          ::= { forcesAssociationEntry 8 }

      forcesAssociationOperMsgReceived OBJECT-TYPE
          SYNTAX ZeroBasedCounter32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
                 "A counter of how many messages other than
                  Heartbeat (i.e., Config response, Query response,
                  event notification, and packet redirect)
                  have been received by the CE on this association
                  since the association entered the UP state.
                  Discontinuities in the value of this counter
                  can occur at reinitialization of the management
                  system, and at other times as indicated by the
                  value of forcesAssociationCounterDiscontinuityTime."
          ::= { forcesAssociationEntry 9 }

      forcesAssociationCounterDiscontinuityTime OBJECT-TYPE
          SYNTAX TimeStamp
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
                 "The value of sysUpTime on the most recent occasion
                  at which any one or more of this association's
                  counters suffered a discontinuity.  The relevant
                  counters are the specific instances associated with
                  this association of any ZeroBasedCounter32 object
                  contained in the forcesAssociationTable.  If no
                  such discontinuities have occurred since the last
                  reinitialization of the local management subsystem,
                  then this object contains a zero value."
          ::= { forcesAssociationEntry 10 }

-- Conformance

      forcesMibCompliances   OBJECT IDENTIFIER
                               ::= { forcesMibConformance 1 }
      forcesMibGroups        OBJECT IDENTIFIER
                               ::= { forcesMibConformance 2 }

-- Compliance statements

      forcesMibCompliance  MODULE-COMPLIANCE
          STATUS current
          DESCRIPTION
                 "The compliance statement for routers running
                  ForCES and implementing the ForCES MIB."
          MODULE  -- this module
            MANDATORY-GROUPS { forcesMibGroup, forcesNotificationGroup }

            GROUP forcesNotificationStatsGroup
            DESCRIPTION
                   "Implementation of this group is recommended."

            GROUP forcesStatsGroup
            DESCRIPTION
              "Implementation of this group is recommended."

          ::= { forcesMibCompliances 1 }
-- Units of conformance

      forcesNotificationGroup NOTIFICATION-GROUP
          NOTIFICATIONS { forcesAssociationEntryUp,
                          forcesAssociationEntryDown
                        }
          STATUS  current
          DESCRIPTION
                 "A collection of notifications for signaling
                  important ForCES events."
          ::= { forcesMibGroups 1 }

      forcesMibGroup OBJECT-GROUP
          OBJECTS { forcesLatestProtocolVersionSupported,
                    forcesAssociationRunningProtocolVersion
                  }
          STATUS  current
          DESCRIPTION
                 "A collection of objects to support management
                  of ForCES routers."
        ::= { forcesMibGroups 2 }

      forcesNotificationStatsGroup NOTIFICATION-GROUP
          NOTIFICATIONS { forcesAssociationEntryUpStats,
                          forcesAssociationEntryDownStats
                        }
          STATUS  current
          DESCRIPTION
                 "A collection of optional notifications for
                  signaling important ForCES events including
                  statistics."
          ::= { forcesMibGroups 3 }

      forcesStatsGroup OBJECT-GROUP
          OBJECTS { forcesAssociationTimeUp,
                    forcesAssociationTimeDown,
                    forcesAssociationHBMsgSent,
                    forcesAssociationHBMsgReceived,
                    forcesAssociationOperMsgSent,
                    forcesAssociationOperMsgReceived,
                    forcesAssociationCounterDiscontinuityTime
                  }
          STATUS  current
          DESCRIPTION
                 "A collection of optional objects to provide
                  extra information about the associations.
                  There is no protocol reason to keep such
                  information, but these objects can be very
                  useful in debugging connectivity problems."
        ::= { forcesMibGroups 4}

      END

6. Associations Kept in the MIB โœจ

okay bestie, so an association only shows up in this MIB once it's UP ๐Ÿฆ‹. That happens the moment the CE has sent the FE an Association Setup Response message carrying a successful Association Setup Result. Anything that isn't UP just isn't reflected here, no cap ๐Ÿ’….

It works the other way too. Associations get yeeted out of the MIB module the second they leave the UP state. That's when the CE hasn't received any message from the FE within a given time period (a Heartbeat or any other protocol message counts), or when the CE has sent an Association Teardown message ๐Ÿ’€.

Counters start at zero when the association is created ๐ŸŒธ. If the same association goes down and comes back up, the counters reset, and you can spot that discontinuity by checking the discontinuity timestamp โฐ. It's giving plot twist. The time-up timestamp is what lets you tell a brand new association apart from an old one with the same index ๐Ÿ‘‘. And the optional down notification carries the final values of the counters, so you get the receipts ๐Ÿงพ.

7. Support for Multiple CEs and FEs ๐Ÿงš

okay so an NE is made of one or more FEs and one or more CEs ๐Ÿ“. If there's only one CE, that CE knows about every association in the NE, so it can provide what's needed to support the managed objects in this MIB module โœจ. When there's more than one CE, info about the associations can be spread out across them. Whether each CE handles the objects for just the associations it knows about, or whether the CEs team up to look like one single set of objects for the whole NE, is outside the scope of this document ๐Ÿ™ˆ.

8. Security Considerations ๐Ÿ’€

ohhh this section is serious, bestie ๐Ÿ˜ญ, but it's also kinda reassuring. There are no management objects in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. So if this MIB module is implemented correctly, there's no risk of an intruder altering or creating any of its management objects through direct SNMP SET operations ๐Ÿ”’.

Some of the readable objects (anything with a MAX-ACCESS other than not-accessible) may be considered sensitive or vulnerable in some network environments. So it's important to control even GET and/or NOTIFY access to them, and possibly even encrypt their values when they're sent over the network via SNMP ๐Ÿซถ. Here are the tables and objects and their sensitivity/vulnerability:

  • Objects in the forcesMibGroup are protocol versions. They are neither sensitive nor vulnerable.
  • Objects in the forcesStatsGroup are statistics. They are neither sensitive nor vulnerable.

SNMP versions prior to SNMPv3 did not include adequate security ๐Ÿ˜ฌ. Even if the network itself is secure (for example by using IPsec), there's still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module ๐Ÿšจ.

It is RECOMMENDED that implementers consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy).

Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to ensure that the SNMP entity giving access to an instance of this MIB module is properly configured to give access to the objects only to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them ๐Ÿ”.

9. IANA Considerations ๐ŸŽ€

The MIB module in this document uses the following IANA-assigned OBJECT IDENTIFIER values recorded in the SMI Numbers registry:

         Descriptor        OBJECT IDENTIFIER value
         ----------        -----------------------

         forcesMIB         { mib-2 187 }

10. References ๐Ÿ“š

10.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.

[RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.

[RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.

[RFC5810] Doria, A., Ed., Hadi Salim, J., Ed., Haas, R., Ed., Khosravi, H., Ed., Wang, W., Ed., Dong, L., Gopal, R., and J. Halpern, "Forwarding and Control Element Separation (ForCES) Protocol Specification", RFC 5810, March 2010.

10.2. Informative References

[FORCES-APP] Crouch, A., Khosravi, H., Doria, A., Wang, X., and K. Ogawa, "ForCES Applicability Statement", Work in Progress, February 2010.

[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.

[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.

Appendix A. Acknowledgments ๐Ÿซถ

The author gratefully acknowledges the contributions of Spencer Dawkins, Jinrong Fenggen, John Flick, Xiaoyi Guo, Joel Halpern, Tom Petch, Jamal Hadi Salim, and Bert Wijnen ๐Ÿ’–.

Author's Address ๐ŸŒˆ

Robert Haas
IBM
Saeumerstrasse 4
Rueschlikon  8803
CH

EMail: rha@zurich.ibm.com
URI:   http://www.zurich.ibm.com/~rha
๐Ÿ“ฆ where this page comes from