基幹L2スイッチをL3スイッチにリプレースした
事の発端
メインPCからNASへのiPerf3が同VLANでは速いが異VLANになると速度が落ち込んだ。
具体的には同VLANだと10Gbps弱出るが、異VLANだと6Gbps程度だった。
また、異VLANで通信している最中はルーターであるIX3315のCPU使用率が97%にも上っていた。
以下にログを貼るが、iPerf3はメインPCである実機のWindowsではなく仮想環境のLinuxのもの。
そのため仮想化のオーバーヘッドが若干あるかもしれない。
同VLAN
$ iperf3 -c 10.0.0.4
Connecting to host 10.0.0.4, port 5201
[ 5] local 10.0.0.80 port 51236 connected to 10.0.0.4 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.07 GBytes 9.20 Gbits/sec 9729 2.39 MBytes
[ 5] 1.00-2.00 sec 1.08 GBytes 9.25 Gbits/sec 5377 1.69 MBytes
[ 5] 2.00-3.00 sec 1.10 GBytes 9.41 Gbits/sec 2409 1.70 MBytes
[ 5] 3.00-4.00 sec 1.09 GBytes 9.36 Gbits/sec 2379 1.09 MBytes
[ 5] 4.00-5.00 sec 1.10 GBytes 9.43 Gbits/sec 513 1.18 MBytes
[ 5] 5.00-6.00 sec 1.10 GBytes 9.42 Gbits/sec 1043 1.44 MBytes
[ 5] 6.00-7.00 sec 1.10 GBytes 9.42 Gbits/sec 1741 1.07 MBytes
[ 5] 7.00-8.00 sec 1.10 GBytes 9.43 Gbits/sec 780 1.33 MBytes
[ 5] 8.00-9.00 sec 1.09 GBytes 9.41 Gbits/sec 1530 1.06 MBytes
[ 5] 9.00-10.00 sec 1.10 GBytes 9.46 Gbits/sec 645 1.15 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 10.9 GBytes 9.38 Gbits/sec 26146 sender
[ 5] 0.00-10.00 sec 10.9 GBytes 9.38 Gbits/sec receiver
iperf Done.
異VLAN
$ iperf3 -c 10.0.2.4
Connecting to host 10.0.2.4, port 5201
[ 5] local 10.0.0.80 port 55096 connected to 10.0.2.4 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 691 MBytes 5.79 Gbits/sec 1749 2.91 MBytes
[ 5] 1.00-2.00 sec 669 MBytes 5.61 Gbits/sec 1699 3.16 MBytes
[ 5] 2.00-3.00 sec 674 MBytes 5.65 Gbits/sec 0 3.16 MBytes
[ 5] 3.00-4.00 sec 666 MBytes 5.59 Gbits/sec 0 3.17 MBytes
[ 5] 4.00-5.00 sec 799 MBytes 6.70 Gbits/sec 0 3.17 MBytes
[ 5] 5.00-6.00 sec 768 MBytes 6.44 Gbits/sec 1767 2.34 MBytes
[ 5] 6.00-7.00 sec 672 MBytes 5.64 Gbits/sec 0 2.54 MBytes
[ 5] 7.00-8.00 sec 800 MBytes 6.71 Gbits/sec 1417 1.95 MBytes
[ 5] 8.00-9.00 sec 794 MBytes 6.66 Gbits/sec 0 2.24 MBytes
[ 5] 9.00-10.00 sec 900 MBytes 7.55 Gbits/sec 0 2.52 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 7.26 GBytes 6.24 Gbits/sec 6632 sender
[ 5] 0.00-10.00 sec 7.26 GBytes 6.24 Gbits/sec receiver
iperf Done.
異VLAN中のIX3315負荷
Router# show utilization
System utilization 97 (description: violent storm)
868679569 ticks ran last one second
1366233 worker threads ran last one second
Core utilization
CPU#0 48%
CPU#1 21%
CPU#2 76%
CPU#3 20%
CPU#4 97%
CPU#5 46%
CPU#6 0%
CPU#7 6%
Device GigaEthernet2
Mean transmit util 0%, last transmit util 0%, high transmit util 16%
Mean receive util 0%, last receive util 0%, high receive util 23%
Total intervals 112821
Device GigaEthernet3
Mean transmit util 0%, last transmit util 0%, high transmit util 49%
Mean receive util 0%, last receive util 0%, high receive util 48%
Total intervals 112821
(未使用 Device は省略)
現状の構成
ONU → IX3315 → JL682A(L2SW)→ 各機器
という感じのRouter on a stick構成である。
┌───────┐ ┌──────────┐ ┌───────┐
│ │ │ │ │ │─────────▶ 10.0.0.0/24
│ ONU │─────▶│ IX3315 │─────▶│ L2SW │─────────▶ 10.0.1.0/24
│ │ │ │ │ │─────────▶ 10.0.2.0/24
└───────┘ └──────────┘ └───────┘─────────▶ 10.0.10.0/24
│
│ - WAN Routing
│ - Inter-VLAN Routing
│ - VLAN Tagging
│ - DNS Server
│ - DHCP Server
│ - DHCPv6 Server (DNS only)
異VLAN間のルーティングもIX3315が担っており、その処理性能が完全に足を引っ張っていた。
公式が出しているIX3315のスループット性能を見てみると、フレームサイズ1,000bytesで10Gbpsは出ていそう。
しかし実際には出ていない。
公式のスループットはおそらく「ポート to ポート」であり、単一ポートのRouter on a stick構成が悪いのではないだろうかという結論になった。(一緒に調査してくれたオタクありがとう!)
解決策
そのオタクはルーターに古河電工のF310を使用しており、そちらもRouter on a stick構成なのだが10Gbps出ていた。
しかしそれはジャンボフレームが有効の時の話であり、1500バイトにすると8.6Gbps程度になってしまうらしい。
そしてそもそもルーターはソフトウェアでルーティングをしているから遅いらしい。
ハードウェアでルーティングをするものは…?
L3スイッチだよなぁ?
┌───────┐ ┌──────────┐ ┌───────┐
│ │ │ │ │ │─────────▶ 10.0.0.0/24
│ ONU │─────▶│ IX3315 │─────▶│ L3SW │─────────▶ 10.0.1.0/24
│ │ │ │ │ │─────────▶ 10.0.2.0/24
└───────┘ └──────────┘ └───────┘─────────▶ 10.0.10.0/24
│ │
│ - WAN Routing │ - Inter-VLAN Routing
│ - DNS Server │ - VLAN Tagging
│ - DHCP Server
│ - RA (RDNSS)
こうする。
ルーターを本来あるべきWANとLANの境界だけに使い、LANのほうはすべてL3スイッチに任せる。
こうすればルーティングはハードウェアで行われ、LAN向けのDHCPなども任せられるため機器の役割をはっきりと分離できる。
あとついでにAndroidに対応するためにDNSサーバーの配り方をDHCPv6からRDNSSに移行する。
選定
- 1G RJ45 x8
- 10G SFP+ x4
最低でもこれらのポートが欲しかった。
メーカーは大手がいいが特に拘りはなく、とりあえずCiscoなら安心じゃね?程度で考えていた。
そんなものをヤフオクで探していると以下のものが出品されており、価格も99,000円とお手頃だったためこれを買うことにした。
- Cisco Catalyst 9300-24T-E V02
- Firmware: IOS XE 16.09.02
- 1G RJ45 x24
- 冗長化電源搭載済み
- モジュールC9300-NM-8X付き
- 10G SFP+ x8
購入と着弾
L3SW買った pic.twitter.com/rt65r2x0CO
— yui (@sugtao4423) January 28, 2026
L3SW届いた! pic.twitter.com/XoeRg75d1d
— yui (@sugtao4423) January 30, 2026
一応分解してみたけど綺麗すぎて草 pic.twitter.com/dKCnpYH5dL
— yui (@sugtao4423) January 30, 2026
内部の埃などを吹き飛ばしたいと思って分解したが、すでに清掃されているのか元からなのか、非常に綺麗だった。
ファームウェア
16.09.02は2018年11月のバージョンであり非常に古い。
最新の安定版(推奨版)である17.15.04にアップグレードする。


といってもここに書いてあることをすればいい。
ただしUSBフラッシュメモリからIOSを転送する際は8GB以下のものを使わないときちんとファイルを認識してくれなかった。
Switch# install remove inactive
Switch# copy usbflash0:cat9k_iosxe.17.15.04.SPA.bin flash:
Switch# dir flash:
! ファームのダウンロードページに書いてある MD5 ハッシュと比較する
Switch# verify /md5 flash:cat9k_iosxe.17.15.04.SPA.bin
Switch# configure terminal
Switch(config)# no boot system
Switch(config)# boot system flash:packages.conf
Switch(config)# no boot manual
Switch(config)# end
Switch# write memory
Switch# show boot system
! この後勝手に再起動する
Switch# install add file flash:cat9k_iosxe.17.15.04.SPA.bin activate commit
Switch# show version
! 上記のサイトには書いていないがお掃除
Switch# install remove inactive
これだけで17.15.04にアップグレードすることができた。
コンフィグ
ルーターでフレッツ網から受け取った /56 を /60 などでL3SWに再移譲し、L3SWでそれを /64 に分割して各VLANに配るだけ。
IX3315が再移譲に対応していてよかった。ルーターの選定時に正しい選択をしていたようだ…
そこまで難しいコンフィグは書いていないので特に詰まった箇所だけを書いておく。
トランクポート
interface TenGigabitEthernet1/1/4
switchport trunk native vlan 102
switchport trunk allowed vlan 102,110
switchport mode trunk
switchport nonegotiate
native vlanのVLANであってもallowed vlanに追加しないといけないnonegotiateがないとDTP(Dynamic Trunking Protocol)を送信しやがって繋がらない
IPv4固定アドレス
ネットの情報では固定したい一つのホストに対して一つのプールを作成しないといけないというのが多く出てくる。
だがそれは嘘。これでいい。
ip dhcp use hardware-address client-id
ip dhcp pool SAMPLE-DHCP-POOL
network 10.0.0.0 255.255.255.0
default-router 10.0.0.1
dns-server 10.0.255.1
address 10.0.0.10 hardware-address 1234.5678.90ab
address 10.0.0.11 hardware-address 1a2b.3c4d.5e6f
MACアドレスはCisco特有の4桁のドット区切りなので気を付けるべし。
ACL
IoT機器用のVLANから他のVLANにアクセスさせないけど逆はできるやつ。
前にIX2215で書いたバージョンはここ。
interface Vlan110
description IoT Network
ip address 10.0.10.1 255.255.255.0
ip access-group ACL-IoT-IN in
ip access-group ACL-IoT-OUT out
ip access-list extended ACL-IoT-IN
remark === Allow return packets ===
evaluate IoT-SESSIONS
remark === Allow DNS server access ===
permit udp any host 10.0.255.1 eq domain
permit tcp any host 10.0.255.1 eq domain
remark === Deny access to internal VLANs ===
deny ip any 10.0.0.0 0.0.0.255
deny ip any 10.0.1.0 0.0.0.255
deny ip any 10.0.2.0 0.0.0.255
deny ip any 10.0.255.0 0.0.0.3
remark === Allow Internet access ===
permit ip any any
ip access-list extended ACL-IoT-OUT
permit tcp any any reflect IoT-SESSIONS timeout 300
permit udp any any reflect IoT-SESSIONS timeout 120
permit icmp any any reflect IoT-SESSIONS timeout 60
permit ip any any
解説はremarkに書いてある通り。
IX2215時代は「他VLANから通信があった時に時限的にそのホストに対してはなんでも許可する」といった緩いACLだったが、今回から「他VLANから通信があった時にその戻りパケットだけは許可する」というかなり厳格なACLにすることができた。
これだけでそれが実現できるReflexive ACLとかいうやつはすごい。
トランシーバーについて
Ciscoはサードパーティ製のSFP+のトランシーバーを使うことができる。
具体的にはコンフィグに以下の2行を投入することで警告すら出さずに使わせてくれる。
service unsupported-transceiver
no errdisable detect cause gbic-invalid
当初これを使ってL2SWから流用したFS製のHPE Aruba互換のSFP+トランシーバー(#92098)を使っていた。
しかし何気なくヤフオクを見ていると、Cisco純正のSFP+のトランシーバーが10個1万円で出ていた。
コンフィグに余計な2行があるのも気になるので買って換装し、2行は削除した。
そして換装後に気付いたことではあるが、FSのHPE Aruba互換だと光パワーが強すぎるという警告が10分おきにずっと出ていた。
換装後には一度も出ていないため、やはり純正(またはCisco互換)のトランシーバーを使うべきかと思う。
Feb 7 15:19:15.490: %SFF8472-3-THRESHOLD_VIOLATION: Te1/1/1: Rx power high warning; Operating value: -0.76 dBm, Threshold value: -1.00 dBm.
Feb 7 15:29:17.850: %SFF8472-3-THRESHOLD_VIOLATION: Te1/1/1: Rx power high warning; Operating value: -0.74 dBm, Threshold value: -1.00 dBm.
Feb 7 15:39:20.199: %SFF8472-3-THRESHOLD_VIOLATION: Te1/1/1: Rx power high warning; Operating value: -0.74 dBm, Threshold value: -1.00 dBm.
Feb 7 15:49:22.560: %SFF8472-3-THRESHOLD_VIOLATION: Te1/1/1: Rx power high warning; Operating value: -0.74 dBm, Threshold value: -1.00 dBm.
設置
てことで鯖室のL2SWからL3SWへのリプレース完全完了! pic.twitter.com/Sw9zq6WcRi
— yui (@sugtao4423) February 1, 2026
速度
一番上でやったのと同じ条件で再度iPerf3をやってみる。
同VLAN
$ iperf3 -c 10.0.0.4
Connecting to host 10.0.0.4, port 5201
[ 5] local 10.0.0.80 port 49198 connected to 10.0.0.4 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.08 GBytes 9.24 Gbits/sec 8300 1.24 MBytes
[ 5] 1.00-2.00 sec 1.10 GBytes 9.42 Gbits/sec 2241 1.36 MBytes
[ 5] 2.00-3.00 sec 1.10 GBytes 9.48 Gbits/sec 0 1.63 MBytes
[ 5] 3.00-4.00 sec 1.09 GBytes 9.35 Gbits/sec 4023 1.46 MBytes
[ 5] 4.00-5.00 sec 1.10 GBytes 9.46 Gbits/sec 1220 1.23 MBytes
[ 5] 5.00-6.00 sec 1.10 GBytes 9.47 Gbits/sec 401 1.53 MBytes
[ 5] 6.00-7.00 sec 1.10 GBytes 9.43 Gbits/sec 1727 1.26 MBytes
[ 5] 7.00-8.00 sec 1.10 GBytes 9.49 Gbits/sec 0 1.77 MBytes
[ 5] 8.00-9.00 sec 1.09 GBytes 9.34 Gbits/sec 2756 1.38 MBytes
[ 5] 9.00-10.00 sec 1.11 GBytes 9.49 Gbits/sec 0 1.79 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 11.0 GBytes 9.42 Gbits/sec 20668 sender
[ 5] 0.00-10.00 sec 11.0 GBytes 9.42 Gbits/sec receiver
iperf Done.
異VLAN
$ iperf3 -c 10.0.2.4
Connecting to host 10.0.2.4, port 5201
[ 5] local 10.0.0.80 port 46232 connected to 10.0.2.4 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.09 GBytes 9.39 Gbits/sec 3846 989 KBytes
[ 5] 1.00-2.00 sec 1.10 GBytes 9.45 Gbits/sec 212 954 KBytes
[ 5] 2.00-3.00 sec 1.10 GBytes 9.46 Gbits/sec 7 880 KBytes
[ 5] 3.00-4.00 sec 1.10 GBytes 9.47 Gbits/sec 5 977 KBytes
[ 5] 4.00-5.00 sec 1.10 GBytes 9.47 Gbits/sec 4 1008 KBytes
[ 5] 5.00-6.00 sec 1.10 GBytes 9.47 Gbits/sec 6 1.14 MBytes
[ 5] 6.00-7.00 sec 1.09 GBytes 9.40 Gbits/sec 2199 988 KBytes
[ 5] 7.00-8.00 sec 1.10 GBytes 9.47 Gbits/sec 6 1.09 MBytes
[ 5] 8.00-9.00 sec 1.10 GBytes 9.47 Gbits/sec 7 1.10 MBytes
[ 5] 9.00-10.00 sec 1.10 GBytes 9.46 Gbits/sec 9 1001 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 11.0 GBytes 9.45 Gbits/sec 6301 sender
[ 5] 0.00-10.00 sec 11.0 GBytes 9.45 Gbits/sec receiver
iperf Done.
すばらしい。
どちらでも全く同じ速度が出ており、どこもボトルネックになっていそうな箇所がない。
L3SWの使用率も見てみたかったのだが、コマンドがありすぎてどれを見たら良いのかがわからなかった。
ハードウェアルーティングなのでCPU使用率はもちろんアイドル時と同じ0%~1%だった。
ASICの使用率を知りたくていろんなコマンドを叩いてみたが、どれもそんなに値が変化していないように見え、これもうわかんねえな。
誰か良さげなコマンドを知ってたら至急、連絡くれや。
というかもしかすると10Gbpsなんてゴミレベルの通信すぎて見えるような負荷ではないかもしれない。
そもそもSFP+のポートが8つもあるので、それをフルロードしてやっと負荷が見えてくるのかも。
おわり
異VLANでも速度が低下することがなくなって非常によかった。
また副次的ではあるが、ルーターにすべてが集中してしまうRouter on a stick構成から脱却することができたのもよかった。(むしろこちらが主であるべきなのかもしれない)
やはり餅は餅屋でルーターとL3SWでそれぞれの得意分野があるのだなということを実感した。
10Gbpsをきちんと処理しきれるルーターはほぼ?存在しないようなので、これから10G環境にする人やうちもそんな構成だ…と感じる人がいたらぜひL3SWの導入を検討、というか導入してほしい。
そういえばTwitterでも報告を忘れていたが、安定稼働時のCatalyst 9300の動作音は1m弱離したところで約50dBだった。
静音化したルーターのほうがこれよりも若干うるさいくらいなので、一般家庭にも置けるように作られているのは非常に高ポイントである。
そんな感じで騒音も思っていたほどではなく、約100Wの電力を消費し続ける点だけが気になりポイントになった。
なので悪あがきとして家中の白熱電球をLED電球にリプレースし始めた。
ネットワークの最適化が家の最適化にまで影響するなんて…
みんなもネットワークを見直してみると新しい発見があるかもしれないよ。おすすめ。
最後に、Ciscoの製品は本当に壊れないことで有名なのでこの先何年だろう、十年単位の時間でよろしく頼むぞ!