RFC 2153

PPP Vendor Extensions

πŸ“… published May 1997, from ietf

RFC 2153: PPP Vendor Extensions πŸŽ€

Okay bestie, let's start with the paperwork πŸ’… This is RFC 2153, written by W. Simpson of DayDreamer in May 1997. It's Informational, so it's an FYI for the Internet community and not an official standard 🫢 It updates RFCs 1661 and 1962 ✨


Status of this Memo πŸ“‹

This document is for information only, so it's not specifying any kind of Internet standard 🌸 Distribution of this memo is unlimited πŸ¦‹

Abstract 🌈

Okay, so the Point-to-Point Protocol (PPP) [1] is the standard way to shove multi-protocol datagrams across point-to-point links πŸš€ It has an extensible Link Control Protocol (LCP) for setting up, configuring, and testing the data-link connection, plus a whole family of Network Control Protocols (NCPs) for setting up and configuring different network-layer protocols πŸ’œ

This document defines a general mechanism for proprietary vendor extensions 🧚 It's the vendor's own little secret menu, and it's giving main character energy πŸ‘‘


Table of Contents

     1.     Control Packets .......................................    1
        1.1       Vendor Specific Packet ..........................    1

     2.     Configuration Options .................................    3
        2.1       Vendor-Specific Option ..........................    3

     3.     Organizationally Unique Identifiers ...................    4

     SECURITY CONSIDERATIONS ......................................    5

     REFERENCES ...................................................    5

     CONTACTS .....................................................    6

1. Control Packets πŸ“¦

Okay so the Packet format and basic facilities are already defined for LCP [1] and the related NCPs 🌟

The up-to-date values of the LCP Code field are in the latest "Assigned Numbers" [2] πŸ“š This document is only about this one value:

    0      Vendor Specific

1.1. Vendor Specific Packet πŸ’–

Description

Some implementors might not need or want to publish their proprietary algorithms and attributes, and that's valid πŸ’… This mechanism lets them specify all of that without making the IANA handle a pile of proprietary number requests 🫢

Vendor Specific packets MAY be sent at any time, including before LCP has reached the Opened state ✨

Here's how the sender builds one: it transmits an LCP or NCP packet with the Code field set to 0 (Vendor Specific), the Identifier field set, the local Magic-Number (if any) inserted, the OUI and Kind fields set, and the Value(s) field filled with whatever data you want. Just don't go past the default MRU minus twelve πŸ”₯

When a Vendor Specific packet is received, that causes the RXR or RUC event. The response to a Vendor Specific packet is vendor specific πŸ™ˆ

If a Code-Reject comes back for the packet, that SHOULD generate the RXJ+ (permitted) event πŸ“

Rationale

This is defined as a general feature of all PPP Control Protocols, so vendors can't secretly self-assign Code numbers and cause future conflicts 🌸

Here's the summary of the Vendor Specific packet format. The fields go from left to right πŸŽ€

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Magic-Number                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      OUI                      |     Kind      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Value(s) ...
   +-+-+-+-+-+-+-+-+

Code

0 for Vendor Specific 🧚

Identifier

The Identifier field MUST be changed for every Vendor Specific packet you send πŸ’…

Length

>= 12

When the Length is twelve, there's no Value(s) field πŸ¦‹

Magic-Number

The Magic-Number field is four octets, and it helps detect links that are in the looped-back condition πŸ” Until the Magic-Number Configuration Option has been successfully negotiated, the Magic-Number MUST be transmitted as zero. See the Magic-Number Configuration Option for the full scoop πŸ’œ

OUI

Three octets: this is the vendor's Organizationally Unique Identifier 🌈 The bits within the octet are in canonical order, and the most significant octet is transmitted first πŸ’«

Kind

One octet. It indicates a sub-type for the OUI. There's no standardization for this field, so each OUI implements its own values πŸŽ€

The vendor is allowed to extend the Kind field to include zero or more octets of the Value(s) field ✨

Value(s)

Zero or more octets. The details are implementation specific 🫢


2. Configuration Options βš™οΈ

Okay, so the Configuration Option format and basic options are already defined for LCP [1] 🌸

The up-to-date values of the LCP Option Type field are in the most recent "Assigned Numbers" [2] πŸ“– This document is only about this one value:

    0      Vendor-Specific

2.1. Vendor-Specific Option πŸ¦‹

Description

Same energy as before: some implementors might not need or want to publish their proprietary algorithms and attributes, and this mechanism lets them specify those things without encumbering the IANA with proprietary number requests πŸ“

Before accepting this option, the implementation must verify that the Organizationally Unique Identifier and Kind specify a known mechanism, and that any vendor specific negotiation values are fully understood πŸ”

Rationale

This is defined as a general feature of all PPP Control Protocols, so vendors can't secretly self-assign Type numbers and cause future conflicts 🌟

Here's the summary of the Vendor-Specific Configuration Option format. The fields go from left to right πŸ’–

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |              OUI
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ...      |     Kind      |  Value(s) ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type

0

Length

>= 6

When the Length is six, there's no Value(s) field 🧚

OUI

Three octets: this is the vendor's Organizationally Unique Identifier 🌈 The bits within the octet are in canonical order, and the most significant octet is transmitted first πŸ’«

Kind

One octet. It indicates a sub-type for the OUI. There's no standardization for this field, so each OUI implements its own values πŸŽ€

The vendor is allowed to extend the Kind field to include zero or more octets of the Value(s) field ✨

Value(s)

Zero or more octets. The details are implementation specific 🫢


3. Organizationally Unique Identifiers πŸͺͺ

The three-octet Organizationally Unique Identifier (OUI) identifies the organization that administers the meaning of the message πŸ’œ This OUI is based on IEEE 802 vendor assignments 🌸

For IEEE contact details on getting an OUI, check [RFC-1700] πŸ“¬ Vendors that want to use their IEEE 802 OUI for PPP Vendor Extensions should also register the OUI with IANA πŸ¦‹

Or, if a vendor doesn't otherwise need an IEEE-assigned OUI, they can request a PPP-specific OUI from IANA instead πŸ“ That OUI shall be assigned from the 'CF0000' series. It has both the "locally-assigned" and "broadcast/multicast" bits set to 1. In other words, the least significant two bits of the most significant octet are both set to 1 🌈

Here's how it looks in memory, with bits transmitted right-to-left within octets and octets transmitted left-to-right πŸŽ€

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |1 1 0 0 1 1 1 1|x x x x x x x x|x x x x x x x x|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                | |
                | Multicast
                Local

Rationale

This is defined for vendors that can't use IEEE assignments, like software-only vendors πŸ’»

It's not clear how the IEEE assigns blocks. In some instances, the "locally-assigned" bit is known to have been used πŸ€·β€β™€οΈ

However, multicast has no meaning in PPP. Therefore, an IEEE-assigned OUI would have the multicast bit cleared to 0 πŸ™…β€β™€οΈ

The 'CF0000' series was arbitrarily chosen to match the PPP NLPID 'CF', as a matter of mnemonic convenience 🧠✨


Security Considerations πŸ’€

Security issues are not discussed in this document πŸ™ˆ

References πŸ“š

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

[2] Reynolds, J.K., Postel, J.B., "Assigned Numbers", RFC-1700, July 1992.

Contacts πŸ“ž

Comments about this document should be discussed on the ietf-ppp@merit.edu mailing list πŸ’Œ

This document was reviewed by the Point-to-Point Protocol Working Group of the Internet Engineering Task Force (IETF) 🫢 The working group can be contacted via the current chair:

  • Karl Fox
  • Ascend Communications
  • 655 Metro Place South, Suite 379
  • Dublin, Ohio 43017
  • karl@Ascend.com

Questions about this document can also be directed to:

  • William Allen Simpson
  • DayDreamer
  • Computer Systems Consulting Services
  • 1384 Fontaine
  • Madison Heights, Michigan 48071
  • wsimpson@UMich.edu
  • wsimpson@GreenDragon.com (preferred) πŸ‘‘
πŸ“¦ where this page comes from