HDLC / High-Level Data Link Control
■ HDLC。High-Level Data Link Control。
ハイレベルデータリンク制御。
シリアル回線で用いるビット指向のデータ伝送制御手順。
米IBMが開発したSDLC手順をベースに、ISOが1977年に標準化したもの。
OSI参照モデルではデータリンク層のプロトコルにあたる。
HDLCは、コンピュータ通信で広く用いられ、各種のプロトコルの原型になった。
サブセットとしてLAP-B、LAP-D、LAP-Fなどがあり、
現在も、X.25やISDNのレイヤ2プロトコルとして、
また、フレームリレーやPPPの手順として、広く利用されている。
HDLCは、ポイントツーポイント型のプロトコルで、
CRCによる厳密な誤り制御を行い、信頼性の高いネットワークを実現する。
従来のベーシック手順では、伝送効率に問題があったが、
HDLCではより高効率なデータ伝送が行なえるようになった。
HDLCヘッダには、
ネットワーク層プロトコルを識別するための情報が入っていない。
これを補完するために、HDLCはベンダーごと独自の実装になっており、
ベンダー間の通信ができない。
■ フレーム。
HDLCでは、データ転送単位をフレームと呼ぶ。
任意長データの前後に、フラグシーケンス(01111110)を付加して、
フレームを形成する。
フレーム内には、各々8ビットのアドレス部と制御部、
任意長の情報部、16ビットのFCS(CRC)が定められている。
+------------+------------+-----------+-----------+--------------+------------+
| フラグ | アドレス部 | 制御部 | 情報部 | フレーム検査 | フラグ |
| シーケンス | | | (L3のPDU) | シーケンス | シーケンス |
| (01111110) | | | | | (01111110) |
+------------+------------+-----------+-----------+--------------+------------+
8 8 8 variable 16 8 bit
以下、各フィールドの説明を順に記述する。
■ フラグシーケンスフィールド。
HDLCでは、同期方式としてフラグ同期を使用する。
フラグ同期とは、フレームの先頭と最後にフラグ(flag)と呼ばれる
特別なビットパターンを挿入して送る方法である。
HDLCのフラグシーケンスは、01111110の8ビットと決められている。
これにより、任意長フレームの開始を終結を示すことができるほか、
また送受信の際の同期を取ることができる。
■ ビットスタッフィング。
バイナリデータには、フラグと重複するビットパターン
(1が6個連続するパターン)が存在する場合がある。
これを送信するとき、一部のビットを変更して、重複を避ける手法のこと。
具体的には、
送信側では、1が5個続いた場合は、その後に0を強制的に挿入する。
この操作を、0ビットインサーションという。
受信側では、1が5個続いた場合は、その後の0を強制的に削除する。
なお、ビットスタッフィングは、
FCS計算の後、物理回線に送り出す直前に行われ、
受信側ではFCS計算の前に除去される。
■ アドレスフィールド。
HDLCフレームには、アドレスフィールドは1つしか設けられていない。
このため、次のように、送信側、受信側のいずれか一方を指定する。
1次局と2次局との間の通信では、常に2次局のアドレスをつける。
複合局同士の通信では、コマンドフレームには受信側アドレスを、
レスポンスフレームには送信側のアドレスをつける。
つまり、コマンドは常に相手局のアドレスを持つフレームになる。
レスポンスは常に自局のアドレスを持つフレームになる。
■ 制御フィールド。
HDLCフレームは、16(?)ビットの制御フィールドを持つ。
この制御フィールドは、
HDLCがフロー制御(スライディングウィンドウ)を実現するために
重要な役割を持っている。
(1) シーケンス番号
送受信されるIフレームの順序を識別するための連続番号。
またIフレームの脱落や重複を監視するために使用される。
(2) P/Fビット
連続するコマンドフレームが終了したことを表すためのビット。
また連続するレスポンスフレームが終了したことを表すビット。
■ スライディングウィンドウ。
HDLCでは、フロー制御の方法として、スライディングウインドウ方式を採用している。
このためHDLCでは、送信シーケンス番号が決められた最大値まで到達するまでは、
確認応答を待つことなく、フレームを連続して転送することができる。
- 標準モードでは、最大7個のフレームを連続して転送できる。
すなわち、7つまでの未確認フレームが伝送路上に存在することが可能である。
- 拡張モードでは、最大127個のフレームを連続して転送できる。
すなわち、127個までの未確認フレームが伝送路上に存在できる。
■ シーケンス番号
送受信されるIフレームの順序を識別するための連続番号。
またIフレームの脱落や重複を監視するために使用される。
(1) 送信シーケンス番号
送信されるIフレームの順序を示す番号。
標準モードでは3ビットを使用するので、0〜7の値をサイクリックに取る。
拡張モードでは7ビットを使用するので、0〜127までの値を取る。
(2) 受信シーケンス番号
次に受信を期待するIフレームのシーケンス番号を示す。
すなわち、受信した最大シーケンス番号+1になる。
正しいIフレームを受信するごとに、1づつ加算される。
■ P/Fビット
連続するコマンドフレームが終了したことを表すためのビット。
また連続するレスポンスフレームが終了したことを表すビット。
(1) Pビット。Poll Bit。
送信側は、フレームを連続送信するとき、
最後のフレームのPビットを立てる(P=1とする)。
そして確認応答のフレームを受け取るまでは、次のIフレームを送信しない。
(2) Fビット。Final Bit。
受信側では、レスポンスフレームを返すとき、
最後に送信するフレームのFビットを立てる(F=1とする)。
これにより確認応答の終了と、送信権放棄を表す。
■ 情報フィールド。
HDLCでは、伝送対象となるデータを、
Iフレームの情報フィールドに格納して送信する。
パケット交換の利用時には、レイヤ3のPDU(パケット)が、
この情報フィールドに格納される。
HDLCは、ビット指向のプロトコルであり、
任意のビットパターンを伝送することができる。
データの長さや制御ビットとの重複は、気にする必要がない。
■ フレーム検査シーケンスフィールド。
HDLCでは、誤り検出のため、16ビットのFCSフィールドを定義している。
検出方式にはCRC方式を採用しており、複数ビットに及ぶバースト誤りも検出する。
なおHDLCでは、制御フレームを含めてエラーチェックの対象となる。
さらに、HDLCでは、誤り回復の手順をも規定している。
もし受信局で誤りを検出した場合には、Sフレーム(REJ/SREJコマンド)を使用して、
送信局にフレームの再送を要求することができる。
■ 局。
HDLCでは、データの送受信局として次の3つを定義している。
(1) 1次局。
データリンクの制御を行なう局。
2次局に対して、データリンクの制御コマンドを送出し、
また2次局からレスポンスを受ける。
(2) 2次局。
データリンクの制御に関して権限を持たない局。
1次局から制御コマンドを受信し、これに従い、またレスポンスを送出する。
(3) 復合局。
データリンクの制御に関して相互に対等の権限を持つ2つの局。
コマンドもレスポンスも送信できる。
■ 手順クラス。
通信局が主従関係にあるか対等関係にあるかによって、
不平衡型データリンクと平衡型データリンクに分類される。
(1) 不平衡型データリンク。
一次局、二次局からなる構成は、データリンクを確立する権利が対等でないので、
不平衡形データリンクと呼ばれる。
(2) 平衡型データリンク。
複合局からなる構成は、両局がデータリンクを確立する権利を対等に持つので、
平衡形データリンクという。
■ 不平衡型データリンク
一次局、二次局からなる構成は、データリンクを確立する権利が対等でないので、
不平衡形データリンクと呼ばれる。
この不平衡形データリンクは、さらに2つの形態に分類できる。
- 正規応答クラス。UNクラス。
ポイントツーマルチポイントで接続されている場合のクラス。
コマンドとそれに対するレスポンスを同期させる必要がある。
- 非同期応答クラス。UAクラス。
ポイントツーポイントで接続されている場合の手順クラス。
レスポンスは、コマンドとは非同期に送出できる。
■ 平衡型データリンク
複合局からなる構成は、両局がデータリンクを確立する権利を対等に持つので、
平衡形データリンクという。
- 平衡型非同期応答クラス。BAクラス。
複合局同士、ポイントツーポイント接続の場合の手順クラス。
コマンドとレスポンスを自由に送出できる。
■ 伝送制御モード。
2次局(複合局)の伝送制御モードとしては、
以下の3種類が規定されている。
なお、2次局(複合局)の状態が、あるモードからほかのモードへと遷移するのは、
Uフレームによる特定のコマンドを受信した場合に限られる。
(1) 動作モード。コマンド/レスポンスの送受信を行なう。
(2) 非動作モード。データリンクの開始や終了を行う。
(3) 初期モード。電源投入時のモード。
■ 動作モード
実際にコマンドやレスポンスの送受信を行なうモード。
HDLC通信を開始する際、2次局(複合局)は、
以下の3つの動作モードのうち、Uフレームのコマンドが指定するモードに移行する。
- 正規応答モード。NRM:Normal Response Mode。
コマンドとレスポンスを同期させる。UNクラスに対応。
- 非同期応答モード。ARM:Asynchronous Response Mode。
コマンドと非同期にレスポンスを返せる。UAクラスに対応。
- 非同期平衡モード。ABM:Asynchronous Balanced Mode。
コマンドとレスポンスを自由に送出する。BAクラスに対応。
■ 非動作モード。切断モード。IM。
データリンクが開放されているときの2次局(複合局)のモード。
各手順クラスに共通したモードである。
HDLC通信を終了する場合には、
1次局(複合局)は2次局(複合局)に対してUフレームのDISCコマンドを送出し、
切断モードへの切り替えを指示する。
これを受けて、2次局(複合局)が
1次局(複合局)に対してUフレームのUAコマンド(受信応答)を返すと、
データリンクは開放され、2次局(複合局)は切断モードに遷移する。
■ 初期モード。DCM。
1次局(複合局)の指示で、
2次局(複合局)がHDLCを行うプログラムをロードしたり、
その他のパラメータを交換したりするモード。
初めて電源を投入したときのような状態。
各手順クラスに共通したモードである。
■ フレーム種別。その1。
HDLCでは、2種類のフレームが定義されており、
それぞれコマンドフレームとレスポンスフレームと呼ぶ。
HDLCでは、これらのフレームをやり取りして伝送制御を行う。
(1) コマンドフレーム。
1次局から2次局に送信する指令を転送するフレーム。
1次局(複合局)が使用するフレーム。
(2) レスポンスフレーム。
2次局が1次局の指令に対する応答を転送するフレーム。
2次局(複合局)が使用するフレーム。
■ フレーム種別。その2。
HDLCでは、3種類のフレームが定義されており、
それぞれ情報転送フレーム(Iフレーム)、監視フレーム(Sフレーム)、
非番号制フレーム(Uフレーム)と呼ぶ。
これらのフレームを識別するために、制御部の1ビット目と2ビット目が使用される。
(1) Iフレーム。制御部の1ビット目が0。
(2) Sフレーム。制御部の1ビット目が1。2ビット目が0。
(3) Uフレーム。制御部の1ビット目が1。2ビット目が1。
以下、各フレームについて説明する。
■ Iフレーム
情報転送フレーム。Information Frame。
HDLCが、伝送すべき実データを格納して送信するために使用するフレーム。
3種類のフレームの中で唯一情報フィールドを持ち、
ここにユーザデータを格納して送信する。
■ Sフレーム
監視フレーム。Supervision Frame。
Iフレームの送受信を制御するために使用するフレーム。
シーケンス番号を持たない。
例えば、Iフレームの受信確認応答をする場合(RR:Receive Ready)や、
Iフレームの再送要求をする場合(REJ/SREJ)に使用する。
Sフレームによる再送要求コマンドには、以下の2種類がある。
- REJコマンド。
シーケンス番号を指定して、それ以降の再送を要求する。
- SREJ(Selective REJ)コマンド。
シーケンス番号を指定して、そのフレームの再送を要求する。
■ Uフレーム
非番号制フレーム。Unnumbered Frame。
データリンクの確立や切断を行なうときに使用するフレーム。
他の2つのフレームと異なり、コマンドとレスポンスの区別がある。
HDLC通信を開始するとき、
1次局(複合局)は、
Uフレームのコマンド(SNRM等)により2次局(複合局)のモードを決定する。
すると2次局(複合局)は、
Uフレームによる確認応答(UA:Unnumbered Acknowledge)を返す。
HDLC通信を完了した場合は、
Uフレームのコマンド(DISC)とレスポンス(UA)のやり取りを経て、
データリンクを開放する。
■ マルチリンク手順。Multi Link Procedures。
HDLCは、マルチリンクに対応しており、
複数の回線を束ねて、1つのデータリンクとして動作させることができる。
マルチリンクを利用すると、
1本の通信回線では得られない通信速度を得られるほか、
1本の通信回線が故障しても、他の回線を使えるので、信頼性が高まる。
例えば、ISDN-BRIでは、2つのBchを束ねて128kbpsとして使用できる。
マルチリンクの機能は、
OSI参照モデルのデータリンク層の上半分に相当する。
同じデータリンク層のシングルリンク(SLP)を束ねて、
上位のネットワーク層に提供する。
■ 参照URL
トーホグ倶楽部様
http://hpoco.com/learn/hdlc.htm
Engineering様
http://www5d.biglobe.ne.jp/~engineer/doc/jnet/jnet_ch3_03.htm
電脳天国様
http://www.dennouheaven.net/IT/network05.html#2
以上。
2004/02/06 am