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を使用する」と書かれている。一般的なPPPoEの利用では、ユーザー名とパスワードでユーザーを認証するためにPAPやCHAPが使用される。 カスタマ構内設備においては、PPPoEは、ブロードバンドルーターで実装される場合と、ルーティングを行わないDSLモデムを使用する場合には、PC上で実装される場合とがある。全てのオペレーティングシステムがPPPoEをサポートしている。 PPPoEは、以下の2つのステージを持つ。 伝統的なPPPは、すでに確立されたダイヤルアップ接続やATMの上での接続であり、このような接続では、送信したPPPフレームはすべて対向側に到達する。 しかし、イーサネットのネットワークは、ネットワークの各々のノードがその他のノードにアクセスすることができるマルチ・アクセスである。イーサネット・フレームは、転送先のノードのハードウェア・アドレス（MACアドレス）を含み、これによってフレームが意図された宛先に到達する。 そのため、イーサネットを介した接続を樹立するためのPPP制御パケットを送信する前に、相手のMACアドレスを互いに知っていなければならない。ディスカバリステージで、MACアドレスの伝達を行う。また、以降のパケットの交換のために使うSession IDの確立も行う。 ディスカバリステージによりPPPoEのセッションが確立すると、PPPセッションステージへ進む。 伝統的なPPPはピア・ツー・ピアである。それに対しPPPoEは、1つの物理的接続を介して複数のホストがサービスプロバイダに接続できることから、本質的にクライアントサーバモデルである。 PPPoEディスカバリは、クライアントの働きをするホストコンピュータとサーバの働きをするISPのアクセス・コンセントレータの間で、以下の4つの段階を踏む。最後のPADTは、既存のセッションを閉じるために使用される。 PADIは「PPPoE Active Discovery Initiation」の略である。 ユーザがDSLを用いてインターネットにダイヤルアップ接続するとき、まずユーザのコンピュータはインターネットサービスプロバイダのpoint of presence（英語版）(POP)のDSLアクセス・コンセントレータ(DSL-AC)を見つけなければならない。イーサネット上の通信は、MACアドレスを介してのみ行われる。そのため、コンピュータがDSL-ACのMACアドレスを知らない場合は、ブロードキャストによってPADIパケットを送信する。PADIパケットには、送信元のコンピュータのMACアドレスが含まれている。 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のみが応答を行う。 PADOは「PPPoE Active Discovery Offer」の略である。 ユーザのコンピュータがPADIパケットを送信すると、DSL-ACはPADIに記載されたMACアドレスを用いてPADOパケットを返信する。 PADOパケットにはDSL-ACのMACアドレス・名前・サービス名が含まれている。複数のPOPのDSL-ACがPADOを返信してきた場合、ユーザのコンピュータは名前とサービス名から適切なDSL-ACを選択する。 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アドレスである。 PADRは「PPPoE active discovery request」の略である。 PADRパケットは、ユーザのコンピュータから選択されたDSL-ACへ送信される。PADRパケットによりPPPoEセッションの開始を要求する。 PADSは"PPPoE Active Discovery Session-confirmation"の略である。 PADSパケットにより、PPPoEのセッションIDをクライアントに通知する。ここで、DSL-ACとユーザのコンピュータの間のPPPoEセッションが確立される。 PADTは「PPPoE Active Discovery Termination」の略である。 このパケットは、POPとの接続を切断するときに送信される。ユーザのコンピュータとDSL-ACのどちら側からも送信される可能性がある。 ^ James Boney (2005). Cisco IOS in a Nutshell. O'Reilly Media, Inc.. pp. 88. ISBN 978-0-596-55311-1. https://books.google.co.jp/books?id=zxq78zNHH7YC&pg=PA88&redir_esc=y&hl=ja  ^ Philip Golden; Hervé Dedieu; Krista S. Jacobsen (2007). Implementation and Applications of DSL Technology. Taylor & Francis. p. 479. ISBN 978-1-4200-1307-8. https://books.google.co.jp/books?id=Jjkd74jY47oC&pg=PA479&redir_esc=y&hl=ja  ^ https://datatracker.ietf.org/doc/html/rfc2516#section-5.1 ^ https://datatracker.ietf.org/doc/html/rfc2516#section-5.2 ^ https://datatracker.ietf.org/doc/html/rfc2516#section-5.3 ^ https://datatracker.ietf.org/doc/html/rfc2516#section-5.4 ^ https://datatracker.ietf.org/doc/html/rfc2516#section-5.5 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(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