Ubuntu Weekly Recipe

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

この記事を読むのに必要な時間:およそ 4 分

筆者は引っ越しを機に,一般家庭用光回線として最速クラスであるフレッツ光クロス(理論値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

図1

セットアップ

現在「ドコモ光 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,映像用回線終端装置

図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

著者プロフィール

村田信人(むらたのぶと)

Ubuntu Japanese Teamメンバー。Ubuntuオフラインミーティングに参加するうちにUbuntu Japanese Teamの活動に興味を持ち,2009年8月に加入。