Ethernetケーブルの憂鬱--CAT5ケーブルの混在と使ってはいけないmii-tool

とある社内ネットワークのファイルサーバーでどうしてもパフォーマンスがおかしいということがあった。スイッチとNICは1Gbps対応。eth0の状態をmii-toolで調べると、

# mii-tool eth0
eth0: negotiated 1000baseT-HD flow-control, link ok

NICは1000Mbpsで認識されている。

次にスイッチを疑い、同様構成のものを接続してみるとスイッチは問題ないことがわかったが、それと同時にネットワークに問題がありそうだというのがわかった。 チューニングで何かおかしくしてしまったところがあるのでは? と思い調べているうちに

# cat /sys/class/net/eth0/speed
100

# dmesg
[   29.759653] tg3 0000:01:00.0: eth0: Link is up at 100 Mbps, full duplex
[   29.759658] tg3 0000:01:00.0: eth0: Flow control is on for TX and on for RX
[   29.759660] tg3 0000:01:00.0: eth0: EEE is disabled
[   29.760011] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
	:
	:

と100Mbpsとして認識された状態だったことが判明。mii-toolの表示は参考にしてはいけないことがわかった。mii-toolは使わず、ethtoolを使うようにしていったほうがいい。また、念のためにdmsgか/sysも確認しておいたほうがいいだろう。

ということで、疑いはケーブルへ。調べてみると、見事にCAT5ケーブルで接続していたという事故であった。たとえばCAT6は赤色、CAT5は水色というような管理していたところだったのだが、どこかで余ったCAT5ケーブルがストックに混入し、それがCAT6と同じ赤色だったというオチ。良く見ると微妙に色も異なっていた。色で管理するのも注意が必要だ。ケーブルに刻印されているスペック文字は見る癖をつけておいたほうがいいかもしれない。

念のため実際にiperfで別のマシン(CAT5eで1Gスイッチ経由で接続)から転送速度も実測してみると10倍の差だった。計測方法は、サーバー側で「iperf -s」を実行して待機。クライアント側で「iperf -c IPアドレス」とする。

# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local xx.xx.xx.xx port 5001 connected with xx.xx.xx.xx port 50964
[ ID] Interval       Transfer     Bandwidth

・CAT5ケーブルの場合
[  4]  0.0-10.0 sec   112 MBytes  94.0 Mbits/sec

・CAT6ケーブルの場合
[  4]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

ファイルシステムにボトルネックがあるので、10倍の改善には当然ならないが、数倍の差が出た。簡単なものでも実測を行って検証しておいたほうがいいという事例である。