
コンピュータネットワークにおいて、ポイントツーポイントプロトコル(PPP)は、ホストやその他のネットワーク機器を介さずに2つのルータ間で直接通信を行うデータリンク層(レイヤ2)通信プロトコルです。 [ 1 ]ループ検出、認証、伝送暗号化[ 2 ]、データ圧縮などの機能を提供できます。
PPPは、シリアルケーブル(PPPoS)、電話回線、幹線回線、携帯電話、専用無線リンク、ISDN、SONETなどの光ファイバーリンクを含む、多くの種類の物理ネットワークで使用されています。IPパケットは、送信フレームの開始位置と終了位置を識別できるデータリンクプロトコルがなければ、モデム回線上で単独で送信できないため、インターネットサービスプロバイダ(ISP)は、顧客のダイヤルアップインターネットアクセスにPPPを使用してきました。
PPPは、以前のダイヤルアップネットワーク回線で使用されています。 [ 3 ] PPPの2つの派生であるPoint-to-Point Protocol over Ethernet(PPPoE)とPoint-to-Point Protocol over ATM(PPPoA)は、ISPが顧客とのデジタル加入者線(DSL)インターネットサービスLP接続を確立するために最も一般的に使用されています。
PPP は、同期回線と非同期回線を介した接続のためのデータリンク層プロトコルとして非常に一般的に使用されており、古いシリアルラインインターネットプロトコル(SLIP) や電話会社が義務付けた標準 ( X.25プロトコルスイートのリンクアクセスプロトコル、バランス(LAPB)など) に取って代わっています。 PPP の唯一の要件は、提供される回線がデュプレックスであることです。 PPP は、インターネットプロトコル(IP)、TRILL、Novell のインターネットワークパケット交換(IPX)、NBF、DEC net、AppleTalkなど、多数のネットワーク層プロトコルと連携するように作られています。 SLIP と同様に、PPP はモデムを介して電話回線で完全なインターネット接続を可能にします。 インターネットパケットが破損せずに到着することを二重にチェックし、破損したパケットを再送信するため、SLIP よりも信頼性が高くなります。[ 4 ]
PPPは、オリジナルのHDLC仕様から多少離れて設計されました。PPPを設計した人々は、それまで独自のデータリンクプロトコルでしか見られなかった多くの追加機能を盛り込みました。PPPはRFC 1661で規定されています。[ 4 ]
RFC 2516 では、イーサネット上で PPP を送信する方法として、DSLで使用されることもあるPoint-to-Point Protocol over Ethernet ( PPPoE) について説明しています。[ 5 ] RFC 2364 では、 ATM Adaptation Layer 5 ( AAL5 )上で PPP を送信する方法としてPoint-to-Point Protocol over ATM (PPPoA) について説明しています。これも DSL で使用される PPPoE の一般的な代替手段です。
PPP、PPPoE、PPPoAはWAN回線で広く使用されています。
PPPは3つのコンポーネントを持つ階層型プロトコルです。[ 6 ]
LCPは接続の開始と終了をスムーズに行い、ホスト間で接続オプションのネゴシエーションを可能にします。これはPPPの不可欠な要素であり、同じ標準仕様で定義されています。LCPは、各エンドのインターフェースの自動構成(データグラムサイズ、エスケープ文字、マジックナンバーの設定など)と、オプションの認証の選択を提供します。LCPプロトコルはPPP(PPPプロトコル番号0xC021)上で動作するため、LCPが構成を行うには、まず基本的なPPP接続を確立する必要があります。
RFC 1994では、ISPとのダイヤルアップ接続を確立する際に推奨されるチャレンジ・ハンドシェイク認証プロトコル(CHAP)について説明されています。パスワード認証プロトコル(PAP)は非推奨となっていますが、現在でも時折使用されています。
PPP 上での認証のもう 1 つの選択肢は、RFC 2284 で説明されている拡張認証プロトコル(EAP) です。
リンクが確立された後、追加のネットワーク(レイヤ 3)構成が行われる場合があります。最も一般的には、インターネット プロトコル制御プロトコル(IPCP)が使用されますが、かつてはインターネットワーク パケット交換制御プロトコル(IPXCP)やAppleTalk 制御プロトコル(ATCP)も人気がありました。[ 7 ] [ 8 ] IPv6がレイヤ 3 プロトコルの主流としてIPv4に取って代わる将来、インターネット プロトコル バージョン 6 制御プロトコル(IPv6CP)の使用が拡大されるでしょう。
PPPは、複数のネットワーク層プロトコルが同一の通信リンク上で動作することを可能にします。使用されるネットワーク層プロトコルごとに、複数のネットワーク層プロトコルのオプションをカプセル化してネゴシエートするための個別のネットワーク制御プロトコル(NCP )が提供されます。NCPは、接続が確立された後に、ネットワークアドレスや圧縮オプションなどのネットワーク層情報をネゴシエートします。
例えば、IPはIPCPを使用し、インターネットワークパケット交換(IPX)はNovell IPX制御プロトコル(IPX/SPX)を使用します。NCPには、PPP接続がカプセル化するネットワーク層プロトコルの種類を示す標準化されたコードを含むフィールドが含まれています。
PPPでは、以下のNCP(国家協力プロトコル)を使用することができます。
PPPはマジックナンバーを用いた機能でループリンクを検出します。ノードがPPP LCPメッセージを送信する際、これらのメッセージにはマジックナンバーが含まれる場合があります。回線がループしている場合、ノードはピアのマジックナンバーを含むメッセージではなく、自身のマジックナンバーを含むLCPメッセージを受信します。
前のセクションでは、特定のWAN接続要件を満たすためのLCPオプションの使用について説明しました。PPPには、以下のLCPオプションが含まれる場合があります。
PPPフレームはHDLCフレームの派生形です。
LCP中にアドレスフィールドと制御フィールドの圧縮に両方のピアが同意した場合、これらのフィールドは省略されます。同様に、プロトコルフィールドの圧縮に両方のピアが同意した場合、0x00バイトは省略できます。
プロトコル フィールドは、ペイロード パケットのタイプを示します。LCP の場合は 0xC021 、各種NCPの場合は 0x80xy 、IP の場合は 0x0021、AppleTalk の場合は 0x0029、IPXの場合は0x002B、Multilink の場合は 0x003D、NetBIOSの場合は 0x003F 、MPPCおよびMPPEの場合は 0x00FDなどです。 [ 9 ] PPP は制限があり、 Ether Typeとは異なり、一般的なレイヤ 3データを含めることはできません。
情報フィールドにはPPPペイロードが含まれます。その長さは可変で、最大伝送単位と呼ばれるネゴシエートされた最大値があります。デフォルトでは、最大値は1500オクテットです。送信時にパディングされる可能性があり、特定のプロトコルの情報にパディングが可能な場合、そのプロトコルは情報とパディングを区別できるようにする必要があります。
PPPフレームは、フレーミングを提供する下位層プロトコルにカプセル化され、伝送エラーを検出するためのチェックサムなどの他の機能も提供する場合があります。シリアルリンク上のPPPは通常、IETF RFC 1662で規定されているHDLCと同様のフレーミングでカプセル化されます。
PPPとHDLCのようなフレーミングが使用される場合、フラグフィールドが存在します。
アドレスフィールドと制御フィールドの値は常に16進数のFF(「すべてのステーション」の場合)と03(「番号なしの情報」の場合)であり、PPP LCPアドレスおよび制御フィールド圧縮(ACFC)がネゴシエートされる場合は省略できます。
フレームチェックシーケンス(FCS)フィールドは、個々のフレームにエラーがあるかどうかを判断するために使用されます。このフィールドには、フレーム全体に対して計算されたチェックサムが含まれており、伝送エラーに対する基本的な保護を提供します。これは、イーサネットなどで使用される他のレイヤ2プロトコルのエラー保護方式で使用されるものと同様のCRCコードです。RFC 1662によると、サイズは16ビット(2バイト)または32ビット(4バイト)のいずれかになります(デフォルトは16ビット - 多項式x 16 + x 12 + x 5 + 1)。
FCSは、メッセージがカプセル化された後、アドレス、制御、プロトコル、情報、およびパディングの各フィールドに基づいて計算されます。
マルチリンクPPP ( MLPPP、MP、MPPP、MLP 、またはマルチリンクとも呼ばれる)は、複数の独立したPPP接続にトラフィックを分散させる方法を提供する。これはRFC 1990で定義されている。例えば、2台の従来型56kモデムを使用して家庭用コンピュータをインターネットサービスプロバイダに接続したり、2本の専用線を介して企業を接続したりするのに使用できる。
単一のPPP回線ではフレームが順不同で到着することは許されませんが、フレームが複数のPPP接続に分割されている場合は、順不同で到着する可能性があります。そのため、マルチリンクPPPでは、フレームが到着した際に正しい順序に並べ替えられるように、フラグメントに番号を付ける必要があります。
マルチリンクPPPは、リンクアグリゲーション技術の一例です。Cisco IOSリリース11.1以降は、マルチリンクPPPをサポートしています。
PPPでは、単一のリンク上で複数の異なるPPP接続を同時に確立することはできません。
マルチリンクPPPでもそれは不可能です。マルチリンクPPPはパケットのすべてのフラグメントに連続した番号を使用するため、あるパケットのフラグメントのシーケンスの送信を中断して別のパケットを送信することはできません。このため、同じリンク上でマルチリンクPPPを複数回実行することはできません。
マルチクラスPPPは、マルチリンクPPPの一種で、トラフィックの各「クラス」がそれぞれ独立したシーケンス番号空間と再構成バッファを使用する方式です。マルチクラスPPPはRFC 2686で定義されています。
PPTP (Point-to-Point Tunneling Protocol)は、暗号化(MPPE)と圧縮(MPPC)を使用してGREを介して2つのホスト間で行われるPPPの一種です。
IPネットワーク上でデータをトンネル化するために使用できるプロトコルは数多くあります。SSL 、SSH、L2TPなどのプロトコルは、仮想ネットワークインターフェースを作成し、トンネルのエンドポイント間で直接物理的に接続されているかのような印象を与えます。例えば、 Linuxホストでは、これらのインターフェースはtun0またはppp0と呼ばれます。
トンネルにはエンドポイントが2つしかないため、トンネルはポイントツーポイント接続となり、仮想ネットワークインターフェース間のデータリンク層プロトコルとしてPPPが自然な選択肢となります。PPPはこれらの仮想インターフェースにIPアドレスを割り当てることができ、これらのIPアドレスは、例えばトンネルの両側のネットワーク間のルーティングに使用できます。
歴史的に、トンネルモードのIPsecでは、トンネルが TCP/IP スタックによって直接処理されるため、トンネルの終端に仮想物理インターフェイスは作成されません。L2TP を使用してこれらのインターフェイスを提供できます。この技術は L2TP/IPsec と呼ばれます。この場合も、PPP はトンネルの両端に IP アドレスを提供します。最新の IPsec 実装では、仮想トンネルインターフェイスまたはvtiインターフェイスを提供できます。vti インターフェイスは、2000 年代半ばから独自のプラットフォームで利用可能になり[ 10 ]、Linux では 2012 年以降利用可能になりました。 [ 11 ]
PPPはRFC 1661(ポイントツーポイントプロトコル、1994年7月)で定義されています。RFC 1547(インターネット標準ポイントツーポイントプロトコルの要件、1993年12月)は、PPPの必要性とその開発に関する歴史的情報を提供しています。TCP /IP、DECnet、AppleTalk、IPXなどのさまざまなネットワーク制御プロトコルがPPPとどのように連携するかを定義するために、一連の関連RFCが作成されており、それらはDatatracker IETF Webサイトで見つけることができます。[ 12 ]