From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc2125.txt | 1347 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1347 insertions(+) create mode 100644 doc/rfc/rfc2125.txt (limited to 'doc/rfc/rfc2125.txt') diff --git a/doc/rfc/rfc2125.txt b/doc/rfc/rfc2125.txt new file mode 100644 index 0000000..12abd07 --- /dev/null +++ b/doc/rfc/rfc2125.txt @@ -0,0 +1,1347 @@ + + + + + + +Network Working Group C. Richards +Request for Comments: 2125 Shiva Corporation +Category: Standards Track K. Smith + Ascend Communications, Inc. + March 1997 + + + The PPP Bandwidth Allocation Protocol (BAP) + The PPP Bandwidth Allocation Control Protocol (BACP) + +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. + +Abstract + + This document proposes a method to manage the dynamic bandwidth + allocation of implementations supporting the PPP multilink protocol + [2]. This is done by defining the Bandwidth Allocation Protocol + (BAP), as well as its associated control protocol, the Bandwidth + Allocation Control Protocol (BACP). BAP can be used to manage the + number of links in a multilink bundle. BAP defines datagrams to co- + ordinate adding and removing individual links in a multilink bundle, + as well as specifying which peer is responsible for which decisions + regarding managing bandwidth during a multilink connection. + +Table of Contents + + 1. Introduction .......................................... 2 + 1.1 Specification of Requirements ................... 2 + 1.2 Terminology ..................................... 3 + 2. New LCP Configuration Option .......................... 3 + 2.1 Link Discriminator .............................. 3 + 3. BACP Operation ........................................ 4 + 4. BACP Configuration Options ............................ 5 + 4.1 Favored-Peer .................................... 5 + 5. BAP Operation ......................................... 7 + 5.1 Link Management ................................. 7 + 5.2 Bandwidth Management ............................ 8 + 5.3 BAP Packets ..................................... 8 + 5.4 Race Conditions ................................. 9 + 5.5 BAP Datagram Format ............................. 9 + 5.5.1 Call-Request .................................... 12 + 5.5.2 Call-Response ................................... 12 + + + +Richards & Smith Standards Track [Page 1] + +RFC 2125 PPP BACP March 1997 + + + 5.5.3 Callback-Request ................................ 13 + 5.5.4 Callback-Response ............................... 13 + 5.5.5 Link-Drop-Query-Request ......................... 13 + 5.5.6 Link-Drop-Query-Response ........................ 13 + 5.5.7 Call-Status-Indication .......................... 14 + 5.5.8 Call-Status-Response ............................ 14 + 6. BAP Datagram Options .................................. 14 + 6.1 Link-Type ....................................... 15 + 6.2 Phone-Delta ..................................... 17 + 6.2.1 Phone-Delta Sub-Options ......................... 18 + 6.3 No-Phone-Number-Needed .......................... 19 + 6.4 Reason .......................................... 20 + 6.5 Link-Discriminator .............................. 21 + 6.6 Call-Status ..................................... 21 + Appendix - List of BAP datagrams and associated fields ....... 23 + ACKNOWLEDEMENTS .............................................. 23 + SECURITY CONSIDERATIONS ...................................... 23 + REFERENCES ................................................... 24 + CHAIR'S ADDRESS .............................................. 24 + EDITORS'S ADDRESSES .......................................... 24 + +1. Introduction + + As PPP multilink implementations become increasingly common, there is + a greater need for some conformity in how to manage bandwidth over + such links. BACP and BAP provide a flexible yet robust way of + managing bandwidth between 2 peers. BAP does this by defining Call- + Control packets and a protocol that allows peers to co-ordinate the + actual bandwidth allocation and de-allocation. Phone number deltas + may be passed in the Call-Control packets to minimize the end user's + configuration. + +1.1. Specification of Requirements + + In this document, several words are used to signify the requirements + of the specification. These words are often capitalized. + + MUST This word, or the adjective "required", means that the + definition is an absolute requirement of the specification. + + MUST NOT This phrase means that the definition is an absolute + prohibition of the specification. + + SHOULD This word, or the adjective "recommended", means that there + may exist valid reasons in particular circumstances to + ignore this item, but the full implications must be + understood and carefully weighed before choosing a + different course. + + + +Richards & Smith Standards Track [Page 2] + +RFC 2125 PPP BACP March 1997 + + + MAY This word, or the adjective "optional", means that this + item is one of an allowed set of alternatives. An + implementation which does not include this option MUST be + prepared to interoperate with another implementation which + does include the option. + +1.2. Terminology + + This document frequently uses the following terms: + + peer The other end of the point-to-point link + + silently discard + This means the implementation discards the packet without + further processing. The implementation SHOULD provide the + capability of logging the error, including the contents of the + silently discarded packet, and SHOULD record the event in a + statistics counter. + + BOD (bandwidth on demand) + BOD refers to the ability of a system to allocate and remove + links in a multilink system to change the bandwidth of a + multilink bundle. This may be done in response to changing + line conditions and it also may be done in response to changing + resource conditions. In either case, changing bandwidth + dynamically during a multilink connection is referred to as + BOD. + +2. New LCP Configuration Option + + Implementations MUST implement LCP as defined in [1]. LCP MUST be in + the Network-Layer Protocol phase before BACP can be negotiated. + +2.1. Link Discriminator + + Description + + This LCP Configuration Option is used to declare a unique + discriminator for the link that the option is sent over. This + option MUST be negotiated by LCP on every link. BAP uses the link + discriminator to differentiate the various links in a multilink + bundle. Each link in a multilink bundle MUST have a unique + discriminator. The discriminator is independent for each peer, so + each link may have 2 different LCP Link Discriminator values, one + for each peer. When the Link Discriminator is sent in a BAP + packet, the transmitter sends the Link Discriminator Option value + received from its peer in the peer's LCP Configure Request packet. + + + + +Richards & Smith Standards Track [Page 3] + +RFC 2125 PPP BACP March 1997 + + + A summary of the Link Discriminator LCP Option format is shown below. + The fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Link Discriminator | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 23 for Link Discriminator option. + + Length + + 4 + + Link Discriminator + + The Link Discriminator field is 2 octets in Length, and it + contains a unique identifier used to indicate a particular link in + a multilink bundle. The Link Discriminator for a link MUST be + unique among the Link Discriminators assigned by this endpoint for + this bundle. The Link Discriminator MAY be assigned in a + sequential, monotonically increasing manner. + +3. BACP Operation + + BACP uses the same packet exchange mechanism as the Link Control + Protocol defined in [1]. BACP packets MUST NOT be exchanged until + PPP has reached the Network-Layer Protocol phase. BACP packets + received before this phase is reached should be silently discarded. + + BACP is negotiated once per multilink bundle. If BACP is negotiated + on any of the links in a multilink bundle, it is opened for all of + the links in the bundle. + + The Bandwidth Allocation Control Protocol is exactly the same as the + Link Control Protocol [1] with the following exceptions: + + Data Link Layer Protocol Field + + Exactly one BACP packet is encapsulated in the Information + field of PPP Data Link Layer frames where the Protocol field + indicates Type hex c02b (Bandwidth Allocation Control + Protocol). + + + + + +Richards & Smith Standards Track [Page 4] + +RFC 2125 PPP BACP March 1997 + + + Code field + + Only Codes 1 through 7 (Configure-Request, Configure-Ack, + Configure-Nak, Configure-Reject, Terminate-Request, Terminate- + Ack and Code-Reject) are used. Other Codes should be treated + as unrecognized and should result in Code-Rejects. + + Configuration Option Types + + BACP has a distinct set of Configuration Options, which are + defined in the next section. + +4. BACP Configuration Options + + BACP Configuration Options allow negotiation of desirable BACP + parameters. These options are used in Config-Request, Config-Ack, + Config-Nak, and Config-Reject packets. BACP uses the same + Configuration Option format defined for LCP [1], with a seperate set + of Options. + + Current values of BACP Configuration Options are assigned as follows: + + 1 Favored-Peer + +4.1. Favored-Peer + + Description + + This Configuration Option is used to determine which peer is + favored in the event of a race condition in which 2 peers + simultaneously transmit the same BAP request. Each peer + negotiates a 4 octet magic number, which is successfully + negotiated when the 2 Magic-Numbers are different. The favored + peer is the peer that transmits the lowest Magic-Number in its + Favored-Peer Configuration Option. + + The Favored-Peer Configuration Option MUST be implemented. + + + + + + + + + + + + + + +Richards & Smith Standards Track [Page 5] + +RFC 2125 PPP BACP March 1997 + + + BACP will usually be negotiated after only one link of a multilink + bundle has reached the Network-Layer Protocol phase. In this + situation, it is acceptable for the peer that initiated the + connection to use a Magic-Number of 1, and the peer that responded + to the connection to use a Magic-Number of 0xFFFFFFFF. If a + multilink bundle has been established with links that were + originated by each peer, or if it is not clear which peer has + initiated a link (on a leased line, for example), then a random + number MUST be used for the Magic-Number. Refer to the + description of the LCP Magic-Number Configuration Option in [1] + for an explanation of how to create a useful random number. + + When a Configure-Request is received with a Favored-Peer + Configuration Option, the received Magic-Number is compared with + the Magic-Number of the last Configure-Request sent to the peer. + If the two Magic-Numbers are different, then the Favored-Peer + negotiation has been successful, and the Favored-Peer Option + SHOULD be acknowledged. If the two Magic-Numbers are equal, a + Configure-Nak MUST be sent specifying a different Magic-Number + value. A new Configure-Request SHOULD NOT be sent to the peer + until normal processing would cause it to be sent (that is, until + a Configure-Nak is received or the Restart timer runs out). + + A summary of the Favored-Peer Option format is shown below. The + fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Magic-Number + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + Magic-Number (cont) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 1 for Favored-Peer + + Length + + 6 + + Magic-Number + + The Magic-Number field is four octets, and indicates a number + which is very likely to be unique to one end of the link. A + Magic-Number of zero is illegal and MUST always be Nak'd. + + + + +Richards & Smith Standards Track [Page 6] + +RFC 2125 PPP BACP March 1997 + + +5. BAP Operation + +5.1. Link Management + + BAP defines packets, parameters and negotiation procedures to allow + two endpoints to negotiate gracefully adding and dropping links from + a multilink bundle. An implementation can: + + o Request permission to add a Link to a bundle (Call-Request) + + o Request that the peer add a link to a bundle via a callback + (Callback-Request) + + o Negotiate with the peer to drop a link from a bundle (this + implies that the peer can refuse) (Link-Drop-Query-Request) + + After BACP reaches the opened state, either peer MAY request that + another link be added to the bundle by sending a BAP Call- or + Callback-Request packet. A Call-Request packet is sent if the + implementation wishes to originate the call for the new link, and a + Callback-Request packet is sent if the implementation wishes its peer + to originate the call for the new link. The implementation receiving + a Call- or Callback-Request MUST respond with a Call- or Callback- + Response with a valid Response Code. + + After BACP reaches the opened state, either peer MAY request that a + link be dropped from the bundle. A BAP Link-Drop-Query-Request + packet is sent to the peer to negotiate dropping a link. The peer + MUST respond with a Link-Drop-Query-Response. If the peer is + agreeable to dropping the link the implementation MUST issue an LCP + Terminate-Request to initiate dropping the link. + + If an implementation wishes to force dropping a link without + negotiation, it should simply send an LCP Terminate-Request packet on + the link (without sending any BAP Link-Drop-Query-Request). + + After an LCP Terminate-Request is sent an implementation SHOULD stop + transmitting data packets on that link, but still continue to receive + and process data packets normally until receipt of a Terminate-Ack + from the peer. The receiver of an LCP Terminate-Request SHOULD stop + transmitting packets before issuing the Terminate-Ack. This + procedure will insure that no data is lost in either direction. + + + + + + + + + +Richards & Smith Standards Track [Page 7] + +RFC 2125 PPP BACP March 1997 + + +5.2. Bandwidth Management + + BAP allows two peer implementations to manage the bandwidth available + to the protocols using the multilink bundle by negotiating when to + add and drop links (See Link Management). Use of the negotiation + features of BAP makes it unnecessary to require a 'common' algorithm + for determining when to add and remove links in a multilink bundle. + + BOD decisions can be based on link utilization. A BAP implementation + may monitor its transmit traffic, both transmit and receive traffic, + or choose not to monitor traffic in either direction. If a server + system implements bi-directional monitoring, it will allow BOD + operation with a client that does not monitor traffic in either + direction, which will minimize the end-user's configuration. When an + implementation decides that it is time to remove a link due to + traffic monitoring, it MUST transmit a Link-Drop-Query-Request to + inquire if the peer agrees to drop a link from the current multilink + bundle. When an implementation receives a Link-Drop-Query-Request, + it SHOULD base its response on the traffic it is monitoring. It MUST + NOT base its response solely on its receive data heuristics. + + The operation of the Link-Drop-Query-Request and -Response datagrams + causes a link in a multilink bundle to be left up as long as either + implementation that is monitoring link utilization determines that it + is necessary. + + BOD decisions can also be based on the resources (e.g., physical + port, B-channel, etc.) available to an implementation. For example, + an implementation might remove a link from a multilink bundle to + answer an incoming voice call, or might add a link when a line + becomes free due to the termination of a separate PPP call on another + port. An implementation MUST use an LCP Terminate-Request to remove + a link due to a resource condition. + +5.3. BAP Packets + + All of the BAP Request and Indication packets require a Response + packet in response before taking any action. + + An implementation MUST set a timer when sending a Request or + Indication packet. The value of this timer SHOULD depend on the type + and speed of the link or links in use. Upon expiration of this + timer, the implementation MUST retransmit the request or indication, + with an identical identification number. This procedure will insure + that the peer receives the proper request or indication even if a + packet is lost during transmission. If a response packet is lost the + peer will realize that this is not a new request or indication + packet. + + + +Richards & Smith Standards Track [Page 8] + +RFC 2125 PPP BACP March 1997 + + + If the number of retransmissions exceeds the number supported by the + implementation for this packet, the implementation MAY take + appropriate recovery action. For example, if no response to a Link- + Drop-Query-Request is received after 2 retransmissions, an + implementation MAY initiate dropping the link by sending an LCP + Terminate-Request for that link. + + Since BAP packets help determine the amount of bandwidth available to + an implementation, PPP SHOULD give them priority over other data + packets when transmitting. This will help insure the prompt addition + and removal of links in a multilink bundle. This is especially + important when adding links to a bundle due to bandwidth constraints. + +5.4. Race Conditions + + In order to resolve race conditions, an implementation MUST implement + the BACP Favored-Peer Configuration Option. + + A race condition can occur if both implementations send a Call- + Request, Callback-Request or Link-Drop-Query-Request at the same + time. These race conditions should be solved as follows: + + If each implementation sends a Call-Request or Callback-Request at + the same time, the implementation with the lowest BACP Favored- + Peer Magic-Number value SHOULD be favored. + + If each implementation sends a Link-Drop-Query-Request at the same + time, the same scheme SHOULD be used as for Call-Requests. + +5.5. BAP Datagram Format + + Description + + Before any BAP packets may be communicated, PPP MUST reach the + Network-Layer Protocol phase, and BACP MUST reach the opened + state. + + Exactly one BAP packet is encapsulated in the Information field of + PPP Data Link Layer frames where the Protocol field indicates type + hex c02d (Bandwidth Allocation Protocol). + + Because ISDN Terminal Adapters sometimes are used to do multilink + with a non-multilink aware client, BAP datagrams MUST NOT be + compressed or encrypted. Otherwise, the ISDN TA may not be able + to properly intercept BAP datagrams needed to control the + multilink connection. This refers to compression of the whole + datagram; Address-and-Control-Field-Compression and Protocol- + Field-Compression are allowed if properly negotiated. + + + +Richards & Smith Standards Track [Page 9] + +RFC 2125 PPP BACP March 1997 + + + The maximum length of a BAP packet transmitted over a PPP link is + the same as the maximum length of the Information field of a PPP + data link layer frame. + + Bandwidth Allocation Protocol datagrams can be catagorized as + either Request, Indication or Response packets. Every Request and + Indication datagram has a corresponding Response packet. Request + and Indication datagrams have a slightly different format from + Response datagrams, as the Response datagrams include a Response + Code octet. + + All of the BAP datagrams MUST be supported by an implementation. + However, that does not mean an implementation must support all BAP + datagram actions. An implementation MAY send a Request-Rej to a + Request that it does not implement. + + A summary of the Bandwidth Allocation Protocol datagram Request and + Indication packet format is shown below. The fields are transmitted + from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Identifier | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data ... + +-+-+-+-+-+-+-+-+ + + A summary of the Bandwidth Allocation Protocol datagram Response + packet format is shown below. The fields are transmitted from left + to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Identifier | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Response Code | Data ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + The Type field is one octet and identifies the type of BAP + datagram packet. Datagram types are defined as follows. This + field is coded in binary coded hexadecimal. + + + + + + +Richards & Smith Standards Track [Page 10] + +RFC 2125 PPP BACP March 1997 + + + 01 Call-Request + 02 Call-Response + 03 Callback-Request + 04 Callback-Response + 05 Link-Drop-Query-Request + 06 Link-Drop-Query-Response + 07 Call-Status-Indication + 08 Call-Status-Response + + The various types of BAP datagrams are explained in the following + sections. + + Identifier + + The Identifier field is one octet and is binary coded. It aids in + matching Requests and Indications with Responses. Call-Status- + Indication packets MUST use the same Identifier as was used by the + original Call-Request or Callback-Request that was used to + initiate the call. All other Request or Indication packets MUST + use a unique Identifier for each new Request or Indication. All + Response packets MUST use the same Identifier as the Identifier in + the Request or Indication packet being responded to. When re- + transmitting a request or indication, the Identifier MUST be the + same as the Identifier used on the previous transmission of the + request or indication. + + Length + + The Length field is two octets and indicates the length of the + packet including the Type, Identifier, Length and Options fields. + It is binary encoded. Octets outside the range of the Length field + should be treated as Data Link Layer padding and should be ignored + on reception. + + Response Code + + The Response Code is only present in Response datagrams. It is + binary coded and can have the following values: + + 00000000 Request-Ack + 00000001 Request-Nak + 00000010 Request-Rej + 00000011 Request-Full-Nak + + The Request-Ack Response Code is sent to indicate that the Request + or Indication command is valid and was successfully received by an + implementation. The Request-Nak Response Code is sent to indicate + that the Request command was received, but an implementation does + + + +Richards & Smith Standards Track [Page 11] + +RFC 2125 PPP BACP March 1997 + + + not want the requested action performed at this time. If a + Response containing a Request-Nak Response Code is received, the + original Request MAY be retried after an implementation determines + that sufficient time has elapsed. The Request-Rej Response Code + is sent to indicate that the Request command received by an + implementation is not implemented (i.e., if reception of a + particular request type is not supported by the peer.) The + Request-Full-Nak Response Code is sent to indicate that the + Request command was received, but an implementation does not want + the requested action performed. The Request-Full-Nak is used to + indicate that an implementation has reached the maximum (for a + Call- or Callback-Request) or the minimum (for a Link-Drop-Query- + Request) bandwidth configured or available for this multilink + bundle. If a Response containing a Request-Full-Nak Response Code + is received, the original Request SHOULD NOT be retried until the + total bandwidth of the multilink bundle has changed. + + Data + + The Data field is variable in length, and will usually contain the + list of zero or more BAP Options that the sender desires to + transmit. The format of BAP Options is described in a later + chapter. + +5.5.1. Call-Request + + Before originating a call to add another link to a multilink bundle, + an implementation MUST transmit a Call-Request packet. This will + inform the receiver of the request to add another link to the bundle + and give the receiver a chance to inform the implementation of the + phone number of a free port that can be called. + + The options field MUST include the Link-Type option. The options + field MAY include the No-Phone-Number and/or the Reason options. + + Upon reception of a Call-Request, a Call-Response datagram MUST be + transmitted. + +5.5.2. Call-Response + + An implementation MUST transmit a Call-Response datagram in response + to a received Call-Request datagram. If the Call-Request is + acceptable, the Call-Response MUST have a Response Code of Request- + Ack. The Phone-Delta option MUST be included in a Call-Response + packet with a Response Code of Request-Ack unless the Call-Request + included the No-Phone-Number option. The options field MAY include + the Reason and/or Link-Type options. + + + + +Richards & Smith Standards Track [Page 12] + +RFC 2125 PPP BACP March 1997 + + +5.5.3. Callback-Request + + An implementation that wants its peer to originate another link to + add to the multilink bundle MUST transmit a Callback-Request packet + to its peer. This will inform the receiver of the request to add + another link to the bundle along with the number to be called. + + The options field MUST include the Link-Type and Phone-Delta options. + The Reason option MAY also be included. + + Upon reception of a Callback-Request, a Callback-Response datagram + MUST be transmitted. + +5.5.4. Callback-Response + + An implementation MUST transmit a Callback-Response datagram in + response to a received Callback-Request datagram. If the Callback- + Request is acceptable, the Callback-Response MUST have a Response + Code of Request-Ack. A Callback-Response packet MAY include the + Link-Type option. + +5.5.5. Link-Drop-Query-Request + + An implementation that determines that a link is no longer needed and + wishes to negotiate dropping it (e.g., based on a throughput BOD + decision), MUST transmit a Link-Drop-Query-Request packet. The + options field MUST include the Link-Discriminator option (containing + the receiver's Link-Discriminator), and MAY include the Reason + option. + + Upon reception of a Link-Drop-Query-Request, an implementation MUST + transmit a Link-Drop-Query-Response datagram. The Response-Code will + be Request-Ack if it agrees to drop the link; if it does not agree to + drop the link the Response-Code will be Request-Nak or Request-Full- + Nak. After the receipt of a Link-Drop-Query-Response with a Response + Code of Request-Ack, the transmitter of the Link-Drop-Query-Request + MUST initiate tear down of the indicated link by sending an LCP + Terminate-Request packet on the designated link. + +5.5.6. Link-Drop-Query-Response + + An implementation transmits a Link-Drop-Query-Response datagram in + response to a received Link-Drop-Query-Request datagram. If the + implementation agrees (e.g., based on its throughput BOD algorithm) + to reduce the bandwidth of the multilink bundle, then the Response + Code MUST be set to Request-Ack. + + + + + +Richards & Smith Standards Track [Page 13] + +RFC 2125 PPP BACP March 1997 + + + The Reason option MAY be included in the Link-Drop-Query-Response + packet. + + The Link-Drop-Query-Request datagram MUST be supported, as well as + the underlying implementation to respond to it. This means that a + Link-Drop-Query-Response with a Response Code of Request-Rej MUST NOT + be transmitted in response to a Link-Drop-Query-Request. + +5.5.7. Call-Status-Indication + + After an implementation attempts to add a link to a bundle as the + result of a Call-Request or a Callback-Request, it MUST send a Call- + Status-Indication packet to its peer to indicate if the attempt to + add the link succeeded or failed. One Indication MUST be sent for + each attempt made. For each Call-Status-Indication packet transmitted + with the Call-Status Option Action octet set to Retry, a subsequent + Call-Status-Indication packet MUST be sent to indicate the success or + failure of the retry. The Call-Status option MUST be included to + inform the receiver of the status of the attempt to add a link and + the action the implementation will take in case of failure. The + reason option MAY also be included in the Call-Status-Indication + packet. + + Upon reception of a Call-Status-Indication packet which indicates a + failure, an implementation may log the failure and reason code. Upon + reception of any Call-Status-Indication packet, a Call-Status- + Response datagram MUST be transmitted. + +5.5.8. Call-Status-Response + + An implementation transmits a Call-Status-Response datagram in + response to a received Call-Status-Indication datagram. The Response + Code field MUST be set to Request-Ack in this packet. The Reason + option MAY be included in this packet. + +6. BAP Datagram Options + + BAP Datagram Options are used in various BAP packets. Their use in + various packets is as defined below. The format of these options + loosely follows the formatting conventions of LCP Configuration + Options. When there are multiple BAP Options in one BAP packet, the + options MAY be transmitted in any order. + + + + + + + + + +Richards & Smith Standards Track [Page 14] + +RFC 2125 PPP BACP March 1997 + + + A summary of the BAP Option format is shown below. The fields are + transmitted from left to right. + + 0 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Data ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Type + + The type field is one octet, and indicates the type of the BAP + Datagram Option. This field is binary coded Hexadecimal. The + following options are currently defined: + + 01 Link-Type + 02 Phone-Delta + 03 No-Phone-Number-Needed + 04 Reason + 05 Link-Discriminator + 06 Call-Status + + + Length + + The Length field is one octet, and indicates the length of this + BAP Option including the Type, Length, and Data fields. + + Data + + The Data field is zero or more octets, and contains information + specific to the BAP Option. The format and length of the Data + field is determined by the Type and Length fields. + +6.1. Link-Type + + Description + + This option indicates the general type of link indicated for the + operation being performed. This option does not indicate a + specific link type, rather it gives some general characteristics + of the desired link type. This option MAY be used along with + other knowledge (i.e., the type of the other link(s) in the bundle + or user configuration) to determine the type of link desired to be + used in the operation. It MUST be included in a Call- or + Callback-Request, and MAY be included in a Call- or Callback- + Response. + + + +Richards & Smith Standards Track [Page 15] + +RFC 2125 PPP BACP March 1997 + + + A summary of the Link-Type BAP Option format is shown below. The + fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Link Speed (kbps) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link Type | + +-+-+-+-+-+-+-+-+ + + Type + + 01 for Link-Type. + + Length + + The Length field is one octet, and indicates the length of this + BAP Option including the Type, Length and Link Type fields. + + Link Speed + + The Link Speed field is 2 octets, and indicates the requested + speed of the desired link in kilobits per second. This field is + coded as 2 binary coded hexadecimal octets, with the most + significant octet sent first. + + Link Type + + The Link Type field is a bit mask. It is 1 octet in length. Bit + 0 of the Link Type field corresponds to bit 39 of the Link-Type + BAP Option as described above. If a bit is set, it indicates + support of the corresponding link type. If the link indicated is + different than the supported link types, no bit will be set. + Otherwise, at least one bit MUST be set. If an implementation + supports more than one link type, more than one bit MAY be set. + + Bit Link type + --- ------------- + 0 ISDN + 1 X.25 + 2 analog + 3 switched digital (non-ISDN) + 4 ISDN data over voice + 5-7 reserved + + If the Length field contains more bits than are defined by this + specification, then any bits that are not defined should be + + + +Richards & Smith Standards Track [Page 16] + +RFC 2125 PPP BACP March 1997 + + + ignored. In order to allow for future expansion of this field, it + is important to properly support receiving a Link Type field + longer than what is defined by this specification. If the Length + field is shorter than the number of bits defined, then the + implementation should set all bits not received to 0. + +6.2. Phone-Delta + + Description + + The BAP Phone-Delta Option is used by an implementation to give + its peer the information needed to make a call. Due to the + difficulty of determining which dialing prefixes (if any) are + necessary to dial a given phone number/national destination + code/country code combination, the phone number to be dialed will + be based on a previously known number. This MAY be the original + number used to establish the first link of the multilink bundle, a + number configured by the user, the phone number used to make a + callback connection, or a number determined in some other way. + The Phone-Delta Option will consist of a Subscriber-Number Sub- + Option along with a Unique-Digits Sub-Option that indicates how + many of the digits of the Subscriber-Number are unique among the + ports in use, previously used, and to be used in the multilink + bundle. There is also an optional Phone-Number-Sub-Address Sub- + Option. + + An implementation MAY include more than one Phone-Delta option in + a response. This indicates that there is more than one phone + number that can be used for the requested operation. The Phone- + Delta option MUST appear in a Callback-Request. It also MUST + appear in a Call-Response with a Response Code set to Request-Ack + if the Call-Request did not contain the No-Phone-Number option. + It MAY be included in the Call-Status-Indication packet. + + A summary of the Phone-Delta BAP Option format is shown below. The + fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length |Sub-Option Type| Sub-Option Len| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sub-Option... + +-+-+-+-+-+-+-+-+ + + Type + + 02 for Phone-Delta. + + + +Richards & Smith Standards Track [Page 17] + +RFC 2125 PPP BACP March 1997 + + + Length + + The Length field is one octet, and indicates the length of this + BAP Option including the Type, Length, and Sub-Option fields. + + Sub-Option Type + + The following Sub-Option Types are defined for the Phone-Delta + option. + + 01 Unique-Digits + 02 Subscriber-Number + 03 Phone-Number-Sub-Address + + Sub-Option Length + + The Sub-Option Length field is one octet, and indicates the length + of this BAP Sub-Option including the Sub-Option Type, Sub-Option + Length, and Sub-Option fields. + +6.2.1. Phone-Delta Sub-Options + + Unique-Digits + + The Unique-Digits Sub-Option field consists of one octet that is a + count of the number of rightmost digits of the Subscriber-Number + that are different from the set of phone numbers of the ports used + in this multilink connection. (For example, if the first port of + a multilink bundle has a phone number of 123456789, and an + implementation wanted its peer to call a port with a phone number + of 123456888, the Unique-Digits octet would be 3.) If the Phone- + Number-Sub-Address Sub-Option is present, the Unique-Digits Sub- + Option MUST NOT include any of the Sub Address digits in its count + of different rightmost digits. + + This field is required. + + Subscriber-Number + + This field is the phone number of the port that should be called + by the peer. Any digits that precede the rightmost unique digits + of the Subscriber-Number are provided for informational purposes + only, and do not need to be included in this field. This field is + an ASCII string and MUST contain only ASCII characters indicating + valid phone number digits. This field is required. + + + + + + +Richards & Smith Standards Track [Page 18] + +RFC 2125 PPP BACP March 1997 + + + Phone-Number-Sub-Address + + This field is the sub address of the port to be called by the + peer. This sub-option SHOULD only be used for an ISDN call. This + field is an ASCII string and only contains valid phone number + digits. This field is optional. + +6.3. No-Phone-Number-Needed + + Description + + The No-Phone-Number option indicates that the calling + implementation is already configured with the phone number of its + multilink peer and the answering implementation MUST NOT include + the Phone Number option in the response. This may be for security + reasons, for configuration reasons, or for any other reason. + + This option MAY be used in a Call-Request packet. + + A summary of the No-Phone-Number BAP Option format is shown below. + The fields are transmitted from left to right. + + 0 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 03 for No-Phone-Number. + + Length + + 2 + + + + + + + + + + + + + + + + +Richards & Smith Standards Track [Page 19] + +RFC 2125 PPP BACP March 1997 + + +6.4. Reason + + Description + + This option is used to indicate a reason for the Request or + Response. It is meant to be used for informational purposes only. + This option MAY be used in any BAP packet. + + A summary of the Reason BAP Option format is shown below. The fields + are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Reason String... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 04 for Reason. + + Length + + The Length field is one octet, and indicates the length of this + BAP Option including the Type, Length and Reason String fields. + + Reason String + + This is an ASCII string. The content of the field is + implementation dependent. An implementation MAY ignore the Reason + String field. + + + + + + + + + + + + + + + + + + + + +Richards & Smith Standards Track [Page 20] + +RFC 2125 PPP BACP March 1997 + + +6.5. Link-Discriminator + + Description + + The Link-Discriminator option MUST be used in a Link-Drop-Query- + Request datagram. This option is used to inform the receiver of a + Link-Drop-Query-Request of which link will be dropped. + + A summary of the Link-Discriminator BAP Option format is shown below. + The fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Link Discriminator | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 05 for Link-Discriminator + + Length + + 4 + + Link Discriminator + + The Link Discriminator field is 2 octets in length. It contains + the Link Discriminator that was contained in the LCP Link- + Discriminator Configuration Option sent by the receiver of the + packet containing the Link Discriminator. + +6.6. Call-Status + + Description + + The Call-Status option MUST be used in a Call-Status-Indication + datagram. This option is used to inform the receiver of the + Call-Status-Indication datagram of the status of the completed + call attempt, as well as a possible action that will be taken (if + the call failed). + + + + + + + + + + +Richards & Smith Standards Track [Page 21] + +RFC 2125 PPP BACP March 1997 + + + A summary of the Call-Status BAP Option format is shown below. The + fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | Status | Action | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 06 for Call-Status. + + Length + + 4 + + Status + + The Status field is 1 octet in length. If the call was + successful, the value MUST be set to 0. A non-zero value + indicates a call failure. A value of 255 indicates a non-specific + failure, and a more specific call status MAY be indicated by using + the same number as the Q.931 cause value (i.e., 1 is unassigned + number, 17 is user busy, etc.) + + Action + + The Action octet indicates what action the calling implementation is + taking after a failed call. If the call was sucessful, the Action + octet MUST be set to 0. + + The Action octet can have the following values: + + 0 - No retry + 1 - Retry + + + + + + + + + + + + + + + +Richards & Smith Standards Track [Page 22] + +RFC 2125 PPP BACP March 1997 + + +Appendix + +List of BAP datagrams and associated fields. + +datagram mandatory fields allowed options +-------- ----------------- --------------- +Call-Request Link-Type No-Phone-Number +Call-Response Phone-Delta + Link-Type +Callback-Request Link-Type + Phone-Delta +Callback-Response Link-Type +Link-Drop-Query-Request Link-Discriminator +Link-Drop-Query-Response +Call-Status-Indication Call-Status Phone-Delta +Call-Status-Response + + The Reason option is allowed to be included with any BAP datagram. + +History of BACP + + The first version of BACP was written by Craig Richards of Shiva + Corporation. This version was enhanced and improved by the MPCP + Working Group, a collaborative effort of 3Com, Ascend, Bay Networks, + Cisco, Microsoft, Shiva, US Robotics and Xylogics. + +Acknowledgements + + Kevin Smith of Ascend for his contributions based on his work on the + MP+ Specification. Gerry Meyer and Robert Myhill of Shiva for their + early comments and improvements. Andy Nicholson of Microsoft for his + improvements to the bandwidth management scheme. Dana Blair and Andy + Valencia of Cisco, Cheng Chen and Dan Brennan of 3Com for their good + ideas as part of the MPCP Working Group. All of the members of the + MPCP working group for their ability to work with their competitors + with enthusiasm to produce a better protocol for the industry. + +Security Considerations + + Security issues are not discussed in this memo. + + + + + + + + + + + +Richards & Smith Standards Track [Page 23] + +RFC 2125 PPP BACP March 1997 + + +References + +[1] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD + 51, RFC 1661, Daydreamer, July 1994. + +[2] Sklower, Lloyd, McGregor, Carr & Coradetti, "The PPP Multilink + Protocol", RFC 1990, University of California, Berkeley, Lloyd + Internetworking, Newbridge Networks Corporation, Sidewalk + Software, August 1996. + +Chair's Address + + The working group can be contacted via the current chair: + + Karl Fox + Ascend Communications + 3518 Riverside Drive, Suite 101 + Columbus, Ohio 43221 + + (614)451-1883 + + EMail: karl@ascend.com + +Editors' Addresses + + Craig Richards + Shiva Corporation + 28 Crosby Drive + Bedford, MA 01730 + VOICE +1 617 270 8419 + FAX +1 617 270 8599 + + EMail: crich@us.shiva.com + + + Kevin Smith + Ascend Communications, Inc. + 1275 Harbor Bay Parkway + Alameda, CA 94501 + CA + + EMail: kevin@ascend.com + + + + + + + + + +Richards & Smith Standards Track [Page 24] + -- cgit v1.2.3