筆者は引っ越しを機に、一般家庭用光回線として最速クラスであるフレッツ光クロス (理論値10Gbps)を選んでみました。今回は、この10Gbps回線をUbuntuでも体験してみます。しかし、レンタルルーターをそのまま使うごくごく一般の家庭らしい構成なので、Ubuntu特有ということは特になく基本的には挿せば使えてしまいます。
肝心な速度のほうは、筆者の自宅マシンとインターネット上の高速なサーバーの間ではTCP接続1つで約2.0Gbps、複数のTCP接続を合計すると7.5Gbpsと良好な値が出ています(図1 ) 。一般家庭でこんなに速い回線が必要かどうかはさておき[1] 、回線がボトルネックになることはなさそうです。
[1] 以前借りていたマンションの部屋では、壁にLANケーブルの差込口(RJ-45)があるLAN配線方式、かつインターネット無料(実際は管理費に組み込まれているだけ)という「お部屋探しでは避けるべき」とされているタイプでした。実際は数Gbpsの回線をマンション全体で共有し部屋からは1Gbpsでリンクアップ、実測でも上下600Mbpsほど安定して出ていた幸運な状態でした。IPv4のみかつNAT配下だったこと以外は不満はありませんでした。
図1 複数のTCP接続の合計で実測値7.5Gbps
セットアップ
現在「ドコモ光 10ギガ」に申し込む形で光クロスを利用しており、ルーター(XG-100NE )もドコモからレンタルしています。光コンセントから、映像用回線終端装置(ドコモ光テレビオプション) 、ONU(光回線終端装置) 、レンタルルーターという順で接続されています(図2 ) 。このルーターにはWi-Fi 6対応の無線LAN機能もついていますが、メッシュWi-Fiに関する設定項目がないため、あえて無線LAN機能をオフにして別のメッシュWi-Fi製品をブリッジモードで使用しています[2] 。
[2] 未解決の問題として、Androidスマートフォンの画面スリープからの復帰直後にICMP(IPv4)もTCP(IPv6)も問題なく疎通できるのにも関わらず、数分間だけTCP(IPv4)で再送が多発する場合があります。常に再現するわけではなく、しばらく待ったり、Android側でWi-Fiのオンオフ操作をすると即座に直ってしまうため、どこでパケットが落ちているのか(ルーターなのかメッシュWi-Fi内なのか)の調査が進まずにいます。
図2 左からレンタルルーター、ONU、映像用回線終端装置
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秒
速度測定
では実際に速度を測定していきます。こういった用途で人気があるサービスの一つが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は十分すぎると言っていい速度でしょう。