RFC 2749

COPS usage for RSVP

๐Ÿ“… published January 2000, from ietf

RFC 2749: COPS usage for RSVP ๐Ÿ’–

bestie, this is RFC 2749 ๐ŸŽ€ with the title COPS usage for RSVP, from the Network Working Group, dated January 2000 ๐ŸŒธ. It's a Standards Track document, so it's an Internet standards track protocol spec ๐Ÿ”ฅ. The authors are S. Herzog, Ed. (IPHighway), J. Boyle (Level3), R. Cohen (Cisco), D. Durham (Intel), R. Rajan (AT&T), and A. Sastry (Cisco) ๐Ÿ‘‘. The header has no Obsoletes or Updates line, so it doesn't list anything it replaces or changes โœจ.


Status of this Memo ๐Ÿ“œ

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

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

Abstract ๐Ÿฆ‹

This document describes usage directives for supporting COPS policy services in RSVP environments.

Table of Contents ๐Ÿ—‚๏ธ

1 Introduction....................................................2
2 RSVP values for COPS objects....................................2
2.1  Common Header, client-type...................................2
2.2  Context Object (Context).....................................3
2.3  Client Specific Information (ClientSI).......................4
2.4  Decision Object (Decision)...................................4
3 Operation of COPS for RSVP PEPs.................................6
3.1  RSVP flows...................................................6
3.2  Expected Associations for RSVP Requests......................6
3.3  RSVP's Capacity Admission Control: Commit and Delete.........7
3.4  Policy Control Over PathTear and ResvTear....................7
3.5  PEP Caching COPS Decisions...................................7
3.6  Using Multiple Context Flags in a single query...............8
3.7  RSVP Error Reporting.........................................9
4 Security Considerations.........................................9
5 Illustrative Examples, Using COPS for RSVP......................9
5.1  Unicast Flow Example.........................................9
5.2  Shared Multicast Flows......................................11
6 References.....................................................14
7 Author Information and Acknowledgments.........................15
8 Full Copyright Statement.......................................17

1. Introduction ๐ŸŒˆ

okay so the Common Open Policy Service (COPS) protocol is a query response protocol, and its whole job is swapping policy information between a network policy server and a set of clients [COPS] ๐Ÿ’…. It's being built inside the RSVP Admission Policy Working Group (RAP WG) of the IETF, mainly as a way to do policy-based admission control over requests for network resources [RAP] โœจ.

this document is based on the RAP framework [RAP] and the basic COPS [COPS] protocol, so it assumes you already know those ๐Ÿงš. It gives specific usage directions for using COPS to hand off policy control decisions from RSVP clients (PEPs) to policy servers (PDPs) ๐Ÿ’œ.

given how COPS is designed, the RSVP directions are mostly about RSVP applicability, interoperability and usage guidelines, plus client specific examples ๐Ÿ“.

2. RSVP values for COPS objects ๐ŸŽ€

several COPS objects change their behaviour when the client type is RSVP, so this section explains those objects and how they get used ๐Ÿซถ.

2.1. Common Header, client-type ๐Ÿ”ฅ

RSVP is COPS client-type 1

2.2. Context Object (Context) ๐Ÿ’–

the Context object means something specific for RSVP, and here's how it works ๐Ÿ‘‘.

R-Type (Request Type Flag)

Incoming-Message request ๐Ÿ“ฅ

this context gets used when the PEP receives an incoming RSVP message. The PDP may decide to accept or reject the incoming message and may also apply other decision objects to it. If the incoming message is rejected, RSVP should treat it as if it never arrived ๐Ÿ™ˆ.

Resource-Allocation request ๐Ÿช™

this context gets used when the PEP is about to commit local resources to an RSVP flow (admission control). This context applies to Resv messages only. The decision whether to commit local resources is made for the merge of all reservations associated with an RSVP flow (which have arrived on a particular interface, potentially from several RSVP Next-Hops) โœจ.

Outgoing-Message request (forwarding an outgoing RSVP message) ๐Ÿ“ค

this context gets used when the PEP is about to forward an outgoing RSVP message. The PDP may decide to allow or deny the outgoing message, as well as provide an outgoing policy data object ๐ŸŒธ.

M-Type (Message Type)

the M-Type field in the Context Object identifies the applicable RSVP message type. M-Type values are identical to the values used in the "msg type" field in the RSVP header [RSVP] ๐Ÿง .

the following RSVP message types are supported in COPS:

  • Path
  • Resv
  • PathErr
  • ResvErr

other message types such as PathTear, ResvTear, and Resv Confirm are not supported ๐Ÿ™…โ€โ™€๏ธ. The list of supported message types can only be extended in later versions of RSVP and/or later version of this document ๐Ÿ”ฎ.

2.3. Client Specific Information (ClientSI) ๐Ÿง

all objects that were received in an RSVP message get wrapped up inside the Client Specific Information Object (Signaled ClientSI) and sent from the PEP to the remote PDP (see Section 3.1. on multiple flows packed in a single RSVP message) ๐Ÿ“ฆ.

the PEP and PDP share RSVP state, and the PDP is assumed to implement the same RSVP functional specification as the PEP. In the case where a PDP detects the absence of objects required by [RSVP] it should return an <Error> in the Decision message indicating "Mandatory client-specific info missing". If, on the other hand, the PDP detects the absence of optional RSVP objects that are needed to approve the Request against current policies, the PDP should return a negative <Decision> ๐Ÿšจ.

unlike the Incoming and Outgoing contexts, "Resource Allocation" is not always directly associated with a specific RSVP message. In a multicast session, it may represent the merging of multiple incoming reservations. Therefore, the ClientSI object should specifically contain the SESSION and STYLE objects along with the merged FLOWSPEC, FILTERSPEC list, and SCOPE object (whenever relevant) ๐Ÿฆ„.

2.4. Decision Object (Decision) ๐Ÿ‘‘

COPS gives the PDP flexible controls over the PEP, based on how RSVP responds to messages. While accepting an RSVP message, PDPs may provide preemption priority, trigger warnings, replace RSVP objects, and much more, using Decision Commands, Flags, and Objects ๐ŸŽฏ.

DECISION COMMANDS

only two commands apply to RSVP ๐Ÿ™Œ.

Install โœ…

Positive Response: Accept/Allow/Admit an RSVP message or local resource allocation.

Remove โŒ

Negative Response: Deny/Reject/Remove an RSVP message or local resource allocation.

DECISION FLAGS

the only decision flag that applies to RSVP is this one ๐Ÿšฉ.

Trigger Error โš ๏ธ

If this flag is set, RSVP should schedule a PathErr, in response to a Path message, or a ResvErr (in response of a Resv message).

STATELESS POLICY DATA

this object may include one or more policy elements (as specified for the RSVP Policy Data object [RSVP-EXT]) which are assumed to be well understood by the client's LPDP. The PEP should consider these as an addition to the decision already received from the PDP (it can only add, but cannot override it) ๐Ÿงฉ.

for example, given Policy Elements that specify a flow's preemption priority, these elements may be included in an incoming Resv message or may be provided by the PDP responding to a query ๐Ÿ’ซ.

stateless objects must be well understood, but not necessarily supported by all PEPs. For example, assuming a standard policy element for preemption priority, it is perfectly legitimate for some PEPs not to support such preemption and to ignore it. The PDP must be careful when using such objects. In particular, it must be prepared for these objects to be ignored by PEPs ๐Ÿซ .

Stateless Policy Data may be returned in decisions and apply individually to each of the contexts flagged in REQ messages. When applied to Incoming, it is assumed to have been received as a POLICY_DATA object in the incoming message. When applied to Resource Allocation it is assumed to have been received on all merged incoming messages. Last, when applied to outgoing messages it is assumed to have been received in all messages contributing to the outgoing message ๐Ÿ“š.

REPLACEMENT DATA

the Replacement object may contain multiple RSVP objects to be replaced (from the original RSVP request). Typical replacement is performed on the "Forward Outgoing" request (for instance, replacing outgoing Policy Data), but is not limited, and can also be performed on other contexts (such as "Resources-Allocation Request"). In other cases, replacement of the RSVP FlowSpec object may be useful for controlling resources across a trusted zone (with policy ignorant nodes (PINs)). Currently, RSVP clients are only required to allow replacement of three objects: POLICY_DATA, ERROR_SPEC, and FLOWSPEC, but could optionally support replacement of other objects ๐Ÿ”„.

RSVP object replacement is performed in the following manner ๐Ÿช„:

If no Replacement Data decision appears in a decision message, all signaled objects are processed as if the PDP was not there. When an object of a certain C-Num appears, it replaces ALL the instances of C-Num objects in the RSVP message. If it appears empty (with a length of 4) it simply removes all instances of C-Num objects without adding anything ๐Ÿงน.

3. Operation of COPS for RSVP PEPs ๐ŸŒท

3.1. RSVP flows ๐ŸŒŠ

Policy Control is performed per RSVP flow, which is defined by the atomic unit of an RSVP reservation (TC reservation). Reservation styles may also impact the definition of flows; a set of senders which are considered as a single flow for WF reservation are considered as a set of individual flows when FF style is used ๐Ÿ’Ž.

multiple FF flows may be packed into a single Resv message. A packed message must be unpacked where a separate request is issued for each of the packed flows as if they were individual RSVP messages. Each COPS Request should include the associated POLICY_DATA objects, which are, by default, all POLICY_DATA objects in the packed message. Sophisticated PEPs, capable of looking inside policy objects, may examine the POLICY_DATA or SCOPE object to narrow down the list of associated flows (as an optimization) ๐Ÿง โœจ.

please note that the rules governing Packed RSVP message apply equally to the Incoming as well as the Outgoing REQ context ๐Ÿฅฐ.

3.2. Expected Associations for RSVP Requests โœจ

okay so when the PDP is making a policy decision, it can look at both the Resv and its matching Path state (the associated state) ๐Ÿ‘€. In the common unicast case this is super straightforward, because an RSVP flow has one Path state and one Resv state, done ๐Ÿ’–. Multicast is where it gets messy, since the match can be many-to-many ๐ŸŒ€. The COPS protocol assumes the PDP is RSVP knowledgeable ๐Ÿง  and can work out these associations from the contents of the Client REQ message, especially the ClientSI object ๐ŸŽ€.

For example, the PDP should be able to recognize when RSVP blockade state gets activated or deactivated after discrete events, like the arrival of a ResvErr message (that activates the blockade state) ๐Ÿšซ, and also when the outgoing Resv message changes ๐Ÿ”„. bestie needs to be on top of this one ๐Ÿ’….

3.3. RSVP's Capacity Admission Control: Commit and Delete ๐Ÿ’ธ

Okay this part is giving admission control realness ๐Ÿ˜ค. In RSVP, admitting a new reservation needs BOTH an administrative approval (policy control) AND capacity admission control ๐Ÿซถ. Once it's approved by both, and the reservation is successfully installed, the PEP tells the remote PDP by sending a report message with the Commit type ๐ŸŽ‰. The Commit report is the signal for when billing should effectively begin, and it's the moment the PDP is allowed to do heavier delayed stuff, like debiting a credit card ๐Ÿ’ณโœจ.

Now, if a PDP-approved reservation fails admission because there aren't enough resources ๐Ÿ˜ญ, the PEP MUST issue a no-commit report and fold back, then send an updated request to its previous state (the previously installed reservation) ๐Ÿ”™. If no state was previously installed, the PEP SHOULD issue a delete (DRQ) ๐Ÿ—‘๏ธ.

3.4. Policy Control Over PathTear and ResvTear ๐Ÿ™…โ€โ™€๏ธ

PathTear and ResvTear messages are NOT controlled by this policy architecture ๐Ÿšซ. This relies on two assumptions ๐Ÿง. First, MD-5 authentication verifies that the Tear came from the same node that sent the initial reservation. Second, it's functionally equivalent to that node holding off refreshes for this reservation ๐Ÿ’ญ. When a ResvTear or PathTear arrives at the PEP, all affected states installed on the PDP SHOULD either be deleted or updated by the PEP ๐Ÿงน.

3.5. PEP Caching COPS Decisions ๐Ÿ“ฆ

Because COPS is stateful, Path and Resv refreshes don't need to be constantly sent to the remote PDP ๐Ÿ™Œ. Once a decision comes back for a request, the PEP can cache it and apply it to future refreshes ๐Ÿ’œ. When the PEP notices a change in the corresponding Resv or Path message, it SHOULD update the PDP with the new request-state ๐Ÿ”„. PEPs MAY keep using the cached state until they receive the PDP's response โณ. This case is very different from initial admission of a flow. Since valid credentials and authentication are already established, the RSVP refresh period is relatively long, and the PEP-PDP response time is short, the tradeoff between expedient updates and attack prevention leans toward expediency ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ. But honestly this is really a PEP choice and is irrelevant to PDPs ๐Ÿคทโ€โ™€๏ธ.

If the connection between the PEP and the PDP is lost, the cached RSVP state MAY be kept for the RSVP timeout period, to be used for previously admitted flows (but it can't be applied to new or updated state) ๐Ÿฅบ. If the connection can't be reestablished with the PDP or a backup PDP after the timeout period, the PEP is expected to purge all its cached decisions ๐Ÿงฝ. Without an applicable cached decision, the PEP MUST either reject the flow or fall back to its LPDP (if available) for decisions ๐Ÿšช.

Once a connection is reestablished with a new (or the original) PDP, the PDP MAY issue an SSQ request ๐Ÿ“จ. In this case, the PEP MUST reissue requests that correspond to the current RSVP state (as if all the state had been updated recently) ๐Ÿ”. It SHOULD also include, in its LPDPDecision, the current (cached) decision for each such state ๐ŸŽ€.

3.6. Using Multiple Context Flags in a single query ๐Ÿงฉ

RSVP is a store-and-forward control protocol where messages get processed in three distinct steps: input, resource allocation, and output ๐Ÿ“ฌ. Each step needs its own policy decision, indicated by context flags (see Section 2.2) ๐Ÿšฉ. In lots of cases, setting multiple context flags to bundle two or three operations into one request can seriously optimize things โšก.

The following rules apply when setting multiple Context flags:

  1. Multiple context flags can be set ONLY in two generic cases. These represent a big chunk of expected COPS transactions and can be guaranteed not to cause ambiguity ๐Ÿ’ฏ.

Unicast FF:

[Incoming + Allocation + Outgoing]

Multicast with only one Resv message received on the interface:

[Incoming + Allocation]
  1. Context events are ordered by time, since every message must first be processed as Incoming, then as Resource allocation, and only then as Outgoing โฐ. When multiple context flags are set, all ClientSI objects included in the request are assumed to be processed according to the LATEST flag ๐Ÿ. This rule applies to the request (REQ) context AND the decision (DEC) context ๐Ÿซถ.

For example, when combining Incoming + Allocation for an incoming Resv message, the flowspec included in the ClientSI is the one corresponding to the Resource-Allocation context (TC) ๐ŸŒŠ.

  1. Each decision is bound to a context object, which determines which portion of the request context it applies to ๐ŸŽฏ. When individual decisions apply to different sub-groups of the context, the PDP SHOULD send each group of decision objects encapsulated by the context flags object, with the context flags applicable to those objects set (see the examples in Section 5) ๐ŸŽ€.

3.7. RSVP Error Reporting ๐Ÿšจ

RSVP uses the ERROR_SPEC object in PathErr and ResvErr messages to report policy errors ๐Ÿ™ˆ. The contents of the ERROR_SPEC object are defined in [RSVP,RSVP-EXT], but the PDP is in the best position to provide its contents (sub-codes) ๐Ÿง โœจ. It works like this: first, the PEP (RSVP) queries the PDP before sending a PathErr or ResvErr, and then the PDP returns the constructed ERROR_SPEC in the Replacement Data Decision Object ๐Ÿ’Œ.

4. Security Considerations ๐Ÿ”

This document relies on COPS for its signaling AND its security ๐Ÿ›ก๏ธ. Please refer to the section "Security Considerations" in [COPS] ๐Ÿ“–.

Security for RSVP messages is provided by inter-router MD5 authentication [MD5], assuming a chain-of-trust model ๐Ÿ”—. A likely deployment scenario calls for PEPs to be deployed only at the network edge (boundary nodes), while the core of the network (backbone) consists of PIN nodes ๐Ÿฐ. In this scenario, MD5 trust (authentication) is established between boundary (non-neighboring) PEPs ๐Ÿค. Such trust can be achieved through internal signing (integrity) of the Policy Data object itself, which is left unmodified as it passes through PIN nodes (see [RSVP-EXT]) ๐Ÿ”.

5. Illustrative Examples, Using COPS for RSVP ๐ŸŽ€

This section details both typical unicast and multicast scenarios ๐Ÿ’•.

5.1. Unicast Flow Example ๐Ÿฆ‹

This section walks through the steps for using COPS to control a Unicast RSVP flow ๐Ÿ’…. It details the contents of the COPS messages with respect to Figure 1 ๐Ÿ“Š.

                        PEP (router)
                    +-----------------+
                    |                 |
     R1 ------------+if1           if2+------------ S1
                    |                 |
                    +-----------------+

       Figure 1: Unicast Example: a single PEP view

The PEP router has two interfaces (if1, if2) ๐Ÿ›œ. Sender S1 sends to receiver R1 ๐Ÿ“จ.

A Path message arrives from S1:

PEP --> PDP   REQ := <Handle A> <Context: in & out, Path>
                     <In-Interface if2> <Out-Interface if1>
                     <ClientSI: all objects in Path message>

PDP --> PEP   DEC := <Handle A> <Context: in & out, Path>
                     <Decision: Command, Install>

A Resv message arrives from R1:

PEP --> PDP   REQ := <Handle B>
                     <Context: in & allocation & out, Resv>
                     <In-Interface if1> <Out-Interface if2>
                     <ClientSI: all objects in Resv message>

PDP --> PEP   DEC := <Handle B>
                     <Context: in, Resv>
                     <Decision: command, Install>
                     <Context: allocation, Resv>
                     <Decision: command, Install>
                     <Decision: Stateless, Priority=7>
                     <Context: out, Resv>
                     <Decision: command, Install>
                     <Decision: replacement, POLICY-DATA1>

PEP --> PDP   RPT := <Handle B>
                     <Report type: commit>

Notice that the Decision was split because of the need to specify different decision objects for different context flags ๐Ÿ‘€โœจ.

Time passes, and the PDP changes its decision โฐ:

PDP --> PEP   DEC := <Handle B>
                     <Context: allocation, Resv>
                     <Decision: command, Install>
                     <Decision: Stateless, Priority=3>

Because the priority is too low, the PEP preempts the flow ๐Ÿ˜ฌ:

PEP --> PDP   DRQ := <Handle B>
                     <Reason Code: Preempted>

Time passes, and the sender S1 stops sending Path messages ๐Ÿ’ค:

PEP --> PDP   DRQ := <Handle A>
                     <Reason: Timeout>

5.2 Shared Multicast Flows โœจ

okay so this is where it gets spicy ๐ŸŒถ๏ธ we're doing multicast, which means one session with a whole crowd of receivers. This section walks through the COPS messages for one multicast RSVP flow, with Figure 2 as our map ๐Ÿ—บ๏ธ

                             PEP (router)
                         +-----------------+
                         |                 |
          R1-------------+ if1         if3 +--------- S1
                         |                 |
          R2----+        |                 |
                |        |                 |
                +--------+ if2         if4 +--------- S2
                |        |                 |
          R3----+        +-----------------+


           Figure 2: Multicast example: a single PEP view

Figure 2 is a PEP (router) with two senders (S1, S2) and three receivers (R1, R2, R3) all in the same multicast session ๐Ÿฆ‹ Interface if2 is hooked up to a shared media. We're assuming the multicast membership is already set up. No RSVP messages have come in yet, and the first one to show up is a Path message on interface if3 from sender S1 ๐ŸŽ€

    PEP --> PDP   REQ := <Handle A> <Context: in, Path>
                         <In-interface if3>
                         <ClientSI: all objects in incoming Path>

    PDP --> PEP   DEC := <Handle A> <Context: in, Path>
                         <Decision: command, Install>

The PEP checks its forwarding table and finds two outgoing interfaces for the path (if1, if2). The exchange below is for if1. The same exchange would then happen for if2, using the new handle B2 ๐Ÿ’…

    PEP --> PDP   REQ := <Handle B1> <Context: out, Path>
                         <Out-interface if1>
                         <clientSI: all objects in outgoing Path>

    PDP --> PEP   DEC := <Handle B1>
                         <Context: out, Path>
                         <Decision: command, Install>
                         <Decision: Replacement, POLICY-DATA1>

So the PDP said yes to forwarding the Path message and handed over the policy-data object for if1 โœจ

Next up, a WF Resv message from receiver R2 lands on interface if2 ๐Ÿซถ

    PEP --> PDP   REQ := <Handle C> <Context: in & allocation, Resv>
                         <In-interface if2>
                         <ClientSI: all objects in Resv message
                          including RSpec1 >

    PDP --> PEP   DEC := <Handle C>
                         <Context: in, Resv>
                         <Decision: command, Install>
                         <Context: allocation, Resv>
                         <Decision: command, Install>
                         <Decision: Stateless, priority=5>

    PEP --> PDP   RPT := <handle C> <Commit>

The PDP approves the reservation and gives it a preemption priority of 5 ๐Ÿ‘‘ The PEP answers with a commit report, and we're giving it a whole standing ovation ๐Ÿ‘

Now the PEP has to forward that Resv message upstream toward S1 ๐Ÿš€

    PEP --> PDP   REQ := <Handle E> <Context: out, Resv>
                         <out-interface if3>
                         <Client info: all objects in outgoing Resv>

    PDP --> PEP   DEC := <Handle E>
                         <Context: out, Resv>
                         <Decision: command, Install>
                         <Decision: replacement, POLICY-DATA2>
Note: The Context object is still in this DEC message even though it might look redundant, since the REQ only specified one context flag.

Next, a new WF Resv message from receiver R3 arrives on if2, and this one asks for a higher RSpec (Rspec2) ๐Ÿ˜ค Since two reservations are now coming in on if2, the PEP can't bundle several context flags into one request. It has to send them one at a time ๐Ÿ“

The PEP sends a fresh request with a new context object <Context: in , Resv>, and gets back a DEC for it:

    PEP --> PDP   REQ := <Handle F> <Context: in , Resv>
                         <In-interface if2>
                         <ClientSI: all objects in Resv message
                          including RSpec2 >

    PDP --> PEP   DEC := <Handle F> <Context: in , Resv>
                         <Decision: command, Install>

    PEP --> PDP   REQ := <Handle G> <Context: allocation, Resv>
                         <In-interface if2>
                         <ClientSI: all objects in merged Resv
                          including RSpec2 >

    PDP --> PEP   DEC := <Handle G>
                         <Context: allocation, Resv>
                         <Decision: command, Install>
                         <Decision: Stateless, Priority=5>

    PEP --> PDP   RPT := <handle G> <Commit>

Since the incoming reservations changed, the PEP has to send a new outgoing Resv upstream toward S1 ๐Ÿ” This is basically the same back-and-forth as Handle E, except the ClientSI objects now include both merged reservations ๐Ÿงš

If an ResvErr comes in from S1, the PEP only maps it to R3, because R3 has the higher flowspec (Rspec2). Here's how that goes down ๐Ÿ’”

    PEP --> PDP   REQ := <Handle H> <Context: in, ResvErr>
                         <In-interface if3>
                         <ClientSI: all objects in incoming ResvErr>

    PDP --> PEP   DEC := <Handle H> <Context: in, ResvErr>
                         <Decision: command, Install>

    PEP --> PDP   REQ := <Handle I> <Context: out, ResvErr>
                         <Out-interface if2>
                         <ClientSI: all objects in outgoing ResvErr>

    PDP --> PEP   DEC := <Handle I>
                         <Context: out, ResvErr>
                         <Decision: command, Install>
                         <Decision: Replacement, POLICY-DATA3>

And when S2 joins the session by sending a Path message, the PEP sends incoming and outgoing Path requests for that new Path. A new outgoing Resv request goes to S2 too ๐ŸŒˆ


6 References ๐Ÿ“š

[RSVP-EXT] Herzog, S., "RSVP Extensions for Policy Control", RFC
           2750, January 2000.

[RAP]      Yavatkar, R., Pendarakis, D. and R. Guerin, "A Framework
           for Policy Based Admission Control", RFC 2753, January
           2000.

[COPS]     Boyle, J., Cohen, R., Durham, D., Herzog, S., Raja, R. and
           A. Sastry, "The COPS (Common Open Policy Service)
           Protocol", RFC 2748, January 2000.

[RSVP]     Braden, R., Zhang, L., Berson, S., Herzog, S. and S.
           Jamin, "Resource ReSerVation Protocol (RSVP) - Functional
           Specification", RFC 2205, September 1997.

7 Author Information and Acknowledgments ๐Ÿซถ

Special thanks to Andrew Smith and Timothy O'Malley, our WG Chairs, and to Fred Baker, Laura Cunningham, Russell Fenger, Roch Guerin, Ping Pan, and Raj Yavatkar, for their valuable contributions ๐ŸŒธ

Jim Boyle
Level 3 Communications
1025 Eldorado Boulevard
Broomfield, CO 80021

Phone: 720.888.1192
EMail: jboyle@Level3.net


Ron Cohen
CISCO Systems
4 Maskit St.
Herzeliya Pituach 46766 Israel

Phone: 972.9.9700064
EMail: ronc@cisco.com


David Durham
Intel
2111 NE 25th Avenue
Hillsboro, OR 97124

Phone: 503.264.6232
EMail: David.Durham@intel.com


Raju Rajan
AT&T Labs Research
180 Park Ave., P.O. Box 971
Florham Park, NJ 07932

Phone: 973.360.7229
EMail: raju@research.att.com

Shai Herzog
IPHighway, Inc.
55 New York Avenue
Framingham, MA 01701

Phone: 508.620.1141
EMail: herzog@iphighway.com


Arun Sastry
Cisco Systems
4 The Square
Stockley Park
Uxbridge, Middlesex UB11 1BN
UK

Phone: +44-208-756-8693
EMail: asastry@cisco.com

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

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement ๐Ÿ’œ

Funding for the RFC Editor function is currently provided by the Internet Society โœจ

๐Ÿ“ฆ where this page comes from