Ubuntuでブリッジを作成

投稿日:April 30, 2024
Hero Image

昔のブログの記事を発掘したので,再アップロード.

ブリッジとは

流れてきたデータの宛先MACアドレスを参照し,適切な機器へデータを転送する役割をもつもの.
詳しくはwikiへ.

「Ubuntuで」ブリッジ化するメリット

複数のNICを使用することでハブになる.
今回は家に転がっていた10GbE*2ポートのNICを2枚用意した.
このことによって,10GbEな(疑似)L2スイッチをタダで作れる!

構築手順

0. 環境を用意

今回使用した環境は以下.

  • OS:Ubuntu 20.04.5 LTS
  • NIC:X520-T2 Intel Ethernet Converged Network Adapter
    • 10GbE対応RJ45が2ポートあるNIC
    • 今回は2つ用意

1. bridge-utilsのインストール

ユーティリティをインストール.

$ sudo apt update && sudo apt install -y bridge-utils

2. NICの名前を確認

ブリッジ化したいネットワークアダプタの名前を確認し,名前を覚える(メモする).

$ ip addr show

3. configを編集

/etc/netplan/のconfigをテキストエディタにて編集. 今回は,ensp1s0f0,ensp1s0f1,ensp3s0f0,ensp3s0f1を使用. また,ネームサーバーは指定していない.

network:
  ethernets:
    eno1:
      # ブリッジ以外で使用しているアダプタ
    enp1s0f0:
      dhcp4: false
    enp1s0f1:
      dhcp4: false
    enp3s0f0:
      dhcp4: false
    enp3s0f1:
      dhcp4: false
  bridges:
    br0:
      interfaces: [enp1s0f0, enp1s0f1, enp3s0f0, enp3s0f1]
      addresses: [192.168.XXX.XXX/XX]  # ブリッジのIPアドレスを記載
      link-local: []
      nameservers:
        addresses: []  # ネームサーバーを指定するならここにアドレスを記載
      parameters:
        forward-delay: 0
        stp: no
      optional: true
  version: 2

4. 設定の適用

$ sudo netplan apply

速度を実測してみた

ブリッジを構築した際の速度を測ってみた.
参考までにどうぞ.

テスト環境詳細

  • ブリッジに使用したマシン
    • CPU:Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz
    • RAM:16GiB @ 1600 MHz
  • 速度計測に使用したマシンたち
    • OS:PROXMOX Virtual Environment 7.3-4
    • NIC:Intel Ethernet Converged Network Adapter X540-T2
    • 計測ソフトウェア:iperf3.9
    • CPUやRAMは記録していないが,10Gbpsを出す上で問題ない性能のものを使用した.

計測には,クライアント側に以下のコマンドを使用.IPアドレスは対向の計測マシンのもの.
帯域幅に10Gbit/sを指定している.

# iperf3 -c 192.168.XXX.XXX -b 10000M

サーバー側はデフォルトの設定で起動.

テスト結果

NICが十分なPCIeスロットのレーンに刺されていなかった説などあるが,テストしたのが随分前のため要検証.

ブリッジ内同一NICで通信した時

#  iperf3 -c 192.168.XXX.XXX -b 10000M
Connecting to host 192.168.XXX.XXX, port 5201
[  5] local 192.168.XXX.YYY port 51916 connected to 192.168.XXX.XXX port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.04 GBytes  8.91 Gbits/sec   13   2.82 MBytes
[  5]   1.00-2.00   sec  1.04 GBytes  8.93 Gbits/sec    0   2.82 MBytes
[  5]   2.00-3.00   sec  1.04 GBytes  8.91 Gbits/sec    0   2.82 MBytes
[  5]   3.00-4.00   sec  1.04 GBytes  8.91 Gbits/sec    4   2.82 MBytes
[  5]   4.00-5.00   sec  1.04 GBytes  8.91 Gbits/sec    0   2.82 MBytes
[  5]   5.00-6.00   sec  1.04 GBytes  8.92 Gbits/sec    0   2.82 MBytes
[  5]   6.00-7.00   sec  1.04 GBytes  8.91 Gbits/sec    0   2.82 MBytes
[  5]   7.00-8.00   sec  1.04 GBytes  8.89 Gbits/sec    0   2.82 MBytes
[  5]   8.00-9.00   sec  1.04 GBytes  8.90 Gbits/sec    0   2.82 MBytes
[  5]   9.00-10.00  sec  1.04 GBytes  8.93 Gbits/sec    0   2.82 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  10.4 GBytes  8.91 Gbits/sec   17             sender
[  5]   0.00-10.04  sec  10.4 GBytes  8.88 Gbits/sec                  receiver

iperf Done.

ブリッジ内異なるNICで通信した時

# iperf3 -c 192.168.XXX.XXX -b 100000M
Connecting to host 192.168.XXX.XXX, port 5201
[  5] local 192.168.XXX.ZZZ port 58254 connected to 192.168.XXX.XXX port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.09 GBytes  9.40 Gbits/sec   13   2.26 MBytes
[  5]   1.00-2.00   sec  1.10 GBytes  9.42 Gbits/sec    0   2.26 MBytes
[  5]   2.00-3.00   sec  1.10 GBytes  9.41 Gbits/sec    0   2.26 MBytes
[  5]   3.00-4.00   sec  1.10 GBytes  9.41 Gbits/sec    0   2.26 MBytes
[  5]   4.00-5.00   sec  1.10 GBytes  9.42 Gbits/sec    0   2.26 MBytes
[  5]   5.00-6.00   sec  1.10 GBytes  9.42 Gbits/sec    0   2.26 MBytes
[  5]   6.00-7.00   sec  1.10 GBytes  9.42 Gbits/sec    0   2.26 MBytes
[  5]   7.00-8.00   sec  1.10 GBytes  9.41 Gbits/sec    0   2.26 MBytes
[  5]   8.00-9.00   sec  1.10 GBytes  9.41 Gbits/sec    0   2.26 MBytes
[  5]   9.00-10.00  sec  1.10 GBytes  9.41 Gbits/sec    0   2.26 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  11.0 GBytes  9.41 Gbits/sec   13             sender
[  5]   0.00-10.04  sec  11.0 GBytes  9.37 Gbits/sec                  receiver

iperf Done.

後日談

このあと数日運用したわけだが,省スペースPCにX520のしかもT2を2枚も運用するのはかなり無理があることが分かった.
熱的な問題が厳しく安定した通信など夢であり,オーバーヒートでリンクダウンして冷めたあとにリンクアップからのリンクダウンというループであった.