PPP徹底解説:概要・歴史・フレーム構造・LCP/NCP・認証方式とPPPoE/PPPoAなどの拡張技術

PPP接続とは:概要と歴史

PPP(Point-to-Point Protocol)は、2点間の通信リンク上でデータリンク層の機能を提供するプロトコルです。もともとは電話回線によるダイヤルアップ接続やシリアル回線、ISDNなどの点対点接続のために設計されました。1990年代以降、DSLやブロードバンド環境ではPPPの拡張(PPPoE、PPPoA)として広く利用され、VPNやトンネリングでも今なお重要な役割を果たしています。

設計目的と基本機能

PPPの主な目的は以下のとおりです。

  • リンク確立と終了の手順の提供
  • 認証機能(ユーザ認証)
  • ネットワーク層プロトコル(例:IP)をリンク上で有効化するための制御プロトコル(NCP: Network Control Protocol)の提供
  • エラー検出やフレーミングなどのデータリンク層機能

これらにより、同じ物理回線上で複数のネットワークプロトコルを独立して動作させたり、接続毎にIPアドレスを動的に割り当てたりできます。

PPPのフレーム構造(フレーミング)

PPPはHDLCライクなフレーミングを使い、各フレームはフラグフィールド、アドレス、制御、プロトコル、情報(ペイロード)、FCS(フレームチェックシーケンス)などで構成されます。これにより、送受信中の誤り検出やデータの境界識別が可能です。

動作フェーズ(ステートマシン)

PPPは典型的に以下のフェーズで動作します。

  • Link Dead(リンク無効)
  • Link Establishment(リンク確立)— LCP(Link Control Protocol)でリンクオプションを交渉
  • Authentication(認証)— オプションでPAP/CHAP/EAPなど
  • Network Layer Protocol(ネットワーク層交渉)— 各ネットワーク用のNCP(例:IPCP)でIPを開始
  • Open(接続確立)— データ送受信が可能
  • Termination(終了)— リンク切断

LCP(Link Control Protocol)とオプション

LCPはリンクの初期化や診断、オプションの交渉(最大受信単位 MRU、認証方式、圧縮の有効化、Magic Numberなど)を行います。LCPで互いに同意したオプションに従って、以後の通信が行われます。

NCP(Network Control Protocol)群

PPPではネットワーク層ごとにNCPが用意されます。代表的なもの:

  • IPCP(Internet Protocol Control Protocol)— IPv4のアドレス割当や圧縮等の設定
  • IPV6CP — IPv6用のNCP
  • その他、OSIやXNSなど古いプロトコル用のNCP

NCPにより、同じPPPリンク上で複数のネットワークプロトコルを独立に確立できます。

認証方式:PAP、CHAP、EAP

PPPは複数の認証方式をサポートします。代表的なのは:

  • PAP(Password Authentication Protocol)— 平文に近い方式でシンプルだが安全性は低い。
  • CHAP(Challenge-Handshake Authentication Protocol)— 定期的なチャレンジ応答でリプレイや盗聴に対して堅牢性が高い。
  • EAP(Extensible Authentication Protocol)— 多様な認証メカニズム(証明書、トークン、ワンタイムパスワード等)を扱える拡張方式。

実装や運用での選択はセキュリティ要件と相互運用性に依存します。

拡張と派生技術:PPPの現代的利用

PPP自体は点対点リンク向けですが、ブロードバンド環境向けに以下のような技術が生まれました。

  • PPPoE(PPP over Ethernet)— Ethernet上でPPPフレームをカプセル化し、DSLなどでユーザ毎にセッション管理や認証を行う。
  • PPPoA(PPP over ATM)— ATM/DSL環境でPPPを用いる方式。
  • Multilink PPP(MP、マルチリンク)— 複数の物理チャネルを束ねて一つの論理回線として扱い、帯域を拡張する。

これらの拡張により、ユーザ認証や課金、セッション管理が容易になり、家庭用ブロードバンドやISPのアクセス網で広く利用されました。

セキュリティと運用上の注意点

PPPは歴史的に設計されたプロトコルであり、認証や暗号化は別途組合せる必要があります。運用上の注意:

  • PAPは平文に近いため避け、CHAPやEAPを推奨する。
  • PPP自体は認証後のセッションに対する暗号化を標準で含まないため、必要に応じてIPsecやTLS等を併用する。
  • ログ(LCP/NCPのやり取り)を監視して不正な再ネゴシエーションやフラグメンテーションを検出する。
  • PPPoE等を使う場合はMTUの制約(オーバーヘッドによりMTUが小さくなる)に注意し、MSS調整等を行う。

トラブルシューティングの基本

PPP接続で問題が起きたときの基本的な確認項目:

  • 物理層の接続(シリアル/DSL/イーサネット)とリンク状態の確認
  • LCPのネゴシエーションが成功しているか(オプションの不一致がないか)
  • 認証フェーズでエラーが出ていないか(ユーザ名/パスワード、CHAPの応答)
  • IPCPなどNCPでアドレスが正しく割り当てられているか
  • MTU/MRUの設定で断片化や通信不良が起きていないか

ルータやOSのPPPデバッグログ(LCP/NCPメッセージ)を参照することが重要です。

現代におけるPPPの位置づけ

ブロードバンド化とIPベースのネットワークの普及で、古典的なダイヤルアップはほぼ消滅しましたが、PPPはそのシンプルさと柔軟性から今でも多くの場面で使われています。特にISPのユーザ認証やDSL環境(PPPoE/PPPoA)、一部のVPNや組み込み機器のシリアル接続などでは現役です。また、PPPの設計概念(フェーズ分離、NCPによるプロトコル独立性、オプションネゴシエーション)は後続の多くのプロトコル設計にも影響を与えています。

まとめ

PPPは点対点リンクのための成熟したプロトコルで、リンク確立・認証・ネットワークプロトコルの交渉といった機能を提供します。過去のダイヤルアップだけでなく、PPPoE/PPPoAやマルチリンクといった拡張を通じてブロードバンド環境でも広く用いられてきました。運用上は認証方式やMTU、暗号化の有無などに注意して設計・監視を行うことが重要です。

参考文献