RFC 1763

The PPP Banyan Vines Control Protocol (BVCP)

πŸ“… published March 1995, from ietf

RFC 1763: The PPP Banyan Vines Control Protocol (BVCP) πŸ¦‹

okay bestie, RFC 1763 is giving PPP meets Banyan VINES energy, and it's a standards track spec πŸ’…

  • Network Working Group 🌸
  • Authors: S. Senum, DigiBoard ✨
  • Category: Standards Track πŸ‘‘
  • Date: March 1995 🌈
  • Obsoletes / updates: the title block doesn't list anything this one obsoletes or updates 🫢

Status of This Memo ✨

so this doc is an Internet standards track protocol for the Internet community, and it's literally asking 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 🌈

Abstract πŸŽ€

okay so PPP [1] is the standard way to shove multi-protocol datagrams across point-to-point links πŸš€ It has an extensible Link Control Protocol, plus a whole family of Network Control Protocols for setting up and configuring different network-layer protocols.

this doc defines the Network Control Protocol that sets up and configures Banyan VINES over PPP. Iconic πŸ‘‘

Table of Contents 🧚

   1.     Introduction ..........................................    2
      1.1       Specification of Requirements ...................    2
      1.2       Terminology .....................................    3
   2.     A PPP Network Control Protocol for VINES ..............    3
      2.1       Sending VINES Datagrams .........................    4
      2.2       General Considerations ..........................    4
   3.     BVCP Configuration Options ............................    5
      3.1       BV-NS-RTP-Link-Type .............................    5
      3.2       BV-FRP ..........................................    6
      3.3       BV-RTP ..........................................    7
      3.4       BV-Suppress-Broadcast ...........................    8
   SECURITY CONSIDERATIONS ......................................    9
   REFERENCES ...................................................    9
      ACKNOWLEDGEMENTS ..........................................    9
   CHAIR'S ADDRESS ..............................................   10
   AUTHOR'S ADDRESS .............................................   10

1. Introduction ✨

okay so PPP has three main components:

  1. A method for encapsulating multi-protocol datagrams.
  2. A Link Control Protocol (LCP) for establishing, configuring, and testing the data-link connection.
  3. A family of Network Control Protocols for establishing and configuring different network-layer protocols.

main character energy: to get a point-to-point link talking, each end of the PPP link must first send LCP packets to configure and test the data link. Once the link is up and any optional facilities have been negotiated as needed by LCP, PPP must send BVCP packets to choose and configure the VINES network-layer protocol. Once BVCP has reached the Opened state, VINES datagrams can be sent over the link πŸ’–

the link stays configured until explicit LCP or BVCP packets close it down, or until some external event happens (an inactivity timer expires or a network administrator steps in) πŸ™ˆ

1.1. Specification of Requirements πŸ’…

in this doc, a few words are used to signify the requirements of the specification. They're often capitalized, so here's the breakdown πŸŽ€

  • MUST: this word, or the adjective "required", means that the definition is an absolute requirement of the specification. no wiggle room 😭
  • MUST NOT: this phrase means that the definition is an absolute prohibition of the specification. absolutely not πŸ’€
  • 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. it's giving "think it through first" 🧠
  • 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. so basically, be ready to get along with the people who did pick it 🫢

1.2. Terminology πŸ¦‹

this doc keeps using a few terms, so let's get them straight 🌸

  • datagram: the unit of transmission in the network layer (such as IP). A datagram may be encapsulated in one or more packets passed to the data link layer.
  • frame: the unit of transmission at the data link layer. A frame may include a header and/or a trailer, along with some number of units of data.
  • packet: the basic unit of encapsulation, which is passed across the interface between the network layer and the data link layer. A packet is usually mapped to a frame; the exceptions are when data link layer fragmentation is being performed, or when multiple packets are incorporated into a single frame.
  • 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. ngl, the logging part is the cute bit πŸ“

2. A PPP Network Control Protocol for VINES 🌈

the Banyan VINES Control Protocol (BVCP) is in charge of configuring, enabling, and disabling the VINES protocol modules on both ends of the point-to-point link πŸ‘‘ It uses the same packet exchange mechanism as the Link Control Protocol. BVCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase, and any BVCP packets that show up before that phase should be silently discarded πŸ™ˆ

the Banyan VINES Control Protocol is exactly the same as the Link Control Protocol [1], with the following exceptions:

Frame Modifications

the packet may utilize any modifications to the basic frame format which have been negotiated during the Link Establishment phase πŸŽ€

exactly one BVCP packet is encapsulated in the Information field of a PPP Data Link Layer frame where the Protocol field indicates type hex 8035 (Banyan VINES Control Protocol) πŸ’–

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. πŸ’…

Timeouts

BVCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. An implementation should be prepared to wait for Authentication and Link Quality Determination to finish before timing out while waiting for a Configure-Ack or other response. It is suggested that an implementation give up only after user intervention or a configurable amount of time ⏳

Configuration Option Types

BVCP has a distinct set of Configuration Options 🧚

2.1. Sending VINES Datagrams πŸ¦‹

before any VINES datagrams can be communicated, PPP must reach the Network-Layer Protocol phase, and the Banyan VINES Control Protocol must reach the Opened state. no shortcuts, bestie πŸ™…

exactly one VINES packet is encapsulated in the Information field of a PPP Data Link Layer frame where the Protocol field indicates type hex 0035 (Banyan VINES datagram). The maximum length of a VINES datagram sent over a PPP link is the same as the maximum length of the Information field of a PPP data link layer frame πŸ“

the format of the Information field itself is the same as the one defined in [2] 🌸

2.2. General Considerations πŸŽ€

VINES supports an Address Resolution Protocol, VINES ARP, which is mainly used for address assignment. Since this protocol is part of VINES IP, it's fully supported over BVCP ✨

VINES also supports a data-link Echo Protocol (VINES Echo), which is used to test connectivity to a VINES Server in a LAN environment. That one is not supported over BVCP, so it's a no for this one πŸ™ˆ

3. BVCP Configuration Options 🌸

BVCP Configuration Options let the standard characteristics of the network-layer protocol get modified through negotiation. If a Configuration Option is not included in a Configure-Request packet, the default value for that Configuration Option is assumed πŸ’–

BVCP uses the same Configuration Option format defined for LCP [1], just with its own separate set of Options 🫢

up-to-date values of the BVCP Option Type field are specified in the most recent "Assigned Numbers" RFC [3]. Current values are assigned as follows:

      Value   Option

        1     BV-NS-RTP-Link-Type
        2     BV-FRP
        3     BV-RTP
        4     BV-Suppress-Broadcast

Note: a suggestion was made to combine the BV-NS-RTP-Link-Type option and the BV-RTP option into a single option that could negotiate one of four settings (S-RTP, NS-RTP-LAN, NS-RTP-WAN, NO-RTP). That suggestion was rejected because VINES must already deal with a mix of S-RTP and NS-RTP, and pushing this information down to the PPP layer is not desirable πŸ™…β€β™€οΈ

Description

this Configuration Option is how you negotiate the way the Non-Sequenced Routing Update Protocol (NS-RTP) (pre-VINES 5.5, i.e., 4.11 and 5.0) runs on the link. NS-RTP handles updates differently depending on whether the interface is a LAN type or a WAN type. LAN type: the full routing table is rebroadcast every update interval (90 seconds). WAN type: the full routing table is only transmitted for the first 3 update intervals after the link comes up. After that, only changes are transmitted (for 5 update intervals). Note that this has no effect if Sequenced RTP (VINES 5.5) is being used. More information on this can be found in [2] πŸ¦‹

this option negotiates what an implementation is willing to receive, and it's negotiated separately per side of the PPP connection. When the peer accepts this option, it means the peer will send NS-RTP updates as if the link was a LAN type. When the peer rejects this option (or it's absent), the peer will send NS-RTP updates as if the link was a WAN type πŸ’œ

by default, NS-RTP updates are sent as if the link was a WAN type ✨

a summary of the BV-NS-RTP-Link-Type Configuration 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: 1

Length: 2


that's the end of part 1 πŸŽ€ Part 2 picks up with BV-FRP, BV-RTP and BV-Suppress-Broadcast, so keep your eyes peeled 🧚

3.2. BV-FRP πŸŽ€

Description

okay bestie, this option is how two sides agree to use the VINES Fragmentation Protocol (FRP) πŸ’… FRP is what lets a VINES packet get chopped into pieces (fragmented) and then stitched back together (reassembled) over the link 🧩 Here's the tea: FRP slaps a two octet field onto every packet going over the link. That field holds begin and end fragment information plus a sequence number πŸ¦‹

With PPP's default MRU of 1500, FRP is not normally needed, so no FRP header gets sent with the VINES packet πŸ™ˆ But if an MRU of less than 1484 gets negotiated, then FRP becomes necessary so a full size VINES packet can still get over the link ✨ If you're obsessed and want more details, check [2] πŸ“š

This option is all about what an implementation is willing to receive, and it gets negotiated separately for each side of the PPP connection 🀝 If the peer accepts this option, that means the peer will send VINES packets with a FRP header πŸ’œ If the peer rejects it (or it's just absent), the peer will send VINES packets without a FRP header 🌸

By default, VINES packets are sent without a FRP header. Main character energy πŸ‘‘

A summary of the BV-FRP Configuration 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: 2

Length: 2


3.3. BV-RTP πŸ¦‹

Description

so this one negotiates whether RTP gets used over the link at all πŸ’– If you're on dial-up lines with static routes, RTP can be totally suppressed to save bandwidth on the link. Iconic for a budget-friendly connection πŸ“

This option is about what an implementation is willing to receive, and it's negotiated separately per side of the PPP connection 🀝 If the peer accepts this option, the peer will not send RTP packets πŸ™… If the peer rejects it (or it's absent), the peer will send any RTP packets πŸ’œ

By default, RTP packets are sent over the link ✨

A summary of the BV-RTP Configuration 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: 3

Length: 2


3.4. BV-Suppress-Broadcast πŸ“’

Description

this option is for negotiating the sending of VINES broadcast packets, meaning packets with a destination VINES network address of all ones 🌈 Quick note: it only affects VINES packets that are not of type VINES ARP or VINES RTP πŸ‘€

A VINES Client can use this option to ask that most of the broadcast packets a VINES Server would normally send to it get discarded, so the link bandwidth stays happy 🧚 Most broadcast packets sent by a VINES Server aren't actually useful to a VINES Client, so this is a huge vibe 🫢

This option is about what an implementation is willing to receive, and it's negotiated separately per side of the PPP connection 🀝 If the peer accepts this option, the peer MUST NOT send any VINES broadcast packets, other than packets of type VINES ARP or VINES RTP 🚫 If the peer rejects it (or it's absent), the peer will send all VINES broadcast packets πŸ“£

By default, all VINES broadcast packets are sent 🌸

A summary of the BV-Suppress-Broadcast Configuration 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: 4

Length: 2


Security Considerations πŸ”

Security issues are not discussed in this memo. Plot twist, but we're keeping it serious here πŸ™ˆ


References πŸ“š

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

[2] Banyan, "VINES Protocol Definition", June 1993, Order No. 003673.

[3] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700, USC/Information Sciences Institute, October 1994.


Acknowledgements πŸ’–

Some of the text in this document is taken from previous documents produced by the Point-to-Point Protocol Working Group of the Internet Engineering Task Force (IETF) 🫢

In particular, Bill Simpson provided the boiler-plate used to create this document. Iconic behaviour from Bill πŸ‘‘


Chair's Address 🧚

The working group can be contacted via the current chair:

Fred Baker
Cisco Systems
519 Lado Drive
Santa Barbara, California 93111

Phone: (805) 681-0115
EMail: fred@cisco.com

Author's Address ✨

Questions about this memo can also be directed to:

Steven J. Senum
DigiBoard
6400 Flying Cloud Drive
Eden Prairie, Minnesota 55344

Phone: (612) 943-9020
EMail: sjs@digibd.com
πŸ“¦ where this page comes from