LCPパケット(RFC1570)

LCPパケットのクラス
図4 LCPパケットのクラス

 なお,ID通知及び残余通知時間は,RFC1570(PPP LCP Extension)で追加規定されたものです。

(1)LCPパケットの構造

LCPパケットには,図4のような構造をもち,PPPフレームの情報部に1つ格納されます。

LCPパケットの構造
LCPパケットの構造
図5 LCPパケットの構造

  .僖吋奪箸離侫ールド
 LCPパケットの中では,リンク設定パケットだけがオプションをもち(オプションのネゴシエーションが可能),識別値(Identifier)は,要求−応答型パケット群では要求と応答の対応づけの値(応答パケットでは要求パケットの値)を,単独型パケットではパケットごとに異なる値をセットし,長さはLCPパケットの全長(コード,識別値,長さ,データを含む長ぎMRUを超えてはならない)をセットする。
 ◆〕囘
 リンク設定パケット,リンク終了パケットは,リンクのオープンやクローズで使用され,リンク保守パケットの中のコード拒否パケットとプロトコル拒否パケットは,エラー処理で使用される。また,リンク保守パケットのエコー要求・応答パケットは双方向の,廃棄要求パケットは一方向の,データリンク層でのループバックのデバッグ/テスト用です。その他,ID通知は自分の識別情報を,残余時間通知はセッションの残余時間を,それぞれ相手に通知する目的で使用される。
 なお,プロトコル拒否パケット,エコー要求・応答パケット,廃棄要求バケット,および残余時間通知は,LCPリンク・オープン状態でしか使用できない。その他は,リンク停止フェーズ以外ならどこでも使用できる。ID通知は,リンク保守パケットですが,LCPリンク・オープン前を含めて使用可能です。
  エラー処理
 未知のコード値をもつLCPパケットを受信した時には,コード拒否パケットを,未知のプロトコル値をもつPPPフレームを受信したときには,プロトコル拒否パケットを,それぞれエラー・メッセージとして返信する。コード拒否パケットでは,拒否したLCPパケットの情報部,プロトコル拒否パケットでは,拒否したPPPフレームのプロトコル値と情報部が,それぞれデータとしてセッ トされる。いずれのパケットでも,パケット長がMRUを超える場合には切り詰められる。
 一方,無効識別値をもつLCPパケットを受信したときには,これを廃棄し,何のエラー・メッセージも送信しない。

(2)リンク・オープンとオプション・ネゴシエーション

 リンク・オープンは,リンク確立フェーズにリンク設定要求パケットとその応答パケットである,リンク設定確認パケット/リンク設定否定パケット/リンク設定拒否パケットによって行う。
 リンク設定要求パケットには,オプションの指定ができる(デフォルト値以外)が,このオプションの取り扱いによって応答パケットが異なります。つまり,応答側は指定されたオプション(オプションのタイプ)とオプション値を見る。
 応答側は,リンク設定要求パケットで指定されたオプションすべてを認識し,その値を受け入れる場合には,リンク設定確認パケットで応答し,オプションの認識は可能だが一部のオプションの値に受け入れ不能なものがある場合には,リンク設定否定パケットで応答し,オプションの認識が不能またはネゴシエーション不能の場合には,リンク設定拒否パケットで応答する。
 これらの応答パケットには,さらに別の情報が付加される。それはオプション・フィールドです。リンク設定要求パケットには,送信側が希望するオプションとその値をセットするが,応答パケットではそれに対する受信側(応答側)の返答と希望がセットされる。つまり,リンク設定確認パケットのオプション・フィールドは,リンク設定要求パケットのオプション・フィールドそのままですが,リンク設定否定パケットでは,一部のオプションの値に受け入れ不能なものがあるので,その受け入れ不能のオプションだけを,受け入れ可能な値を入れて,リンク設定要求パケットで指定された順序でセットする。なお,応答側で送信側がセットした以外のオプションを逆に要求したい場合には,その後ろに(その受け入れ可能な値とともに)追加することが可能。リンク設定拒否パケットでは,認識やネゴシエーションが不能なオプションのみを,そのままの順序と値でセットする。
 リンク設定否定パケットとリンク設定拒否パケットを受信した送信側は,再度,リンク設定要求パケットを送信します。この時,リンク否定パケットに対しては,指定されたオプションの受け入れ可能な値をセットし,リンク拒否パケットに対しては,拒否されたオプションをはずさなければならない。なお,リンク設定否定パケットのオプションに複数の受け入れ可能な値がセットされ ている場合にはそのうちの1つを選択する。
 こうした,希望オプションの提示,その受け入れの可能性の応答,修正して再送,受け入れという手順でリンク設定確認パケットを受信し(逆方向も同じ手順で行い),リンク・オープン状態に到達する(図6)。

リンク・オープンとオプション・ネゴシエーション
図6 リンク・オープンとオプション・ネゴシエーション


(3)リンク・クローズ

 リンク・クローズは,リンク終了フェーズに,リンク終了要求パケットとリンク終了確認パケットとで行う。
 リンク終了要求パケットを送信した側は,リンク終了確認パケットを受信したとき,または,リンク終了確認パケットを受信しないための再送による最大再送回数を超えたときに,リンク・クローズとなり、受信側はリンク終了確認パケットを送信した後,ある時間(送信タイムアウト)待ってから,リンク・クローズする(図7)。

リンク・クローズ
図7 リンク・クローズ


(4)処理ループの回避

 リンクのオープンおよびクローズ処理でのループ(無限繰り返し)を防ぐための一助として,最大回数やタイマのデフォルト(設定変更可能)が用意されている。
  〜信タイムアウト(Restart Timer)
 リンク設定要求パケットまたはリンク終了要求パケットを送信した後に,その応答を得られずに再送する場合の、再送までの時間で,デフォルトは3秒です。
 ◆.螢鵐終了要求パケット最大再送回数(Max-Terminate)
 リンク終了要求パケットが,その応答(リンク終了確認パケット)が得られない場合(送信タイムアウト時)に,再送できるデフォルトの最大回数は,2回です。
  リンク設定要求パケット最大再送回数(Max-Configure)
 リンク設定要求パケットが,その応答(リンク設定確認パケット,リンク設定否定パケット,リンク設定拒否パケット)を得られない場合(送信タイムアウト時)に再送できるデフォルトの最大回数は,10回です。
 ぁ.螢鵐設定否定パケット最大送信回数(Max-Failure)
 リンク設定要求パケットに対して合意しない場合に,リンク設定否定パケットで応答できるデフォルトの最大送信回数は,5回です。これを超えてもなお合意しない場合の応答は,リンク設定拒否パケットでなければならない。

(5)LCP設定オプション

 LCP設定オプションには,図8のような種類があります。

LCP設定オプション
図8 LCP設定オプション

 MRU(Maximum Receive Unit)は,最大受信長を設定(ネゴシエーション)するもので,PPPフレームの情報部(パッドを含む)のバイト長で指定する。認証プロトコルは,認証フェーズで行う処理プロトコルを指定する。典型的なものが,PAP(Password Authentication Protocol)やCHAP(Challenge-Handshake Authenticatin Protocol)です。
 LCP設定オプションのうち,マジック・ナンバーは接続リンクがループバックかどうかの検出に使われる。
 圧縮関係については,オプションが2つあります。1つは,プロトコル・フィールド圧縮オプション(PFC : Protocol Field Compression)で,もう1つはアドレス/制御フィールド圧縮オプション(ACFC : Address and Control Field Compression)。
 PFCは,PPPフレームのプロトコル値に1バイトで表現できるものがあることに注目して,ネットワーク層プロトコルの一部を1バイトで指定する。これは,プロトコル値の最後のバイトの最下位ビットは必ず1(上位バイトでは必ず0)なので,1バイトであろうと2バイトであろうと,プロトコル・フィールドの終わりを認識できるからだ。
 一方,アドレス・フィールドと制御フィールド(ACFC)は,ともに一定値(アドレス=FFh,制御=03h)なので,省略しても問題はないが,もし,プロトコル・フィールドに同じ値FF03hがあれば,省略不能となる(アドレス/制御かプロトコルか判別できない)。ところが,プロトコルの最初のバイトは偶数(最下位ビットは0)でなければならないので,その恐れはありません(PFC使用時は,1バイト時のFFh,つまり2バイトの00FFhは予約されているので,こちらも問題ない。)。そのため,このオプションが使用が可能。
 なお,FCS設定(タイプ9),自己記述パッド(タイプ10),コールバック(タイプ13),複合フレーム(タイプ15)は,RFC 1570 (PPP LCP Extensions)で追加規定されている。

 (6)ループバック対応

 PPPだけでなく,一般に通信システムでは,そのデバッグ/テストのためにループバック設定を行うことがある。ループバック設定がされた接続リンクでは,送信したパケットがそのまま戻ってくる。ところが,受信LCPは,受信したLCPパケットが自分の送ったパケットか,別の相手が送ってきたパケットか,判別できない。そこで,送信LCPをユニークに識別するような値を前もって決めておき,送信パケットでそれを使えばループバックかどうか判別できるようにしている。この値が,マジック・ナンバーです。

マジック・ナンバーによるループバックの判定処理
図9 マジック・ナンバーによるループバックの判定処理

 図9は,マジック・ナンバーによるループバック処理の仕組みを説明している。図9(1)は,相手からマジック・ナンバーの設定要求が来たときの処理,(2)は応答が来たときの処理です。どちらも,先に送ったパケットと同じ値のマジック・ナンバーが指定されていれば,異なる値に変更して(あるいは変更するように)送信する。この処理を実際のループバック・リンク上で行うと,(3)のように際限なく繰り返される。
 ところが,別の相手とリンクしていれば,1回で終了するかどうかは別として(マシンのシリアル番号やMACアドレスなどの固有値に基づいてランダム発生させれば,同じマジック・ナンバーになる確率はかなり低くなる),数回で収束することが予測可能です。つまり,この回数によってループバックかどうかを判別できる。
 図9は,リンク設定要求パケット(マジック・ナンバー設定オプション)の例だが,他のマジック・ナンバー・フイールドをもつパケット(エコー要求・応答パケット/廃棄要求パケット)でも,同様に使える。



PPP WAN接続の定番を理解するへ

トップページへ