自宅ネットのIPoE導入の記録

Date: 2020/7/14

自宅のネットは10年ほど前にフレッツ光を引いて以来、放置状態だった。 しかし、ここにきて、コロナ渦による在宅勤務や自宅待機の影響でネットが混んできて、ほとんど通信速度が1Mbps程度まで落ちるとかいう話を聞いた。 「光回線なのにそんなことあるんかいな」と思っていろいろ調べ始めたら、 速度低下対策としては、「IPoE」がキモということがわかってきた。

自分の備忘録も兼ねて、IPoE導入についていろいろ書いてみた。

回線速度低下の原因はPPPoE

光回線自体の基本通信速度は約1Gbps。でもネットが混雑してくると、1Mbps程度まで低下するという。

これはNTTのフレッツ網とISPの間をつなぐ、NTEという装置に通信が集中し、そこがふんづまってるのが原因だそうだ。

NTEの集中

NTEというのはNetwork Termination Equipmentの略で、「ネットワーク終端装置」と呼ばれるもの。 NTTのフレッツ網とISP(Internet Service Provider: インターネットプロバイダー)をつなぐ装置。 ISPごとに用意されているんだけど、ある区域内でそのISPと契約してるユーザーの通信が全部集まってくるので、結構通信が集中する。 「あそこのプロバイダーの通信は速い、遅い」という評判は、このNTEの処理の余裕も一因かもしれない。

この「NTE」という用語はこの後、何度も出てくるので覚えておこう。

この自宅のBBルータとNTE間の通信プロトコルが「PPPoE」であり、このPPPoEの処理が比較的重いので、通信が集中するととたんに通信速度が遅くなると思えばいい。

BBルータの設定画面の中に、「PPPoE」という項目があり、プロバイダから届いた書類に「PPPの接続IDとパスワードを設定してください」みたいなことが書いてあったら、PPPoEで接続してると思う。 PPPoE設定

PPPoEの解説

これまでBBルータのWAN側はIP(Internet Protocol)でしゃべってると思ってたが、これは誤解だった。 BBルータはPPPoEでNTEとしゃべってて、NTEから先がIP通信の世界と理解したほうがよさそう。

もう少し正確に書くと、こんな感じの処理が行われている。

  • BBルータは送信したいIPパケットにPPPoEのヘッダをつけてPPPフレームという形でフレッツ網内の「OLT」という装置に届ける(OLTのMACアドレス指定でEthernetフレームで届ける)
  • OLTは受け取ったPPPフレームにL2TPヘッダをくっつけてL2TPフレームに変換し、さらにNTEのIPアドレスを指定して、IPフレームにしてNTEに送り出す
  • フレッツ網内のルータを経由してNTEに届いたら、PPPフレーム内のIPフレームを取り出して、インターネットに放出

PPPoE

インターネット側から自宅のBBルータへの通信は逆の処理を行う。

  • インターネットからのIPフレームの宛先IPアドレスはBBルータに割り当てられたIPアドレスが設定されてるので、それに対応したNTEにIPパケットが流れてくる (そのプロバイダーの全ユーザーの自宅宛てのIPパケットを全部引き受けるわけか)
  • NTEは届いたIPパケットにPPPヘッダ、L2TPヘッダをつける。L2TPヘッダにはユーザーのIPアドレスに紐づいたトンネルIDやセッションIDなどを組み込まないといけない
  • 宛先IPアドレスから通知すべきOLTのIPアドレスを算出し、宛先IPアドレスを目的のOLTにしたIPパケットに組み上げてフレッツ網に放出
  • フレッツ網のルータを経由してOLTに届いたら、PPPフレームを取り出し、L2TPヘッダに記載された情報を元にBBルータのMACアドレスを求めて、MACアドレス指定でBBルータにPPPフレームを届ける

この処理はBBルータで送受信するすべてのIPパケット毎に行われているのだから確かに重い処理だという感じがする。

この重い処理のPPPoEの替わりに導入するのが「IPoE」という接続方式だ。

IPoEを使用するには

IPoEを使用するには申し込みが必要。 NTTの場合、「フレッツ・V6オプション」というオプションサービスを申し込む。

ISP側もIPv6関係のオプションサービスの申し込みが必要。 ISPごとにIPoEを利用する時のサービス名は違ってて、Yahoo BBなら「IPv6接続サービス」、So-netなら「V6プラス」などの名前がついている。

これを申し込んで1〜2週間後に、IPoEが利用可能になり、PPPoE接続が無効化される。

IPoEの解説

こちらは解説の必要もないくらい単純。

使用するのはIPv6だけど、IPoEは単なるIPルーティング。 GWRはGateway Routerの略で、送信元のIPアドレスからどのVNEに転送すればいいか判断しているやや特殊なルータ。

PPPoE

VNEはフレッツ網をIPv6のインターネットに接続するためのネットワークで自前のネットワーク設備を持っている規模の大きい会社。

要はIPoEといっても単なるIP通信であり、PPPoEに比べれば軽い処理。GWRに処理が集中しそうだけどきっと負荷分散などの処理がやりやすく、通信量の増大に応じて対応しやすい。 ただし、IP通信といって扱うのはIPv6に限定される。そのままでは従来のIPv4が扱えないので、やや無茶な方法でIPv4を扱う。

IPoEでのIPv4の利用

IPoEはIPv6専用の接続方式で、IPv4パケットはそのままでは利用できない。というより、フレッツのNGN網がIPv6専用なのでIPv4パケットを通過できないのかも。

そこでIPv4のサーバと通信したいときは、IPv4パケットをIPv6パケットにくるんで、VNE内の専用サーバに送り、そこでIPv4パケットを取り出しIPv4のインターネットと通信させる仕組み。

PPPoE

この仕組みには「MAP-E」、「DS-Lite」、「4rd/SAM」という方式があるが、VNEごとにどの方式を使っているか決まっている。 一般ユーザーが契約しているISPごとにどこのVNEを使っているか決まるので、ISPがすでに決まっているなら、どの方式になるかも自動で決定してしまう。

私の場合、ISPにはSo-netを使っているので、VNEは「JPNE(日本ネットワークイネーブラー)」であり、IPv4の変換方式は「V6プラス」というサービス名だが、方式としては「MAP-E」となる。

自宅のBBルータ側でIPv4通信をIPv6にくるんで、専用サーバに通知する、という処理が必要。 V6プラスを申し込むと、自宅のNTTのHGWにV6プラス関係のプログラムが組み込まれて、その手の処理をやってくれるようになる。

HGWの特殊な設定画面にIPv6プラスのメニューが表示され、PPPoEの接続制御機能が無効化される。

PPPoE

IPv6プラスの制限事項

IPv6プラスを使うと、VNE内にIPv4アドレスのNAT変換をやってくれるNATサーバが用意されるように見える(V6プラス(MAp-E)では実際はNAT変換は自宅サーバ側でやってるらしいがVNE側でやってると思ったほうが理解しやすい)。 そこでプライベートIPアドレス⇔グローバルIPアドレスの変換をやってくれるように見える。 ただし、1つのNAT変換サーバのIPアドレスを複数ユーザーでシェアする仕組みになっている。

これは、インターネットのサーバにアクセスするだけのユーザーであればほぼ問題ない仕組みだが、自宅サーバを運用している人にとってはよろしくない。

V6プラスでは、ユーザーごとに利用可能なTCP/UDPのポート番号の範囲が限定されており、そのユーザーに割り当てられたポートしか自宅ネットに中継してもらえない。 要は80や443などの有名どころの待ち受けポートを自宅サーバに中継するといった使い方はできない。

結局サーバを公開するにはPPPoEを使う

IPv4で自宅サーバを公開するには、結局PPPoEでIPv4接続するしかないようだ。

ただ、どうせなら、外部方向にアクセスするときはIPoE方式の高速経路を使い、外部→自宅方向のアクセスはPPPoE方式の経路を使うというのがよさそう。

具体的には、メインのHGWにIPoE通信させて、その下流にあるWiFiルータにPPPoE接続させて、自宅サーバ公開は、このWiFiルータのPPPoE経由でアクセスさせるというもの。 PPPoE

この方法もいろいろ制限事項がある。

  • WiFiルータのLAN側サブネットはHGW直下のサブネットにIPv4ではアクセスできない
  • WiFi接続のノートPCやスマホ/タブレットはIPoE通信による高速通信の恩恵を得られない

WiFiルータのWAN側端子は物理線としてはHGWに接続されているのだが、WAN側はPPPoEで通信してるのでHGWのLAN側にはIPv4でのアクセスはできない。

自宅LAN通信をIPv6化で対応

先ほどの制限事項のうち、「WiFiルータのLAN側サブネットはHGW直下のサブネットにIPv4ではアクセスできない」という問題は、自宅LANをIPv6化すればうまくいきそう。

WiFiルータはIPv4通信ではちゃんとしたルータになってて、WAN側がHGW直下のサブネットになっていても、直接通信はできない。 しかし、IPv6パススルーを有効にしておけば、IPv6通信では単なるスイッチングハブにしか過ぎないので、WAN側のサブネットにもアクセスできる。

また、GoogleやAmazon、YouTube、DAZNなどのIPv6対応したインターネットサーバにアクセスする際も、IPv6が使用されるのでWiFi配下のPCやタブレットもHGW経由でIPv6通信となるのでIPoEの高速通信の恩恵が得られる。 しかし、IPv4にしか対応してないサーバにアクセスするときは、WiFiルータのPPPoEの従来の経路に流れてしまう。

PPPoE接続するWiFiルータのLAN側をHGWのLANに差し戻すという荒業で、HGWのLAN側とWiFiルータのLAN側を直結する方法を紹介しているサイトもあったが、私が使ってるWiFiルータではIPv6パケットは WAN側とLAN側が素通りになってしまうため、うまくいかなかった(IPv6パススルーを停止させてもIPv6パケットが漏れてくるのでループになってしまう)。また、この方法は何かの拍子にPPPoEが切れてしまうと、 WiFiルータのWAN側がIPv4のルータに切り替わるため、ループ状態になってしまうのでうまくいかない。

PPPoE

もう一つの方法

ちょっとお金がかかるが、結局以下の方法に落ち着いた。 PPPoE

  • メインのWiFiルータはHGWに普通に接続して、IPoEの高速通信用に使う(R1)
  • もう一台、安いWiFiルータを買ってきて、無線機能は停止さえて単なるルータにする。こいつはPPPoEの設定をして、WAN側にグローバルIPv4のアドレスを割り振る(R2)
  • 公開サーバはNICの2枚挿しにして、片方をメインのWiFiルータ(R1)、片方をPPPoE用ルータ(R2)のLAN側に接続
  • R2にポートフォワードの設定をして、特定のポートを公開サーバの2枚目のNICに割り振る

こうすれば、公開サーバもIPv6でアクセスする場合はR1の経路に流れるので、IPoEの高速通信の恩恵を受けられる。IPv4の通信はR2に流すようにすればIPv4でのサーバ公開が可能。 おまけにR1配下のタブレットやPCも公開サーバにアクセス可能になる。

ウチの場合、公開サーバはESXi上の仮想マシンなので、各サーバごとに2枚目のNICがいるわけじゃなく、ホストの物理サーバにNICを1枚追加するだけで事足りた。

公開サーバにPPPoEで外部接続させれば、R2は不要になるのだが、サーバを直接外部ネットにさらすのは危険な香りがするので、R2を用意する方法が無難であろう。

用語の解説

PPPoEやIPoEの説明をするとなると、あまり聞きなれない用語が山のように出てくる。整理を兼ねて用語集を作っておこう。

NGN(Next Generation Network)

NTT東西が構築したIPv6用ネットワークのこと。インターネットとは直接接続されてないから、超巨大なローカルネットワーク(閉域網)で、ISPやVNEが所有するネットワークを経由して外の「インターネット」に接続されている。

かなり乱暴なくくりだが、「xxx光」というインターネット接続サービスを使っていると、自宅のBBルータはNGNにつながっていることが多い。

NGNのざっくりとしたイメージ図。

IPv4/IPv6

32bitのアドレスを持ってる従来のインターネット通信用のプロトコルがIPv4。128bitのアドレスを持つ新しいインターネット通信用のプロトコルがIPv6。

IPv6についてもそのうち書いてみたい。

ISP(Internet Service Provider)

OCNやYahooBB、ソネットなどのインターネット接続業者。

NTT東西はいろいろ規制があって、直接インターネット接続サービスを行えないので、一般ユーザーはISPと呼ばれる別の会社と契約してインターネット接続ができる。

VNE(Virtual Network Enabler)

NGNとインターネットをつなぐ業者。

ISPと何が違うのかわかりにくいのだが、こちらはPPPoEでつながるNTEを経由せずに、NGNとインターネットを相互接続するネットワークを運用する会社。 IPoEという方式で接続するときは、VNEを経由してインターネットと通信することになる。

ただVNEはNGNの技術的な制約から16社に限定されていて、それなりに大規模な会社しかなれないらしい。

また、一般ユーザーが直接VNEと契約することはなく、VNEのユーザーはISPということになるため、どのISPを選ぶかで、実際に利用するVNEが決まることになる。

ONU(Optical Network Unit)/HGW(Home Gateway)

自宅に引き込まれた光ケーブルをEthernetに変換する装置がONU。

ONU+BBルータ+ひかり電話などを一体化した装置がHGWと呼ばれる。HGWの裏面をみると、ONUと思われるユニットに曲げ半径ギリギリのEthernetケーブルが刺さっている部分があり、 ONUからのEthernetを分岐できるようになっている。

HGWの説明

ちなみに、一般家庭に引かれた光ケーブルは電柱の光スプリッタで32本に分岐されたうちの1本になっている。ご近所の光ケーブルと共有されており、 ONUから送信するときは光るタイミングをうまくずらしながら、おとなりと信号がぶつからないようにしている。

受信時は32分岐分の全信号がONUまで届くけど、ONUで自分のタイミングの信号だけを取り出してEthernetポートに流すという高度なことをやっている。詳しくはGE-PONで検索してみよう。

NTE(Network Terminal Equipment)

PPPoE方式で回線接続するときのONUの通信相手。ISPとの通信の窓口としての機能を持つ装置。

結構重い処理をやらないといけないうえに、非常に多くの通信が集中しがちないので、光回線なのに通信が遅い、と言われる原因になっている。

GWR(GateWay Router)

NGNをVNEに接続するためのルータ装置。PPPoEのNTEに対応する装置とイメージすればいいかも。

機能的には単なるIPルータのように見えるが、NGN→VNEの方向では、宛先アドレスじゃなく、送信元のIPv6アドレスに応じてVNEを選択する機能が必要。

PPPoEと違って、特にパケット変換のような重い処理は不要なので、通信が集中しても処理が遅くなりにくい。

PPPoE(Point to Point Protocol over Ethernet)

自宅のBBルータをNGNに接続する方式の一つ。IPv4用とIPv6用がある。

ONUとNGN内のOLT間の通信プロトコル。

接続IDとパスワードでユーザー認証し、IPパケットをOLT経由でNTEに届けることができるので、接続IDとパスワードを使えば、自宅以外からでも接続できる。

IPoE(IP over Ethernet)

自宅のBBルータをNGNに接続する方式の一つだが、IPv6専用。

といっても、単なるIPv6通信のルーティングと変わらない。PPPoEとは違って、接続IDとパスワードによる認証はなく、接続されているケーブルで契約ユーザーを区別しているだけ。

となりのおうちに割り当てられたIPv6アドレス(正確にはIPv6ネットワークID)で通信しようと思っても、NTTの局側で「このケーブルから流れてくる送信元アドレスはこれじゃない」とばれてしまうので注意。

処理が軽いので、利用者数が増えても通信速度が低下しにくい。

ただし、IPv4のパケットは中継してくれないので、

V6プラス

VNEの1つであるJPNE社(日本ネットワークイネーブラー)が提供するサービスの名前。

IPv4パケット(プライベート)をIPv6でくるんでJNETの専用サーバに送り、そこで送信元IPv4アドレスをグローバルIPv4に変換してIPv4通信を中継してくれる。 インターネット側からの応答はIPv6パケットにくるんで自宅の送信元に送り返してくれる。

ただし、JPNE内のNAT変換してくれるサーバは複数ユーザーが収容されて、1つのグローバルIPアドレスを複数ユーザーでシェアするイメージ。 待ち受けポートも80や443などのWell-Knownポートを除いた待ち受けポートしか使えないため、自宅サーバの運用はむつかしい。


戻る