HDLC

 HDLCは、High-Level Data Link Controlの略です。ハイレベルデータリンク制御手順とも呼ばれます。ISOによって標準化されたデータリンク層のプロトコルで、専用線や回線交換で使用されています。

 ポイントツーマルチポイントにおける通信が可能ですが、現在では、ABM(Asynchronous Balanced Mode)を使ったポイントツーポイントでの通信で使用されています。

 HDLCは、各種のプロトコルの原型になっており、X.25、ISDNのレイヤ2プロトコル、フレームリレーやPPPの手順の原型となっています。

 同期方式としてフラグ同期を使用し、フレームの先頭と最後にフラグシーケンス「01111110」の8ビットが付加されてフレームが送信させるようになっています。

 また、誤り検出のため、16ビットのFCSフィールドが定義されており、検出方式には、CRC方式を採用されています。この仕組みにより、複数ビットに及ぶバースト誤りも検出することができます。

下図は、HDLCフレームのフォーマットです。

フィールド名説明
フラグシーケンスフレームの始まりと終わりを示す「01111110」。送信側では5つの連続した1が出現した場合、6ビット目に強制的に0を挿入するようになっています。受信側では、この0は取り除き上位層に渡します。
アドレス部アドレスフィールド
制御部制御フィールド
FCSフレームチェックシーケンス。誤り検出の為に使用されます。

 上図を見れば気づくと思いますが、HDLCヘッダには、ネットワーク層プロトコルを識別するための情報が入っていません。これを補完する為に、HDLCは各ベンダーごとに独自の実装を行っています。そのため、ベンダー間の通信ができないのが一般的です。

例えば、Ciscoルータでは、Cisco HDLCを採用しており、ISO標準のフレームフォーマットとは、少し違います。

 HDLCは、ベンダーごとに仕様が異なっている場合があるので、ベンダー間の通信では、PPPなどの別のプロトコルでカプセル化を行う必要があります。

Cisco HDLC

 HDLCは、IBMが開発したSDLCをベースにISOよって標準化されたデータリンク層のプロトコルです。このISOによって標準化されたHDLCをISO HDLCと言います。一般的にHDLCは、同期シリアル回線で使用されます。

 下の図を見て下さい。ISO HDLCでは、ヘッダ内にネットワーク層のプロトコルを示すフィールドがありません。そのため、ISO HDLCでは、単一のネットワーク層のプロトコルしか使用することができません。

 ISO HDLCでは、マルチプロトコル環境をサポートしていない為、これを補完する為に、HDLCは各ベンダーごとに独自の実装を行っています。Ciscoでは、独自フィールドを追加したCisco HDLCを採用しています。

そのため、HDLCでは、ベンダー間の通信ができないのが一般的です。

 つまり、HDLCを利用する場合、そのベンダー専用の機器を用意しなければなりません。その為、WANリンクの両端の機器が異なるベンダー機器の場合は、PPPが利用することになります。

 CiscoルータのSerialインターフェイスのデフォルトのカプセル化は、Cisco独自のHDLCです。「show interfaces serial」コマンドで確認することができます。

Router#show interfaces serial 0

Serialのカプセル化(Cisco2500)
Serial0 is up, line protocol is up
  Hardware is HD64570
  Internet address is 192.168.2.1/24
  MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, rely 255/255, load 1/255
  Encapsulation HDLC, loopback not set, keepalive set (10 sec)
  Last input 00:00:09, output 00:00:06, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/75/0 (size/max/drops); Total output drops: 0
  Queueing strategy: weighted fair
  Output queue: 0/64/0 (size/threshold/drops)
     Conversations  0/1 (active/max active)
     Reserved Conversations 0/0 (allocated/max allocated)
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
     5 packets input, 367 bytes, 0 no buffer
     Received 5 broadcasts, 0 runts, 0 giants
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
     8 packets output, 757 bytes, 0 underruns
     0 output errors, 0 collisions, 1 interface resets
     0 output buffer failures, 0 output buffers swapped out
     2 carrier transitions
     DCD=up  DSR=up  DTR=up  RTS=up  CTS=up