RFC 3772

Point-to-Point Protocol (PPP) Vendor Protocol

πŸ“… published May 2004, from ietf

RFC 3772: Point-to-Point Protocol (PPP) Vendor Protocol πŸ’–

Okay bestie, RFC 3772 is titled Point-to-Point Protocol (PPP) Vendor Protocol πŸŽ€. It's a Standards Track doc from the Network Working Group, dated May 2004. The authors are J. Carlson at Sun Microsystems and R. Winslow at L-3 Communications πŸ‘‘. The title block has no Obsoletes or Updates lines, so it doesn't replace or change any other RFC πŸ¦‹.

Status of This Memo 🌸

This document specifies an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements πŸ’…. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ✨.

Copyright (C) The Internet Society (2004). All Rights Reserved. 🫢

Abstract 🧚

PPP defines a Link Control Protocol (LCP) and a method for negotiating the use of multi-protocol traffic over point-to-point links πŸ”₯. The PPP Vendor Extensions document adds vendor-specific general-purpose Configuration Option and Code numbers. This document extends those features to cover vendor-specific Network, Authentication, and Control Protocols, so it's giving "more vendors, more protocols" energy πŸ’œ.

1. Introduction ✨

Okay so PPP's [1] Vendor Extensions [3] gives us a general-purpose mechanism for negotiating various vendor-proprietary options and extensions to the kinds of control messages that may be sent via the Code field πŸ’….

Some implementors want to define proprietary network and control protocols on top of the features that already exist πŸ¦‹. You could technically use the existing LCP Vendor-Specific Option to switch on a proprietary protocol. But this staged approach (enable it via LCP, then negotiate via some locally-assigned protocol number) has at least three problems 😭.

First, because it lives in LCP, the negotiation would start before the peer has been identified and authenticated. That makes the security analysis of the feature way more complicated and limits how the protocol can be deployed πŸ™ˆ.

Second, when compulsory tunneling is in use, the system doing the initial LCP negotiation may not be the same system that uses the proprietary protocol. In that case, enabling the protocol at LCP time would require either LCP renegotiation or support for the proprietary protocol in the initial negotiator. Both of those cause deployment problems πŸ’€.

Third, any protocol negotiated this way would have to use a protocol number that IANA didn't assign. That makes life harder for diagnostic tools that monitor the datastream. A fixed number lets those tools display such protocols in a reasonable, albeit limited, format πŸ“.

A cleaner solution is to define a set of vendor-specific protocols, one in each of the four protocol number ranges defined by [1] πŸ‘‘. This specification reserves the following values:

   Value (in hex)  Protocol Name
   005b            Vendor-Specific Network Protocol (VSNP)
   405b            Vendor-Specific Protocol (VSP)
   805b            Vendor-Specific Network Control Protocol (VSNCP)
   c05b            Vendor-Specific Authentication Protocol (VSAP)

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 BCP 14, RFC 2119 [2]. These capitalised words are the ones with real force, so treat them seriously πŸ’–.

2. PPP Vendor-Specific Network Control Protocol (VSNCP) 🌸

The Vendor-Specific Network Control Protocol (VSNCP) is in charge of negotiating use of the Vendor-Specific Network Protocol (VSNP) πŸ’…. It runs the same packet exchange and option negotiation mechanism as LCP, just with a different set of options ✨.

VSNCP packets MUST NOT be exchanged until PPP has reached the Network-Layer Protocol phase πŸ™…. Any VSNCP packets received when not in that phase MUST be silently ignored, so they get ghosted πŸ‘». If a VSNCP packet with an unrecognized OUI is received, an LCP Protocol-Reject SHOULD be sent back in response πŸ”₯.

The network layer data, carried in VSNP packets, MUST NOT be sent unless VSNCP is in Opened state 🫢. If a VSNP packet is received when VSNCP is not in Opened state and LCP is Opened, the implementation may respond using LCP Protocol-Reject πŸ¦‹.

2.1. VSNCP Packet Format πŸ’œ

Exactly one VSNCP packet is carried in the PPP Information field, with the PPP Protocol field set to hex 805b (VSNCP) 🧚. Here's a summary of the VSNCP packet format. 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    OUI                        |    Data ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Code

Only LCP Code values 1 through 7 are used: Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack, and Code-Reject πŸ“. All other codes SHOULD result in a VSNCP Code-Reject reply πŸ™ˆ.

Identifier and Length

These are as documented for LCP ✨.

OUI

This three-octet field contains the vendor's Organizationally Unique Identifier πŸŽ€. The bits within the octet are in canonical order, and the most significant octet is transmitted first. See Section 5 below for more information on OUI values πŸ‘‘.

Data

This field contains data in the same format as for the corresponding LCP Code numbers πŸ’….

2.2. VSNP Packet Format πŸ¦‹

When VSNCP is in Opened state, VSNP packets may be sent by setting the PPP Protocol field to hex 005b (VSNP) and placing the vendor-specific data in the PPP Information field πŸ’–. No restrictions are placed on this data 🌸.

3. PPP Vendor-Specific Protocol (VSP) 🌈

The Vendor-Specific Protocol (VSP) is meant for situations where a complete Network Layer Protocol implementation is unnecessary, or where per-link signaling is required (see Section 7 below) 🧚.

VSP packets MUST NOT be sent until PPP has reached either Network-Layer Protocol or Authentication phase. VSP packets received before those phases MUST be silently ignored πŸ‘». Once the proper phase has been reached, a VSP packet containing an unrecognized OUI value SHOULD be returned using LCP Protocol-Reject πŸ”₯.

Exactly one VSP packet is carried in the PPP Information field, with the PPP Protocol field set to 405b (VSP) ✨. Here's the VSP packet format summary. 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Magic-Number                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    OUI                        |   Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Data ...
   +-+-+-+

Magic-Number

The four-octet Magic-Number field is used to detect looped-back links πŸ”. If the Magic-Number Option was not negotiated by LCP, then this field MUST be set to 0. Implementation of the LCP Magic-Number Option is RECOMMENDED πŸ’œ.

OUI

This three-octet field contains the vendor's Organizationally Unique Identifier πŸŽ€. The bits within the octet are in canonical order, and the most significant octet is transmitted first. See Section 5 below for more information on OUI values πŸ‘‘.

Reserved

Reserved for future definition. Must be zero on transmit and ignored on reception 🌸.

Data

Vendor-specific data πŸ¦‹.

4. PPP Vendor-Specific Authentication Protocol (VSAP) πŸ”₯

The Vendor-Specific Authentication Protocol (VSAP) gets used in two ways πŸ’…. First, it's used with the LCP Authentication Option to negotiate a vendor-specific authentication protocol for use during the PPP Authentication phase. Second, it's used in the PPP Protocol field to carry those proprietary authentication messages during the PPP Authentication phase 🧚.

4.1. VSAP Authentication Option Format ✨

This option is used in LCP Configure-Request, -Ack, -Nak, and -Reject messages 🌈.

    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     |    Authentication-Protocol    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    OUI                        |    Data ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type

  • 3 πŸ’–

Length

  • >=7 πŸŽ€

Authentication-Protocol

  • The hex value c05b, in Network Byte Order πŸ¦‹.

OUI

  • This three-octet field contains the vendor's Organizationally Unique Identifier πŸ‘‘. The bits within the octet are in canonical order, and the most significant octet is transmitted first. See Section 5 below for more information on OUI values ✨.

Data

  • This optional field contains options or other information specific to the operation of the vendor-specific authentication protocol 🫢.

4.2. VSAP Authentication Data Format πŸ’œ

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Data ...
   +-+-+-+-+

The Identifier and Length fields are as for LCP πŸ“. The Code and Data fields and the processing of the messages are defined by the vendor-specific protocol 🌸.

However, it is RECOMMENDED that vendor-specific protocols use Code 3 for "Success" and Code 4 for "Failure," as with [4] and [5], so that network monitoring equipment is simpler to design πŸ”. This is the kind of consistency that makes network engineers cry happy tears πŸŒˆπŸ’–

6. Multiple Vendor-Specific Protocols ✨

Okay, bestie, vendors are literally encouraged to design their protocols so they can grow later 🌱. For example, a VSNP might get a locally-defined selector field so it can tell apart a bunch of proprietary protocols riding the same mechanism. VSNCP might also get Configuration Options to turn those sub-protocols on and off πŸŽ›οΈ. The selector's requirements are only known to the vendor who defines the protocols, so this document doesn't go any deeper into it πŸ€·β€β™€οΈ.

An implementation MAY also support more than one vendor-specific protocol, told apart by OUI πŸ’œ. When it does, it MUST also handle LCP Protocol-Reject in a special way: it checks the OUI field in the rejected message and disables only the protocol that message is talking about, instead of shutting down every use of the vendor-specific protocol number πŸ™…β€β™€οΈ. This is the cool part, because an implementation like that still plays nicely with a simpler one that only supports one OUI. That simpler one just answers LCP Protocol-Reject for OUIs it doesn't recognize and leaves the negotiation state alone 🫢.

An OUI-distinguished mechanism is only expected to be used when vendors are cooperating 🀝. If it's possible, vendors should use just a single OUI for all of the protocols they define πŸŽ€.


The Vendor-Specific Network Protocol (VSNP) is defined to run at the bundle level when Multilink PPP [6] is in use. It also sits above any Compression Protocols [7] and Encryption Protocols [8] that are in use 🧁.

The Vendor-Specific Protocol (VSP) is defined to run at the per-link level when Multilink PPP is in use, and it MUST NOT be subjected to data compression πŸ™…β€β™€οΈ. If a per-link encryption protocol is in use, then VSP packets MUST be encrypted πŸ”.

Here's the lowkey important bit: because VSP lives at the per-link level, bundle level encryption doesn't touch VSP at all πŸ‘€.


8. Security Considerations 🚨

Okay, this section is serious, so read it carefully, babe 😭.

The security of any vendor-specific authentication protocol depends on the rules of that proprietary mechanism πŸ•΅οΈβ€β™€οΈ. If you want to dodge the security problems that come with those protocols, you SHOULD send LCP Configure-Nak in reply to an LCP Configure-Request that asks for VSAP. Or you MAY just terminate operation πŸ’€.

When you're running PPP encryption without Multilink PPP, VSP packets get sent in the clear 😱. If your security mechanism needs PPP encryption, you should think about whether to use per-link encryption, or to skip VSP and go with VSNP instead 🫣.

The security of vendor-specific networking protocols is also subject to whatever security mechanisms those protocols define πŸ”’. An independent analysis of the security of any such protocol is RECOMMENDED 🧐✨.


9. IANA Considerations πŸ—‚οΈ

IANA has assigned four similarly-numbered PPP Protocol field values: 005b, 405b, 805b, and c05b, as described in Section 1 of this document 🌈.

As described in Section 5 above and in [3], IANA also keeps track of a CF0000 series block of non-IEEE OUIs. Vendors that don't otherwise need an IEEE-assigned OUI can get one from that block πŸ“.


10. References πŸ“š

10.1. Normative References

[1]  Simpson, W., Ed., "The Point-to-Point Protocol (PPP)", STD 51,
     RFC 1661, July 1994.

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

10.2. Informative References

[3]  Simpson, W., "PPP Vendor Extensions", RFC 2153, May 1997.

[4]  Simpson, W., "PPP Challenge Handshake Authentication Protocol
     (CHAP)", RFC 1994, August 1996.

[5]  Blunk, L. and J. Vollbrecht, "PPP Extensible Authentication
     Protocol (EAP)", RFC 2284, March 1998.

[6]  Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T. Coradetti,
     "The PPP Multilink Protocol (MP)", RFC 1990, August 1996.

[7]  Rand, D., "The PPP Compression Control Protocol (CCP)", RFC
     1962, June 1996.

[8]  Meyer, G., "The PPP Encryption Control Protocol (ECP)", RFC
     1968, June 1996.

11. Acknowledgments 🫢

The authors thank Karl Fox and Thomas Narten for their comments and help in preparing this document πŸ’–.

Some of the language and phrasing has been borrowed from RFC 1332, written by Glenn McGregor, and RFC 2153, written by William Allen Simpson πŸ™Œ.


12. Authors πŸŽ€

Questions about this document should be addressed to the IETF pppext working group or to the authors listed below πŸ’Œ.

James Carlson
Sun Microsystems
1 Network Drive MS UBUR02-212
Burlington MA  01803-2757

Phone:  +1 781 442 2084
Fax:    +1 781 442 1677
EMail:  james.d.carlson@sun.com


Richard Winslow
L-3 Communications Systems - East
1 Federal Street A&E-2NE
Camden, NJ 08102

EMail: richard.winslow@l-3com.com

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights πŸ“.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE πŸ™.

Intellectual Property 🧾

The IETF takes no position on whether any Intellectual Property Rights or other rights that someone might claim over the technology in this document are valid or in scope. It also doesn't say whether any license under those rights might be available. It hasn't made any independent effort to find those rights either πŸ€·β€β™€οΈ. You can find out how rights work for RFC documents in BCP 78 and BCP 79 πŸ“–.

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses that will be made available, and the results of any attempt to get a general license or permission to use those proprietary rights for implementers or users of this specification can all be found in the IETF on-line IPR repository at http://www.ietf.org/ipr πŸ”.

The IETF invites any interested party to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org πŸ“¬βœ¨.

Acknowledgement 🌸

Funding for the RFC Editor function is currently provided by the Internet Society πŸ’….

πŸ“¦ where this page comes from