Ubuntu Weekly Recipe

第706回Ubuntuでも10ギガ(10Gbpsインターネットを体験してみる

筆者は引っ越しを機に、一般家庭用光回線として最速クラスであるフレッツ光クロス(理論値10Gbps)を選んでみました。今回は、この10Gbps回線をUbuntuでも体験してみます。しかし、レンタルルーターをそのまま使うごくごく一般の家庭らしい構成なので、Ubuntu特有ということは特になく基本的には挿せば使えてしまいます。

肝心な速度のほうは、筆者の自宅マシンとインターネット上の高速なサーバーの間ではTCP接続1つで約2.0Gbps、複数のTCP接続を合計すると7.5Gbpsと良好な値が出ています図1⁠。一般家庭でこんなに速い回線が必要かどうかはさておき[1]⁠、回線がボトルネックになることはなさそうです。

図1 複数のTCP接続の合計で実測値7.5Gbps
図1

セットアップ

現在「ドコモ光 10ギガ」に申し込む形で光クロスを利用しており、ルーターXG-100NEもドコモからレンタルしています。光コンセントから、映像用回線終端装置(ドコモ光テレビオプション⁠⁠、ONU(光回線終端装置⁠⁠、レンタルルーターという順で接続されています図2⁠。このルーターにはWi-Fi 6対応の無線LAN機能もついていますが、メッシュWi-Fiに関する設定項目がないため、あえて無線LAN機能をオフにして別のメッシュWi-Fi製品をブリッジモードで使用しています[2]⁠。

図2 左からレンタルルーター、ONU、映像用回線終端装置
図2

10Gbpsの力を最大限引き出すには無線LANで接続するのではなく、ルーター背面にある10GBASE-T対応の「LAN4ポート」と、同じく10GBase-T以上に対応したNICを有線で接続する必要があります。今回は比較的安価に販売されていたTP-Link TX401を用意しました(昨年9月に8,980円で購入⁠⁠。

このNICは特別なドライバを必要とせず、Ubuntu 20.04 LTSでNetworkManagerを使用している場合は本当にLANケーブルを挿すだけ、systemd-networkdを使用している場合は次のような最低限のnetplan設定を適用するだけで使えるようになります。

network:
  ethernets:
    enp35s0:  ## NICの認識名
      dhcp4: true
  version: 2

下記の出力からもわかるように、⁠AQC107⁠チップが搭載がされており、⁠atlantic⁠ドライバで動作します。同じような価格の10GbE NICではこのチップが使われていることが多いようです。ちなみにNTT東日本のページではレンタルルーターXG-100NEがNECプラットフォームズ社製というのは明記されていないかもしれませんが、Webの設定画面の見覚えのある感じやHTMLのコメント、MACアドレスなどからひしひしと感じます。

$ networkctl status -n0 enp35s0
● 3: enp35s0
             Link File: /run/systemd/network/10-netplan-enp35s0.link
          Network File: /run/systemd/network/10-netplan-enp35s0.network
                  Type: ether
                 State: routable (configured)
                  Path: pci-0000:23:00.0
                Driver: atlantic
                Vendor: Aquantia Corp.
                 Model: AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
            HW Address: c0:06:c3:XX:YY:ZZ
                   MTU: 1500 (min: 68, max: 16334)
  Queue Length (Tx/Rx): 8/8
      Auto negotiation: yes
                 Speed: 10Gbps
                Duplex: full
                  Port: tp
               Address: 192.168.1.12 (DHCP4)
                        2400:XXXX:XXXX:YYYY:YYYY:ZZZZ:ZZZZ:ZZZZ
                        fe80::c206:XXXX:YYYY:ZZZZ
               Gateway: 192.168.1.1 (NEC Platforms, Ltd.)
                        fe80::fab7:XXXX:YYYY:ZZZZ (NEC Platforms, Ltd.)
                   DNS: 192.168.1.1
     Activation Policy: up
   Required For Online: yes

レンタルルーターを間に挟むことで、DHCPv6-PD(Prefix Delegation)でルーターに配布されたグローバルIPv6アドレスブロック(/56)を意識することなく、ルーター配下にシンプルなSLAACが使えるグローバルレンジ(/64)がUbuntu側からは見えます。ローカルIPv4アドレス(192.168.1.0/24のレンジ)もルーター側で走っているDHCPv4サーバーから取得でき、IPv4 over IPv6(OCNバーチャルコネクト:MAP-E方式)トンネリングもUbuntu側からは何も意識するなく透過的に動作します。

ルーターに割り当てられているグローバルIPv4アドレスは専有ではなく複数の契約者で共有される形式のため、使用できるポートの数とレンジが決まっています。フレッツジョイントの仕組みを通じてルーターに配布される「IPoE IPv4設定」を次のURLで開くと具体的な1008個(16個*63ブロック)のポートが確認できます。

  • http://ntt.setup:8888/fj/com.ntt.mape/mape/index.html

このポート範囲の中であれば、IPv4でも「静的IPマスカレード設定」(DNAT)で外部にSSHなどのサービスを公開できます。IPv4アドレスを専有できる環境というのは今後手に入れづらくなってくると思うので、Tailscaleなどのサービスを使ってNAT越えをするのも手でしょう。

IPv4で使えるポート数が限定されていると、特にUDPなどでソースポートの枯渇が心配になるかもしれません。初期設定で、ある程度積極的にポートをリサイクルするようになっています図3⁠。

図3 UDPのタイムアウトは初期値180秒
図2

速度測定

では実際に速度を測定していきます。こういった用途で人気があるサービスの一つがspeedtest.netです。デスクトップ環境ではWebブラウザで、ブラウザがインストールされていない場合でもCLIクライアントで手軽に計測できます。

平日18時ごろに実行した実際の出力が以下です。上下ともに7Gbpsを超える値が出ています。ネットワーク的に近いサーバーが自動で選ばれますが、必ずしも速いテストサーバーとは限らないため、サーバーIDを指定していくつか試してみるといいかもしれません。

$ ./speedtest --selection-details

   Speedtest by Ookla

Selecting server:
      20976: 111.20 ms; GLBB Japan - Tokyo
      21569:   3.79 ms; i3D.net - Tokyo
      38241: 204.48 ms; BudgetVM - Tokyo
      28910: 215.42 ms; fdcservers.net - Tokyo
      24333:   5.71 ms; Rakuten Mobile, Inc - Tokyo
      48301:   4.18 ms; Cloudflare - Tokyo
      44988:   6.05 ms; Misaka Network, Inc. - Tokyo
      48463:   4.07 ms; IPA CyberLab 400G - Tokyo
      14623:   4.39 ms; IPA CyberLab - Bunkyo
       8407: 113.39 ms; Allied Telesis Capital Corporation - Sagamihara
     Server: i3D.net - Tokyo (id = 21569)
        ISP: NTT
    Latency:     3.68 ms   (0.21 ms jitter)
   Download:  7756.28 Mbps (data used: 5.8 GB )
     Upload:  7421.02 Mbps (data used: 3.8 GB )
Packet Loss:     0.0%
 Result URL: https://www.speedtest.net/result/c/2f782e25-d99b-4c11-9df0-d0fa8e5b7a59

もっと限界の速度が出ないかと、AWSの東京リージョン上で20Gbpsをサポートするインスタンスタイプの中から一番安価であった⁠c6g.12xlarge⁠を使いiPerfも流してみました。TCPの1接続で2.1Gbps。複数の接続を合計した場合は7.5Gbpsとなり、speedtest.netで計測した場合と大差ありませんでした。IPv4 over IPv6トンネリングがボトルネックになっている可能性も考え、IPv6だけのテストも実行しましたがこちらもIPv4と目立った違いは出ませんでした。

$ iperf3 -c 13.231.X.Y
Connecting to host 13.231.X.Y, port 5201
[  5] local 192.168.1.20 port 37292 connected to 13.231.X.Y port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   238 MBytes  2.00 Gbits/sec    0   1.51 MBytes
[  5]   1.00-2.00   sec   251 MBytes  2.11 Gbits/sec    0   1.51 MBytes
[  5]   2.00-3.00   sec   252 MBytes  2.12 Gbits/sec    0   1.51 MBytes
[  5]   3.00-4.00   sec   252 MBytes  2.12 Gbits/sec    0   1.51 MBytes
[  5]   4.00-5.00   sec   252 MBytes  2.12 Gbits/sec    0   1.51 MBytes
[  5]   5.00-6.00   sec   250 MBytes  2.10 Gbits/sec    0   1.51 MBytes
[  5]   6.00-7.00   sec   254 MBytes  2.13 Gbits/sec    0   1.51 MBytes
[  5]   7.00-8.00   sec   252 MBytes  2.12 Gbits/sec    0   1.51 MBytes
[  5]   8.00-9.00   sec   254 MBytes  2.13 Gbits/sec    0   1.51 MBytes
[  5]   9.00-10.00  sec   249 MBytes  2.09 Gbits/sec    0   1.51 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  2.45 GBytes  2.10 Gbits/sec    0             sender
[  5]   0.00-10.01  sec  2.44 GBytes  2.10 Gbits/sec                  receiver

iperf Done.
$ iperf -c 13.231.X.Y -P 6
------------------------------------------------------------
Client connecting to 13.231.X.Y, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  5] local 192.168.1.20 port 43258 connected with 13.231.X.Y port 5001
[  6] local 192.168.1.20 port 43262 connected with 13.231.X.Y port 5001
[  7] local 192.168.1.20 port 43264 connected with 13.231.X.Y port 5001
[  4] local 192.168.1.20 port 43260 connected with 13.231.X.Y port 5001
[  3] local 192.168.1.20 port 43256 connected with 13.231.X.Y port 5001
[  8] local 192.168.1.20 port 43266 connected with 13.231.X.Y port 5001
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec  1.22 GBytes  1.05 Gbits/sec
[  6]  0.0-10.0 sec  1.65 GBytes  1.42 Gbits/sec
[  7]  0.0-10.0 sec  1.61 GBytes  1.38 Gbits/sec
[  4]  0.0-10.0 sec  1.53 GBytes  1.31 Gbits/sec
[  3]  0.0-10.0 sec  1.37 GBytes  1.17 Gbits/sec
[  8]  0.0-10.0 sec  1.38 GBytes  1.18 Gbits/sec
[SUM]  0.0-10.0 sec  8.74 GBytes  7.51 Gbits/sec

何度か試すうちに気づいたこととして、夜間になると下りだけ5Gbps付近に収束するように見受けられますが、帯域制御の一環なのかそれとも他の要因によるものなのかわかりません。いずれにしろ5Gbpsは十分すぎると言っていい速度でしょう。

おすすめ記事

記事・ニュース一覧