RFC 1963

PPP Serial Data Transport Protocol (SDTP)

๐Ÿ“… published August 1996, from ietf

Network Working Group Request for Comments 1963 โœจ PPP Serial Data Transport Protocol (SDTP) ๐ŸŽ€

Okay bestie, let's get into this one! ๐Ÿ’– RFC 1963 is an Informational doc (so it's not a standard, just a "hey, here's how it works" moment ๐Ÿ’…), written by K. Schneider and S. Venters from ADTRAN, Inc., and it dropped in August 1996. It doesn't obsolete or update anything, so no drama there ๐ŸŒธ. Full title: PPP Serial Data Transport Protocol (SDTP) ๐Ÿฆ‹

This is part 1 of 4, so grab a snack, we're just getting started! ๐Ÿ“

Status of This Memo ๐Ÿงš

Quick legal-ish vibe check: this memo is here to provide information for the Internet community. It is not an Internet standard of any kind ๐Ÿ™ˆ. And distribution is unlimited, so share it with your whole group chat ๐Ÿ’œ

Abstract ๐ŸŒˆ

So, PPP ([1]) is the classic way to shove multi-protocol datagrams over point-to-point links. It has an extensible Link Control Protocol and a whole family of Network Control Protocols for setting up different network-layer protocols ๐Ÿ”ฅ

This doc describes a brand new Network-level protocol (from PPP's point of view), the PPP Serial Data Transport Protocol. It gives you encapsulation plus a control protocol for moving serial data streams over a PPP link โœจ The whole point is to use PPP's features to get a standard way of doing synchronous data compression ๐Ÿ’… And the encapsulation is built on a header structure borrowed from ITU-T Recommendation V.120 [2] ๐Ÿซถ

Table of Contents ๐ŸŽ€

     1.     Introduction ..........................................    2
     2.     SDTP Packets ..........................................    3
        2.1       Padding .........................................    4
        2.2       Packet Formats ..................................    4
     3.     Serial Data Control Protocol ..........................   11
     4.     SDCP Configuration Option Format ......................   12
        4.1       Packet-Format ...................................   13
        4.2       Header-Type .....................................   13
        4.3       Length-Field-Present ............................   14
        4.4       Multi-Port ......................................   14
        4.5       Transport-Mode ..................................   15
        4.6       Maximum-Frame-Size ..............................   16
        4.7       Allow-Odd-Frames ................................   16
        4.8       FCS-Type ........................................   17
        4.9       Flow-Expiration-Time ............................   18
     SECURITY CONSIDERATIONS ......................................   19
     REFERENCES ...................................................   19
     CHAIR'S ADDRESS ..............................................   20
     AUTHORS' ADDRESSES ...........................................   20

1. Introduction ๐Ÿฆ‹

This doc is a product of the TR30.1 ad hoc committee on compression of synchronous data ๐Ÿ’– It's one piece of a bigger proposal to use PPP for compressing synchronous data in DSU/CSUs.

Besides multi-protocol datagram support, PPP ([1]) has a really effective and robust negotiation mechanism for point-to-point links ๐Ÿ‘‘ Pair it with the PPP Compression Control Protocol [3] and one of the PPP Compression Protocols [4-10], and you get an interoperable way to do data compression on a point-to-point link. Iconic ๐Ÿ”ฅ

This document gives you a PPP encapsulation for serial data. It specifies a transport protocol, PPP-SDTP, and an associated control protocol, PPP-SDCP. Add those to the PPP protocols we just mentioned and PPP can compress serial data on a point-to-point link โœจ

This first edition of PPP-SDTP/SDCP covers HDLC-like synchronous serial data and asynchronous serial data ๐ŸŒธ It does that with a terminal adaption header based on V.120 [2]. More synchronous protocols may come later, as the marketplace demands ๐Ÿ’…

The V.120 terminal adaption header lets transported data frames get split across several packets. It also carries DTE port idle and error information, and optionally DTE control state information ๐Ÿงš

Beyond the V.120 Header, fields can be added through negotiation for features V.120 doesn't have. The extras are a Length Field (used to tell packets apart inside compound frames) and a Port field (for multi-port multiplexing) ๐ŸŽ€ The protocol can also use the reserved bits in the V.120 header to carry non-octet-aligned frames and provide a flow control mechanism ๐Ÿซถ

So PPP-SDTP lets you pick one frame format out of several using PPP-SDCP negotiation ๐Ÿ’– The terminal adaption header can be fixed length or variable length, depending on whether you want simplicity or flexibility ๐ŸŒˆ

The default frame format puts the terminal adaption header at the end of the packet. This gives optimal transmitter timelines when user frames are segmented and compression is also in use ๐Ÿ‘‘

2. SDTP Packets ๐Ÿ’œ

Before any SDTP packets may be communicated, PPP must reach the Network-Layer Protocol phase, and the SDTP Control Protocol must reach the Opened state โœจ No skipping ahead, bestie ๐Ÿ’…

By default, exactly one SDTP packet is encapsulated in the PPP Information field, where the PPP Protocol field indicates type hex 0049 (PPP-SDTP) ๐Ÿฆ‹ If the Length-Field-Present Configuration Option and the LCP Compound-Frames Configuration Option are successfully negotiated, multiple SDTP packets may be placed in the PPP Information field. They're told apart by the presence of Length fields in each packet ๐Ÿ”ฅ

The maximum length of the SDTP datagram sent over a PPP link is limited only by the negotiated Maximum-Frame-Size and the maximum length of the Information field of a PPP encapsulated packet ๐ŸŒธ Heads up: if compression is used on the PPP link, the maximum length of the SDTP datagram may be larger or smaller than the maximum length of the Information field of a PPP encapsulated packet, depending on the particular compression algorithm and protocol used ๐Ÿ™ˆ

V.120 ([2]) defines an adaption header used with its asynchronous and synchronous modes of operation. SDTP packets include this header as a Header field to provide the protocol adaption function ๐Ÿงš Through negotiation, extra fields can be added to give sequencing and multiplexing capability within SDTP. SDTP also has an option to use the reserved bits of the header for flow control and for transporting non-octet-aligned data frames ๐Ÿ’–

The default SDTP packet format is designed for efficient use of the protocol's segmentation feature when combined with a PPP Compression Protocol [4-10] โœจ It's a little different from other PPP NCPs, because data is read from both ends of the packet ๐Ÿคฏ The Header field sits at the end of the SDTP packet, with its octets in reversed order. This somewhat unique format was picked for optimal transmitter timelines when compression is used and transported data frames are split into multiple SDTP packets ๐Ÿ‘‘

Here's the logic, babe: the Header field says whether the data is split across multiple packets or not. So if it's at the end, the transmitter can decide after seeing the compressed size of the packet, and then just run the Header field through the compressor once that's decided ๐Ÿ’…

When the Header field goes before the data, as in the optional packet format, the transmitter has to decide whether to split a frame over multiple packets without knowing how compressible the frame is ๐Ÿ˜ญ So the optional format is meant for frames that aren't split into multiple SDTP packets, or for setups where SDTP isn't coupled with compression. It's believed this format may be useful for some hardware implementations ๐ŸŒˆ

2.1. Padding ๐ŸŒธ

If padding is used, SDTP packets require the use of the Length Field, or the previous negotiation of the LCP Self-Describing-Padding Configuration Option [11] ๐Ÿซถ

2.2. Packet Formats ๐Ÿฆ‹

The default SDTP 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        PPP Protocol ID        |    Transported Data ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Header -  H   |
   +-+-+-+-+-+-+-+-+

The two complete frame formats are shown below: Header-Last and Header-First ๐Ÿ’– Header-Last is the default packet format. The additional fields support Control State Information (CS), multiple packets, and multi-port multiplexing โœจ Again, the fields are transmitted from left to right, and the field descriptions follow the packet formats ๐Ÿงš

Header-Last ๐Ÿ‘‘

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        PPP Protocol ID        |          (Length)             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    (Port)     |  Transported Data / (Odd-Pad) ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Header - (CS) :       H       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Header-First ๐ŸŒˆ

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        PPP Protocol ID        |          (Length)             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    (Port)     | Header  -  H  :     (CS)      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Transported Data / (Odd-Pad) ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

PPP Protocol ID ๐Ÿ’…

The PPP Protocol ID field is described in the Point-to-Point Protocol Encapsulation [1] ๐Ÿฆ‹

When SDTP is successfully negotiated by SDCP, the value is 0049 hex. This value may be compressed to one octet when Protocol-Field-Compression is negotiated, or if one of the PPP compression protocols [4-10] is used ๐Ÿซถ

Length ๐ŸŽ€

The optional Length field is present in every SDTP packet once the Length-Field-Present Configuration Option is successfully negotiated ๐ŸŒธ

The value of the Length field is the combined lengths of the Length, Port (if present), Header, Transmitted Data, and Odd-Pad (if present) fields, in octets ๐Ÿงš

The Length field defaults to one octet. Valid lengths are from 2 to 255 octets, since each packet must include at least a one octet Header field ๐Ÿ’–

If you want, the Length field can be negotiated to be two octets instead. In that case, valid lengths are from 2 to 65535 octets, and the field is transmitted most significant octet first โœจ

Either way, a length of 0 means the combined length is the same as the length of the remainder of the PPP Information Field ๐ŸŒˆ

Port ๐Ÿฆ‹

(Continued in Part 2!) ๐Ÿ’œ

The Port field is there in every SDTP packet once the Multi-Port Option has been successfully negotiated. ๐Ÿ“ก

It's one octet long, so valid Port numbers run from 0 to 254. Port 255 is reserved for control purposes, which you'll see more about in the flow control section. ๐ŸŽ€

Okay, the Header field is the terminal adaption header from ITU-T Recommendation V.120, and it's giving structure. โœจ Depending on the settings, it's either one or two octets. The first is the terminal adaption header octet (H), and the second is an optional header extension for control state information (CS).

SDTP only supports the protocol sensitive operation of V.120. Bit transparent operation is a no from us ๐Ÿ™…โ€โ™€๏ธ. The bit descriptions below come from V.120 itself. SDTP also adds something extra: it lets some of V.120's reserved bits do flow control and help with frames that aren't octet aligned. ๐Ÿ’…

The length of the Header is decided by the E bit in the first octet, so it's one or two octets depending on that. By default, the E bit must be set in the H octet and the CS octet isn't there at all. A Configuration Option can be negotiated to allow the CS octet, or even to make it required in every packet. ๐Ÿงš

H (V.120 Terminal Adaption Header)

Here's how the first Header octet is laid out:

    0     1     2     3     4     5     6     7
+-----+-----+-----+-----+-----+-----+-----+-----+
|  E  | BR  | Res | FC  | C2  | C1  |  B  |  F  |
+-----+-----+-----+-----+-----+-----+-----+-----+

E - Extension Bit

The E bit is the extension bit. If it's 0, that means the Control-2 field is present. ๐ŸŒธ

BR - Break / HDLC Idle Bit

In asynchronous mode, BR tells you the DTE has invoked the BREAK function. A value of 1 means BREAK. ๐Ÿ’œ

In synchronous HDLC mode, BR shows that the DTE port is receiving the HDLC idle condition, and 1 means that idle condition is happening.

Res - Reserved

This bit is reserved and MUST be set to 0. (It's reserved in V.120 too, so nothing new there.) ๐Ÿ™ˆ

FC - Flow Control

This bit is for flow control of SDTP traffic on the network, for applications that need it. It's especially useful when data compression is in play, since the DTE port might be using an X.21 interface, which doesn't have independent control of DTE transmit and receive clocks. It could also just be that the underlying link layer, like PPP in HDLC-like Framing, doesn't have a network flow control mechanism, so something else has to step in. ๐Ÿฆ‹

A value of 0 means the receiver is ready for data. That's Flow-On. A value of 1 means the receiver doesn't want any data right now, so the sender should stop, and that's Flow-Off. Flow control works per port. Flow control messages sent on Port 255 affect all ports. ๐Ÿ‘‘

Here's the safety net: a Flow-Off expires after T1 seconds, so a missed Flow-On can't leave everyone stuck in a hangup. If a unit wants its peer to stay in the Flow-Off state for longer than T1 seconds, it MUST send another Flow-Off message every T1 seconds. A unit that receives a Flow-Off can start transmitting again T1 seconds after the last Flow-Off it received. T1 is set by the Flow-Expiration-Time Configuration Option, and the default is 10 seconds. Every port uses the same T1 value, so there's no separate one per port. โฑ๏ธ

(This bit is reserved in V.120, which says it has to be zero. The flow control definition above stays compatible with that whenever flow control isn't being used.)

C1, C2 - Error Control Bits

C1 and C2 handle DTE port error detection and transmission. Here's what they mean:

+----+----+--------------+--------------+
|         |           Meaning           |
+----+----+--------------+--------------+
| C1 | C2 | Synchronous  | Asynchronous |
+----+----+--------------+--------------+
|  0 |  0 | No Error     | No Error     |
|    |    |     Detected |     Detected |
+----+----+--------------+--------------+
|  0 |  1 | FCS Error    | Stop-bit     |
|    |    |      (DTE)   |     Error    |
+----+----+--------------+--------------+
|  1 |  0 | Abort        | Parity Error |
|    |    |              | on the Last  |
|    |    |              | Character in |
|    |    |              | Frame        |
+----+----+--------------+--------------+
|  1 |  1 | DTE Overrun* | Stop-bit and |
|    |    |              | Parity Error |
+----+----+--------------+--------------+

The right responses to these bits are covered in Sections 2.2.1 and 2.2.2 of the V.120 standard. There, the R reference point is read as the DTE port. ๐Ÿ”

B, F - Segmentation Bits

B and F are how you segment and reassemble transported frames in synchronous HDLC mode. B set to 1 means the packet has the beginning of a transported frame, a Begin Frame. F set to 1 means the packet has the final portion of a transported frame, a Final Frame. A packet with neither the start nor the end is a Middle Frame. ๐Ÿงฉ

For asynchronous mode and bit transparent mode, both bits MUST be set to 1. Here's the summary table:

+---+---+--------------+----------------+
|       |         Application           |
+---+---+--------------+----------------+
| B | F | Synchronous  | Asynchronous   |
+---+---+--------------+----------------+
| 1 | 0 | Begin Frame  | Not Applicable |
+---+---+--------------+----------------+
| 0 | 0 | Middle Frame | Not Applicable |
+---+---+--------------+----------------+
| 1 | 0 | Final Frame  | Not Applicable |
+---+---+--------------+----------------+
| 1 | 1 | Single Frame | Required       |
+---+---+--------------+----------------+

CS (V.120 optional Header Extension for Control State Information)

This is the second Header octet, the optional one. Here's its layout:

    0     1     2     3     4     5     6     7
+-----+-----+-----+-----+-----+-----+-----+-----+
|  E  | DR  | SR  | RR  | Res |(Odd-Pad Length) |
+-----+-----+-----+-----+-----+-----+-----+-----+

E - Extension Bit

The E bit lets the Header field be extended further. It's set to 1 to show there's no further extension of the Header field. โœจ

DR - Data Ready

DR set to 1 means the DTE port is activated. ๐Ÿ’–

SR - Send Ready

SR set to 1 means the DTE is ready to send data. ๐Ÿš€

RR - Receive Ready

RR set to 1 means the DTE is ready to receive data. It can be used for DTE flow control in half-duplex transmissions. ๐Ÿซถ

Res - Reserved

This bit is reserved and set to 0. (It's a reserved bit in V.120 as well.) ๐Ÿ™ƒ

Odd-Pad Length (Optional)

The Odd-Pad Length field is for when non-octet aligned HDLC frames are allowed. It's a 3-bit field that can hold 0 through 7, and its value is how many bits long the Odd-Pad field is. That number is whatever it takes to make the Transported Data Field plus the Odd-Pad Field line up on an octet boundary. ๐Ÿงฎ

If non-octet aligned frames aren't allowed, this field goes unused and all of its bits are set to 0. (In V.120, these bits are reserved.)

Transported Data

The transported data field holds the serial data being carried. ๐Ÿ“ฆ

When the serial data type is negotiated as HDLC-like synchronous, this field holds all or part of a transported HDLC-like frame. Here's a sample transported HDLC frame. The figure doesn't show the bits inserted for transparency. ๐Ÿ”

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flag:01111110 | (Address, Control and Information Fields) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             (FCS)                                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - - - - - - - -+
| Flag:01111110 |
+-+-+-+-+-+-+-+-+

Only the data between the flags gets transported. The flags themselves don't. The FCS is transported unless the FCS-Mode Configuration Option has been successfully negotiated to do something else. ๐ŸŒˆ

Odd-Pad

The optional Odd-Pad (Odd Frame Pad) field shows up when the transported data frame isn't octet aligned and the Allow-Odd-Frames Option has been successfully negotiated. Its job is to pad the Transported Data field out to an octet boundary. The Odd-Pad goes in the high order bits of the last octet of the Transported Data field, and every bit in it is zero. ๐ŸŽ€

3. Serial Data Control Protocol โœจ

okay so SDCP is the protocol that sets up, switches on, and switches off the SDTP modules on both ends of a point-to-point link ๐Ÿ”Œ it's giving config manager energy ๐Ÿ’… It uses the same packet exchange mechanism and state machine as the Link Control Protocol, so if you already know LCP, you're basically already there ๐Ÿซถ SDCP packets can't be exchanged until PPP has reached the Network-Layer Protocol phase, and any SDCP packets that show up before that phase SHOULD be silently discarded ๐Ÿ™ˆ

SDCP is exactly the same as the Link Control Protocol [1], with a few 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 SDCP packet gets wrapped in the PPP Information field, and the PPP Protocol field says hex 8049 (PPP-SDCP) ๐Ÿฆ‹

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. bestie, that's a whole vibe check ๐Ÿ’€

Timeouts

SDCP 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. patience is a virtue, iykyk ๐ŸŒธ

Configuration Option Types

SDCP has its own distinct set of Configuration Options, which are defined in this document. ๐Ÿ‘‘


4. SDCP Configuration Option Format

okay this part is my favourite ๐Ÿ˜ญ SDCP Configuration Options let you negotiate changes to the default SDCP characteristics. If a Configuration Option is not included in a Configure-Request packet, the default value for that Configuration Option is assumed. โœจ

SDCP uses the same Configuration Option format defined in LCP [1], just with its own separate set of Options ๐Ÿงš

The Option Types are:

1   Packet-Format
2   Header-Type
3   Length-Field-Present
4   Multi-Port
5   Transport-Mode
6   Maximum-Frame-Size
7   Allow-Odd-Frames
8   FCS-Type
9   Flow-Expiration-Time

Note that Option Types 5-8 are specific to a single port and require port numbers in their format. Option Types 6-8 are specific to the HDLC-Synchronous Transport-Mode. ๐Ÿ’…

4.1. Packet-Format

This option decides whether the Header field goes before or after the data field. When the Header field follows the data field, the order of its octets are reversed. ๐Ÿ”„

 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |     Format    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 1
  • Length: 3
  • Format: the values are
0   Header-Last   (default)
1   Header-First

4.2. Header-Type

This option picks the type of the Header field. A Header-Type of H-and-CS means the CS octet will be present if the E-bit in the H-octet says so. A Header-Type of H-and-CS-Always means both the H and CS octets show up in every single packet ๐Ÿซฃ

 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |  Header-Type  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 2
  • Length: 3
  • Header-Type: the values are
0   H-Only (default)
1   H-and-CS
2   H-and-CS-Always

4.3. Length-Field-Present

By default, a PPP Information Field holds only a single SDTP packet, and an SDTP Packet has no length field. Successfully negotiating this option makes every SDTP packet contain the length field, and lets SDTP packets be packed into compound frames (see LCP Compound-Frames Configuration Option [11]) ๐Ÿ“ฆ

This option is required if the LCP Length-Field-Present Configuration option has been negotiated. ๐Ÿซถ

The size of the Length field is negotiated through the Length-Size parameter.

 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |  Length-Size  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 3
  • Length: 3
  • Length-Size: the values are
0   No Length Field (default)
1   Length field of 1 octet
2   Length field of 2 octets

4.4. Multi-Port

By default, packets don't carry a port number, and every packet goes to the default port, Port 0 ๐Ÿšช Successfully negotiating the Multi-Port configuration option means every packet will carry a port number. The maximum port number, and so the number of ports, is negotiated using the Max-Port-Num field. A value of 0 means a single port is used and no port field will be present in an SDTP packet. (This is the same as not negotiating or rejecting this option.) Port numbers start at 0 and go up to 254. Port number 255 is reserved for control purposes (see section on flow control) ๐ŸŒˆ

Protocol Specific negotiations that happen on a per port basis require the port number to be specified as part of the configuration negotiation. ๐Ÿ”ฅ

 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     | Max-Port-Num  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 4
  • Length: 3
  • Max-Port-Num: the maximum port number that can be used. The number of ports present is Max-Port-Num + 1. The value can range from 0 to 254.

4.5. Transport-Mode

This parameter picks the transport mode for the specified port. ๐Ÿš€

 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     |      Port     |     Mode      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 5
  • Length: 4
  • Port: the port this option applies to.
  • Mode: the transport mode used for this port. The values are
0   HDLC Synchronous (default)
1   Asynchronous

4.6. Maximum-Frame-Size

This parameter sets the maximum number of octets allowed in a transported data frame ๐Ÿ“

 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     |      Port     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Maximum-Frame-Size                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 6
  • Length: 7
  • Port: the port this option applies to.
  • Maximum-Frame-Size: the maximum allowed length of a transported data frame, in octets. The default is 10,000. The negotiable range is 1 to 2**31 - 1. The value 0 is reserved to mean no limit. This field is transmitted most significant octet first. ๐Ÿ’œ

4.7. Allow-Odd-Frames

By default, only octet-aligned data frames are allowed for transport ๐Ÿ™…โ€โ™€๏ธ Successfully negotiating this option lets non-octet aligned frames be transported. The size of the padding needed to align the frames is carried in the CS Header octet.

Use of Header-Type H-Only is not permitted in conjunction with this option. โš ๏ธ
 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |      Port     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 7
  • Length: 3
  • Port: the port this option applies to.

4.8. FCS-Type

By default, the FCS of the transported data frame is transported ๐Ÿ” This option lets the FCS be removed by the transmitter and regenerated by the receiver.

It is important that implementations not use regeneration unless they are using PPP Reliable Transmission [12] or operating over some other layer that will provide reliable notification of a dropped packet. Implementations are not permitted to send a incomplete or bad frame to the user with a good (regenerated) FCS. ๐Ÿ˜ฑ

This option also selects the type of user FCS that will be regenerated. ๐Ÿฆ‹

 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     |      Port     |    FCS-Type   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 8
  • Length: 4
  • Port: the port this option applies to.
  • FCS-Type: the values are
0   Transparent-Transport (Default)
1   16-bit ITU-T CRC
2   32-bit ITU-T CRC

4.9. Flow-Expiration-Time

As described in section 2.2, Flow-Off messages expire after T1 seconds. By default, T1 is 10 seconds. This configuration option lets you change the value of T1 โฑ๏ธ

 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Flow-Expiration-Time      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 9
  • Length: 5
  • Flow-Expiration-Time: this field holds a 16 bit unsigned integer that sets the value of T1 as follows: T1 = Flow-Expiration-Time / 10 seconds. So the value is in units of 1/10 of a second, with allowable values from 1 to 2^16-1 (0.1 to 6553.5 seconds). It is transmitted most significant octet first. The default value is 100 (10 seconds), which all must support. main character timer energy ๐ŸŒˆ

Security Considerations ๐Ÿ”

Security issues are not discussed in this memo. ๐Ÿ’€


References

  • [1] Simpson, W., ed., "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994.
  • [2] CCITT Recommendation V.120 (09/92), "Support by an ISDN of Data Terminal Equipment with V-Series Type Interfaces with Provision for Statistical Multiplexing", 1993.
  • [3] Rand, D., "The PPP Compression Control Protocol (CCP)", RFC 1962, June 1996.
  • [4] Friend, R., and W. Simpson, "PPP Stac LZS Compression Protocol", RFC 1974, August 1996.
  • [5] Rand, D., "PPP Predictor Compression Protocol", RFC 1978, August 1996.
  • [6] Petty, J., "PPP Hewlett-Packard Packet-by-Packet Compression (HP PPC) Protocol", Work in Progress.
  • [7] Carr, D., "PPP Gandalf FZA Compression Protocol", Work in Progress.
  • [8] Schryver, V., "PPP BSD Compression Protocol", RFC 1977, August 1996.
  • [9] Schremp, et. al., "PPP Magnalink Variable Resource Compression", RFC 1975, August 1996.
  • [10] Schneider, K., "PPP Stacker LZS Compression Protocol using a DCP Header (LZS-DCP)", RFC 1967, August 1996.
  • [11] Simpson, W.A., "PPP LCP Extensions", RFC 1570, January 1994.
  • [12] Rand, D., "PPP Reliable Transmission", RFC 1663, July 1994.

Chair's Address ๐ŸŽ€

Okay so if you want to reach the working group, the way to do it is through the current chair! ๐Ÿ’– Here's where to find them:

Karl Fox
Ascend Communications
3518 Riverside Drive, Suite 101
Columbus, Ohio 43221

EMail: karl@ascend.com

Authors' Addresses ๐Ÿฆ‹

Bestie, if you have questions about this memo, these are the people to ask! ๐Ÿซถ Kevin Schneider is first up:

Kevin Schneider
Adtran, Inc.
901 Explorer Blvd.
Huntsville, AL 35806-2807

Phone: (205) 971-8000
EMail:  kevin@adtran.com

And then there's Stuart Venters, who is also at Adtran, Inc. and is just as ready to help! ๐ŸŒธ

Stuart Venters
Adtran, Inc.
901 Explorer Blvd.
Huntsville, AL 35806-2807

Phone: (205) 971-8000
EMail: sventers@adtran.com
๐Ÿ“ฆ where this page comes from