RFC 1538

Advanced SNA/IP : A Simple SNA Transport Protocol

๐Ÿ“… published October 1993, from ietf

Okay bestie, this is RFC 1538 ๐ŸŽ€ Part 1 of 2 ๐Ÿ’… Written by W. Behl and B. Sterling (both from McDATA Corporation) and W. Teskey (from I/O Concepts) in the Network Working Group, dated October 1993. It's an Informational doc, and its title block doesn't list any RFCs it obsoletes or updates โœจ. The title is Advanced SNA/IP : A Simple SNA Transport Protocol ๐Ÿฆ‹

Status of this Memo ๐Ÿ“œ

This memo is giving info for the Internet community ๐Ÿ’œ. It does not specify an Internet standard, and distribution of it is unlimited ๐ŸŒˆ.

Abstract ๐Ÿซถ

This RFC shares info for the Internet community about a way to set up and keep SNA sessions running over an IP internet ๐ŸŒ. The issues in it might not be directly relevant to the Internet's research problems, but a bunch of researchers and implementors could still find them interesting ๐Ÿค“. For questions or comments about this RFC, email snaip@mcdata.com ๐Ÿ’Œ.

Table of Contents ๐Ÿ—บ

   1. Introduction..................................................  2
   2. Motivation and Rationale......................................  2
   3. SNA/IP Protocol Specification.................................  3
   3.1 Glossary.....................................................  3
   3.2 Conventions and Assumptions..................................  3
   3.3 The Protocol.................................................  3
   3.3.1 Connection Establishment...................................  3
   3.3.2 Data Transfer..............................................  5
   3.3.3 Connection Termination and Loss............................  6
   3.3.4 Session Data Flow..........................................  7
   3.3.5 State Transition Table for the Initiating Node.............  8
   4. LLC to SNA/IP Conversion......................................  8
   5. Performance...................................................  8
   6. VTAM Definition...............................................  9
   7. Acknowledgments...............................................  9
   8. References....................................................  9
   9. Security Considerations....................................... 10
   10. Authors' Addresses........................................... 10
   11. Disclaimer................................................... 10

1. Introduction โœจ

So Advanced SNA/IP is a way to send SNA session data across an IP network ๐ŸŒ. This doc describes the SNA/IP protocol as it's implemented in the McDATA LinkMaster(R) 6200 Network Gateway, the McDATA LinkMaster(R) 7100 Network Controller, and the I/O Concepts X-Direct TN3270 Server ๐ŸŽ€.

Advanced SNA/IP is different from other protocols that route SNA session traffic over an IP network ๐Ÿ’…. SNA/IP was originally designed for peripheral network nodes like SNA gateways and downstream nodes (DSNs) ๐Ÿงš. The authors feel, though, that SNA/IP could also be built into intermediate network nodes like routers, as the base for an LLC to IP subnet gateway or a data link switch function ๐Ÿ”ฅ.

2. Motivation and Rationale ๐Ÿ’ญ

First up, the token-ring media access control (MAC) protocol 802.5 and the logical link control (LLC) protocol 802.2 were the OG LAN protocols for giving SNA sessions a reliable, connection-oriented data link in a LAN environment ๐Ÿ‘‘.

McDATA's experience moving SNA over 802.5 networks led to an 802.3/802.2 (Ethernet) based version ๐Ÿ“. Once prospective customers started looking at these Ethernet products, people asked whether they could be routed ๐Ÿ™ˆ. Network admins who were used to Ethernet and IP-based protocols needed an IP routable solution, and McDATA's "SNA over Ethernet" products were bridgeable but not routable ๐Ÿ˜ญ.

SNA sessions need a reliable, connection-oriented data link ๐Ÿ’–. TCP running over IP gives you a reliable, connection-oriented transport service, and it's routable too, which is a huge bonus โœจ. So it seemed like UDP and TCP could stand in for the 802.2 Type I and Type II levels of service used in traditional SNA token-ring implementations ๐Ÿฆ‹. That's basically how Advanced SNA/IP came to be ๐ŸŽ€.

3. SNA/IP Protocol Specification ๐Ÿงฉ

3.1. Glossary ๐Ÿ“–

  • Data Link Switching (DLSw) - This is best described as a routing protocol used to convert LLC-based SNA sessions to an IP form ๐Ÿ”. The first version of the DLSw protocol is documented in the informational RFC 1434 [1] ๐Ÿ’œ.
  • Downstream Node (DSN) - An SNA Physical Unit (PU) type 2.0 or 2.1 device that connects to the SNA network over a LAN (802.5, 802.3, etc.), instead of over an SDLC, X.25, or channel connection ๐ŸŒธ.
  • SNA Gateway - A device that does the data link control (DLC) conversion for SNA PU type 5 (host) devices and LAN-attached DSNs ๐ŸŒˆ.
  • Subnet SNA Gateway - A device connected to both a traditional SNA token-ring segment and an IP network. It locally terminates the LLC connections, maps source addresses to destination IP addresses, and converts (switches) LLC to IP ๐Ÿงš.

3.2. Conventions and Assumptions ๐ŸŽ€

Frame formats are shown starting with the IP header ๐Ÿ’…. Other headers will, of course, show up in the actual frames sent, but those headers, and how many of them there are, will vary across MAC types ๐Ÿ”ฅ.

The reader is expected to know both standard SNA (as far as it applies to SNA Gateway and DSN functions) and the base set of TCP/IP protocols ๐Ÿค“. Where it's practical, the reader is pointed to the right SNA and TCP/IP docs ๐Ÿ“š.

3.3. The Protocol ๐Ÿ’ซ

There are conceptually three phases to the Advanced SNA/IP protocol: the Connection Establishment phase, the Data Transfer phase, and the Connection Termination phase โœจ.

3.3.1. Connection Establishment ๐Ÿค

Connection Establishment is the exchange of logical XID packets between the connecting end nodes, and it ends with a TCP connection being set up ๐Ÿ’–. It's kind of like the IBM-specified Test, XID, SABME and UA exchange used to set up a Type II 802.2 connection for SNA traffic [2] ๐Ÿฆ‹. Instead of the 802.2 Type I messages, SNA/IP defines the following set of UDP datagrams ๐ŸŒˆ:

Logical Null XID

Use: This gets sent by an initiating node (such as a DSN) when it wants a connection to another SNA node ๐Ÿš€.

The Logical Null XID tells the other node that the sender wants to negotiate connection parameters ๐Ÿง . Once those parameters are set, the Logical Null XID also tells the other side which TCP port the sender wants the connection made to ๐ŸŽฏ.

Format:

        ------------------------------------
        | IP Header  |  UDP Header  | 0xBF |
        ------------------------------------
  • Source IP address: The IP address of the initiating node ๐Ÿ .
  • Destination IP address: The IP address of the partner SNA node ๐Ÿ“ฎ.
  • Source UDP Port: Must match the TCP port number to be used in the eventual TCP connection ๐Ÿ”—.
  • Destination UDP Port: A known port on the partner node that expects SNA/IP datagrams ๐Ÿšช.

XID Request

Use: This gets sent in response to a Logical Null XID, asking the receiving node to send a Logical SNA XID datagram ๐Ÿ™‹โ€โ™€๏ธ.

Format:

        ------------------------------------
        | IP Header  |  UDP Header  | 0xBF |
        ------------------------------------

The source and destination IP and UDP port numbers logically follow from the ones in the Logical Null XID datagram ๐Ÿช„.

The XID Request and the Logical Null XID have the same format ๐Ÿ‘ฏ. The two types are told apart by the roles the two nodes play ๐ŸŽญ. In current implementations, the DSN starts the XID exchange by sending the Logical Null XID, and the SNA Gateway responds with the XID Request ๐Ÿ”ฅ.

Logical SNA XID

Use: This gets sent in response to an XID Request, as part of SNA XID negotiation ๐Ÿค.

Format:

        ----------------------------------------------------
        | IP Header  |  UDP Header  | 0xBF | SNA XID data  |
        ----------------------------------------------------

For PU 2.0 nodes, the SNA XID data is a Format 0 XID [3] ๐ŸŒธ. For PU 2.1 nodes, the SNA XID data is a Format 3 XID [3] ๐ŸŒŸ.

Here's what a typical Connection Establishment data flow looks like ๐Ÿ‘€:

     Node 1                                    Node 2

     Logical Null XID ------------------------->
                       <------------------------ XID Request
     Logical SNA XID -------------------------->
                       <------------------------ TCP SYN
     TCP SYN ACK ----------------------------->
                       <------------------------ TCP ACK
Note: The source UDP port of the Logical Null XID equals the destination TCP port of the TCP SYN segment. ๐ŸŽฏ

Retries of the Logical Null XID by the initiating node should occur periodically until an XID Request comes back in reply ๐Ÿ”. The frequency of the retries is left up to the implementor ๐Ÿ› . The lower bound on the retry timer should be more than the expected round trip time for a packet on the network โฑ.

3.3.2. Data Transfer ๐Ÿ“ฆ

There are no special packets defined for the Data Transfer phase ๐Ÿ™Œ. Once the TCP connection is up, SNA Request Units (RUs) may be exchanged between the two end nodes ๐Ÿ’Œ. The SNA session data shows up as TCP segment data ๐Ÿ“จ. The only SNA/IP requirement that gets added is that each SNA message, made up of a Transmission Header (TH), a Request/Response Header (RH), and an optional Request/Response Request Unit (RU), be preceded by a two octet length field ๐Ÿ“. Examples of Data Transfer frames are below ๐Ÿ‘‡.

      -------------------------------------------------------
      | IP Header | TCP Header | SNA Msg 1 len | SNA Msg 1  |
      -------------------------------------------------------

      ----------------------------------------------
      | IP Header | TCP Header | SNA Msg 1 cont'd  ->
      ----------------------------------------------
           --------------------------------
              | SNA Msg 2 len | SNA Msg 2 |
           --------------------------------

The length field is passed in big endian format ๐Ÿงƒ. 0 is a valid length value ๐Ÿ™Œ.

The format of the SNA Message pieces is as defined by SNA [3] ๐Ÿ“–.

Reliable and sequential delivery of data is provided by the TCP protocol [5,6] ๐Ÿฆ‹.

3.3.3. Connection Termination and Loss โœจ

okay so either SNA node can end the logical SNA connection whenever it wants ๐Ÿ’… by sending a TCP-level FIN segment. the TCP rules are the boss of this whole process [5,6] ๐Ÿซถ

a connection can also end, but way less gracefully ๐Ÿ˜ญ, if either SNA node sends a TCP Reset segment. ngl that's the chaotic exit ๐Ÿ’€

once a connection is terminated, a new one can be set up using the steps in the Connection Establishment section ๐Ÿฆ‹. here's the big one ๐Ÿšจ: for reconnections to the LinkMaster 6200 gateway, the initiating node must use the same UDP source port. that also means the same TCP port gets used. why? the gateway may not always know a TCP connection was terminated. that happens if the DSN gets disabled before it sends a FIN or Reset segment. in that situation the SNA host is still holding its resources, and it won't allow a reconnection from a DSN it thinks is already in session ๐Ÿ™…. by making the DSN reuse the same port when it reconnects, the LinkMaster 6200 can tell when it needs to reset the host connection ๐Ÿง โœจ

3.3.4. Complete Session Data Flow ๐ŸŒˆ

here's the whole session flow start to finish, bestie ๐Ÿงš

      Node 1                                    Node 2

     Logical Null XID ------------------------->
      (UDP Datagram)
     Logical Null XID ------------------------->
      (UDP Datagram)
                       <------------------------ XID Request
                                                  (UDP Datagram)
     Logical SNA XID -------------------------->
       (UDP Datagram)
                       <------------------------ TCP SYN
                                                  (TCP Message)
     TCP SYN ACK ----------------------------->
       (TCP Message)
                       <------------------------ TCP SYN
                                                  (TCP Message)

      ****************** Connection Established *******************

                       <------------------------ SNA ACTPU
                                                  (TCP Message)
       SNA ACTPU Response --------------------->
        (TCP Message)
                       <------------------------ SNA ACTLU
                                                  (TCP Message)
       SNA ACTLU Response --------------------->
        (TCP Message)
                                   .
                                   .
                                   .
                       <------------------------ TCP FIN
                                                  (TCP Message)
       TCP FIN ACK     ------------------------>
        (TCP Message)
                       <------------------------ TCP ACK
                                                  (TCP Message)

      ******************** Connection Closed *********************

       Logical Null XID ----------------------->
        (UDP Datagram)
             .
             .
             .
             .

3.3.5. State Transition Table for the Initiating Node ๐Ÿ’–

this table is the initiating node's glow-up arc ๐Ÿ“Š

                             Transition State
   Given State | No Conn | Null XID Sent | SNA XID Sent | Conn Estb
   ------------+---------+---------------+--------------+-----------
   No          |         | Internal Act. |              |
   Connection  |         | Stimulus      |              |
               |         | ---> Sends    |              |
               |         |  1st Null XID |              |
   ------------+---------+---------------+--------------+-----------
   Null XID    |         |  Internal     | XID Request  |
   Sent        |         | Timer Event   | Received     |
               |         | ----> Resend  | ----> Sends  |
               |         | Null XID      | SNA XID      |
   ------------+---------+---------------+--------------+-----------
   SNA XID     |         | Internal      | SNA XID      | Indication
   Sent        |         | Timer Event   | Received     | that TCP
               |         | ----> Resend  | ----> Send   | connection
               |         | Null XID      | SNA XID      | is estb.
               |         |               |              |
   ------------+---------+---------------+--------------+-----------
   Connection  | Indica- |               |              | SNA
   Established | tion    |               |              | Session
               | that    |               |              | Data
               | TCP conn|               |              |
               | term.   |               |              |

no gateway state transition table here, babe ๐Ÿ™ˆ. it depends on the nature of the SNA host interface (3172 Channel Protocol, 3174 Channel Protocol, SDLC, etc.), so the transitions change from setup to setup ๐ŸŒธ

4. LLC to SNA/IP Conversion โœจ

okay so using Advanced SNA/IP to turn regular token ring-based SNA traffic into something routable is both conceivable and practical ๐Ÿ™Œ. it's super interesting, but digging into it is outside the scope of this RFC ๐Ÿ’…. quick taste though: an SNA/IP-based "subnet SNA gateway" application could do a lot of the stuff being discussed for the DLSw specification [1] ๐ŸŒธ

5. Performance ๐Ÿ“ˆ

how well SNA sessions run over an SNA/IP connection depends on how much bandwidth the network has and how much traffic is on it ๐Ÿšฆ. SNA/IP is set up to fully take advantage of the prioritization and class of service upgrades promised in the next generation of IP ๐Ÿ‘‘. right now it can use router packet prioritization based on port number, and it leaves the standard SNA class of service prioritization protocol intact ๐Ÿ’œ

McDATA ran performance measures comparing SNA/IP and LLC throughput across a single token-ring segment. SNA/IP came in at approximately a 15 percent decrease in maximum transactions per hour (1500 bytes to the DSN, 50 bytes out to the host) ๐Ÿ“‰. that's totally within the expected levels, given the extra processing TCP/IP over LLC needs in the LinkMaster 6200 and LinkMaster 7100 operating environments ๐Ÿ“

6. VTAM Definition ๐Ÿงš

how the host VTAM defines SNA/IP downstream nodes depends on the gateway implementation ๐Ÿ’…. they might show up as switched major nodes connected to an XCA, or as downstream nodes connected to a PU 2.0 controller [4] ๐Ÿ”ฅ

7. Acknowledgments ๐Ÿซถ

the authors want to give a huge shoutout to everyone who helped make SNA/IP happen ๐ŸŽ€. it was a total team effort involving customers, sales and marketing people, and engineers ๐ŸŒˆ. special thanks go to David Beal, Steve Cartwright, Tracey Floming, Audrey McEwen, Mark Platte, Paul Schroeder, Chuck Weil, and Marty Wright ๐Ÿ‘‘, who all played key roles in developing and testing the protocol and also in editing this RFC ๐Ÿ’–

8. References ๐Ÿ“š

[1] Dixon, R., and D. Kushi, "Data Link Switching: Switch-to-Switch Protocol", RFC 1434, IBM, March 1993.

[2] "Token-Ring Network Architecture Reference", IBM document #SC30-3374-02.

[3] "Systems Network Architecture Formats", IBM document #GA27-3136-12.

[4] "VTAM Resource Definition Reference", IBM document #SC31-6438-1.

[5] Comer, D., "Internetworking with TCP/IP Volume I", Prentice Hall 1991.

[6] Postel, J., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", STD 7, RFC 793, USC/Information Sciences Institute, September 1981.

9. Security Considerations ๐Ÿ”’

okay this is the part where I get dramatic ๐Ÿ˜ฑ

this RFC does not address issues of security. full stop ๐Ÿ’€ SNA level security procedures and protocols apply when SNA/IP is used as the transport ๐Ÿ”

10. Authors' Addresses ๐Ÿ’Œ

Wilfred Behl 310 Interlocken Parkway Broomfield, Colorado 80021

Phone: 303-460-4142 Email: wil@mcdata.com

Barbara Sterling 310 Interlocken Parkway Broomfield, Colorado 80021

Phone: 303-460-4211 Email: bjs@mcdata.com

William Teskey 2125 112th Ave. North East Suite 303 Bellevue, WA 98004

Phone: 206-450-0650 Email: wct@ioc-sea.com

Note: Any questions or comments relative to the contents of this RFC should be sent to snaip@mcdata.com. This address will be used to coordinate the handling of responses.

11. Disclaimer โญ

legal bit, but still iconic ๐Ÿ’… McDATA, the McDATA logo, and LinkMaster are registered trademarks of McDATA Corporation. every other product name and identification is a trademark of its own manufacturer, and those manufacturers are not affiliated with McDATA Corporation ๐Ÿซถ

๐Ÿ“ฆ where this page comes from