PPPoE

PPPoE(Point-to-Point Protocol over Ethernet)は、イーサネットフレーム上にPPPフレームをカプセル化するプロトコルです。RFC 2516で定義されており、主にDSL、CATV、FTTHなどのインターネット接続サービスで、ブリッジ接続のために利用されています。

イーサネットでは、PPPoEを使用せずともIPパケットを直接扱うことができますが、PPPoEが使われるのは、PPPが持つユーザー認証機能を利用するためです。その代わり、MTUの減少など、いくつかのオーバーヘッドが発生します。

2000年頃から、ISPのIPネットワークへのDSL接続を介してパケットをトンネリングする技術として使われ始めました。2005年のネットワーク技術書では、「ほとんどのDSLプロバイダは、認証、暗号化、圧縮のためにPPPoEを使用する」と記述されています。一般的な利用では、PAPやCHAPを用いてユーザー名とパスワードで認証を行います。

PPPoEは、ブロードバンドルーターで実装されることもありますが、ルーティングを行わないDSLモデムを使用する際には、PC上で実装されることもあります。現在では、ほとんどのオペレーティングシステムでPPPoEがサポートされています。

PPPoEのステージ



PPPoEは、主に以下の2つのステージで構成されます。

1. ディスカバリステージ:
従来のPPPは、ダイヤルアップ接続やATMなど、接続が確立済みの環境で使用されていました。このような環境では、送信されたPPPフレームはすべて対向側に到達します。

しかし、イーサネットはマルチアクセスネットワークであり、各ノードが他のノードにアクセスできます。イーサネットフレームには、宛先ノードのMACアドレスが含まれている必要があります。そのため、PPPoEで接続を確立する前に、接続先のMACアドレスを互いに知っておく必要があります。ディスカバリステージでは、このMACアドレスの伝達と、セッションIDの確立を行います。

2. PPPセッションステージ:
ディスカバリステージでPPPoEセッションが確立されると、PPPセッションステージに移行し、実際のデータ通信が行われます。

PPPoEディスカバリ(PPPoED)



従来のPPPはピアツーピア接続でしたが、PPPoEは、1つの物理接続を通じて複数のホストがサービスプロバイダに接続できるため、クライアントサーバーモデルです。

PPPoEディスカバリは、クライアント(ホストコンピュータ)とサーバー(ISPのアクセスコンセントレータ)の間で以下の4つの段階を踏んで行われます。PADTは、既存のセッションを終了する際に使用されます。

1. クライアント → サーバー: Initiation (PADI)
PADI(PPPoE Active Discovery Initiation)は、ユーザーがインターネットに接続する際に、まずユーザーのコンピュータがISPのPOPにあるDSLアクセスコンセントレータ(DSL-AC)を見つけるために送信されます。イーサネット上ではMACアドレスを介して通信が行われるため、コンピュータがDSL-ACのMACアドレスを知らない場合、ブロードキャストでPADIパケットを送信します。このPADIパケットには、送信元のコンピュータのMACアドレスが含まれています。

PADIパケットの例:

Frame 1 (44 bytes on wire, 44 bytes captured)
Ethernet II, Src: 00:50:da:42:d7:df, Dst: ff:ff:ff:ff:ff:ff
PPP-over-Ethernet Discovery
Version: 1
Type 1
Code Active Discovery Initiation (PADI)
Session ID: 0000
Payload Length: 24
PPPoE Tags
Tag: Service-Name
Tag: Host-Uniq
Binary Data: (16 bytes)


`Src`は送信元のMACアドレス、`Dst`はブロードキャストアドレスです。PADIパケットは複数のDSL-ACに到達しますが、「Service-Name」タグに記載されたDSL-ACのみが応答します。

2. サーバー → クライアント: Offer (PADO)
PADO(PPPoE Active Discovery Offer)は、PADIパケットを受信したDSL-ACが、PADIに記載されたMACアドレス宛に返信するパケットです。PADOパケットには、DSL-ACのMACアドレス、名前、サービス名が含まれています。

複数のPOPのDSL-ACがPADOを返信した場合、ユーザーのコンピュータは、名前とサービス名から適切なDSL-ACを選択します。

PADOパケットの例:

Frame 2 (60 bytes on wire, 60 bytes captured)
Ethernet II, Src: 00:0e:40:7b:f3:8a, Dst: 00:50:da:42:d7:df
PPP-over-Ethernet Discovery
Version: 1
Type 1
Code Active Discovery Offer (PADO)
Session ID: 0000
Payload Length: 36
PPPoE Tags
Tag: AC-Name
String Data: IpzbrOOl
Tag: Host-Uniq
Binary Data: (16 bytes)


`AC-Name`以下の`String data`はDSL-ACの名前です。`Src`はDSL-ACのMACアドレスです。

3. クライアント → サーバー: Request (PADR)
PADR(PPPoE Active Discovery Request)は、ユーザーのコンピュータが選択したDSL-ACに送信されるパケットです。PADRパケットによりPPPoEセッションの開始を要求します。

4. サーバー → クライアント: Session Confirmation (PADS)
PADS(PPPoE Active Discovery Session-confirmation)は、DSL-ACがクライアントに送信するパケットで、PPPoEセッションIDを通知します。この時点で、DSL-ACとユーザーのコンピュータの間でPPPoEセッションが確立されます。

5. どちらか → もう一方: Termination (PADT)
PADT(PPPoE Active Discovery Termination)は、POPとの接続を切断する際に送信されるパケットで、ユーザーのコンピュータとDSL-ACのどちらからも送信される可能性があります。

脚注



関連項目


Point-to-Point Protocol (PPP)
Point-to-Point Tunneling Protocol
pppd

外部リンク


RFC 2516 - A Method for Transmitting PPP Over Ethernet(PPPoE)
RFC 3817 - [[Layer 2 Tunneling Protocol] Active Discovery Relay for PPP over Ethernet(PPPoE)](https://datatracker.ietf.org/doc/html/rfc3817)
RFC 4638 - Accommodating a Maximum Transit Unit/Maximum Receive Unit(MTU/MRU) Greater Than 1492 in the Point-to-Point Protocol over Ethernet(PPPoE)
RFC 4938 - PPP Over Ethernet(PPPoE) Extensions for Credit Flow and Link Metrics
US Patent 6891825 Method and system of providing multi-user access to a packet switched network

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。