電気と電子のお話

8. インターフェース

line


8.2. 各種のインターフェース

8.2.(1) H D L C

8.2.(1-A) HDLC とは

◆  8.1 で、インターフェースの概要について、説明しました。この 8.2 では、各種のインターフェースについて、具体的に説明します。なお、既に使われていない、従来のインターフェースについては、8.1.(2-C)8.1.(2-D) で述べました。
ここのお話の最初は、HDLC です。HDLC は、ハイレベル データリンク コントロール の略で、8.1 に示したプロトコルと比べて、文字通り、ハイレベルなプロトコルです。
◆  HDLC の主な特徴を、以下に示します。
(1) 特定の文字コードを使用する必要が無く、任意のビットパターンのデータを送ることが、できます。特定の文字コードに依存しないで、任意のビットパターンのデータを送ることができる性質のことを、透過性 があると、いいます。
(2) CRC と呼ばれる、高度な伝送誤り制御を行うので、高い信頼性が得られます。
(3) HDLC は、OSIと呼ばれるプロトコル体系において、データリンク層と呼ばれる階層を担当しています。すなわち、HDLC は、より大きな、プロトコル体系の中の、一部分となっているのです。
(4) 現在多く使われている、各種のプロトコルにおける、データリンク層プロトコルは、この HDLC を基本にしています。
(5) HDLC は、全て一定の形式のフレームを単位として、伝送されます。
(6) HDLC は、親子式 の、ネットワーク伝送をサポートしています(図 8.2-1)。親子式の伝送では、1 台の親局 と、複数(1 台も可能)の子局 とがあり、親局と子局との間でデータのやり取りをします。子局相互の、直接のやり取りは、できません。

[図 8.2-1] 親子式ネットワーク伝送

親子式ネットワーク伝送


8.2.(1-B) フレーム構成

◆  HDLCフレーム構成を、図 8.2-2 に示します。

[図 8.2-2] HDLC のフレーム構成

HDLC のフレーム構成

◆  HDLC では、フレームの最初と終わりは、フレーム同期信号である、フラグ・シーケンス (各 8 ビット)です。フラグシーケンスのビットパターンは、01111110 の 8 ビットです。そして、フラグで挟まれた部分が、フレームです。一般には、フレーム同期は、フレームの先頭だけで、行いますが、HDLC では、フレームの終わりにも、同期パターンを使用しています。
◆  フレームは、アドレス部 8 ビット、制御部 8 ビット、フレーム検査シーケンス 16 ビットは、それぞれ固定です。情報部の長さは、ゼロを含む、任意長さです。ということは、情報部を持たないフレームが、あるということです。なお、任意長さといっても、実際には、情報部も、そのシステムによって決まる、最大長さがあります。
◆  以下、各部の概要を示します。
(a) アドレス部  HDLC は、親子式のネットワークです(その特殊形として、子局が一つだけの、1 対 1 のやり取りを含みます)。子局は、それぞれ、アドレス (番地)を持ちます。そして、アドレス部には、子局のアドレスを入れます。親局から子局に送るフレームのときも、子局から親局に送るフレームのときも、どちらも、子局のアドレスです。
◆  子局は、送られてきたフレームのアドレス部を読み取り、自分のアドレスと一致するフレームを、取り込みます。親局は、自分が送信した以外のフレームを受け入れます。
HDLC のアドレス部の長さは 8 ビットですが、ゼロアドレスは、ノーステーションアドレス と呼ばれ、使用できませんから、子局の数は、最大 255 局です。ただし、アドレス部の長さを、16 ビットに拡張して、子局数を増やすことが、できます。
◆ (b) 制御部  制御情報が、入ります。制御部の詳細は、後述します。
(c) 情報部  データが入ります。データ部の長さは、ゼロのフレームがあります。データ部の長さゼロのフレームは、制御情報だけのフレームです。
(d) フレーム検査シーケンス  伝送誤り制御のための情報です。CRC と呼ばれる、高性能のコードを使用しています。

8.2.(1-C) ゼロインサート

◆  HDLCデータは、透過性が保証されています。透過性があるということは、完全に、任意パターンのデータが可能であるという、ことです。これが、HDLC の大きな特徴です。しかし、任意パターンが可能であるということは、フラグシーケンスと同じパターンがあり得るということです。これを誤認しないようにしなければ、なりません(図 8.2-3)。

[図 8.2-3] フラグの誤認

フラグの誤認

◆ このための、対策として、ゼロインサートと呼ばれるプロトコルを使用しています。ゼロインサート は、データ部分で、1 が 6 ビット以上、続くことがないようにして、フラグの誤認を防ぎます。なお、ゼロインサートの対象となるのは、情報部だけでなく、アドレス部からフレーム検査シーケンスまでの部分 全てです。これを、データ部分と、呼ぶことにします。
◆  送信側で、データ部分に、ゼロインサート(挿入)を行い、受信側では、送信側でインサートしたゼロを取り除いて、元に戻します。
送信側のゼロ挿入回路を、図 8.2-4に示します。図の(a)は、データに 1 が 5 ビット続いたときで、このときも、ゼロを挿入します。(b)は、データにゼロが 7 ビット続いたときで、このときは、勿論ゼロを挿入します。

[図 8.2-4] 送信側におけるゼロ挿入

送信側におけるゼロ挿入

◆ 挿入されたゼロは、受信側で取り除き、元のデータに復元します(図 8.2-5)。図の(a)(b)は、図 8.2-4(a)(b)に対応します。

[図 8.2-5] 受信側におけるゼロ除去

受信側におけるゼロ除去

8.2.(1-D) 制御部

◆  制御部は、各種の制御情報が入っています(図 8.2-6)。フレームは、3 種類に分けられます。情報フレーム (I フレーム )、監視フレーム (S フレーム )、非番号制フレーム (U フレーム )の 3 種類です。制御部の、最初の 2 ビットで、この種類が、識別されます。

[図 8.2-6] 制御部の内容

制御部の内容

◆  情報フレーム(I)は、データを送るフレームであり、データを送る、情報部があります。
情報フレームの制御部には、順序番号 N(S) および N(R) があります。送信時には、送信するフレームに、送信する順番に、順序番号を付けて送信します。受信側で、この順序番号をチェックすることによって、受け取ることができないで、消滅してしまったフレームや、同じものを、2 度受けとってしまうなどの、異常を検出して、正常に回復させることができます。すなわち、高度な、伝送誤り制御を行います。

8.2.(1-E) データのやり取り

◆  HDLC における、データのやり取りは、いろいろな、やり取りの方式に、対応することができます。すなわち、データやり取りの方式には、6 種類の方式があり、この方式のことを、モード と呼んでいます。
◆  この 6 種類のモードの中で、最も基本的なものが、正規応答モード と呼ばれるもーどです。以下、正規応答モードを例にとって、HDLC のプロトコルの概要を、説明します。なお、HDLC のデータやり取りは、親子式ですが、HDLC では、親局のことを 1 次局 子局のことを 2 次局 といいます。
◆  1 次局は、親ですから、好きなときに、2 次局へ送信することができます。これを、セレクション といいます。
2 次局は、子供ですから、親局からの勧誘が無いと、送信を行うことができません。この、1 次局から 2 次局への勧誘のことを、ポーリング といいます。
データやり取りのシーケンスを、ポーリングを例として示すと、図 8.2-7 となります。

[図 8.2-7] ポーリングのシーケンス

ポーリングのシーケンス


◆  (1) SNRM は、1 次局から、「これからポーリングを行います」という接続要求です。
(2) UA は、(1) に対する 2 次局からの OK の返事です。この(1)と(2)によって、接続処理が行われました。
(3) RR は、ポーリングのフレームです。N(R) = 0 は、順序番号です。最初の情報フレームですから、順序番号は、0 です(順序番号は、ゼロから始まります)。
(4) (3) のポーリングに対する、2 次局からの、I フレームです。N(S) = 0 は、順序番号で、N(R) = 0 に対するものですから、N(S) = 0 になっています。応答のフレームは、呼びかけのフレームと同じ順序番号で返します。
(5) (4)の I フレームを正しく受け入れたので、次のフレーム、すなわち、順序番号 1 のフレームをポーリングしています。RR の N(R) = 1 は、N(S) = 0 のフレームを正しく受け入れたことも、表しています。
順序番号を付けることによって、万一シーケンスが狂ったとき、それを検出し、回復処理を行うことができます。
(6) 2 次局は、(5)の RR によって、それまでの処理が正しく行われ、かつ、次をポーリングされていることが、分かります。
◆  一連の処理が終了したときは、切断処理を行います(図 8.2-8)。DISC は、切断要求のフレームで、UA は、切断要求に対するOK の返事です。

[図 8.2-8] 切断処理

切断処理

[コラム 8.2-1] 伝送誤り制御

★ 人間は、誤りを犯します。誤ることが絶対にない人は、世の中に、存在しません。バスの運転手が、毎日運転している道を間違えたという、実話もあります。

バス

★ また、常識が、実は誤りだということも、多いようです。たとえば、温泉といえば、源泉の温度が高いと思いますが、温泉法の定義では、
   1) 温泉源で採取されるときの温度が25度(C)以上ある
   2) 溶存物質(ガス性のものを除く)の総量が1kg中に1000mg以上含まれる
   3) 別表で規定する成分のうちいずれかひとつが規定量以上含まれる
上記のうちの、どれかが該当すれば、温泉として認定されます。25度といえば、冷水です。下図は、勿論、本当に暖かい温泉です。アテネオリンピックの水泳プールの水温は、30℃だったそうですから、温泉ということに、なってしまいます。

温泉

★ インターフェースは、電子機器の内部に比べ、外部の影響を強く受けます。ノイズにも、さらされます。このため、ディジタルデータの伝送においては、1 がゼロに、ゼロが 1 に化けてしまう確率が、機器内部よりも、遥かに大きくなります。
機器内部の回路では、ノイズ対策を十分に取って、化けが発生しないようにすることが、前提です。
しかし、外部のノイズに晒される、インターフェースでは、ノイズ対策を十分に立てても、データ化けを、完全に無くすことは、困難です。

伝送誤り

★ この、インターフェースにおいて、避けることができないと、考えられるデータ化けのことを、伝送誤り と呼んでいます。
しかし、伝送誤りを、そのまま放置するわけには、行きません。伝送誤りがあったことを検出し、それを訂正して、誤りの無いデータを引き渡すことが必要です。この、誤りを検出し、訂正する仕事を、伝送誤り制御 といいます。
★ 送信側から、データだけを送ったのでは、受け側で、伝送誤りを検出することが、できません。誤りを検出するために必要な情報を、データと共に送り、この情報を利用して、誤りを検出します。この誤り検出のための情報を、伝送誤り検出用の、チェックコード と呼んでいます。

誤り検出の手順

★ 誤り検出用のチェックコードには、各種のものがあります。チェックコードの種類によって、誤り検出の能力が異なります。
伝送誤りの発生は、確率現象です。そして、伝送誤りの検出もまた、確率現象なのです。すなわち、チェックコードを使って、伝送誤り無しと判定しても、実は伝送誤りがあることが、あり得るのです。これを、誤り見逃し といい、誤り見逃しの確率が、誤り見逃し率 です。
誤り見逃し率が小さいチェックコードが、優れたチェックコードです。
★ 伝送誤り検出の、最も簡単なチェックコードは、パリティ です。パリティによって、伝送誤りの検出を行うことを、パリティチェック といいます。
なお、パリティには、垂直パリティと、水平パリティの 2 種類がありますが、通常、パリティと呼んでいるのは、垂直パリティです(下図)。以降、パリティとは、垂直パリティをさします。
★ 図で、E は、データ中の任意のビットが誤る確率で、ビット誤り率 (BER )と呼んでいます。Es は、誤り見逃し率です。

垂直パリティ

★ ビット誤り率は、誤りが多いシステムでも、通常は、10-4以下ですから、誤り見逃し率は、十分小さな値です。しかし、高信頼性が要求されるシステムにおいては、パリティでは、能力が不足です。パリティよりも、優れたチェックコードを、使用します(コラム 8.2-2)。



[コラム 8.2-2] C R C コード

★ CRC は、略語ですから、いろいろな意味があり得ます。その一つが、産学共同事業の一環としての、各大学の地域共同研究センターです。
★ 医学の分野では、新薬が次々と開発されています。新薬は、テストの最終段階で、実際に人が服用する試験を行います。これ治験と呼んでいます。この治験に際して、全体をコーディネートする人を、CRC といいます。

治験のコーディネータ

★ 伝送誤り制御用のチェックコードには、いろいろなコードを使用することができます。使用するコードによって、誤り制御の能力は、低いものも、高いものもあります。
★ 伝送誤り制御用のチェックコードに、CRC と呼ばれるコードがあります。CRC コードは、伝送誤り制御用のコードとして、優れたコードであると、言われています。しかし、CRC コードは、特定の一つのコードではなく、多数のコードからなる、グループです。
★ 適切な、CRC コードを使用すれば、伝送誤り制御の能力が高く、かつ効率の良いものを、作ることが、できます。逆に、CRC コードでありながら、伝送誤り制御能力が、低いものもあります。
★ 実は、パリティも、CRC に属するコードです。パリティは、簡単ですが、伝送誤り制御能力は、低いのです。
HDLC の伝送誤り制御用チェックコードにも、CRC コードが、使われています。
★ CRC は、データを 2 進数とみなして、ある特定の 2 進数で割り算を行い、割り算の余りが、チェックコードになります。送信側では、この余りを、チェックコードとして、送信します。
受信側でも、送られてきたデータを、上記の除数で割り算し、その余りが、送られてきたチェックコードと、一致すれば、誤り無しと判定します。
★ なお、CRC コードについての、さらに詳しいことは、別の講座コラムを参照してください。

_

目次に戻る     前に戻る     次に進む