ネットワークの運用で一番困るのがネットワークが遅い・重いという問合せです。
運用に慣れていない状況でそんな問合せがあると非常に困ります。
この記事では、
- ネットワークが遅いと言われた
- 何を調べたらいいのかわからない
そんな質問をネットワークエンジニアとして受けた場合の対処方法をまとめました。
ネットワークが遅い原因は輻輳(ふくそう)
ネットワークが遅い場合のほとんどの原因は、
通信経路のどこかで輻輳している
です。
輻輳とは物事が1点に集中しているという意味で、ネットワークでは通信できる帯域の上限を超えた場合に輻輳したと表現します。
ただしこの原因と推測するには2つの条件を満たしている場合です。
- 通信は待てば成功するが、ただ単に遅い
- クライアントとサーバの動作は正常
なぜ輻輳するのか、インターネットを使ったネットワークの通信経路を例に説明します。
[クライアント]
↓
[スイッチ] 輻輳が発生しやすいポイント①
↓
[ファイアウォール]
↓
[インターネット] 輻輳が発生しやすいポイント②
↓
[ファイアウォール]
↓
[スイッチ] 輻輳は発生しにくい
↓
[サーバ]
クライアントとサーバの接続経路にあるネットワーク機器を表現しました。
インターネットに近づくにつれて他のクライアントからの通信が①のスイッチで同じ経路を通過することになります。
そうなると帯域の上限に到達する可能性があります。
さらに、②のインターネットでは通信できる帯域がかなり制限されるのでそこでも輻輳が起こるかもしれません。
逆に③のポイントでは帯域の狭いインターネットを通過してきているので輻輳する可能性は低いです。
輻輳したら遅くなるのは分かったけど実際の影響は?
- ネットワーク監視のPingが途切れたりする
- 通話の音声が途切れたりする
- ブラウザから見ているページはそのまま見えるが、読み込みが遅い
- ファイルのダウンロードが遅い
輻輳は数分〜10分程度で一時的な事が多いです。
ですが、この10分が厄介で利用者からしたら5分くらいでおかしいと思い連絡し、連絡を受けて調査を始めたら治っているという事があります。
ほとんどの通信は輻輳が発生してパケットが破棄されても、パケットを再送して何事もなかったかのように対応しますが、リアルタイム性の高い通話やPingは再送する仕組みになっていないので影響がでます。
さらにSNMPトラップと呼ばれるシステムの異常を通知する通信も再送されないので、故障などの通知が届かない可能性があります。
輻輳しているかはどうやったら分かるの?
輻輳しているかはネットワーク機器のスループットから確認できます。
Catalystスイッチの場合のスループット確認コマンドです。
参考:Cisco公式
確認する部分は2箇所です。
- 5 minute input rate xxx bits/sec
- 5 minute output rate xxx bits/sec
例えばインタフェースの通信速度が1Gbits/secの場合は、inputとoutputそれぞれ1Gまで使えるので最大値はこうなります。
- 5 minute input rate 1,000,000,000 bits/sec
- 5 minute output rate 1,000,000,000 bits/sec
ちなみにこちらの項目でパケットが破棄されているか確認できます。
- Total output drops: 0
この数字は起動後の累計値なので0じゃないから即問題がある訳ではありません。
コマンドを数秒や数分間隔で実行して数値が変化している場合は輻輳が疑われます。
管理している装置が数台なら手動で確認できますが、数十台になるとネットワーク管理ツールを使うのが一般的です。無料ネットワーク管理ツールはZabbixが無料で使えるので導入しやすいです。
インターネット回線を経由する通信の場合は、回線側で輻輳することが非常に多いです。
インターネット環境については契約しているプロバイダのWEBページで確認できます。
障害は予期せず起きるものなのでWEBページに情報が出ていない場合もあります。
重要なシステムの場合は、契約時の資料から問い合わせ用のIDなどを確認しておきましょう。
輻輳の対処法
輻輳の対処法は
- ネットワーク機器を増設
- LANケーブルを増強
- QoSの設定を見直す
- インターネット回線の品質を上げる
基本的にはネットワークエンジニアがその場で何とかできる内容ではないですが、QoSに関しては対応の余地があります。
QoSとは通信の種類によって使える帯域を制限する機能です。
もし遅くなっているネットワーク機器がQoSを使える場合は、帯域の制限値を見直すことで輻輳が減る可能性があります。
CatalystスイッチでQoSの状態を確認するコマンド
参考:Cisco公式
QoSは遅くてもいい通信は制限を厳しくして、重要な通信は制限をゆるくする事で快適に通信することができますが、設定値の妥当性・設定変更・動作検証・管理など難易度が高いためおススメはできません。
トラブルの対処としてQoSを実装するのではなく、ネットワーク更改のタイミングで要件として検討するべきだと思います。
輻輳以外で遅くなる原因は?
経験上、ネットワークが遅いと言われた時の原因はクライアント・サーバにある事が多いですが、まれにネットワーク側に問題がある可能性もあります。
- ONU、NIC、LANケーブルの故障
- 冗長化している機器のActiveとStandbyが頻繁に入れ替わる
- 装置のCPUやメモリ高負荷(バグを含む)
- 仮想MACアドレスの重複
ONU、NIC、LANケーブルの故障
物理的な要因になる部分です。
NICとLANケーブルは完全に壊れていれば、ログにリンクダウンが出るのと、Pingが失敗するので気づきやすいですが、部分的に信号が弱くなっている場合などは検知が難しい場合があります。
ONUは、ネットワーク機器からしたらケーブルの一部として認識するので故障したのかがわかりません。
明確に故障しているか分からない場合でも、切り分けとして交換するのも一つの手です。
冗長化している機器のActiveとStandbyが頻繁に入れ替わる
これは2台の装置で冗長構成になっていて、片方の調子が悪いが完全に停止しない状態で起こります。
メインで動いているAの調子が悪くサブで待機していたBに処理が切り替わるとします。
その後、完全に壊れていないAの調子が戻り、BからAに処理が切り替わるというのを繰り返してしまい、いわゆるシーソーのような状態になる事です。
装置の切り替わりはログが出るので繰り返し行われていたら疑いましょう。
CatalystスイッチのStack構成の切り替わりログ
%STACKMGR-6-SWITCH_REMOVED: 2 stack-mgr: Switch 1 has been removed from the stack.引用元:Cisco公式
CatalystスイッチのVSS構成の切り替わりログ
%VSLP-SW1_SP-2-VSL_DOWN: All VSL links went down while switch is in ACTIVE role引用元:Cisco公式
装置のCPUやメモリ高負荷(バグを含む)
装置の高負荷もネットワーク遅延の原因になるので状態を確認します。
問題がある時の使用率だけを見てもそれが悪いかどうか判断できないので、普段から使用率はチェックしましょう。
CPUを使用しているプロセス・CPU使用率とその履歴を確認するコマンド
show process cpu history
参考:Cisco公式
MEMORY使用率を確認するコマンド
参考:Cisco公式
仮想MACアドレスの重複
同じセグメント上でIPアドレス冗長を複数行った場合、設定を誤ると仮想MACアドレスが重複する場合があります。
仮想MACアドレスを確認するコマンド
Standby virtual mac address is 0000.0c07.ac0a参考:Cisco公式
まとめ
今回はCatalystスイッチでネットワークの遅延が発生していないか調べる方法を説明しました。
実際にはサーバに問題があったりインターネット回線だったりしますが、ネットワークはいくら調べても完全に白です。と言い切るのが難しい部分でもあります。
切り分けを行い範囲を絞る事で原因に近づく事ができるので、1つずつ丁寧に調査を進めましょう。