Cisco Catalyst 2960L を使用したリンクアグリゲーションの設定
Posted on Mon 14 January 2019 in JP
ファイルサーバーとL2スィッチ間のリンクアグリゲーションを設定する
自宅用にCisco Catalyst 2960Lを手に入れました。 このL2スイッチではリンクアグリゲーションを設定することができるので、ファイルサーバーとスイッチ間でリンクアグリゲーションを設定します。
これにより、帯域を増やすことができ複数のクライアントが同時にアクセスしてもパフォーマンスの低下を防げることが期待できます。
リンクアグリゲーションとは
リンクアグリゲーション(IEEE 802.3ad)とは、複数の物理リンクをまとめて1本の論理リンクとして扱うことの技術です。 物理リンクの本数分の帯域を増やすことができる他、複数本の物理リンクが切断されてしまっても残りのリンクで通信を継続できるため、耐障害性も向上します。
CiscoではEtherCahnnelと呼ばれています。
構成
上記のようにファイルサーバーとスイッチ間を2本のLANケーブルで接続します。 ファイルサーバー側のLANポート2つと、スイッチ側のLANポート2つを、それぞれ接続します。
設定
ファイルサーバー側
Netplanを使用して設定を行います。 enp0s31f6とenp8s0の2つのポートをまとめたbond0というdeviceを作成します。 modeは、IEEE802.3ad準拠で通信できるよう"802.3ad"を設定しています。
$ sudo vi /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp0s31f6:
dhcp4: false
dhcp6: false
enp8s0:
dhcp4: false
dhcp6: false
bonds:
bond0:
dhcp4: false
dhcp6: false
interfaces:
- enp0s31f6
- enp8s0
addresses: [192.168.1.2/24]
gateway4: 192.168.1.1
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
参考URL: - Netplan configuration examples - Bonding - Netplan reference - Properties for device type bonds
設定ファイル編集後、変更を下記コマンドで適用します。
$ sudo netplan apply
L2スイッチ側
Catalyst 2960L 側の設定です。 グローバルコンフィグレーションモードへ移行し、Gi0/1とGi0/2のポートを指定しインターフェースコンフィグレーションモードに移行します。
switchportコマンドでレイヤー2のポートに設定し、channel-groupコマンドでリンクアグリゲーション(EtherChannel)を形成するように設定します。
Switch> enable
Switch# configure terminal
Switch(config)#interface range Gi0/1,Gi0/2
Switch(config-if-range)#switchport
Switch(config-if-range)#channel-group 1 mode active
パフォーマンス測定
リンクアグリゲーション設定前
クライアント1台で計測
% iperf3 -c 192.168.1.2 -p 18080
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 1.09 GBytes 939 Mbits/sec sender
[ 5] 0.00-10.00 sec 1.09 GBytes 938 Mbits/sec receiver
iperf Done.
まずは、リンクアグリゲーション設定前の帯域を計測してみます。 1GbpsのLANを構築しているので、大体そのぐらいの結果が出ていることをわかります。
クライアント2台で計測
# iperf3 -c 192.168.1.2 -p 18081
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 629 MBytes 528 Mbits/sec 2036 sender
[ 4] 0.00-10.00 sec 629 MBytes 527 Mbits/sec receiver
iperf Done.
% iperf3 -c 192.168.1.2 -p 18080
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 538 MBytes 451 Mbits/sec sender
[ 5] 0.00-10.00 sec 538 MBytes 451 Mbits/sec receiver
iperf Done.
今度は、クライアント2台から同時にパケットを送信して帯域を計測してみます。 1Gbpsある帯域をそれぞれのクライアントで分け合う結果となります。
リンクアグリゲーション設定後
クライアント2台で計測
# iperf3 -c 192.168.1.2 -p 18081
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec receiver
iperf Done.
% iperf3 -c 192.168.1.2 -p 18080
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec sender
[ 5] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec receiver
iperf Done.
リンクアグリゲーション設定後の計測結果です。 リンクアグリゲーションにより、帯域が2Gbpsに増加しているのが確認できました。
リンクアグリゲーションのロードバランシングは、デフォルトではMACアドレスによる制御となっていることが多いです。 Catalyst 2960L では、送信先、送信元のMACアドレスでバランシングされるよう設定されています。
このような設定の場合、クライアントとサーバーが1対1で通信していると、たとえ複数のTCPポートを使用していてもバランシングされず、思ったより帯域が出ないということもあるので気を付ける必要があります。 IPアドレスやポート番号に基づいたロードバランシングを設定することもできるので、ユースケースによって設定を考慮する必要があります。
Switch>show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
src-dst-mac
EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
IPv4: Source XOR Destination MAC address
IPv6: Source XOR Destination MAC address