Synchronous Data Link Control


Synchronous Data Link Control is a computer communications protocol. It is the layer 2 protocol for IBM's Systems Network Architecture. SDLC supports multipoint links as well as error correction. It also runs under the assumption that an SNA header is present after the SDLC header. SDLC was mainly used by IBM mainframe and midrange systems; however, implementations exist on many platforms from many vendors. The use of SDLC is becoming more and more rare, mostly replaced by IP-based protocols or being tunneled through IP. In the United States, SDLC can be found in traffic control cabinets.
In 1975, IBM developed the first bit-oriented protocol, SDLC, from work done for IBM in the early 1970s. This de facto standard has been adopted by ISO as High-Level Data Link Control in 1979 and by ANSI as Advanced Data Communication Control Procedures. 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.
SDLC operates independently on each communications link, 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.
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.
Intel used SDLC as a base protocol for BITBUS, still popular in Europe as fieldbus and included support in several controllers. The 8044 controller is still in production by third party vendors. Other vendors putting hardware support for SDLC 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, Burroughs Network Architecture with Burroughs Data Link Control, and ARPANET with IMPs.

Differences between SDLC and HDLC

HDLC is mostly an extension of SDLC, but some features were deleted or renamed.

HDLC features not in SDLC

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:

HDLC extensions added to SDLC

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.

Loop mode

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 transmit output connected to the next's receive 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 with an all-ones idle signal. The first seven 1-bits of this constitutes a "go-ahead" sequence 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 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 and no control field or frame check sequence.