この付録では、PPP リンクの動作について簡単に説明します。フェーズダイアグラムおよび PPP リンク中に送信される各種の PPP フレームについて説明します。
PPP リンクの確立、保守、終了を行うプロセスは複数のフェーズを通して行われ、この間、リンクの両端間で PPP フレームが交換されます。
リンク確立フェーズ
同位認証フェーズ (オプション)
ネットワーク層プロトコルフェーズ
リンク終了フェーズ
図 A-1 に、これらのフェーズ間の遷移を示します。
リンク確立フェーズでは、リンク制御プロトコル (LCP) を使用して PPP リンクが構成されます。LCP フレームを交換することによって、構成パラメータのネゴシエーションが行われます。ネゴシエーションが収束した場合は、リンクが確立され、認証プロトコルフェーズまたはネットワーク層プロトコルフェーズが開始されます。両エンドポイントで、リンクに対する共通構成のネゴシエーションが失敗した場合は、リンクはただちに切断されます。
リンク確立フェーズにおいて PPP フレームで送信するのは、LCP フレームだけです。その他のフレームは廃棄されます。
オプションで、一方のエンドポイントまたは両方のエンドポイントが同位認証を要求することができます。Solstice PPP は、パスワード認証プロトコル (PAP) とチャレンジハンドシェーク認証プロトコル (CHAP) による同位認証をサポートします。認証が成功した場合は、リンクは起動状態のままとなり、ネットワーク層プロトコルフェーズが開始されます。認証が失敗した場合は、リンクを切断するリンク終了フェーズが開始されます。
同位認証フェーズにおいて、PPP フレームで送信するのは、LCP フレームと認証フレームだけです。その他のフレームは廃棄されます。
ネットワーク制御プロトコル (NCP) を使用して、ネットワーク層を構成します。Solstice PPP は、PPP における IP を構成するための IP 制御プロトコル (IPCP) を実装しています。
NCP フレームを交換することによってネットワーク層が構成されると、IP データグラムをカプセル化しリンクを通して送信することができます。LCP フレームを定期的に交換して、リンクをテストし保守することができます。
ネットワーク層プロトコルフェーズ中に、LCP、NPC、IP のフレームを PPP フレームで送信します。その他のフレームは廃棄されます。
認証の失敗、キャリア消失、非活動タイムアウト時間の超過などが発生すると、エンドポイントからの要求に応じてリンクが終了します。リンク終了時に、リンク制御プロトコル (LCP) フレームを交換します。
リンク終了フェーズにおいて PPP フレームで送信するのは LCP フレームだけです。その他のフレームは廃棄されます。
PPP フレームは、構成情報やデータが入っている情報のパケットをカプセル化します。
図 A-2 に、PPP フレームの通常の形式を示します。
アドレスフィールドは RFC 1662 規定の PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。このフィールドは、必ず All-Stations アドレスである 0xff に設定します。他のアドレス値を持つフレームは、通知されずに捨てられます。
制御フィールドは RFC 1662 規定の PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。このフィールドは、必ず Poll/Final ビットがゼロに設定された Unnumbered Information (UI) コマンドである 0x03 に設定します。他の制御値を持つフレームは、通知されずに捨てられます。
プロトコル識別子は、フレームの情報フィールドにある情報の種類を識別します。長さは 1 オクテットまたは 2 オクテットです。
Solstice PPP において有効な値は、以下のとおりです。
0x0001 パディングプロトコル
0x0021 インターネットプロトコル
0x002d Van Jacobson 圧縮 TCP/IP
0x002f Van Jacobson 圧縮解除 TCP/IP
0x8021 IP 制御プロトコル
0xc021 リンク制御プロトコル
0xc023 パスワード認証プロトコル
0xc223 チャレンジハンドシェーク認証プロトコル
情報フィールドは、ゼロオクテット以上です。情報フィールドの最大の長さは、ネゴシエーション対象パラメータである最大受信ユニット (MRU) によって決まります。デフォルトでは、1500 (Ethernet ネットワーク用) に設定されています。
情報フィールドには、構成情報やデータを含めることができます。Solstice PPP の場合は、データは圧縮 IP データグラムまたは非圧縮 IP データグラムです。
リンク制御プロトコル (LCP) フレームはリンク確立フェーズとリンク終了フェーズで送信されるとともに、リンク運用中に定期的に送信されます。PPP リンク構成のネゴシエーション、および確立されたリンクのテストと保守に使用されます。図 A-3 に、LCP フレームの形式を示します。
アドレスフィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0xff に設定します。
制御フィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0x03 に設定します。
プロトコル識別子はフレームの情報フィールドにある情報の種類を識別します。LCP フレームの場合は必ず 0xc021 に設定します。
コードフィールドは以下のコードによって LCP フレームの種類を識別します。長さは 1 オクテットです。
0x01 Configure-request 0x02 Configure-ack 0x03 Configure-nak 0x04 Configure-reject 0x05 Terminate-request 0x06 Terminate-ack 0x07 Code-reject 0x08 Protocol-reject 0x09 Echo-request 0x0a Echo-reply 0x0b Discard-request |
識別子フィールドには、要求と応答の照合に使用される識別子があります。長さは 1 オクテットです。
長さフィールドの長さは 2 オクテットで、コード、識別子、長さ、データの各フィールドで構成される LCP フレームの全長を示します。このフィールドの値は、最大受信ユニット (MRU) を超えないでください。
長さフィールドに示されているとおり、データフィールドの長さはゼロオクテット以上です。構成オプション、フレーム情報、データなどのフレーム関係情報を格納します。
データフィールドに、長さ 4 オクテットのマジックナンバーが含まれる場合があります。これは、ループバック状態や他のリンクレベルの変則制などのリンク障害の検出に使用されます。マジックナンバーはネゴシエーション対象パラメータで、デフォルトではゼロに設定されます。マジックナンバーは、一意のランダムな数字によってフレームのソースを識別します。同じマジックナンバーを持つ同じ種類のフレーム 2 個を受信した場合は、リンクがループバックしており、第 2 のフレームは第 1 のフレームと同じであると考えられます。
リンク構成フレームは、リンク確立フェーズに送信されます。リンク構成フレームのデータフィールドには、リンクの構成オプションのネゴシエーションに使用される情報があります。リンク構成フレームには、以下のものがあります。
Configure-request
コード 0x01。特定の構成を持つリンクの確立を要求します。リンク確立フェーズの開始を示します。有効な応答を受信するか、またはファイル ppp.conf の lcp_max_restart パラメータ値を超える数のフレームが受信されるまで、Terminate-request フレームが定期的に送信されます。
Configure-ack
コード 0x02。認識可能な Configure-request フレームの受信を肯定応答し、要求された構成を受け付けます。リンク確立フェーズの終了を示します。
Configure-nak
コード 0x03。認識可能な Configure-request フレームの受信を肯定応答しますが、要求された構成の一部または全部を拒否します。
Configure-reject
コード 0x03。認識可能でないため、または要求された構成が受け付け不能であるため、Configure-request フレームを拒否します。
リンク終了フレームは、リンク終了フェーズで送信されます。リンク終了フレームには、以下のものがあります。
Terminate-request
コード 0x05。リンクの終了を要求します。リンク終了フェーズの開始を示します。
Terminate-ack
コード 0x06。認識可能な Terminate-request フレームの受信を肯定応答し、終了要求を受け付けます。リンク終了フェーズの終了を示します。
リンク保守フレームは、リンクのテストと保守を目的として定期的に送信されます。リンク保守フレームには、以下のものがあります。
Code-reject
コード 0x07。無効なコードフィールドを持つ LCP フレームを拒否します。
Protocol-reject
コード 0x08。無効なプロトコル識別子を持つ PPP フレームを拒否します。
Echo-request
コード 0x09。Echo-reply フレーム形式の、リモートのエンドポイントからの応答を要求します。リンクが確立されたままであることをテストするために使用されます。
Echo-reply
コード 0x10。有効な Echo-request フレームに対して応答します。リンクが確立されたままであることをテストするために使用されます。
Discard-request
コード 0x11。リモートのエンドポイントで通知されずに捨てられたフレームを送信します。デバッグメカニズムの 1 つとして使用されます。
PAP フレームは、リンク確立フェーズで構成オプションの 1 つとしてパスワード認証プロトコル (PAP) による同位認証が要求された場合に、同位認証フェーズで交換されます。図 A-4 に、通常の PAP フレームの形式を示します。
アドレスフィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0xff に設定します。
制御フィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0x03 に設定します。
プロトコル識別子はフレームの情報フィールドにある情報の種類を識別します。PAP フレームの場合は、必ず 0xc023 に設定します。
コードフィールドは、以下のコードによって PAP フレームの種類を識別します。長さは 1 オクテットです。
0x01 Authenticate-request 0x02 Authenticate-ack 0x03 Authenticate-nak |
識別子フィールドには、要求と応答の照合に使用される識別子があります。長さは 1 オクテットです。
長さフィールドの長さは 2 オクテットで、コード、識別子、長さ、データの各フィールドで構成される PAP フレームの全長を示します。このフィールドの値は、最大受信ユニット (MRU) を超えないでください。
長さフィールドに示されているとおり、データフィールドの長さはゼロオクテット以上です。認証ネゴシエーションに関する情報をコードフィールドに示されている形式で格納します。
PAP Authenticate-request フレーム (コード 0x01) は、認証のために送信される PAP 識別子と PAP パスワードを格納しており、認証フェーズを開始するために送信されます。10 個を超える PAP Authenticate-request フレームを送信しても応答がない場合は、認証フェーズが失敗します。図 A-5 に、PAP Authenticate-request フレームの形式を示します。
PAP 識別子はファイル ppp.conf の send_pap_id パラメータによって指定される文字列で、PAP 識別子長さフィールドに示されているとおり、長さはゼロオクテット以上です。
PAP パスワードはファイル ppp.conf の send_pap_passwd パラメータによって指定される文字列です。PAP パスワード長さフィールドに示されているとおり、長さはゼロオクテット以上です。
PAP Authenticate-ack フレーム (コード 0x02) は、有効な PAP 識別子と PAP パスワードを持つ認識可能な PAP Authenticate-request フレームを受信した認証側によって送信されます。
PAP Authenticate-nak フレーム (コード 0x03) は、認識不能な PAP Authenticate-request フレームまたは無効な PAP 識別子と PAP パスワードを持つ PAP Authenticate-request フレームを受信した認証側によって送信されます。リンクは必ず切断されます。
CHAP フレームは、リンク確立フェーズ時に構成オプションの 1 つとしてチャレンジハンドシェーク認証プロトコル (CHAP) による同位認証が要求された場合に、同位認証フェーズ時に交換されます。図 A-6 に、通常の CHAP フレームの形式を示します。
アドレスフィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0xff に設定します。
制御フィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0x03 に設定します。
プロトコル識別子は、フレームの情報フィールドにある情報の種類を識別します。CHAP フレームの場合は、必ず 0xc223 に設定します。
コードフィールドは以下のコードによって CHAP フレームの種類を識別します。長さは 1 オクテットです。
0x01 Challenge 0x02 Response 0x03 Success 0x04 Failure |
識別子フィールドには、要求と応答の照合に使用する識別子があります。長さは 1 オクテットです。
長さフィールドの長さは 2 オクテットで、コード、識別子、長さ、データの各フィールドで構成される CHAP フレームの全長を示します。このフィールドの値は、最大受信ユニット (MRU) を超えないでください。
長さフィールドに示されているとおり、データフィールドの長さはゼロオクテット以上です。認証ネゴシエーションに関する情報を、コードフィールドに示されている形式で格納します。
CHAP Challenge フレーム (コード 0x01) は、認証ネゴシエーションを開始するために使用され、認証側によって送信されます。このフレームには、CHAP 名、および単方向ハッシュアルゴリズムによって CHAP シークレットをもとに算出されたチャレンジ値があります。10 個を超える CHAP Challenge フレームを送信しても Response フレームを受信しなかった場合は、認証フェーズが失敗します。
CHAP Response フレーム (コード 0x02) は、認識する CHAP Challenge フレームを受信したときに送信されます。このフレームには、CHAP シークレット、受信したチャレンジ値、単方向ハッシュアルゴリズムを使用して算出された応答値があります。
図 A-7 に、CHAP Challenge フレームと Response フレームの形式を示します。
CHAP 名は、ファイル ppp.conf の send_chap_name パラメータによって指定される文字列で、長さは 1 オクテット以上です。
CHAP Success フレーム (コード 0x03) は、受信可能な CHAP 名と応答値を持つ認識可能な CHAP Response フレームを受信した認証側によって送信されます。
CHAP Failure フレーム (コード 0x04) は、認識できない CHAP response フレームを受信したとき、または受信できない PAP 識別子や PAP パスワードを含む CHAP response フレームを受信したときに、認証側によって送信されます。
IP 制御プロトコル (IPCP) は、PPP リンクにおける IP を構成したり、使用可能や使用禁止にするのに使用されます。IPCP は、リンク制御プロトコル (LCP) の場合と同じフレーム交換メカニズムを使用します。
図 A-8 に、通常の IPCP フレームの形式を示します。
アドレスフィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0xff に設定します。
制御フィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0x03 に設定します。
プロトコル識別子は、フレームの情報フィールドにある情報の種類を識別します。IPCP フレームの場合は、必ず 0x8021 に設定します。
コードフィールドは、以下のコードによって IPCP フレームの種類を識別します。長さは 1 オクテットです。
0x01 Configure-request 0x02 Configure-ack 0x03 Configure-nak 0x04 Configure-reject 0x05 Terminate-request 0x06 Terminate-ack 0x07 Code-reject |
識別子フィールドには、要求と応答の照合に使用される識別子があります。長さは 1 オクテットです。
長さフィールドの長さは 2 オクテットで、コード、識別子、長さ、データの各フィールドで構成される IPCP フレームの全長を示します。このフィールドの値は、最大受信ユニット (MRU) を超えないでください。
長さフィールドに示されているとおり、データフィールドの長さはゼロオクテット以上です。構成オプション、フレーム情報、データなどのフレーム関係情報を、コードフィールドに示されている形式で格納します。
インターネットプロトコル (IP) フレームには、PPP リンクを通して伝送するためのカプセル化された IP データグラムがあります。1 個の IP データグラムが PPP フレームの情報フィールドに格納されます。大型の IP データグラムは、必要に応じて分割してから送信することができます。図 A-9 に、IP フレームの形式を示します。
アドレスフィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0xff に設定します。
制御フィールドは PPP 用 HDLC 式フレームの一部で、長さは 1 オクテットです。必ず 0x03 に設定します。
プロトコル識別子はフレームの情報フィールドにある情報の種類を識別します。IP フレームにおける値は、次のとおりです。
0x0021 インターネットプロトコル 0x002d Van Jacobson 圧縮 TCP/IP 0x002f Van Jacobson 圧縮解除 TCP/IP |
識別子フィールドには、要求と応答の照合に使用される識別子があります。長さは 1 オクテットです。
長さフィールドの長さは 2 オクテットで、コード、識別子、長さ、データの各フィールドで構成される IP フレームの全長を示します。このフィールドの値は、最大受信ユニット (MRU) を超えないようにしてください。
長さフィールドに示されているとおり、データフィールドの長さはゼロオクテット以上です。PPP リンクを通して送信される IP データグラムを格納します。