Synchronous Data Link Control | |
Abbreviation: | SDLC |
Purpose: | Data framing |
Developer: | IBM |
Osilayer: | Data link layer |
Synchronous Data Link Control (SDLC) is a computer serial communications protocol first introduced by IBM as part of its Systems Network Architecture (SNA). SDLC is used as layer 2, the data link layer, in the SNA protocol stack. It supports multipoint links as well as error correction. It also runs under the assumption that an SNA header is present after the SDLC header.[1] SDLC was mainly used by IBM mainframe and midrange systems; however, implementations exist on many platforms from many vendors. In the United States and Canada, SDLC can be found in traffic control cabinets.[2] SLDC was released in 1975,[3] based on work done for IBM in the early 1970s.[4]
SDLC operates independently on each communications link in the network and can operate on point-to-point multipoint or loop facilities, on switched or dedicated, two-wire or four-wire circuits, and with full-duplex and half-duplex operation.[5] A unique characteristic of SDLC is its ability to mix half-duplex secondary stations with full-duplex primary stations on four-wire circuits, thus reducing the cost of dedicated facilities.[6]
This de facto standard has been adopted by ISO as High-Level Data Link Control (HDLC) in 1979[4] and by ANSI as Advanced Data Communication Control Procedures (ADCCP). The latter standards added features such as the Asynchronous Balanced Mode, frame sizes that did not need to be multiples of bit-octets, but also removed some of the procedures and messages (such as the TEST message).[7]
Intel used SDLC as a base protocol for BITBUS, still popular in Europe as fieldbus and included support in several controllers (i8044/i8344, i80152). The 8044 controller is still in production by third-party vendors. Other vendors putting hardware support for SDLC (and the slightly different HDLC) into communication controller chips of the 1980s included Zilog, Motorola, and National Semiconductor. As a result, a wide variety of equipment in the 1980s used it and it was very common in the mainframe-centric corporate networks which were the norm in the 1980s. The most common alternatives for SNA with SDLC were probably DECnet with Digital Data Communications Message Protocol (DDCMP), Burroughs Network Architecture (BNA) with Burroughs Data Link Control (BDLC), and ARPANET with IMPs.[8]
HDLC is mostly an extension of SDLC, but some features were deleted or renamed.
Features present in HDLC, but not SDLC, are:
Also not in SDLC are later HDLC extensions in ISO/IEC 13239 such as:
HDLC renamed some SDLC frames. The HDLC names were incorporated into later versions of SDLC:[9]
Original name | New name | |||
---|---|---|---|---|
NSA | Nonsequenced acknowledge | UA | Unnumbered acknowledge | |
NSI | Nonsequenced information | UI | Unnumbered information | |
NSP | Nonsequenced poll | UP | Unnumbered poll | |
ROL | Request online | DM | Disconnected mode | |
CMDR | Command reject | FRMR | Frame reject | |
RQI | Request initialization mode | RIM | Request initialization mode | |
RQD | Request disconnect | RD | Request disconnect |
Some features were added in HDLC, and subsequently added back to later versions of SDLC.
Two U frames in SDLC which do not exist in HDLC are:
Several U frames are almost entirely unused in HDLC, existing primarily for SDLC compatibility:
The TEST U frame was not included in early HDLC standards, but was added later.
A special mode of SDLC operation which is supported by e.g. the Zilog SCC but was not incorporated into HDLC is SDLC loop mode. In this mode, a primary and a number of secondaries are connected in a unidirectional ring network, with each one's output connected to the next's input. Each secondary is responsible for copying all frames which arrive at its input so that they reach the rest of the ring and eventually return to the primary. Except for this copying, a secondary operates in half-duplex mode; it only transmits when the protocol guarantees it will receive no input.
When a secondary is powered off, a relay connects its input directly to its output. When powering on, a secondary waits for an opportune moment and then goes "on-loop" inserting itself into the data stream with a one-bit delay. A similar opportunity is used to go "off-loop" as part of a clean shutdown.
In SDLC loop mode, frames arrive in a group, ending (after the final flag) with an all-ones idle signal. The first seven 1-bits of this (the pattern 01111111) constitute a "go-ahead" sequence (also called EOP, end of poll) giving a secondary permission to transmit. A secondary which wishes to transmit uses its 1-bit delay to convert the final 1 bit in this sequence to a 0 bit, making it a flag character, and then transmits its own frames. After its own final flag, it transmits an all-ones idle signal, which will serve as a go-ahead for the next station on the loop.
The group starts with commands from the primary, and each secondary appends its responses. When the primary receives the go-ahead idle sequence, it knows that the secondaries are finished and it may transmit more commands.
The beacon (BCN) response is designed to help locate breaks in the loop. A secondary which does not see any incoming traffic for a long time begins sending "beacon" response frames, telling the primary that the link between that secondary and its predecessor is broken.
Because the primary also receives a copy of the commands it sent, which are indistinguishable from responses, it appends a special "turnaround" frame at the end of its commands to separate them from the responses. Any unique sequence which will not be interpreted by the secondaries will do, but the conventional one is a single all-zero byte. This is a "runt frame" with an address of 0 (reserved, unused) and no control field or frame check sequence. (Secondaries capable of full-duplex operation also interpret this as a "shut-off sequence", forcing them to abort transmission.)