• 検索結果がありません。

HDLC 手順の代数的記述

ドキュメント内 プロトコルの形式的記述と検証 (ページ 52-75)

第 4 章 HDLC 手順の代数的記述

4.1

序 言

プロトコルの正しさの検証のためには,まずプロトコル自身が厳密に記述さ れていなければならない。従来,プロトコルの記述法としては,状態を導入し 状態遷移図を利用する方法[2.5.10.12.13凶と,プログラミング言語を利用して記述 する方法[1.3.4.15]に,大別されてきた[9.1九前者の記述法は,単純ではあるが,

プロトコルを記述するのに要する状態数がその複雑化と共に指数的に増大し,

プロトコノレの本質的な構造を陽に表現するのが困難(例えば

8

の代りに

6 4

を 法とした送受信順序番号を考えても,論理構造は不変であるにもかかわらず,

その事実が適切に表現されなしうである。後者では,整数演算などを直接利用 できるのでこのような欠点を免れているが,記述に直接必要のないプログラム 要素の意味に依存し,利用するプログラム言語自体の意味の形式的定義が前提 となる。ところが,そのような定義自身一般にきわめて複雑である。さらに,

処理順序の一意的記述により過剰規定に陥り易いという欠点もある。

本章では,上記のような欠点を免れうる方法として 基底代数をもっ代数的 仕様記述法[日]を採用し,ハイレベルデータリンク制御

(HDLC)

手順の形式的 記述を示している。記述の前提となる基底代数としては,プール演算,整数の 加減算と大小判定など必要最小限に限り,手1I買に固有な概念はすべて陽に記述 している。まず,

HDLC

手順の規格[8]を分析し,その基本的な概念を抽出し た。その結果に基づき, 4.2で示すように 1次局 2次局について,内部構 造を陽にもたない抽象的 状態"を導入し,基本動作に対応して 状態遷移関 数"を,また,状態から必要な情報を抽出するための 出力関数"を導入し,

それらの聞に成立する関係を公理として表した。導入したデータタイプ(以下 ソートと呼ぶ)や関数はいずれも

HDLC

手順の規格の中に現れる概念に対応 するものであり,規格の記述からごく自然に関数聞の関係を簡潔に公理として

44  4 HDLC手順の代数的記述

書き下すことができた。個々の公理が妥当であることは,規格における記述と の対応から容易にわかる。 4.3では,さらに公理系全体として 矛盾がなく"

かつ 不足なく"書かれていることを証明し,また,この公理系から

HDLC

手順を実現する 順序機械"を組織的に構成できることを示した。 4.4で、は,

4.2

の1,

2

次局に外部とのインタフェース部分を付加した

1

2

次局全体の 代数的記述を与えた。

代数的仕様記述法の一つの利点は,記述が公理系として与えられているので,

ここで記述された手順で伝送が正しく行われているかとし、う検証は,検証すべ き命題がその公理系におけるいわゆる定理として成立するということを証明す ることである。従って,検証に関しでも,代数的記述の同じ枠組の中で議論で きる[6Jとし、う特徴をもっ。

4 . 2  HDLCの代数的記述

HDLC

規格のうち,不平衡型の基本手順クラスに関する部分の説明とその代 数的記述を示す。ただし,データリンクの設定,終結部分を除いた動作部分に 限定する。動作のモードはあらかじめ正規応答モードに設定されており,モー

ド変換は行われないものとする。

4  .  2  .  1 

フレームの代数的記述と諸定義

HDLC 

における送信単位をフレームと呼びその集合を

frame

と書く。送信 順序番号と受信順序番号は整数

0

,1,…

7

を用い,その集合を

seqnumber

で表す。ポールピット,ファイナルピット

CPF

ピット〉をそれぞれ0, 1で 表し,

PF

ピットの集合を

p f

,また,情報部の集合を

d a t a

で表す。このよう

な各集合の 種類"

C

データタイプ")をソートと呼ぶ。送信順序番号,受信順 序番号,

PF

ピット,情報部の四つの引数から情報形式フレームを構成する関数 をIf

rame

で,逆に,情報形式フレームからその成分である送信順序番号,受 信順序番号,

PF

ピット,情報部を取り出す関数をそれぞれ

s s n

r s n

, 

p f b i t

, 

i n f o r m  

で表す。同様に,受信順序番号,

PF

ピットの二つの引数から

RR

C r e c e i v e  r e a d y )

監視形式フレーム,

RNR C r e c e i v e  n o t  r e a d y )

監視形式フ

4 HDLC手順の代数的記述 45  レームを構成する関数を,それぞれ

RRframe

RNRframe

で表し,逆に,そ れぞれの成分を取り出す関数を

r s n

p f b i t  

(これらは上述のものと共通)で表 す。

e r r o r f r a m e

はソート

frame

の定数関数(ヲ│数をもたない関数)である。

一方,構成されたフレームが情報形式フレームか,

RR

監視形式フレームか,

RNR

監視形式フレームか否かを判定する関数を

t y p e I

typeRR

, 

typeRNR

で 表す。さらに,フレームチェツクシーケンス

(FCS)

による誤り検査で,誤り

と判定されたとき真,そうでないとき偽となる関数

e r r o r c h e c k

がある。ここ での記述では,フレームに関して

1

次局

2

次局の記述に必要と考えられる 性質の記述に限定されており、情報形式フレーム,

RR

監視形式フレーム,

RNR

監視形式フレームをビット系列としてどのように表すかについては記述されて いない。すなわち,不必要な詳細は隠されている。また,ここのレベルでは,

e r r o r c h e c k  

(f)が真であるようなフレームはすべて同一視してよい。前述の

e r r o r f r a m e

は,そのようなフレームを代表するものとして導入したものである (表

4.  1

の公理

AX21

参照〉。これらのソートや関数を用いてフレームの仕様 を

ASL/O

言語[l1Jで記述したものが表

4.1

である。

4.1

の表記法について,

SPEC Framespec 

;はこの仕様記述の名前が

Framespec

であることを表し,

BASE 

…;により,ブールや非負整数やビット

(  0

, 

1

だけの元を含む集合〉やデータ(+)に関するソートや基本演算がフレーム の仕様を記述する上で前提とされており(これを基底代数と呼ぶ),改めて定義 することなく,それらを自由に用いてよいことを表す(このような仕様記述の 形式的な定義は文献C1

6 J

に与えられている)0

SORT 

…;は,記述の中で用い られるソートの名の宣言部であり,

REL

…;でソート間の関係を規定してい る。例えば

seqnumber

というソートは

O

から

7

までの非負整数であること を表している。

OP

…;は関数のタイプを宣言する部分で,例えば, If

rame 

seqnumber

, 

seqnumber

, 

d a t a

, 

pf‑

frame

は,関数記号(以下単に関数 と書く)If

rame

の引数のソートが

seqnumber

seqnumber

, 

d a t a

, 

p f

で,関 (+) 単一ソート dataのオベレーションなしの任意の集合である。なお表4. 1中で大文 字で始まる DataBoolなどは基底代数名を表し,小文字のdataboolなどは それぞれの基底代数におけるソート名を表す。

46  4 HDLC手順の代数的記述

4. 1 フレームの代数的記述 SPEC  Framespec ; 

BASE  Bool, NN‑integer, Bit, Data ;  SORT  frame, seqnumber, pf ; 

REL  seqnumber二 二 nn‑integer[0, 7J  pf  二 二 bit;

OP  Iframe : seqnumber, seqnumber, data, pf ‑> frame,  RRframe, RNRframe : seqnumber, pf ‑> frame,  typeI, typeR ,RtypeRNR : frame  ‑> bool,  ssn, rsn  : frame 

pfbit  : frame  inform  : frame  errorframe 

一>seqnumber, 

> pf,  一>data, 

> frame,  errorcheck  : frame 一>bool ;  V AR  s, r SORT seqnumber, 

d  SORT data,  b  SORT pf; 

AX 1:  typeI(lframe(s, r, d, b)) 

== 

TRUE; 

AX 2 :  typeI(RRframe(r, b)) 

=  = 

FALSE; 

AX 3 :  typeI(RNRframe(r, b))二 二 FALSE;

AX 4 :  typeRR(Iframe(s, r, d, b))二 二 FALSE;

AX 5 :  typeRR(RRframe(r, b)) 

=  = 

TRUE; 

AX 6 :  typeRR(RNRframe(r, b))二 二 FALSE;

AX 7 :  typeRNR(Iframe(s, r, d, b))二 二 FALSE;

AX 8 :  typeRNR(RRframe(r, b))二 二 FALSE;

AX 9 :  typeRNR(RNRframe(r, b))二 二 TRUE;

AX 10:  ssn(Iframe(s, r, d, b))二 二 s,  Ax 11:  rsn(lframe(s, r, d, b))二 二 r; 

AX 12:  rsn (RRframe (r, b)) = = r ;  AX 13:  rsn(RNRframe(r, b)) = = r ;  AX 14:  pfbit (Iframe (s, r, d, b)) = = b ;  AX 15:  pfbit(RRframe(r, b)) = = b ;  AX 16:  pfbit(RNRframe(r, b)) = = b ;  AX 17:  inform (Iframe (s, r, d, b)) = = d ;  AX 18:  errorcheck(Iframe(s, r, d, b))二 二 FALSE;

AX 19:  errorcheck(RRframe(r, b))二 二 FALSE;

AX 20:  errorcheck(RNRframe(r, b))二 二 FALSE;

AX 21:  errorcheck(errorframe)二 二 TRUE;

END; 

4 HDLC手順の代数的記述 47  数値のソートが

frame

であることを表している。

VAR

…;は各変数がどの

ソートに属するかを宣言する部分である。

AX1  ‑AX21

は,関数間の関係を公 理として書き下したものであり,公理の左辺はすべてフレームを構成する関数 の外側にそのフレームの各成分を取り出す関数をネストさせた形で書かれてい る。例えば,

AX18

は,構成された情報形式フレームの

FCS

による誤り検査 結果が偽であることを表している。

4  .  2  .  2  1

次局と

2

次局の代数的記述

規格では,再送のためのデータの保持の仕方に関しては規定されておらず,

また, シンクやソースとのデータの授受, ラインへのフレームの送出 タ イマの起動,停止 など外部の環境に依存する部分やそれらの変化を引き起す 部分(し、わゆるインタフェース部分〉は, 自然語の意味に頼って唆昧にしか書 かれていない。まず,ここで記述の対象とするのは,規格で書かれていること から上述のデータの保持やインタフェース部分を除外した部分(図

4.  1

1

次 局

( P r i m a r y )

2

次局

( S e c o n d a r y )

であり,そこでは,動作はデータに依存 しないので,再送といった概念はない。その部分を整理,再編成したもの,お よび,それに対応する代数的記述を以下に述べる。なお,

4.4

ではここで除外 した部分を含む規格全体について記述する。

input ‑from ‑source  output‑to‑sink  ]IS primary 

Line  ~ ?hys!cal  f Level  (The data stream from secondary to primary is  omitted) 

4. 1 プロトコルの階層構造

48  4 HDLC手順の代数的記述

(  1

, 

2

次局のソートと関数〕

1

次局の抽象的な状態の集合を

primary

と書き,その初期状態を表す定数関 数を

i n i t i a l

と書く。

1

次局の基本動作として送信,受信,タイムアウトの

3

種 類があり,これらの動作に伴し、1次局は状態変化を起す。これらの動作に対応 する関数として次の五つの関数が導入される。これらの関数は,動作を行う直 前の

1

次局の状態 pおよび必要なパラメータを引数に含み,動作直後の

1

次 局 の状態を関数値として与える。

(1)  情報形式フレームを

PF

ピット

b

で送信する関数:

s e n d I  ( p

, 

b

 ,) (2) 

RR

監視形式フレームを

PF

ピット

b

で送信する関数:

sendRR ( p

, 

b )

,  (3) 

RNR

監視形式フレームを

PF

ピット

b

で送信する関数:

sendRNR ( p

, 

b )

,  (4)  フレーム fを受信する関数:

r e c e i v e  ( p

, f), 

(5)  タイムアウトを表す関数:

t i m e o u t  ( p )

ただし,これらの関数によって, どのようなデータが送受信されるか,ある いは,タイマが何時セットされ何時解除されるか,などに関しては,後の 4.4 の1次局全体の記述のところで述べられる。また,上記の基本動作がその状態 で許されない動作であるか否かを表す関数

i n v a

1i

d

を導入する。これは, ]I

S

規 格で許されない動作の条件をひとまとめにして表す関数であり,初期状態から 許される動作のみを行ってきて到達した状態

p

に対して

i n v a

1i

d( p )

は偽であ

り,一度でも許されない動作を行っているとき真である。

さらに

1

次局の状態 pから,特定の情報を抽出するための関数をいくつか 導入する。

s e q ( p )

は次に送信すべき情報形式フレームの送信順序番号を表す関 数。

h i g h ( p )

は,最も最近に

s e n dI ( p

, 

b )

により送信した新たなフレームの送 信 順 序 番 号 に

8

を法として

1

加 え た 値 を 表 す 関 数 で , 再 送 の 際 に 対 象 と な る データの送信順序番号の上限を表す。

a c k ( p )

は次に受信が期待される(

2

次 局 からの〉フレームの送信順序番号の値を表す関数で,

ack(p)‑1

の送信順序番 号までの情報形式フレームをすべて正しく受信したことを表し,

a c k ( p )

の値 は送信順序番号として

2

次局へ送られる。

l o w ( p )

は(

1

次局から

2

次局への伝 送の)

1

次局側で確認している

2

次局側の

ack(

・〉の値を表す関数である。

HDLC

手 順 に お け る 誤 り 回 復 の 基 本 手 順 は 1 ,

2

次局間での

PF

ピット

1" 

4 HDLC手順の代数的記述 49  のフレームの順次交換により行われる。

1

次局が最も最近に

PF

ピット

1" 

で送信したフレームの送信順序番号を表す関数を

c h e c k p o i n t ( p )

,既に

PF

ピット

1

"でフレームを送信したが,それに対する(

2

次局からの)

PF

ピッ

ト 1"のフレームが未受信であることを表す関数を

r e a d y ( p )

と書く。また,

タイムアウト誤りを表す関数を

t ‑ e r r o r ( p )

RNR

監視形式フレームを受信済 みで,それを解除する(

2

次局からの〉フレームが未受信であることを表す関 数を

b u s y ( p )

と書く。

r e a d y

t ‑ e r r o r

, 

b u s y

の各関数の値は,それに対応する 事象が起ったとき真,それを解除すべき事象が起ったとき偽となる。

2

次局に関しては,その抽象的な状態の集合を

s e c o n d a r y

と書く。正規応答 モードのとき

2

次局は時間監視を行わないので関数

t i m e o u t

t ‑ e r r o r

はない。

1

次局と

2

次局の共通な部分の代数的記述を表

4.2

に示す。表

4.2

は,表

4.

1の

Framespec

を部分仕様として含み(I

NCLUDE Framespec;

で宣言さ れている), ソ一ト 、

s t a t

e "

を/パξラメ一タとする仕様記述名が

の代数的記述でで、ある。

1

次局と

2

次局の代数的記述は,表

4.2

のパラメータ

s t a t e

をそれぞれソート

p r i m a r y

s e c o n d a r y "

で置き換えたものを部分 仕様として含み,それに各局固有の関数と公理を付加したものとして表される (表

4.  3

,表

4.4)

。上述のソートや関数は,表

4.  2‑

4.  4

の中の

SORT

部と

OP

部でそれぞれ宣言されている。

記述の略記法:表

4.2‑

4.4

の公理において,左辺の下線は,その公理 の右辺の始めに

I F   N  OT 

(i

n v a l i d  

(下線部))

THEN 

が省略されており,

THEN

以降の部分だけ書いていることを表す。

この形より,

i n v a l i d  

(下線部〉が真なら,下線部の 状態"に対する

s e q

h i g h

,…などの値は定義されていないことになる。

〔基本動作の実行と状態変化〕

状態pにおいて,情報形式フレームを送信することができるのは,過去に許 されない動作を行ってなく(i

n v a l i d ( p )

が偽),

(seq(p)‑low(p))MOD8

7

未満で,タイムアウトエラー状態でなく

( t ‑ e r r o r ( p )

が偽),また,

RNR

監視

ドキュメント内 プロトコルの形式的記述と検証 (ページ 52-75)

関連したドキュメント