Cisco Catalyst 2960-LのVLAN間スループット

今日びどの家庭にもあるCiscoのスイッチ Catalyst 2960です。我が家の狭い家屋で使うにはやや筐体が大きいことから、正直使い方に困っているのですが、眠らせておくのももったいないので、手始めにスループットや消費電力を調べてみました。

スイッチなのでLayer2についてはWire speedが出るのは当然ですが、Catalyst 2960-Lは単なるLayer2スイッチではなく、static routingとRIP限定ですがLayer3の機能があります。VLAN間ルーティングを、ルーターを使わず本機一台で処理することが可能な点がすばらしい。

普通のCiscoの機器の場合、保守契約がないとfirmwareの入手も出来ないのですが、Catalyst 2960-Lの場合は保守契約がなくても最新firmwareがダウンロードできます。

普通に買うとそれなりにお値段がしちゃうのですが、ヤフオクでは8ポート(+SFPポートx2)モデルは1万円くらいで未使用品が売られていますので、個人でも比較的入手しやすいです。なんとNTT-Xでは2017年半ば頃、箱汚れ特価ということで16ポートモデルが9,980円で売られていました。その時ポチらなかったことをものすごく後悔してます。まあ、24ポートモデルのWS-C2960L-24TS-JPは12,980円でしっかりポチったんですけどね。24ポートモデルは残念ながら使用中(単なるLayer2・VLANなしという使い方(爆))なので、ヤフオクでゲットした8ポートモデルのWS-C2960L-8TS-LLで色々調べて行きたいと思います。

消費電力

C2960L-8TS-LLのfirmwareは15.2(6)Eで検証をしています。工場出荷状態での、1ポートもリンクアップしていない状態での消費電力は7.1Wとなります。1ポートずつリンクを増やしていくと以下のようになります。

消費電力
リンクなし 7.1W
1ポートリンク 7.5W
2ポートリンク 7.9W
3ポートリンク 8.2W
4ポートリンク 8.6W
5ポートリンク 8.9W
6ポートリンク 9.3W
7ポートリンク 9.6W
8ポートリンク 9.8W
9ポートリンク(SFP 1ポート) 10.8W
10ポートリンク(SFP 2ポート) 12.0W

なお、未使用ポートをshutdownしても消費電力削減効果はありませんでした。SFPポート用のトランシーバーは米Amazonで$20くらいで売られていた10Gtek SFP to RJ45 Copper Moduleを使って計測しています。それにしてもSFPポート利用時の消費電力増加は大きいですね。実際にトランシーバーを抜くとかなり熱を持っています。

VLAN間スループット(ACLなし)

計測環境

構成は上記のように、Catalyst 2960-Lをインターネットアクセスルーター直下に配置し、各PCはCatalyst 2960-LでVLANを組んで、その下に所属させることにします。VLAN間ルーティングはCatalyst 2960-Lに担わせることにし、上位ルーターに負荷をかけない構成とします。今回のテストでは上位ルーター役に、MikroTik社のソフトウェアアプライアンス CHR(Cloud Hosted Router)のv6.44.3を使いました。CHRのLAN側IPアドレスは10.0.0.1/24としています。

VLAN用のDHCPサーバーはCatalystに担わせることもできますが、あまり細かい設定が出来ないので、別途Deian9でisc-dhcp-serverを稼働させることにしました。本当であれば、CHRは別のサブネットのDHCPサーバーとして稼働させることが出来るはずなので、別途DHCPサーバーを用意する必要はないのですが、試してみたところ何故かうまくいかなかったので、仕方なくDebian9のサーバーを立てたというのが実情です(汗)。Catalyst 2960-L(DHCP Relay Agent)とEdgeRouter(DHCP Server)の組み合わせや、Buffalo BS-GS2008(DHCP Relay Agent)とMikroTik CHR(DHCP Server)の組み合わせはうまくいっていたのですが、CatalystとCHRの相性が悪いのか、私の設定ミスか?!?

Catalyst 2960-Lの設定

先ずCatalystとブロードバンドルーターとの接続性を確保します。初期状態ではすべてのポートがvlan1のアクセスポートとして構成されているので、簡単のためにvlan1にアドレスを付与して、上位ルーターと接続します。

interface Vlan1
 ip address 10.0.0.2 255.255.255.0
 no shutdown

ip default-gateway 10.0.0.1

これでCatalystからインターネットへ接続できるようになります(ping 8.8.8.8等で確認)。次にVLANを設定していきます。

interface Vlan21
 ip address 10.0.21.1 255.255.255.0
 ip helper-address 10.0.0.200
interface Vlan22
 ip address 10.0.22.1 255.255.255.0
 ip helper-address 10.0.0.200
interface Vlan23
 ip address 10.0.23.1 255.255.255.0
 ip helper-address 10.0.0.200
interface Vlan24
 ip address 10.0.24.1 255.255.255.0
 ip helper-address 10.0.0.200
interface Vlan25
 ip address 10.0.25.1 255.255.255.0
 ip helper-address 10.0.0.200
interface Vlan26
 ip address 10.0.26.1 255.255.255.0
 ip helper-address 10.0.0.200

interface GigabitEthernet0/1
 switchport access vlan 21
interface GigabitEthernet0/2
 switchport access vlan 22
interface GigabitEthernet0/3
 switchport access vlan 23
interface GigabitEthernet0/4
 switchport access vlan 24
interface GigabitEthernet0/5
 switchport access vlan 25
interface GigabitEthernet0/6
 switchport access vlan 26

ip routing

vlan21~26を定義しIPアドレスを付与・10.0.0.200をDHCPサーバーとして利用する設定とし、さらにスイッチポート1~6をそれぞれvlan21~26へのアクセスポートとして構成しました。最後に「ip routing」コマンドでVLAN間ルーティングを有効にします。これでCatalystの設定は終わりです。

上位ルーターの設定(CHR)

VLANからのインターネットアクセス等の戻りのパケット用に、vlan21~26への静的ルートを設定する必要があります。6つ静的ルートを書いてもいいのですが、10.0.21.0~10.0.26.0を含んだレンジ10.0.16.0~10.0.31.255であれば、10.0.16.0/20とまとめられるので、10.0.16.0/20宛のパケットをCatalystのvlan1のアドレス10.0.0.2に飛ばすstatic routeを追加しました。

/ip route
add distance=1 dst-address=10.0.16.0/20 gateway=10.0.0.2
Debian isc-dhcp-serverの設定
# cat /etc/dhcp/dhcpd.conf

subnet 10.0.0.0 netmask 255.255.255.0 { } (注)

subnet 10.0.21.0 netmask 255.255.255.0 {
    option routers 10.0.21.1;
    option domain-name-servers 10.0.0.1;
    range 10.0.21.2 10.0.21.199;
}

subnet 10.0.22.0 netmask 255.255.255.0 {
    option routers 10.0.22.1;
    option domain-name-servers 10.0.0.1;
    range 10.0.22.2 10.0.22.199;
}

subnet 10.0.23.0 netmask 255.255.255.0 {
    option routers 10.0.23.1;
    option domain-name-servers 10.0.0.1;
    range 10.0.23.2 10.0.23.199;
}

subnet 10.0.24.0 netmask 255.255.255.0 {
    option routers 10.0.24.1;
    option domain-name-servers 10.0.0.1;
    range 10.0.24.2 10.0.24.199;
}

subnet 10.0.25.0 netmask 255.255.255.0 {
    option routers 10.0.25.1;
    option domain-name-servers 10.0.0.1;
    range 10.0.25.2 10.0.25.199;
}

subnet 10.0.26.0 netmask 255.255.255.0 {
    option routers 10.0.26.1;
    option domain-name-servers 10.0.0.1;
    range 10.0.26.2 10.0.26.199;
}

(注) 意味のない空の設定ですが、これがないとエラーになりました。

Catalystへの静的ルートを設定しないとDHCPサーバーでエラーになったので、次のstatic routingの設定も加えております。

ip route add 10.0.16.0/20 via 10.0.0.2
計測結果

vlan1,vlan21-26の計7リンクアップ中の無負荷時の消費電力は9.6Wとなります。

Mbps 消費電力
VLAN間で3つ同時にiperf3 vlan21-vlan24 942
vlan22-vlan25 942
vlan23-vlan26 942
9.6W

すばらしい!Catalyst 2960-L! VLAN間のルーティング有りのシチュエーションで、3つ同時にiperf3を走らせても、wire speedが出ています。個人で入手可能なルーターだと、VLAN間ルーティングのスループットがどうしても大した速度が出ませんが、static routingとは言え、wire speedが出ることにはある意味感激します。一応RIPにも対応してますし。ちなみに、OSPF等の動的ルーティングが必要な場合には、ヤフオクで2万円弱でWS-3560CG-8PC-S等が出品されているのでそちらも今後テストしてみたいと思います。

VLAN間スループット(ACLあり)

VLANを作る以上なんらかのアクセス制限を設けるのが普通なので、テストということであまり意味はありませんが、以下のACLを設定してみました。

ip access-list extended vlan21-in
 10 permit tcp any 10.0.26.0 0.0.0.255 eq www
 20 permit tcp any 10.0.26.0 0.0.0.255 eq 443
 30 permit icmp any 10.0.26.0 0.0.0.255
 40 deny ip any 10.0.26.0 0.0.0.255
 50 permit tcp any 10.0.25.0 0.0.0.255 eq www
 60 permit tcp any 10.0.25.0 0.0.0.255 eq 443
 70 permit icmp any 10.0.25.0 0.0.0.255
 80 deny ip any 10.0.25.0 0.0.0.255
 90 permit tcp host 10.0.21.2 host 10.0.24.2 range 5000 8000
 100 deny ip any 10.0.24.0 0.0.0.255
 900 permit ip any any

interface GigabitEthernet0/1
 ip access-group vlan21-in in

・vlan21→25,26はpingとwebアクセスのみ許可で、それ以外は拒否
・vlan21→24はIPアドレス10.0.21.2の端末から10.0.24.2の端末の宛先ポート5000から8000までのtcpのみ許可、それ以外は拒否
・上記以外は全部許可
です。これでvlan21-vlan24でiperf3を実行してみます。

Mbps 消費電力
ACLありでvlan21-vlan24でiperf3 942 9.6W

これくらいのACLならばハードウェア処理されてスループットに全く影響を与えません。なお、Cicsoのページには以下の解説があります。

ACL処理はハードウェアで実行されます。ハードウェアでACL設定を保存する容量が不足すると、パケットはCPUに送られ、ACL 処理はソフトウェア側で行われます。ACLをソフトウェアで処理するためにデータパケットが転送される場合、転送速度はレート制限により、ラインレートよりもかなり低下します。

スイッチまたはスタック メンバーのリソース不足が原因でハードウェアに ACL を設定できない場合、影響を受けるのは、スイッチに着信した該当 VLAN 内のトラフィックだけです。パケットのソフトウェア転送が発生すると、消費される CPU サイクル数に応じて、スイッチまたはスイッチ スタックのパフォーマンスが低下することがあります。

Ciscoのページ「IPv4 アクセス コントロール リストの設定」から引用

大量にACLを設定すると、ハードウェア処理されずにソフトウェア処理となって、スループットが落ちるということです。となると、どの程度のACLを設定すればスループットが落ちるのか、試してみたくなるのが男の性というもの。適当ですが、以下のようにACLを追加してみました(太字部分)。

ip access-list extended vlan21-in
 10 permit tcp any 10.0.26.0 0.0.0.255 eq www
 20 permit tcp any 10.0.26.0 0.0.0.255 eq 443
 30 permit icmp any 10.0.26.0 0.0.0.255
 40 deny ip any 10.0.26.0 0.0.0.255
 50 permit tcp any 10.0.25.0 0.0.0.255 eq www
 60 permit tcp any 10.0.25.0 0.0.0.255 eq 443
 70 permit icmp any 10.0.25.0 0.0.0.255
 80 deny ip any 10.0.25.0 0.0.0.255
 90 permit tcp host 10.0.21.2 host 10.0.24.2 range 5000 8000
 100 deny ip any 10.0.24.0 0.0.0.255
 110 deny tcp host 10.0.21.10 range 2000 8000 host 10.0.23.10 range 2000 8000
 120 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.10 range 2000 8000
 130 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.11 range 2000 8000
 140 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.12 range 2000 8000
 150 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.13 range 2000 8000
 900 permit ip any any

これで、vlan21-vlan24のiperf3を実行すると以下のようになります。

Mbps 消費電力
ACLありでvlan21-vlan24でiperf3 942 9.6W

まだ大丈夫です。さらにACLを以下のように追加します(太字部分)。

ip access-list extended vlan21-in
 10 permit tcp any 10.0.26.0 0.0.0.255 eq www
 20 permit tcp any 10.0.26.0 0.0.0.255 eq 443
 30 permit icmp any 10.0.26.0 0.0.0.255
 40 deny ip any 10.0.26.0 0.0.0.255
 50 permit tcp any 10.0.25.0 0.0.0.255 eq www
 60 permit tcp any 10.0.25.0 0.0.0.255 eq 443
 70 permit icmp any 10.0.25.0 0.0.0.255
 80 deny ip any 10.0.25.0 0.0.0.255
 90 permit tcp host 10.0.21.2 host 10.0.24.2 range 5000 8000
 100 deny ip any 10.0.24.0 0.0.0.255
 110 deny tcp host 10.0.21.10 range 2000 8000 host 10.0.23.10 range 2000 8000
 120 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.10 range 2000 8000
 130 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.11 range 2000 8000
 140 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.12 range 2000 8000
 150 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.13 range 2000 8000
 160 deny udp host 10.0.21.10 range 2000 8000 host 10.0.23.14 range 2000 8000
 900 permit ip any any

ついに

%HSACLMGR-4-ACLRESOURCEFULL: vlan21-in:HW Resource (comparators) full.  Software Forwarding packets on

とウォーニングが出ました。やっと出てよかったです(笑)。

Mbps 消費電力
ACLありでvlan21-vlan24でiperf3 6.99 9.6W

100Mbpsくらいスループットが落ちるのかな~?とか思ってましたが、見事に期待を裏切られました(笑)。冗談みたいなスループットですね。699Mbpsじゃなくて、6.99Mbpsです。ここまでくると、「上位機種買って下さいね♪」という暗黙のプレッシャーを感じてしまいます。スループットが極端に悪いせいか、iperf3の実行前後で消費電力は微動だに変動しません。

ACLが多くなってソフトウェア処理が必須となる場合には、おとなしくルーターでルーティングを処理するのがいいでしょう。

Cisco Catalyst 2960-LのVLAN間スループット” に対して1件のコメントがあります。

  1. Hangetsub より:

    初めまして、同じく2960Lを購入した者です。

    Catalyst 2960-Lの場合は保守契約がなくても最新firmwareがダウンロードできるとのことですが本当でしょうか。https://software.cisco.com/ ciscoのアカウント等取得し左記にて入手しようとしましたが約款のところをacceptしても先に進めません。個人利用ではありますが、会社住所のところも埋めてはいます。

    恐れ入りますが、IOS入手方法ご教示いただければ幸いです

    1. Hangetsub より:

      本件、自己解決のため返信は不要です。おっしゃる通りiosダウンロードすることができました(もともとciscoアカウント登録してましたが、ダウンロード実行日当日に会社情報等を入力したため反映の間はじかれていたようです。)およびFWアップもできました。

      今後も当ブログの方参考にさせていただこうと思いますありがとうございます

Hangetsub へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です