RFC 1223
OSI CLNS and LLC1 protocols on Network Systems HYPERchannel
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 ๐:
- 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 ๐ง.)
- 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 ๐ฅ.
- 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
0xFF00message 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
- ietf: rfc1223 1991-05
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms