技術コラム

製品技術
NVIDIA

繋がらない、通信できない #1 『繋がらない』

繋がらない、通信できない #1 『繋がらない』

ネットワークの管理をしていると、ユーザから“xxのサーバにアクセスできない”とか、“経理システムが動かない“とか、pingに応答しないとかいろいろ障害報告が上がってきています。これも、コンピュータ間のデータ通信の問題であることは確かです。ISOのOpen System InterconnectionのLayer 1(物理レイヤ)からLayer 3(ネットワークレイヤ)までの間で、繋がらなかったり通信が出来なかった例を、レイヤーごとに見てみましょう。

1) その前にLayer 0と勝手につけていますが、通信する以前の問題です。

1-1) 電源が入っていなかった。 
これは、ホストでも、スイッチのような中継器でも起こり得ますが、数が多かったり、ファンの音がうるさかったりして、電源が投入されていないのに気付かず、”あれ、通信できないぞ“と焦る人がいます。 落ち着いて、全てのルートで電源が立ち上がっていることを確かめましょう。サーバー類であれば、IPMIで確認したり、リモートで電源を入れることも可能です。ただし、コンセントまで電気が来ていなければ、いくら電源をONに使用としても元の木阿弥ですね。

データ通信は、通信する相手まで全て整って、初めて通信が可能となります。

2) Layer 1/2 物理レイヤー/データリンクレイヤー
Wikipediaを見ますと、 「物理層(ぶつりそう、英: physical layer)は、OSI参照モデルにおける第一層で、伝送媒体(電気信号や光)上にてビット転送を行うための物理コネクションを確立・維持・解放する電気・機械・機能・手続き的な手段を定義する。」とあります。皆様方は、すぐにどのようなものかをイメージできますか。
要は、伝送媒体(メタルワイヤ、光ケーブル)上で、電圧の上げ下げや電流の方向、光の有無でビット転送を行います。一度転送が始まると最後のビットが転送されまで継続します。
下記は、実際に起きたことです。

2-1) 通信用ケーブルが抜けていた/抜かれていた。
これもままあることで、特に悪意が無くとも間違ってケーブルを抜いてしまったり、抜けかかっていることに気が付かないこともあります。

2-2) QSFP 4本のうち1本が切れたケース
QSFP 40Gbpsのケーブルを使用している 10Gbpsではリンクアップするが、40Gbpsでリンクアップしないという現象がありました。実際何が起こっていたのかを調べてみると、QSFPには4つの10Gbpsのラインで使用され、それらを纏めて40Gbpsにします。ただポートスピードを10Gbpsに設定すると、このうちの1本しか使いません。どうも、Line 0-3のうちLine 0のみを使用するようで、もしLine0以外のところでケーブル断線があると、10Gbpsでは使えますが、40Gbpsでは使用できないという結果になります。この場合、40Gbpsでは全く通信ができませんので、ケーブルの質が悪いと見えるかもしれませんが、元々ケーブルの故障ですので通信ができません。従って接続されているポートは10Gbpsで動作しますが、元々の40Gbpsでは動作しません。

別のケースでは、光ケーブル(光モジュールと光ファイバーが合体したもの)で、定格は56Gbpsで動作保証がされているケーブルですが、本来の56Gbpsでは動作せず、40Gbpsで動作していました。つまり、レーンが切れたわけではありません。ただ、1本のレーンの対応スピードが追い付いていないために、対応可能なスピードとして、10Gbpsになってしまい、他も追従してしまった結果、56Gbpsではなく40Gbpsで動作していたということでした。

2-3) 通信ができるが、エラーが多い
その時はきちんと物理リンクも取れており、pingも通ってホスト間の通信が可能な状態でした。ところがいざ通信を始めると、通信エラーが発生し、スループットが上がりません。ネットワークポートのStatisticsを見てみると、Symbol, CRCエラーが多発しています。実際に、LCタイプの光モジュールへ、別のファイバーケーブルを差し込んだつもりがたまたまこのケーブルに触れてしまい、見た目には分からないほど微妙に抜けてしまったケースがありました。
この場合は、完全にエラーになるということは無く、何となくつながっているという状況でした。

2-4) BER(Bit error rate)
単位転送ビット数ごとのビットエラーの数で、IEEE802.3の規定に依れば10E-12のエラーレートになり、1兆ビットの中で1ビット以内の誤りに抑えなければならないというものです。非常に厳しい値と思われますが、極端な話になりますが、100Gbpsですと10秒に1回エラーが起きる可能性があるということです。従いまして、10E-12のエラーレートであっても、通信速度が上がったことにより、頻繁にビットエラーが起きてもおかしくない環境になっております。Mellanox社製ケーブルは10E-15と標準より1000倍厳しいBER基準となっております。

2-5) ケーブルの状況を見る
ケーブルそのものをテストに関して、NICのドライバレベルで、サポートしているものがありますが、どうも使える/使えないという判断をしてくれますが、具体的になぜ使えるのか/使えないのかを示してくれないケースが多いようです。Mellanoxは、スイッチ、NIC、ケーブルを一気通貫で製品の提供をしており、またそれらのコネクティビティの保障も含めソリューションを提供します。その一例として、Mellanoxは、NICカードを通して、ケーブルの状況を見ることが可能です。もともとはFirmware Toolとして提供されているものですが、その中にmlxlinkというコマンドがあります。Firmware Toolは、下記のURLより入手できます。
https://www.mellanox.com/page/management_tools?ssn=agj3opvonl7hbh7p28aa40a3l1

さて、その一例を見てみましょう。
まずFirmware Toolを実行します。(注: mftではなくmstとして使います。)

Last login: Wed Dec 4 22:48:03 2019 from 192.168.10.231
[root@sys1 ~]# mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module – Success
Loading MST PCI configuration module – Success
Create devices
Unloading MST PCI module (unused) – Success

これにより、Firmware Toolにより見えるデバイス名が作られ、アクセスすることが可能です。

[root@sys1 ~]# mst status
MST modules:
————
MST PCI module is not loaded
MST PCI configuration module loaded

MST devices:
————
/dev/mst/mt4123_pciconf0 – PCI configuration cycles access.
domain:bus:dev.fn=0000:04:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
Chip revision is: 00
[root@sys1 ~]#

それでは、NIC(mst device名:/dev/mst/mt4123_pciconf0)に接続されているケーブルの状況を見てみましょう。

[root@sys1 ~]# mlxlink -d /dev/mst/mt4123_pciconf0 -p 1 -c

Operational Info
—————-
State : Active
Physical state : ETH_AN_FSM_ENABLE
Speed : 100G
Width : 4x
FEC : Standard RS-FEC – RS(528,514)
Loopback Mode : No Loopback
Auto Negotiation : ON

Supported Info
————–
Enabled Link Speed (Ext.) : 0x000017f2 (200G,100G,50G,40G,25G,10G,1G)
Supported Cable Speed (Ext.) : 0x48101165 (200G,50G,40G,25G,2.5G,100M)

Troubleshooting Info
——————–
Status Opcode : 0
Group Opcode : N/A
Recommendation : No issue was observed.

Physical Counters and BER Info
——————————
Time Since Last Clear [Min] : 137.0
Effective Physical Errors : 0
Effective Physical BER : 15E-255
Raw Physical BER : 4E-14
Raw Physical Errors Per Lane : 0,0,2,37

[root@sys1 ~]#

結果として、ケーブルの情報、トラブルシュート情報、BER情報等を入手することが出来ます。
このツールはその他いろいろな情報を入手するために使うことが可能です。

以上、簡単ではありますが、繋がらない時に何を見たらよいかを簡単に示します。

次は、繋がっているけれど通信できないということについてお話させていただきます。