PPPoE

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
PPPoEとTCP/IPのプロトコルスタック
アプリケーション層 FTP SMTP HTTP DNS
トランスポート層 TCP UDP
インターネット層 IPv4 IPv6
リンク層 PPP
PPPoE
イーサネット

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

イーサネットではPPPoEを使わなくても、IPパケットを直接扱うことができる。あえてPPPoEを使うのは、PPPが持つユーザ認証などの機能を使うためである。代償としてMTU減少をはじめとするオーバーヘッドが発生する。

2000年頃、ISPIPネットワークへのDSL接続を介してパケットをトンネリングするための技術として使われだした。2005年のネットワークの技術書には、「ほとんどのDSLプロバイダは、認証暗号化圧縮のためにPPPoEを使用する」と書かれている[1]一般的なPPPoEの利用では、ユーザー名とパスワードでユーザーを認証するためにPAPCHAPが使用される。[2]

カスタマ構内設備においては、PPPoEは、ブロードバンドルーターで実装される場合と、ルーティングを行わないDSLモデムを使用する場合には、PC上で実装される場合とがある。2016年現在では、ほとんどのOSがPPPoEをサポートしている。

PPPoEのステージ[編集]

PPPoEは、以下の2つのステージを持つ。

ディスカバリステージ[編集]

伝統的なPPPは、すでに確立されたダイヤルアップ接続やATMの上での接続であり、このような接続では、送信したPPPフレームはすべて対向側に到達する。

しかし、イーサネットのネットワークは、ネットワークの各々のノードがその他のノードにアクセスすることができるマルチ・アクセスである。イーサネット・フレームは、転送先のノードのハードウェア・アドレス(MACアドレス)を含み、これによってフレームが意図された宛先に到達する。

そのため、イーサネットを介した接続を樹立するためのPPP制御パケットを送信する前に、相手のMACアドレスを互いに知っていなければならない。ディスカバリステージで、MACアドレスの伝達を行う。また、以降のパケットの交換のために使うSession IDの確立も行う。

PPPセッションステージ[編集]

ディスカバリステージによりPPPoEのセッションが確立すると、PPPセッションステージへ進む。

PPPoEディスカバリ(PPPoED)[編集]

伝統的なPPPはピア・ツー・ピアである。それに対しPPPoEは、1つの物理的接続を介して複数のホストがサービスプロバイダに接続できることから、本質的にクライアントサーバモデルである。

PPPoEディスカバリは、クライアントの働きをするホストコンピュータとサーバの働きをするISPのアクセス・コンセントレータの間で、以下の4つの段階を踏む。最後のPADTは、既存のセッションを閉じるために使用される。

クライアント→サーバ: Initiation(PADI)[編集]

PADIは"PPPoE Active Discovery Initiation"の略である[3]

ユーザがDSLを用いてインターネットにダイヤルアップ接続するとき、まずユーザのコンピュータはインターネットサービスプロバイダpoint of presence英語版(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.(=source)は、PADIの送信元のMACアドレスである。
Dst.(=destination)はブロードキャストアドレスである。
PADIパケットは1つ以上のDSL-ACに到達する。"Service-Name"タグに記載されたDSL-ACのみが応答を行う。

サーバ→クライアント: Offer(PADO)[編集]

PADOは"PPPoE Active Discovery Offer"の略である[4]

ユーザのコンピュータがPADIパケットを送信すると、DSL-ACはPADIに記載されたMACアドレスを用いてPADOパケットを返信する。

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アドレスである。

クライアント→サーバ: request(PADR)[編集]

PADRは"PPPoE active discovery request"の略である[5]

PADRパケットは、ユーザのコンピュータから選択されたDSL-ACへ送信される。PADRパケットによりPPPoEセッションの開始を要求する。

サーバ→クライアント: session-confirmation(PADS)[編集]

PADSは"PPPoE Active Discovery Session-confirmation"の略である[6]

PADSパケットにより、PPPoEのセッションIDをクライアントに通知する。ここで、DSL-ACとユーザのコンピュータの間のPPPoEセッションが確立される。

どちらかからもう一方へ: termination(PADT)[編集]

PADTは"PPPoE Active Discovery Termination"の略である[7]

このパケットは、POPとの接続を切断するときに送信される。ユーザのコンピュータとDSL-ACのどちら側からも送信されうる。

脚注[編集]

関連項目[編集]

外部リンク[編集]

  • RFC 2516 - A Method for Transmitting PPP Over Ethernet(PPPoE)
  • RFC 3817 - Layer 2 Tunneling Protocol(L2TP) Active Discovery Relay for PPP over Ethernet(PPPoE)
  • 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