RFC 1378
The PPP AppleTalk Control Protocol (ATCP)
RFC 1378: The PPP AppleTalk Control Protocol (ATCP) ๐
Author: B. Parker, Cayman Systems ๐ Date: November 1992 ๐ Category: IAB standards track ๐ฅ Obsoletes / Updates: nothing listed in the title block ๐
Status of This Memo โจ
This RFC specifies an IAB standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Check the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited ๐ฆ
Abstract ๐ธ
Okay so the Point-to-Point Protocol (PPP) [1] is the standard way to wrap up Network Layer protocol info and send it over point-to-point links ๐ฆ. PPP also has an extensible Link Control Protocol, plus a whole family of Network Control Protocols (NCPs) that set up and configure different network-layer protocols ๐
This document defines the NCP that sets up and configures the AppleTalk Protocol [3] over PPP ๐
This memo is a joint project between the AppleTalk-IP Working Group and the Point-to-Point Protocol Working Group of the Internet Engineering Task Force (IETF). Comments go to the ietf-ppp@ucdavis.edu mailing list ๐
Table of Contents ๐ง
1. Introduction .......................................... 2
2. A PPP Network Control Protocol (NCP) for AppleTalk .... 2
2.1 Sending AppleTalk Datagrams ........................... 3
2.2 Half-Routers .......................................... 4
3. ATCP Configuration Options ............................ 4
3.1 AppleTalk-Address ..................................... 5
3.2 Routing-Protocol ...................................... 7
3.3 Suppress-Broadcasts ................................... 8
3.4 AT-Compression-Protocol ............................... 9
3.5 Server-information .................................... 10
3.6 Zone-Information ...................................... 12
3.7 Default-Router-Address ................................ 13
APPENDICES ................................................... 14
A. ATCP Recommended Options .............................. 14
REFERENCES ................................................... 15
ACKNOWLEDGEMENTS ............................................. 15
SECURITY CONSIDERATIONS ...................................... 16
CHAIR'S ADDRESS .............................................. 16
AUTHOR'S ADDRESS ............................................. 16
1. Introduction ๐
Okay bestie, PPP has three main parts ๐
- A way to wrap datagrams up for serial links ๐ฆ
- A Link Control Protocol (LCP) that sets up, configures, and tests the data-link connection ๐ง
- A family of Network Control Protocols (NCPs) that sets up and configures the different network-layer protocols โจ
So to get talking over a point-to-point link, each end has to send LCP packets first to configure and test the data link ๐ซถ Once the link is up and any optional facilities the LCP needs have been negotiated, PPP has to send NCP packets to pick and configure one or more network-layer protocols ๐ After each chosen protocol is configured, its datagrams can finally go over the link ๐ฆ
The link stays configured until explicit LCP or NCP packets close it down, or until something external happens, like an inactivity timer running out or a network admin stepping in ๐
2. A PPP Network Control Protocol (NCP) for AppleTalk ๐
The AppleTalk Control Protocol (ATCP) handles configuring, enabling, and disabling the AppleTalk protocol modules on both ends of the point-to-point link ๐ It uses the same packet exchange machanism as the Link Control Protocol (LCP) ๐ ATCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. Any ATCP packets that show up before that phase is reached should be silently discarded ๐คซ
ATCP 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.
Data Link Layer Protocol Field ๐ฆ
Exactly one ATCP packet is encapsulated in the Information field of a PPP Data Link Layer frame where the Protocol field indicates type hex 8029 (AppleTalk Control Protocol) ๐
Code field ๐
Only Codes 1 through 7 are used: Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack and Code-Reject ๐ฅ Other Codes should be treated as unrecognized and should result in Code-Rejects ๐ โโ๏ธ
Timeouts โฐ
ATCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. An implementation should be ready to wait for Authentication and Link Quality Determination to finish before it times out waiting for a Configure-Ack or other response ๐ซ It is suggested that an implementation only give up after user intervention or a configurable amount of time โจ
Configuration Option Types ๐
ATCP has its own distinct set of Configuration Options, which are defined below ๐
2.1. Sending AppleTalk Datagrams ๐ฌ
Before any AppleTalk packets can be communicated, PPP must reach the Network-Layer Protocol phase, and the AppleTalk Control Protocol must reach the Opened state ๐
Unless otherwise negotiated (via option 4), exactly one AppleTalk packet is encapsulated in the Information field of a PPP Data Link Layer frame where the Protocol field indicates type hex 0029 (AppleTalk) ๐ท
Heads up: negotiating compression may imply a different encapsulation and therefore different protocol fields. Those different protocol fields imply packet types that are sub-protocols of the base AppleTalk NCP ๐ง
An encapsulated AppleTalk packet begins with an extended DDP (Datagram Delivery Protocol) header, also known as a Long DDP header ๐ The maximum length of a DDP datagram is 599 octets ๐
Since there is no standard method for fragmenting and reassembling AppleTalk datagrams, it is required that PPP links supporting AppleTalk allow at least 599 octets in the information field of a data link layer frame ๐ซถ
2.2. Half-Routers ๐ฆ
One model for routers in [3] is two remote AppleTalk routers linked as "half-routers", with no Node ID or Network number assigned to either side of the link ๐ When acting as half-routers, the only effect on transported packets is that the hop count gets incremented when it's received over the link ๐ Routing updates received over a half-router link should also increment the hop count of routing table updates โจ
Normally, AppleTalk sends RTMP Routing updates every 10 seconds โฐ
3. ATCP Configuration Options ๐
ATCP Configuration Options let the two sides negotiate desirable AppleTalk parameters ๐ ATCP uses the same Configuration Option format defined for LCP [1], but with its own separate set of Options ๐ธ
The most up-to-date values of the ATCP Option Type field are in the most recent "Assigned Numbers" RFC [2]. The current values are assigned like this ๐
1 AppleTalk-Address
2 Routing-Protocol
3 Suppress-Broadcasts
4 AT-Compression-Protocol
5 RESERVED
6 Server-information
7 Zone-information
8 Default-Router-Address
3.1. AppleTalk-Address ๐
Description ๐ง
This Configuration Option is how you negotiate the AppleTalk network and node number used on the local end of the link ๐ฆ It lets the sender of the Configure-Request say which AppleTalk-address it wants, or ask the peer to provide that info ๐ The peer can provide it by NAKing the option and returning a valid AppleTalk-address ๐ซถ
If negotiation about the remote AppleTalk-address is required, and the peer did not include the option in its Configure-Request, the option SHOULD be appended to a Configure-Nak ๐ฅ The AppleTalk-address value given must be acceptable as the remote AppleTalk-address, or indicate a request that the peer provide the information ๐
By default, no AppleTalk address is assigned ๐ A network or node number of zero in a Configure-Request shall be interpreted as asking the remote end to specify a value via a Configure-Nak ๐ A network or node number of zero in a Configure-Ack shall be interpreted as agreement that no value exists โจ
An implementation that requires no AppleTalk addresses be assigned (like an intermediate system to intermediate system "half-routing" setup) MUST Configure-Reject all AppleTalk-Address Configuration Options ๐ซ
An implementation that requires AppleTalk addresses be assigned to it (like an end system) MUST fail configuration if the remote side Configure-Rejects all AppleTalk-Address requests, or fails to provide a valid value ๐
If this option is negotiated, the two sides MUST negotiate a common AppleTalk network number and two unique AppleTalk node numbers ๐ The network number MAY be zero, but the AppleTalk node numbers MUST be non-zero ๐ท Values chosen for network and node numbers must adhere to the ranges defined in [3] ๐
The AppleTalk protocol, phase 2, defines the concept of "extended" and "non-extended" networks ๐ธ Extended networks can support a large number (hundreds) of nodes, and they require multiple network numbers and multiple zone names to be managed effectively ๐ฆ Non-extended networks can only support a small number of devices, and they only require a single network number and zone name to be managed effectively ๐ง
If a PPP link transporting AppleTalk is assigned an AppleTalk address, it must have the "non-extended" characteristics defined in [3] ๐ซถ
The format of the network and node data is defined to be the same as the "AppleTalk address" in [3], chapter 3, "AppleTalk AARP packet formats on Ethernet and token ring" ๐
A summary of the AppleTalk-Address Configuration 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 | Reserved | AT-Net |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT-Net | AT-Node |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type ๐
1
Length ๐
6
Reserved ๐
This octet is reserved and MUST be set to zero on transmission and ignored on reception ๐
AT-Net ๐
The two octet AT-Net is the desired local AppleTalk network number of the sender of the Configure-Request. This two octet quantity represents a 16 bit unsigned number sent "network byte order" (most significant octet first) ๐งฎ
AT-Node ๐
The one octet AT-Node is the desired local AppleTalk node ID of the sender of the Configure-Request ๐ซถ
3.2. Routing-Protocol ๐ฆ
Description
okay so this option lets you negotiate which routing protocol you're gonna use ๐บ๏ธ "half-routers" especially love this one, because they can swap routing info using something tuned for the PPP connection. ngl it's giving efficiency. By default, AppleTalk RTMP (Routing Table Maintenance Protocol) routing information is sent over the PPP connection.
By default, AppleTalk RTMP routing information is sent over the PPP connection. (yes, it's said twice, the spec really wanted you to remember it ๐ )
A summary of the Routing-Protocol Configuration 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 | Routing-Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+
Type
2 โจ
Length
= 4 ๐
Routing-Protocol
The Routing-Protocol field is two octets and tells everyone which type of routing protocol you want ๐ It's a 16 bit number sent in "network byte order" (most significant octet first), so the big end goes first, periodt.
Negotiating some routing protocols means you're also gonna receive packet types that carry them. Like, if you negotiate AppleTalk AURP to swap routing info, both sides have to accept EDDP type packets, because that's the transport type AURP uses. it's literally a package deal ๐ง
Initial values are assigned as follows:
Value Protocol
0 No routing information exchange
1 AppleTalk RTMP is used to exchange routing information
2 AppleTalk AURP is used to exchange routing information
3 AppleTalk ABGP is used to exchange routing information
Data
The Data field is zero or more octets and holds extra data, decided by whichever routing protocol is named in the Routing-Protocol field. ๐ธ
None of the Routing-Protocol options defined here need any additional data. zero extra fuss, bestie ๐
3.3. Suppress-Broadcasts ๐
Description
This Configuration Option lets you negotiate turning off AppleTalk broadcast datagrams that would otherwise chew through your limitted PPP bandwidth ๐ญ It tells the remote end that no AppleTalk broadcast datagrams of a given DDP type should be sent.
This option is useful when only one end system negotiates it. The local end system can ask that broadcast packets generated on the remote network don't get pushed across the PPP link. If you're a single end system hooked up to a big network, this can shut down the regular NBP lookups that other end systems over there keep generating. The tradeoff is that protocols like NBP can no longer find network entities on the local system. But because the option is asymmetric, it doesn't stop your local system from finding stuff on the remote network. so it's a fair trade, lowkey iconic โจ
By default, no AppleTalk broadcast datagrams are suppressed. Also, this option might clash with other options (like Routing Protocol). If that happens, the Suppress-Broadcasts option wins ๐
A summary of the Suppress-Broadcasts Configuration 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 | DDP-Type 1 | DDP-Type 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| etc...
+-+-+-+-+
Type
3 ๐
Length
= 2 ๐ซถ
DDP-Types
This is a vector of one or more single octet DDP type values. Each one of them is to be suppressed if it's sent to the broadcast address.
If there's no data (the length = 2), then all broadcast packets are to be suppressed, no matter the DDP type. full mute mode, iykyk ๐คซ
3.4. AT-Compression-Protocol ๐๏ธ
Description
This Configuration Option lets you negotiate using a specific compression protocol. By default, compression is not enabled, so you gotta ask for it ๐
A summary of the AT-Compression-Protocol Configuration 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 | AT-Compression-Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+
Type
4 โจ
Length
= 4 ๐
AT-Compression-Protocol
The AT-Compression-Protocol field is two octets and says which compression protocol you want. The values are always the same as the PPP Data Link Layer Protocol field values for that same compression protocol, which is honestly so neat ๐ง
The most up-to-date values of the AT-Compression-Protocol field are in the most recent "Assigned Numbers" RFC [2]. Current values are assigned as follows:
Value (in hex) Protocol
none defined
Data
The Data field is zero or more octets and holds extra data, decided by the particular compression protocol. ๐
3.5. Server-information ๐ฅ๏ธ
Description
This Configuration Option gives you info about the communications server on the remote side of the PPP connection. ๐
This option is advisory only. it's just there to help an end system build a simple user interface, nothing more ๐
A summary of the Server-Information 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 | Server-class |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Server-implementation-id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Server-name ...
+-+-+-+-+-+-+-+-+-+-+-+-+
Type
6 ๐ธ
Length
= 8 ๐
Server-class
The Server-class field is two octets and tells you what kind of communication server is on the remote end of the PPP connection.
Initial values are assigned as follows:
Value Class
1 AppleTalk PPP Dial-in server.
The server-implementation-id is a four byte version
id, with the first byte defined as the major
version number (1-255) and the second byte defined
as the minor version number (1-255).
The third and fourth bytes are undefined and should
be zero.
2 Generic AppleTalk PPP implementation.
The server-implementation-id is undefined and
vendor specific.
3 Both dial-in server and router
Server-implementation-id
The Server-implementation-id field is four octets and says which version of the communication server is on the remote end of the PPP connection. version check, bestie โจ
Server-name
This optional field holds the "AppleTalk ASCII" name of the server. The character codes for "AppleTalk ASCII" are defined in [3], appendix D, "Character codes". The length of the name is bounded by the option length. ๐
3.6. Zone-Information ๐บ๏ธ
Description
This Configuration Option gives you info about the AppleTalk zone used for the PPP connection. ๐ฆ
Again, this option is advisory only. It's there to make the end system's simple user interface better, that's the whole job ๐
A summary of the Zone-Information 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 | Zone-name... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
7 โจ
Length
= 3 ๐ซถ
Zone-name
This field holds the "AppleTalk ASCII" zone name where the server lives. The character codes for "AppleTalk ASCII" are defined in [3], appendix D, "Character codes". The length of the name is bounded by the option length. ๐ท
3.7. Default-Router-Address ๐งญ
Description
This Configuration Option gives you info about a "default" AppleTalk router, which you can use to get network info like zone names. It's there so you can find a router's address when both sides of the link are end systems, which is a whole vibe ๐
Any AppleTalk RTMP packets received should supersede information negotiated in this option. RTMP packets always win the drama, lowkey ๐
By default, no default router is present. ๐
A summary of the Default-Router-Address 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 | Reserved | AT-Net |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AT-Net | AT-Node |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
8 ๐
Length
6 ๐
Reserved
This octet is reserved and MUST be set to zero on transmission and ignored on reception. no exceptions, babe ๐
AT-Net
The two octet AT-Net is the AppleTalk network number of the default router. This two octet quantity is a 16 bit unsigned number sent in "network byte order" (most significant octet first). ๐ง
AT-Node
The one octet AT-Node is the AppleTalk node ID of the default router. โจ
A. ATCP Recommended Options ๐
The ATCP is built to support three different modes of operation. Each mode puts constraints on which configuration options get used and what values get negotiated. ๐
The options for server information, zone information and default router address are "informational" options. One end of the connection provides them and they are not meant to be negotiated. They're there to give dial-in end systems a higher level of service. ๐ซถ
The options that SHOULD be negotiated in each case are outlined below. Any option not listed may be rejected. ๐
End System to Intermediate System - "dial-in" ๐
This mode is meant to support end system dial-in. ๐ธ
1 AppleTalk-Address (required)
2 Routing-Protocol (required, no routing protocol)
3 Suppress-Broadcasts (optional)
4 AT-Compression-Protocol (optional)
6 Server-information (optional, request from end system)
Intermediate system to Intermediate system - with network number โจ
okay so this mode is for WAN-to-WAN links, aka router to router ๐ฆ, and the link is configured with a network number. here's the lineup:
1 AppleTalk-Address (required, nets must be zero or equal)
2 Routing-Protocol (optional)
3 Suppress-Broadcasts (optional)
Intermediate system to Intermediate system - without network number ๐
same router-to-router energy, but this time the link is not configured with a network number ๐ routers in this mode get called "half-routers" in [3], which is such a iconic name ngl ๐ธ. here's the lineup:
1 AppleTalk-Address (optional, nets & nodes MUST be zero)
2 Routing-Protocol (optional)
3 Suppress-Broadcasts (optional, suppress all broadcasts)
References ๐
[1] Simpson, W., "The Point-to-Point Protocol (PPP)", RFC 1331, Daydreamer, May 1992.
[2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340, USC/Information Sciences Institute, July 1992.
[3] Sidhu G., Andrews, R., and A. Oppenheimer, "Inside AppleTalk, Second Edition", Addison-Wesley Publishing Company, Inc., May 1990.
Acknowledgments ๐ซถ
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).
This document is derivative of drafts written by the following people. Many thanks for their work, and for taking an initial stab at the protocol:
Steve Senum (sjs@network.com), Network Systems Corporation
Jim Muchow (muchow@anubis.network.com), Network Systems Corporation
Frank Slaughter (fgs@Shiva.COM), Shiva Corporation
Security Considerations ๐
Security issues are not discussed in this memo. ๐ bestie, this is the part where the whole doc just shrugs at security, so keep that in mind as you build with it ๐ญ
Chair's Address ๐
The working groups can be contacted via the current chairs:
Brian Lloyd
Lloyd & Associates
3420 Sudbury Road
Cameron Park, California 95682
Phone: (916) 676-1147
EMail: brian@lloyd.com
John Veizades
Apple Computer, Inc.
20525 Mariani Avenue
Cupertino, CA 95014
Phone: (408) 996-1010
EMail: veizades@apple.com
Author's Address ๐ง
Questions about this memo can also be directed to:
Brad Parker
Cayman Systems, Inc.
26 Landsdowne Street
Cambridge, Ma 02139
EMail: brad@cayman.com
๐ฆ where this page comes from
- ietf: rfc1378 1992-11
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms