pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


IPv4 DS-Lite の速度が出ない時は、そもそもルーターの性能の頭打ちの可能性を疑ってみる

フレッツ光回線でインターネット接続する場合に IPv6 IPoE + IPv4 + DS-Lite 対応プロバイダを利用し、ルータも DS-Lite 接続を有効にすると PPPoE に比べて帯域速度が改善します。このときにスループットに対する影響を与える要素は以下のように多岐に渡ります。

  1. PC 自体の性能
  2. PC の LAN アダプタ:GbE 対応かどうか、USB3 かどうか、ドライバの性能は問題ないか
  3. LAN ケーブル:ルーターと PC 間
  4. ルーター
  5. LAN ケーブル:フレッツ光ホームゲートウェイ or ONU とルータ間
  6. ONU
  7. フレッツ光回線の種別
  8. 接続先サイトへのネットワーク経路

しかしながら、ブラウザなどで計測できる速度計測サイトでは、1. - 7. の部分を含めて速度計測してしまうため、どこにボトルネックがあるかを知ることができません。

計測方法

2台の PC にiperf3という計測ツールをインストールして使用します。ルーターの WAN 側(フレッツ光ホームゲートウェイ側)に設置した PC でサーバーを実行し、ルーターの LAN 側に設置した PC でクライアント側を実行すれば、ルーターを超える通信のスループットを計測できます。

(サーバー側)
iperf3 -S

(クライアント側)
iperf3 -c サーバ側IPアドレス

また、ルーターを超えてインターネット側と通信する場合のスループットは Speedtest CLI を使用して計測します。 https://www.speedtest.net/ja/apps/cli

同一セグメントのノード間で計測

ルーター超えの計測を行う前に、同一セグメントのノードどうしで iperf3 による計測を実施します。この計測で十分な速度が出ていない場合は、そもそも PC の性能が頭打ちの可能性があります。

以下はルーターの LAN 側に有線LANケーブル (CAT-6) で接続した PC どうしの計測結果です。これくらいの速度が出ていれば特に不満はないと思います。

Connecting to host 192.168.1.6, port 5201
[  5] local 192.168.1.4 port 55011 connected to 192.168.1.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   104 MBytes   870 Mbits/sec                  
[  5]   1.00-2.00   sec   109 MBytes   916 Mbits/sec                  
[  5]   2.00-3.00   sec   109 MBytes   918 Mbits/sec                  
[  5]   3.00-4.00   sec   112 MBytes   937 Mbits/sec                  
[  5]   4.00-5.00   sec   112 MBytes   939 Mbits/sec                  
[  5]   5.00-6.00   sec   107 MBytes   902 Mbits/sec                  
[  5]   6.00-7.00   sec   111 MBytes   934 Mbits/sec                  
[  5]   7.00-8.00   sec   109 MBytes   915 Mbits/sec                  
[  5]   8.00-9.00   sec  97.9 MBytes   821 Mbits/sec                  
[  5]   9.00-10.00  sec   112 MBytes   939 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.06 GBytes   909 Mbits/sec                  sender
[  5]   0.00-10.00  sec  1.06 GBytes   909 Mbits/sec                  receiver

有線LAN経由での同一セグメント接続で十分な速度が出ない場合は、PCのNICGbE に対応していることや、NIC の実際のリンク速度が GbE であることを確認します。古いLANケーブルを使っている場合はケーブルの問題で速度が出ないこともありえます。NIC のスペックが GbE なのにスピードが出ない場合は CAT6 の新品のケーブルを買ってきて試してみるのも悪くないアイデアです。

なお、有線LAN ではなく Wi-Fi で計測すると、もっと悪い数値が出る場合が多いはずです。今回の計測はルーターを超える通信のスループットを計測し、DS-Lite の速度と比べることを目的としていますが、この手の計測には Wi-Fi は不向きです。必ず有線 LAN で計測しましょう。

PC をフレッツ光ホームゲートウェイに直結して DS-Lite 接続した場合の速度(または IPv6 IPoE の速度)

ルーター超えのスループットを測る前に、DS-Lite 自体の速度の期待値を確認しておきます。Windows だと DS-Lite を扱えないのですが、macOS, Linux の場合は DS-Lite のトンネルを張ることができるため、これらの OS が利用できる場合は計測しておくと良いでしょう。

macOS Sierra 以前の macOS の場合は、下記のスクリプトDS-Lite 接続が行えます。

techlog.iij.ad.jp

macOS Sierra 以降は IPv6 のアドレス取得方法が変わっているため、上記スクリプトのままでは動作しません。下記記事では修正方法例が示されていますが、私の環境では macOS Big Sur では動作しませんでした。 blog.goo.ne.jp

私の場合は macOS Sierra 以降にアップデートできていない、古い MacBook (macOS El Capitan) 500 Mbps 台の速度が計測できました。

   Speedtest by Ookla

     Server: Rakuten Mobile, Inc - Tokyo (id = 24333)
        ISP: Internet Multifeed Co.
    Latency:     8.71 ms   (0.27 ms jitter)
   Download:   548.26 Mbps (data used: 387.0 MB)                               
     Upload:    91.12 Mbps (data used: 109.8 MB)                               
Packet Loss:     0.0%

もし PC からの DS-Lite 接続が行えない場合は、代わりに https://fast.com/ja/ にブラウザでアクセスしてみてください。これは Netflix の速度計測サイトですが、IPv6 でネットワークからの速度計測にも対応しているようでした。厳密に言えば DS-Liteスループットとは違う計測ですけど、ルーターを介さない場合の参考値として使えます。

これについても前述の古い MacBook で計測したところ、400 〜 500Mbits/sec の間の数値が計測されました。

したがって、ルーター超えの場合に、この速度にどこまで近づくか、ということが目標になります。PC どうしの直結で計測したスループット問題がある場合にはそもそも論外ですので、適切なスループットが出るように整えてから検査しましょう。

また、PC どうしでルータを超えない通信のスループットに問題がないにもかかわらずインターネット側とルーターを介さない通信が遅い場合は、フレッツ光側に起因する問題で速度が出ていない可能性があります。この場合ではルーター超えかつインターネット側に出る前のスループットに問題がなくても、ONU から先の部分で遅くなる原因があるため、十分な性能が出ないものと考えられます。

ルーター超えのスループット(WZR-HP-AG300H)

WZR-HP-AG300H は OpenWrt で無難に扱える機種として好まれていますが、OpenWrt 19.07.7 で無線を無効化し、DS-Lite でインターネット接続が行える設定にした上で、ルーター超えのスループットを計測しました。

有線LANの仕様は GbE に対応していることになっていますが、実際にスループットを計測すると、ごらんのとおり 100Mbits/sec 程度のスループットしか出ません。

Connecting to host 192.168.1.6, port 5201
[  5] local 192.168.3.160 port 56817 connected to 192.168.1.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  11.5 MBytes  96.1 Mbits/sec                  
[  5]   1.00-2.00   sec  11.3 MBytes  94.8 Mbits/sec                  
[  5]   2.00-3.00   sec  11.3 MBytes  94.8 Mbits/sec                  
[  5]   3.00-4.00   sec  11.1 MBytes  93.3 Mbits/sec                  
[  5]   4.00-5.00   sec  11.3 MBytes  94.6 Mbits/sec                  
[  5]   5.00-6.00   sec  11.3 MBytes  94.5 Mbits/sec                  
[  5]   6.00-7.00   sec  11.4 MBytes  95.4 Mbits/sec                  
[  5]   7.00-8.00   sec  11.3 MBytes  94.8 Mbits/sec                  
[  5]   8.00-9.00   sec  11.3 MBytes  95.2 Mbits/sec                  
[  5]   9.00-10.00  sec  11.3 MBytes  94.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   113 MBytes  94.8 Mbits/sec                  sender
[  5]   0.00-10.00  sec   113 MBytes  94.7 Mbits/sec                  receiver

Speedtest CLI で計測してみても、ごらんの通りの結果です。PPPoE に比べれば十分に速いとは思いますが、DS-Lite の期待値には程遠い結果です。

   Speedtest by Ookla

     Server: Rakuten Mobile, Inc - Tokyo (id = 24333)
        ISP: Internet Multifeed Co.
    Latency:    10.61 ms   (0.28 ms jitter)
   Download:    89.85 Mbps (data used: 89.2 MB)                               
     Upload:    90.58 Mbps (data used: 93.3 MB)                               
Packet Loss:     0.0%

確かに無難に扱える機種ではあるのですが、DS-Lite 接続では回線のパフォーマンスを全く発揮できないスペックしか出ないので、これは予備機に格下げし、別の機器に入れ替えることを検討したほうが良い程度の性能です。

ルーター超えのスループット(I-O DATA WN-AC1600DGR2)

WZR-HP-AG300H は古すぎる機材ですから、別のハードウェアで試してみます。WZR-HP-AG300H と同様に Wi-Fi を使用しない設定での検証です。すると WZR-HP-AG300H の 3 倍程度のスループットになりました。

Connecting to host 192.168.1.6, port 5201
[  5] local 192.168.2.160 port 55576 connected to 192.168.1.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  40.1 MBytes   336 Mbits/sec                  
[  5]   1.00-2.00   sec  40.3 MBytes   338 Mbits/sec                  
[  5]   2.00-3.00   sec  40.2 MBytes   337 Mbits/sec                  
[  5]   3.00-4.00   sec  39.4 MBytes   331 Mbits/sec                  
[  5]   4.00-5.00   sec  39.9 MBytes   334 Mbits/sec                  
[  5]   5.00-6.00   sec  39.1 MBytes   328 Mbits/sec                  
[  5]   6.00-7.00   sec  39.2 MBytes   329 Mbits/sec                  
[  5]   7.00-8.00   sec  39.1 MBytes   328 Mbits/sec                  
[  5]   8.00-9.00   sec  39.0 MBytes   327 Mbits/sec                  
[  5]   9.00-10.00  sec  39.0 MBytes   327 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   395 MBytes   332 Mbits/sec                  sender
[  5]   0.00-10.00  sec   395 MBytes   331 Mbits/sec                  receiver

Speedtest CLIDS-Liteスループットを計測してみると、WZR-HP-AG300H の 2 倍のスループットが出ています。DS-Lite の期待値の半分以下のスループットではありますが、これくらいの速度が出るなら許容範囲ではないかと思います。

   Speedtest by Ookla

     Server: Rakuten Mobile, Inc - Tokyo (id = 24333)
        ISP: Internet Multifeed Co.
    Latency:     9.60 ms   (0.59 ms jitter)
   Download:   223.96 Mbps (data used: 246.6 MB)                               
     Upload:    92.83 Mbps (data used: 120.1 MB)                               
Packet Loss:     0.0%

ルーター超えのスループット(Raspberry Pi4 + USB3-NIC

もうちょっと新しいハードウェアでも検証してみましょう。Raspberry Pi 4 が手元にあるので、これに OpenWrt 21.02-rc1 をインストールして検証します。

Raspberry Pi4 はオンボードNIC が一つしかないので、手元にあった Anker の USB-LAN アダプタを組み合わせます。これは Realtek RTL8153 を搭載しているようでしたので、RTL8152 向けのドライバを OpenWrt に追加インストールして使用します…

この構成でルーター超えの iperf3 の速度を計測すると PC どうしの直結に迫る速度でした。

Connecting to host 192.168.1.6, port 5201
[  5] local 192.168.4.188 port 52825 connected to 192.168.1.6 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  98.2 MBytes   824 Mbits/sec                  
[  5]   1.00-2.00   sec  99.9 MBytes   838 Mbits/sec                  
[  5]   2.00-3.00   sec   102 MBytes   853 Mbits/sec                  
[  5]   3.00-4.00   sec   100 MBytes   840 Mbits/sec                  
[  5]   4.00-5.00   sec  96.4 MBytes   809 Mbits/sec                  
[  5]   5.00-6.00   sec   101 MBytes   850 Mbits/sec                  
[  5]   6.00-7.00   sec   100 MBytes   840 Mbits/sec                  
[  5]   7.00-8.00   sec   104 MBytes   872 Mbits/sec                  
[  5]   8.00-9.00   sec   102 MBytes   856 Mbits/sec                  
[  5]   9.00-10.00  sec   103 MBytes   860 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1007 MBytes   844 Mbits/sec                  sender
[  5]   0.00-10.00  sec  1006 MBytes   844 Mbits/sec                  receiver

これくらいのスループットが出るようならいろいろと期待が高まります。Speedtest CLIDS-Lite の速度を計測してみると、なかなかよい数値が出ました。ここまでのパフォーマンスが出るようなら期待値として十分だと思います。

   Speedtest by Ookla

     Server: Rakuten Mobile, Inc - Tokyo (id = 24333)
        ISP: Internet Multifeed Co.
    Latency:     9.31 ms   (2.23 ms jitter)
   Download:   416.15 Mbps (data used: 395.7 MB)                               
     Upload:    85.40 Mbps (data used: 97.7 MB)                               
Packet Loss:     0.0%
 Result URL: https://www.speedtest.net/result/c/20c6db34-c2b1-4952-8475-c3281e577505

ただし Raspberry Pi4 はルーター用に用いるには少々お高いので、Nanopi R2S などを用いるのがよいかもしれません。

Internet Watch の記事例では Nanopi R2S で fast.com での速度計測を行った場合に約600Mbits/secのスループットが出ているようです。すべての環境でこの速度が出ることが期待できるわけではないでしょうけれど、十分な速度が出るものと思われます。 https://internet.watch.impress.co.jp/docs/column/shimizu/1311821.html