RFC 1859

ISO Transport Class 2 Non-use of Explicit Flow Control over TCP RFC1006 extension

πŸ“… published October 1995, from ietf

RFC 1859 πŸŽ€

Title: ISO Transport Class 2 Non-use of Explicit Flow Control over TCP, RFC1006 extension ✨

Author: Y. Pouffary, Digital Equipment Corporation πŸ’œ

Category: Informational 🌈

Date: October 1995 πŸ“…

Obsoletes / Updates: this header doesn't list anything it obsoletes or updates πŸ™ˆ

Network Working Group 🧚


Status of this Memo 🌸

Okay so this memo is just here to inform the Internet community πŸ’…. It doesn't specify an Internet standard of any kind. Distribution is unlimited, so share it with whoever 🫢

Table of Contents πŸ“š

   1. Introduction - General recommendations.......................2
   2. The protocol.................................................3
   2.1 TCP service as a Network Service - The Primitives...........3
   2.2 Connection Establishment....................................4
   2.3 Data Transfer...............................................5
   2.4 Connection Release..........................................6
   3. Packet Format................................................6
   4. DIGITAL DECnet over TCP/IP...................................8
   Acknowledgements................................................9
   References......................................................9
   Author's Address................................................9

1. Introduction - General recommendations ✨

So this doc is an extension to STD35, RFC1006, which is already a standard for the Internet community 🫢. It doesn't repeat the protocol definitions from RFC1006 or from International Standard ISO 8073, because those already exist. Instead, it explains how to run ISO Transport Class 2 Non-use of Explicit Flow Control on top of TCP πŸ¦‹.

This document SHOULD be used alongside RFC1006 and ISO 8073, periodt πŸ’….

RFC1006 is the one that shows how to run ISO 8073 Transport Class 0 on top of TCP. This memo is the Class 2 version, which means ISO 8073 Transport Class 2 Non-use of Explicit Flow Control on top of TCP 🌸. Class 2 has the same vibe as Class 0, honestly: a basic connection with minimal overhead ✨.

A transport class gets picked for each transport connection based on the characteristics of the lower layers and what the upper layer needs 🧠. Class 2 Non-use of Explicit Flow Control is the move when you want separate virtual data channels for Normal and Expedited Data, or when you want an explicit disconnection of the Transport connection πŸ‘‘.

Hosts that choose to implement this extension are expected to listen on the well-known TCP port number 399 πŸŽ€.

It is RECOMMENDED that the well-known RFC1006 TCP port 102 not be used πŸ™ˆ. The reason is to minimise impact on an existing RFC1006 implementation 🫢.

The memo also covers how this extension is used within the DIGITAL Network Architecture (DNA) πŸ’œ.

2. The protocol 🌈

The protocol in this memo is basically ISO 8073 Transport Class 2 Non-use of Explicit Flow Control, with a few extras πŸ’–:

  • Expedited Data service is supported. ✨
  • Splitting and Recombining MAY be used for Expedited Data transmission. 🧩
  • The Network Service used is provided by TCP. 🌐

Class 2 allows Multiplexing, but it is RECOMMENDED that this capability not be used, for performance reasons 🏎️.

ISO 8073 peers swap information in discrete units called transport protocol data units (TPDUs) πŸ“¦. This protocol wraps those TPDUs up in discrete units called TPKTs 🎁. The structure of TPKTs and how they relate to TPDUs are covered in the next sections πŸ‘€.

2.1 TCP service as a Network Service - The Primitives πŸ¦‹

Mapping the TCP service primitives to the service primitives ISO 8073 Transport expects is pretty straightforward when you're running over a connection-oriented network service πŸ’….

Heads up: the mapping below is a repeat from the RFC1006 standard, so nothing new here πŸ“.

network service                 TCP
---------------                 ---
CONNECTION ESTABLISHMENT

        N-CONNECT.REQUEST       open completes

        N-CONNECT.INDICATION    listen (PASSIVE open) finishes

        N-CONNECT.RESPONSE      listen completes

        N-CONNECT.CONFIRMATION  open (ACTIVE open) finishes

DATA TRANSFER

        N-DATA.REQUEST          send data

        N-DATA.INDICATION       data ready followed by read data

CONNECTION RELEASE

        N-DISCONNECT.REQUEST    close

        N-DISCONNECT.INDICATION connection closes or errors

Mapping the parameters between the TCP service and the network service is also straightforward ✨:

network service                 TCP
---------------                 ---
CONNECTION ESTABLISHMENT

        Called address          server's IP address (4 octets)

        Calling address         client's IP address (4 octets)

        all others              ignored

DATA TRANSFER

        NS-user data (NSDU)     data

CONNECTION RELEASE

        all parameters          ignored

2.2 Connection Establishment 🀝

Connection establishment follows the principles of ISO 8073, with these extras πŸ’«:

  • Connection Request and Connection Confirmation TPDUs MAY negotiate the use of Expedited Data transfer, using the negotiation mechanism specified in ISO 8073.
  • Connection Request and Connection Confirmation TPDUs MUST NOT negotiate the Use of Explicit Flow Control.

To do an N-CONNECT.REQUEST, the TS-peer does an active open to the desired IP address on the well-known TCP port 399 πŸš€. When TCP signals success or failure, that triggers an N-CONNECT.INDICATION πŸ””.

To wait for an N-CONNECT.INDICATION, a server listens on the well-known TCP port 399 πŸ‘‚. When a client successfully connects to that port, the event fires and an implicit N-CONNECT.RESPONSE action happens too πŸŽ‰.

2.3 Data Transfer πŸ“¦

The transfer procedures are based on the ones in ISO 8073, with two extras 🧩:

  • Expedited Data MAY be supported (if negotiated during connection establishment).

In Non-Use of Explicit Flow Control, Expedited Data needs no Expedited Data Acknowledgement πŸ™Œ.

  • Splitting and Recombining MAY be used for Expedited Data transmission.

Splitting and Recombining lets one transport connection use multiple TCP connections 🧡. TCP connections created for Splitting SHOULD also use the primitives described in 2.1 πŸ’–.

It is RECOMMENDED to only create a second TCP connection for Expedited Data when transmission of Expedited Data is requested ⏳.

Expedited Data MUST only be sent over an outgoing TCP connection πŸ“€. This second TCP connection MUST NOT be shared among transport connections, and it MUST remain established until the transport connection is terminated, at which time it MUST be closed πŸ”’.

Implementors note: The procedure of Splitting and Recombining for Expedited Data transmission guaranties that a congested Normal Data TCP connection cannot block an Expedited Data TCP connection. It also ensures independence of the Normal Data TCP connection from the Expedited Data TCP connection. πŸ’œ

To perform an N-DATA.REQUEST action, the TS-peer builds the desired TPKT and uses the TCP send data primitive πŸ“¨.

To trigger an N-DATA.INDICATION action, TCP indicates that data is ready, and a TPKT is read using the TCP read data primitive πŸ“–.

2.4 Connection Release πŸ‘‹

The procedures for connection release are identical to the ones in ISO 8073 πŸ’―. A user can terminate a connection in one of two ways πŸšͺ:

  • Abort Disconnect specifies that all messages at the source are not required to be sent to the destination before the connection is disconnected. πŸ’¨
  • Synchronous Disconnect specifies that all messages at the source MUST be sent to the destination, and that all messages at the destination MUST be delivered, before the connection is disconnected. 🀝

Disconnect Request and Disconnect Confirmation TPDUs are exchanged in both cases πŸ“¬. The Disconnect Request TPDU carries a code indicating the reason for the disconnection 🏷️.

For a Synchronous Disconnect, the Disconnect Request reason code is normal (80 hex). For an Abort Disconnect, the Disconnect Request reason code is normal with the additional information parameter value set to c0 hex πŸ”’.

When a Disconnect Confirmation TPDU is received, a N-DISCONNECT.REQUEST action is performed to close the TCP connection πŸ”š.

If the TCP connection fails for some other reason, that generates an N-DISCONNECT.INDICATION event πŸ’₯.

References

Okay bestie, here's the whole bibliography, every single source, no cap πŸ“šπŸ«Ά

  • [ISO8072] ISO. "International Standard 8072. Information Processing Systems -- Open Systems Interconnection: Transport Service Definition."
  • [ISO8073] ISO. "International Standard 8073. Information Processing Systems -- Open Systems Interconnection: Transport Protocol Specification."
  • [ISO8327] ISO. "International Standard 8327. Information Processing Systems -- Open Systems Interconnection: Session Protocol Specification."
  • [RFC791] Postel, J., "Internet Protocol - DARPA Internet Program Protocol Specification", STD 5, RFC 791, USC/Information Sciences Institute, September 1981.
  • [RFC793] Postel, J., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", STD 7, RFC 793, USC/Information Sciences Institute, September 1981.
  • [RFC1006] Rose, M., and D. Cass, "ISO Transport Services on Top of the TCP - Version: 3", STD 35, RFC 1006, Northrop Research and Technology Center, May 1987.

Security Considerations

Okay so this section is giving very short energy πŸ™ˆ but it's still super important, so listen up: Security issues are not discussed in this memo. πŸ’€


Author's Address

Meet the author, Yanick Pouffary, who worked at Digital Equipment Corporation's End Systems Networking group πŸŽ€βœ¨ Here's where to find her, verbatim:

Yanick Pouffary
End Systems Networking
Digital Equipment Corporation
Centre Technique (Europe)
B.P. 027
950 Routes des colles
06901 Sophia antipolis, France

Phone: +33 92-95-62-85
Fax:   +33 92-95-62-32
EMail: pouffary@taec.enet.dec.com

That's the whole RFC, bestie! πŸŒˆπŸ’– Literally iconic. πŸ’…

πŸ“¦ where this page comes from