RFC 1223

OSI CLNS and LLC1 protocols on Network Systems HYPERchannel

๐Ÿ“… published May 1991, from ietf

RFC 1223 ๐Ÿ’– OSI CLNS and LLC1 Protocols on Network Systems HYPERchannel

  • RFC number: 1223
  • Working group: Network Working Group
  • Author: J. Halpern, NSC ๐Ÿ‘‘
  • Category: Informational. It's giving info for the Internet community, not an Internet standard ๐ŸŽ€
  • Date: May 1991
  • Obsoletes / Updates: none listed in the header โœจ

Status of This Memo โœจ

Okay bestie, the whole point of this doc is to give a complete breakdown of the protocols and techniques used to send OSI CLNS and LLC1 datagrams (plus any higher level protocols riding along) over Network Systems Corporation's HYPERchannel equipment ๐Ÿฆ‹. It's written for network planners and implementers who already know the OSI protocol suite and how OSI traffic gets carried on standard networks like 802.3 ๐Ÿ’….

This memo just provides information for the Internet community. It doesn't specify an Internet standard ๐Ÿ™ˆ, and distribution of this memo is unlimited ๐ŸŒˆ.

Table of Contents ๐Ÿงš

     Goals of this Document   . . . . . . . . . . . . . . . . . . . . . 1
     HYPERchannel Network Messages  . . . . . . . . . . . . . . . . . . 2
       Message Proper Header  . . . . . . . . . . . . . . . . . . . . . 3
       TO Addresses and Open Driver Architecture  . . . . . . . . . . . 8
     Broadcasting   . . . . . . . . . . . . . . . . . . . . . . . . . . 9
       ES-IS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
       IS-IS  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11
     References   . . . . . . . . . . . . . . . . . . . . . . . . . .  12
     Security Considerations  . . . . . . . . . . . . . . . . . . . .  12
     Author's Address . . . . . . . . . . . . . . . . . . . . . . . .  12

Goals of this Document ๐ŸŽ€

Okay so this doc has three major technical goals ๐Ÿ‘‘:

  1. Goal one: standardize how LLC1 packets get encapsulated (wrapped up) over HYPERchannel ๐ŸŽ€. This format is used for OSI CLNS, and for any other protocol using LLC1 over HYPERchannel too. (Side note: if you want the LLC1/SNAP combo for TCP/IP, this is the format to use! It's an alternative to the native mode for TCP/IP over HYPERchannel, and it lets you share the medium at the LLC1 layer ๐Ÿงš.)
  2. Goal two: explain how multicast protocols like ES-IS and IS-IS SHALL operate over HYPERchannel ๐Ÿ’œ. Plot twist: HYPERchannel doesn't support broadcast or multicast as a medium ๐Ÿ˜ญ, so special techniques are needed to handle these protocols. These techniques don't allow general multicast, though. Any specific problem can still be solved by generalizing these methods ๐Ÿ”ฅ.
  3. Goal three: make use of a standardized "message type" field in bytes 8 and 9 of the HYPERchannel network message ๐Ÿ“. For better interoperability, NSC maintains a "network protocol registry" where any interested party can grab a unique value in byte 8 (or bytes 8 and 9) for their own public, private, commercial or proprietary protocol โœจ. NSC would periodically publish lists of assigned protocol type numbers and their "owners", and those lists are available to interested parties ๐Ÿ’….

HYPERchannel Network Messages ๐ŸŒธ

Unlike most datagram delivery systems, the HYPERchannel network message is made of two parts ๐Ÿฆ‹:

           Message Proper
          +--------------------+
          |                    |
          |                    |
          |                    |
          |     16-64 bytes    |
          |                    |
          |                    |
          |                    |
          +--------------------+

           Associated Data
          +----------------------------------------------------+
          |                                                    |
          |                                                    |
          |                                                    |
          |                                                    |
          |                                                    |
          |                                                    |
          |           Unlimited length                         |
          |                                                    |
          |                                                    |
          |                                                    |
          |                                                    |
          |                                                    |
          |                                                    |
          +----------------------------------------------------+

The first part is a message header that can be up to 64 bytes long ๐Ÿซถ. The first 16 bytes hold the info needed to deliver the whole message, and the rest can be used by higher level protocols. The second part, the "Associated Data," is totally up to you. It's your call whether to tack it onto the message proper ๐ŸŽ€. In most cases (transmission over HYPERchannel-50 trunks), the length of the Associated Data is literally unlimited ๐Ÿ˜ญ. Others (like HYPERchannel-10, or transmission within a local HYPERchannel-50 A400 adapter) cap the Associated Data at 4K bytes ๐Ÿ’€. If the info you're sending fits within the Message Proper, then the Associated Data doesn't have to be sent ๐Ÿ™ˆ.

HYPERchannel lower link protocols treat messages with and without Associated Data quite differently. "Message only" transmissions are sent using abbreviated protocols and can be queued in the receiving network adapter, which means less elapsed time to send and receive the messages โญ. When Associated Data is provided, the HYPERchannel-50 adapters free up their logical resources to drive the host interface and coaxial trunks at maximum speed. That way data can flow through the transmitting channel, the coaxial cable, and the receiving channel all at the same time ๐Ÿ”ฅ. So HYPERchannel-50 can get close to the nominal burst speed of the computer host interface when sending large data blocks over an extended period ๐Ÿ‘‘.

Message Proper Header ๐Ÿ’…

The first 16 bytes of the network Message Proper are checked by the network adapters to control delivery of the network message. Here's the format ๐Ÿงš:

  byte   Message Proper
       +------------------------------------------------------------+
    0  |      Trunks to Try           |        Message Flags        |
       |   TO trunks  |  FROM trunks  |                         |A/D|
       +--------------+---------------+-------------------------+---+
    2  |         TO Domain #          |         TO Network #        |
       |                              |                             |
       +------------------------------+-----------------------------+
    4  |         TO Unit #            |        Logical To           |
       |                              |         (port number)       |
       +------------------------------+-----------------------------+
    6  |        From Unit #           |        Logical From         |
       |                              |         (port number)       |
       +------------------------------+-----------------------------+
    8  |                         Message type                       |
       |                           0x0B01                           |
       +------------------------------+-----------------------------+
    10 |          FROM Domain #       |       FROM Network #        |
       |                              |                             |
       +------------------------------+-----------------------------+
    12 |          True Unit           |         age count           |
       |                              |                             |
       +------------------------------+-----------------------------+
    14 |      Header End Offset       |      Next Header Offset     |
       |        (16)                  |        (16)                 |
       +------------------------------+-----------------------------+
    16 |   LLC1 destination SAP       |   LLC1 source SAP           |
       |      (0xFE for CLNP)         |      (0xFE for CLNP)        |
       +------------------------------+-----------------------------+
    18 |   LLC1 function code         |                             |
       |      (0x03 for normal data)  |Start of upper layer protocol|
       +------------------------------+                             +
    20 |        from bytes 19-63 of the message proper              |
       |        and continuing in the associated data               |
       |        (For OSI this is CLNP, then transport etc.)         |
       +------------------------------+-----------------------------+

Trunks to Try ๐Ÿฆ‹

This field is two four bit masks telling you which of the four possible HYPERchannel-50 coaxial data trunks get used to send the message and bring it back ๐ŸŽ€. If a bit in the mask is ON, the adapter firmware logically ANDs it with the mask of installed trunk interfaces and uses the result as a candidate list of interfaces ๐Ÿ”ฅ.

Whenever one of the internal "frames" gets sent to talk to the destination adapter, the transmission hardware electronically picks the first non-busy trunk from the list of candidates โšก. So picking a data trunk is best done by the adapter itself, not the host ๐Ÿ’…. Dedicating trunks to specific applications only makes sense in very critical real time applications, like streaming data straight from high speed overrunable peripherals ๐Ÿ˜ญ.

A second Trunk mask is provided for the receiving adapter when it sends frames back to the transmitter. That's because it's possible to build asymmetric setups of data trunks, where trunk 1 on one box is connected to the trunk 3 interface of a second box ๐Ÿ™ˆ. Such configurations are strongly discouraged ๐Ÿšซ, but the addressing structure supports it if needed.

The trunks to try field is only used by HYPERchannel-50. For maximum interoperability, a value of 0xFF SHOULD be placed in this field to assure delivery over any technology ๐Ÿ’–. The newer DX series units determine the trunk mask on their own, but this field is kept around for use with A series equipment ๐Ÿฅน.

Message Flags ๐ŸŒˆ

This field contains options in message delivery. Several bits are defined by the hardware, but only the A/D bit gets described here ๐Ÿ’…. The other bits are only for special diagnostic or management purposes. If you need to set them, check the specific Network Systems manuals for what they mean. If there's no such need, all bits other than A/D SHALL be set to zero on transmission, and not examined upon receipt of a message ๐Ÿซถ.

A/D (ASSOCIATED DATA PRESENT) is ON if an Associated Data block follows the Message Proper. It's 0 if only a message proper is present in the network message ๐ŸŽ€. The network adapter firmware enforces the value of this bit ๐Ÿ”’.

TO Domain Number ๐Ÿ“

This is the most significant byte of the four byte hyperchannel address ๐Ÿ‘‘. It selects an NSC addressing domain from a set of domains. If this and the network number both refer to the local domain and network, they MAY be set to 0 โœจ.

TO Network Number ๐ŸŒธ

This is the destination network number ๐Ÿ’œ. It identifies the network within the selected domain where the destination unit lives. If the destination is in the local domain and network, both the TO domain and TO network numbers MAY be set to zero ๐Ÿฆ‹.


To be continued... ๐Ÿงš

TO Unit ๐ŸŽ€

Okay bestie, once the message lands at the destination domain and network, this is the unit number of the destination HYPERchannel adapter ๐Ÿฆ‹. The combo of Domain, Network, and Unit is what uniquely identifies one adapter in a HYPERchannel network โœจ. For compatibility with existing HYPERchannel gear ๐Ÿซถ, when you're sending to a destination outside your local domain and network, put 0 in this byte and store the real destination unit number in the True Unit field ๐Ÿ’….

Logical To ๐Ÿ’œ

This field further identifies which process the message is meant for ๐Ÿงš. Some hardware uses the bottom bits to pick one machine out of several. When you send to an N400, the bottom two bits of this field select which of its four attached hosts gets the message ๐Ÿ“. Inside a host, the Logical TO field picks the destination process. It works together with the Message Type field so messages end up in the right place ๐Ÿ’–. The Logical TO field identifies a process, and that process checks the Message Type to make sure it actually understands the message ๐Ÿ™ˆ. This also means you can run two processes that both understand the same protocol ๐Ÿ‘ฏ.

From Unit ๐ŸŒธ

This identifies the Unit number this message was sent from ๐Ÿ’Œ.

Logical From โญ

This identifies the host and process that originated the message ๐Ÿงš.

Message Type ๐Ÿ’…

Okay, so the next two bytes are reserved for NSC ๐Ÿ”’. People were told to put a 0 in byte 8 and literally anything in byte 9, so they don't clash with NSC firmware's internal processing ๐Ÿ™ˆ. Back in the day this field was kinda loosely defined. It carried info that mattered to the NSC gear carrying the message, not a formal protocol type. For example, 0xFF00 in bytes 8 and 9 makes the receiving adapter loop the message back without handing it to the attached host ๐Ÿ”.

But NSC level-upped ๐Ÿ‘‘. Bytes 8 and 9 are now a formal "protocol type" designator. Major protocols get a unique value in byte 8 that (among good citizens) won't copy one from a different protocol. Minor protocols get 16-bit values so the namespace doesn't run dry once 256 protocols show up ๐Ÿฅน. Anyone interested can apply to NSC for a protocol number or numbers. In this doc, the OSI LLC1 protocol types are assigned: the 16-bit value 0x0B01 in bytes 8 and 9 SHALL identify LLC1 packets โœจ.

True Unit ๐Ÿฆ‹

This field handles addressing outside the local domain and network ๐ŸŒ. For compatibility with older NSC hardware, you MAY NOT put the destination unit number in the TO Unit field if the destination domain or network isn't the local ones. Instead, you put 0 in the TO Unit field and the destination Unit number in the TRUE unit field ๐Ÿ’ซ. NSC Link devices then adjust the message when it arrives at the destination domain and network, so the destination unit number ends up in the TO Unit field ๐Ÿช„.

Age Count โณ

This field is a "time to live," so it stops datagrams from circulating forever in a badly configured network ๐ŸŒ€. Every time a message with this format passes through a bridge, the Age Count drops by one. When it hits zero, the bridge throws the message away ๐Ÿ—‘๏ธ. So this byte SHOULD be set to 255 when a message is originated, and ignored when a message is received ๐Ÿ™ƒ.

Next Header Offset and Header End Offset ๐Ÿงญ

These fields are how the hardware figures out whether any special addressing is present ๐Ÿ”. No special addressing forms are permitted with LLC1. So these fields SHALL always be set to 16. Receivers MAY count on the LLC1 information starting at offset 16 in the message proper ๐Ÿ’œ.

LLC1 Data ๐ŸŒท

The LLC1 Information begins at byte 16 of the message and is 3 bytes long ๐Ÿง. It contains the LLC1 destination and source SAPs, followed by the LLC1 type identifier (usually 03 for unnumbered information) ๐ŸŽ€.

Higher Layer Protocol Data ๐ŸŒˆ

Higher layer protocol info comes right after the LLC1 header in the message proper, and flows into the associated data ๐ŸŒŠ. For this doc that's OSI CLNP, but it MAY be any protocol that uses LLC1 โœจ.

TO Addresses and Open Driver Architecture ๐Ÿง 

Since not all 16 bits of the TO address are used for physical delivery of the network message, the rest are considered "logical." Their meaning is physically determined by host computer software or (in cases like the FIPS data channel) by hardware in the host interface ๐Ÿ”ง.

HYPERchannel is and will be used for a huge variety of general and special purpose protocols, so it's desirable that several independent protocol servers can share the HYPERchannel network interface ๐Ÿค. Lots of NSC's device drivers, plus ones from other parties like Cray Research, support this. Each protocol server that wants to send or receive HYPERchannel network messages logically connects to a HYPERchannel device driver by specifying the complete 16-bit TO address it will own. Any network message with that TO address gets delivered to that protocol server ๐Ÿ“ฌ.

The logical TO field is kinda like the TYPE byte in the Ethernet message header ๐Ÿ†š. The difference is that the width of the logical TO field varies from host to host, and no values of the logical TO address are reserved for particular protocols. On the other hand, you can have several "identical" protocols (like two independent copies of OSI with different HYPERchannel addresses) sharing the same physical HYPERchannel interface ๐Ÿ‘ฏ. This makes NSC's addressing approach identical to the OSI concept that the protocol server to reach is embedded within the address. The IP notion is different: you address a "host" and identify a server through a message type ๐Ÿงฉ.

Since the HYPERchannel header also has a "message type" field, there's some ambiguity about the roles of the message type and logical TO fields:

  • The logical TO field is always used to identify the protocol server which will receive the message. Once a server has specified the complete TO address for the messages it wishes to receive, the message will not be delivered to a different protocol server, regardless of the contents of the message type field. ๐Ÿ’–
  • Although the type field cannot change the protocol server at the final destination of the message, the type field can be used by intermediate processes on the network to process the message before it reaches the server destination. An obvious example is the 0xFF00 message loopback type function, where network processing loops the message back, resulting in nondelivery to the TO address. In the future, intermediate nodes MAY process in-transit messages based on the message type only for purposes such as security validation, aging of certain datagrams, and network management ๐Ÿ”.

Broadcasting ๐Ÿ“ข

NSC message forwarding protocols use low level link protocols to negotiate transmission of a message to its next destination on the network ๐Ÿ”—. Also, NSC network boxes often fan out so several hosts share the same network transmission equipment, like in the A400 adapter ๐ŸŒŸ. Both of these characteristics mean that providing a genuine broadcast capability is not a trivial task. In fact, no NSC technology supports a broadcast capability ๐Ÿ˜ญ.

However, the OSI ES-IS and IS-IS protocols require a broadcast capability to operate ๐Ÿฅบ. Therefore, in order to support these protocols, some form of broadcast emulation MUST be used ๐Ÿ’œ.

ES-IS ๐Ÿ’–

okay so ES-IS is the End System to Intermediate System routing protocol, and its whole job is helping end systems figure out where to send their packets ๐Ÿฆ‹. The specified protocol uses multicast messages so that end systems learn about intermediate systems AND intermediate systems learn about end systems. It's giving mutual discovery ๐Ÿซถ. Then, when an end system has a packet whose correct MAC destination is still unknown, it normally sends that packet to a random intermediate system ๐ŸŽฒ. That intermediate system forwards the packet and tells the originator where to send future packets. The whole handoff is so iconic ๐Ÿ˜ญโœจ

There are two situations for running this over HYPERchannel, and they're distinct but related ๐ŸŒˆ. The big difference is whether or not there are any real intermediate systems on the HYPERchannel network ๐Ÿ‘‘.

ES-IS with Intermediate Systems ๐ŸŒธ

If there are one or more intermediate systems on the HYPERchannel, the vibe is super simple: the behavior is just to emulate multicast ๐Ÿช„.

END SYSTEM SUPPORT Each end system gets profiled with a list of intermediate systems on the HYPERchannel ๐Ÿ“‹. It's nice but not strictly needed for that list to be complete, since future support for IS-IS will forward the necessary information to all the intermediate systems ๐Ÿงš. So whenever an end system wants to originate an ESH packet (End System Hello), it sends individual copies to each intermediate system it knows about ๐Ÿ’Œ.

On most systems, these individual packets SHOULD be spaced out in time so they don't get in the way of normal OSI and other HYPERchannel messages ๐Ÿšฆ. For end systems, an inter-packet time of 0.1 seconds is probably appropriate โฑ๏ธ.

Heads up ๐Ÿ‘€: if the End System receives ISH packets (Intermediate System Hello) from an IS on the HYPERchannel that isn't in its static list, it SHOULD add that IS to the list of systems it'll send ESH packets to. The address of the new intermediate system SHOULD be remembered for the holding time in the ISH, just like normal ES-IS operation ๐Ÿ’….

INTERMEDIATE SYSTEMS Intermediate systems on the HYPERchannel SHALL also be profiled with the addresses of all the other intermediate systems on the HYPERchannel ๐Ÿ—‚๏ธ. This list gets used here AND in the IS-IS protocol. For IS-IS, it's important that the list be complete ๐Ÿง .

With ES-IS, an intermediate system only uses that list because it's probably also an end system ๐Ÿคญ. As such, it MUST send ESH packets to all the other intermediate systems ๐Ÿ“จ. (The presumption that an IS is also an ES is driven by long-term network management needs ๐Ÿง. If you've got an upper layer stack, like the kind CMIP asks for, you are an end system ๐Ÿ’….)

Each intermediate system keeps a list of the end systems it knows about ๐Ÿ“. These are the systems it has received ESH packets from. Whenever the IS sends ISH packets, it sends them individually to each ES it has heard from ๐Ÿ“ฌ. It also sends the ISH to any end systems that it believes, based on IS-IS or other methods, are on the HYPERchannel ๐Ÿ”.

Heads up again ๐Ÿšจ: these packets MUST also be spread out in time to avoid causing congestion. But there are WAY more of these than the ones end systems generate, so the time between transmissions SHOULD be picked by the IS developer to fit the sustainable I/O rates of the system ๐Ÿ”ง. Make sure you can squeeze in at the very least one, and ideally two or three, useful packets between each ISH copy being sent ๐Ÿ’–.


ES-IS without an Intermediate System ๐ŸŽ€

If there's no intermediate system at all, one or more systems MUST serve as address managers ๐Ÿง‘โ€๐Ÿ’ผ. Draft ISO OSI documents refer to these as SNARE, short for SubNetwork Address Resolution Entities ๐Ÿฆ‹.

END SYSTEM SUPPORT Same as the previous case, each end system MUST be profiled with a list of intermediate systems ๐Ÿ“‹. This list MUST contain all of the systems that'll be serving as address managers on this network ๐Ÿ’ฏ. Why? Because address managers aren't true intermediate systems, so they aren't running IS-IS and won't be swapping lists of the end systems they know about ๐Ÿคทโ€โ™€๏ธ. There MAY well be several of them for redundancy and reliability ๐Ÿ›Ÿ.

SNARE The systems picked as address managers MUST appear to the other end systems as intermediate systems ๐ŸŽญ. That means each one MUST send out ISH packets to all the end systems that it hears from ๐Ÿ“ฃ. Each of these systems MUST record all the information from the ESH packets they receive ๐Ÿ“š. When a packet for an End System shows up at a SNARE, it MUST behave like an IS ๐Ÿช„. Specifically, it MUST forward the packet to the correct destination end system, AND send a redirect message back to the originator, telling them the correct SNPA (HYPERchannel address) for that end system ๐Ÿ“ฎ.

Also, these systems are definitely end systems too ๐Ÿ™ˆ, so they MUST send ESH packets to all the intermediate systems on the IS list, and that list MUST be complete ๐Ÿซถ.


ES-IS FORMAT SPECIFICATION ๐Ÿ“

All ES-IS PDUS SHALL be formatted as specified in ISO 9542 ๐Ÿ“„. They then get sent using LLC1 and the encapsulation specified earlier in this document for transmitting LLC1 over HYPERchannel ๐ŸŽ.

RD PDUS When generating Redirect PDUs, which contain HYPERchannel SNPAs (addresses), the SNPA SHALL be represented in four bytes ๐Ÿงฉ. And this SHALL be used even on a small HYPERchannel network containing only one domain and one network number ๐Ÿซ .

QC FUNCTION There is no support for the ES-IS query configuration capability when using HYPERchannel ๐Ÿ™…โ€โ™€๏ธ. All systems MUST have at least one configured intermediate system, which SHALL be either a true IS or a SNARE ๐Ÿ’….


IS-IS ๐Ÿฆ‹

The proposed IS-IS protocol for OSI (DP 10589) needs broadcast capability when it runs on a LAN ๐Ÿ“ก. Because of how the designated IS gets nominated on a LAN, plus other special features of this protocol, it's important never to partition the set of intermediate systems on a HYPERchannel network ๐Ÿšซโœ‚๏ธ.

So the implementation is honestly very simple ๐Ÿง. An intermediate system on HYPERchannel runs the IS-IS protocol directly. But when it goes to send a message, it consults the profiled list of all level 1 ISs on the HYPERchannel or of all level 2 ISs on the HYPERchannel, and then sends individual copies of the message to each destination ๐Ÿ“ฌ. This multiple transmission SHOULD be transparent to the IS-IS protocol itself ๐Ÿซฅ.

Note ๐Ÿ“: just like ES-IS on an intermediate system, it's important to space out the individual message transmissions. On most networks, spacing of 0.1 seconds will work well โฑ๏ธโœจ.

References ๐Ÿ“š

Here's where the receipts live ๐Ÿงพ

  • +1+ ISO IS 9542 - End system to intermediate system routing exchange protocol
  • +2+ ISO DP 10589 - Intermediate system to Intermediate system Infra-Domain routing exchange protocol

Security Considerations ๐Ÿ”’

Security issues are not discussed in this memo ๐Ÿšจ.

Zero security chat in here, bestie, so don't go assuming this doc covered it ๐Ÿฅบ.

Author's Address ๐ŸŒท

Here's the legend behind it all, Joel M. Halpern ๐Ÿ‘‘

Joel M. Halpern
Principal Engineer
Network Systems Corporation MS033
7600 Boone Avenue North
Brooklyn Park, AN 55428

Phone: (612) 424-1606

Email: jmh@anubis.network.com
๐Ÿ“ฆ where this page comes from