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:- frames not a multiple of 8 bits long are illegal in SDLC, but optionally legal in HDLC.
- HDLC optionally allows addresses more than 1 byte long.
- HDLC has an option for a 32-bit frame check sequence.
- asynchronous response mode, and the associated SARM and SARME U frames,
- asynchronous balanced mode, and the associated SABM and SABME U frames,
- and several other frame types created for HDLC:
- * the selective reject S frame,
- * the reset command, and
- * the nonreserved U frames.
- 15- and 31-bit sequence numbers,
- the set mode U frame,
- 8-bit frame check sequence,
- a frame format field preceding the address,
- an information field in mode set U frames, and
- the "unnumbered information with header check" U frame.
Naming differences
HDLC extensions added to SDLC
Some features were added in HDLC, and subsequently added back to later versions of SDLC.- Extended sequence numbers and the corresponding SNRME U frame, were added to SDLC after the publication of the HDLC standard.
SLDC features not in HDLC
- BCN : When a secondary loses carrier from the primary, it begins transmitting a stream of "beacon" responses, identifying the location of the communication failure. This is particularly useful in SDLC loop mode.
- CFGR command and response: The CFGR command contains a 1-byte payload which identifies some special diagnostic operation to be performed by the secondary. The least significant bit indicates that the diagnostic mode should start or stop. A payload byte of 0 stops all diagnostic modes. The secondary echoes the byte in its response.
- * 0: Stop all diagnostic modes.
- * 2 /3 : Beacon test. Disable all output, causing the next recipient to lose carrier.
- * 4 /5 : Monitor mode. Disable all frame generation, becoming silent, but do not stop carrier or loop mode operation.
- * 8 /9 : Wrap mode. Enter local loopback, connecting the secondary's input to its own output for the duration of the test.
- * 10 /11 : Self-test. Perform local diagnostics. CFGR response is delayed until the diagnostics complete, at which time the response is 10 or 11.
- * 12 /13 : Modified link test. Rather than echoing TEST commands verbatim, generate a TEST response consisting of a number of copies of the first byte of the TEST command.
- Initialization mode, and the associated RIM and SIM U frames, are so vaguely defined in HDLC as to be useless, but are used by some peripherals in SDLC.
- Unnumbered poll is almost never used in HDLC, its function having been superseded by asynchronous response mode. UP is an exception to the usual rule in normal response mode that a secondary must receive the poll flag before transmitting; while a secondary must respond to any frame with the poll bit set, it may respond to a UP frame with the poll bit clear if it has data to transmit. If the lower-level communication channel is capable of avoiding collisions, UP to the broadcast address allows multiple secondaries to respond without having to poll them individually.
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.