NetBSD Advent Calendar 2023 7日目の記事です。今日はNetBSD-currentで追加されているlagg(4)の機能を試してみようと思います。
リンクアグリゲーション(Link Aggregation)
NetBSD-currentに追加されているlagg(4)デバイスは、複数のNIC(Network Interface Card)を束ねてひとつの論理的なネットワークインタフェースとして扱うことができる、リンクアグリゲーションの機能を提供するものです。ネットワークスイッチ等では標準で搭載されているような機能ですが、いよいよNetBSDでもこの機能が利用可能になるようです。
さっそく試してみる
lagg(4)のマニュアルをみると、基本的な設定手順が記載されているので、これを参考にリンクアグリゲーションの機能を試してみましょう。検証用に以下のような構成のNetBSD環境を用意します。
今回は対抗のNetBSD間 lagg0
というlagg(4)デバイスを作成し、そこに wm1
wm2
wm3
という物理NICを紐づけます。 172.16.151.9/32
のネットワークがリンクアグリゲーションされたものになります。
+----------------+
| +(wm1)---------------+ +---------------(wm1)+----------------+
| |10.0.1.11 | | 10.0.1.21| |
| | | | | |
| NetBSD-current +(wm2)------------(lagg0)---------(lagg0)------------(wm2)| NetBSD-current |
| (lag01) |10.0.1.12 172.16.151.1 172.16.151.2 10.0.1.22| (lag02) |
| | | | | |
| +(wm3)---------------+ +---------------(wm3)| |
| |10.0.1.13 10.0.1.23| |
+----------------+ +----------------+
lagg(4)の設定手順
それぞれのNetBSDでは wm1
wm2
wm3
に以下のIPアドレス設定を行っておきます。
# # lagg01側
# cat /etc/ifconfig.wm[123]
up
10.0.1.11 netmask 0xffffff00 media autoselect
up
10.0.1.12 netmask 0xffffff00 media autoselect
up
10.0.1.13 netmask 0xffffff00 media autoselect
# # lag02側
# cat /etc/ifconfig.wm[123]
up
10.0.1.21 netmask 0xffffff00 media autoselect
up
10.0.1.22 netmask 0xffffff00 media autoselect
up
10.0.1.2 netmask 0xffffff00 media autoselect
それぞれのNetBSDマシンに以下の設定を投入します。
( /etc/rc.local
に設定を入れておくのが良さそうです)
# # lagg01,lagg02共通の設定
# ifconfig lagg0 create
# ifconfig lagg0 laggproto loadbalance
# ifconfig lagg0 laggport wm1 pri 100
# ifconfig lagg0 laggport wm2 pri 100
# ifconfig lagg0 laggport wm3 pri 100
# # lagg01側での設定
# ifconfig lagg0 inet 172.16.151.1 netmask 255.255.255.0 up
# # lagg02側での設定
# ifconfig lagg0 inet 172.16.151.2 netmask 255.255.255.0 up
これでリンクアグリゲーションの設定は完了です。
疎通確認してみる
双方のマシンにpingを飛ばしてみると無事に応答が返ってくるので、リンクアグリゲーションしてあるネットワーク上での疎通が行えているようです。
# # lagg01側
# ping -c 2 172.16.151.2
PING 172.16.151.2 (172.16.151.2): 56 data bytes
64 bytes from 172.16.151.2: icmp_seq=0 ttl=255 time=0.443074 ms
64 bytes from 172.16.151.2: icmp_seq=1 ttl=255 time=0.663492 ms
----172.16.151.2 PING Statistics----
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.443074/0.553283/0.663492/0.155859 ms
# # lagg02側
# ping -c 2 172.16.151.1
PING 172.16.151.1 (172.16.151.1): 56 data bytes
64 bytes from 172.16.151.1: icmp_seq=0 ttl=255 time=0.580241 ms
64 bytes from 172.16.151.1: icmp_seq=1 ttl=255 time=0.999289 ms
----172.16.151.1 PING Statistics----
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.580241/0.789765/0.999289/0.296312 ms
冗長性を確認してみるも…
しかし、リンクアグリゲーションで束ねているネットワークの一つをdownさせると、とたんに疎通が途切れてしまいます…。ネットワークの一つが途切れても疎通は保たれるのがリンクアグリゲーションの利点の一つであるはずなので、もうちょっと調べてみようと思います。
(単に私の設定が間違っている可能性もありますが…)
まとめ
NetBSD-currentに搭載された、リンクアグリゲーションの機能を試してみました。まだちょっと思った通りの設定手順を把握できていませんが、NetBSDにも欲しかった機能の一つであるため、活用できるように設定ノウハウを集めたいと思います。