Ethernetインターフェイス
でケーブルテスト
ENOG79 2023.8.25
創風システム 外山 文規

1

自己紹介
• 名前外山 文規（とやま ふみのり）• 所属
株式会社 創風システム ITインフラ部• おしごとISP事業などで使用するLinuxサーバーの構築運用
ごくたまにISP事業や企業向けのNW機器設定• 趣味
バイク、登山、日本酒、温泉、ゴルフ(new)2

(最近Linux)$ ethtool --help ↲(toyama@node1)$ ethtool –help<snip>
ethtool [ FLAGS ] --cable-test DEVNAME Perform a cable test
ethtool [ FLAGS ] --cable-test-tdr DEVNAME Print cable test time domainreflectrometery data[ first N ][ last N ][ step N ][ pair N ]<snip>
3

今日の話
Ethernetカードやネットワークスイッチでケーブルテストできること最近知ったのでそれについてのお話です。
※ LANケーブルのケーブルテストの話です4

Ethernetでケーブルテストの利点と欠点• 利点• 挿抜なしでケーブルテストができる• リモートで実行できる• 欠点• 測定中は通信が数秒間途切れる（本番運用中のIFで実行ダメ絶対）• PoE給電している場合は接続機器の電源が落ちるかも※簡易的な診断機能なので、精密な診断・計測は期待しない5Ethernetカードでのケーブルテストの実装• ケーブルテストの機能はハードウェア実装されている• ツールがEthernetカードに指示を出して結果をもらう
ユーザ

カーネル

ethtool（ツール）Linux （ドライバ）

ハードウェア6Ethernetカード側の実装• ケーブルテストの機能はPHYに実装されている• 実装自体はかなり前からある

Ethernetカード

PCIe

MAC(コントローラ)

PHY

パルス
トランス

RJ45

7

参考 Intel i350 Datasheet

https://www.intel.com/content/www/us/en/content-details/333171/intel-ethernet-controller-i350-datasheet.html
8

参考 Intel i350 Datasheet

9Time Domain Reflectrometery(TDR)• 電気信号をケーブルに照射してその反射するまでの時間を測定することで、断線や接触不良などの障害箇所を特定する手法• 銅ケーブルで電気信号を用いて反射を見て試験＝TDR• 光ファイバーで光信号を用いて反射を見て試験=OTDR

10

EthernetのTDRで得られる情報• LANケーブルの断線、ショート、インピーダンスミスマッチ• LANケーブルの配線4組のうちどれに問題があるか• 障害点までの距離（メートル単位で誤差あり）

11

オープン（断線）の時の反射

時間

https://www.cqpub.co.jp/hanbai/books/36/36431/36431_p167-169.pdf

12

ショートの時の反射時間13インピーダンスミスマッチの時の反射時間14正常な時の電気信号の反射時間15Linuxでケーブルテストを行うには• ケーブルテスト実行ツール☞ ethtool 5.8以上• ケーブルテストのレジスタを叩けるドライバ(+OS)☞Kernel 5.8以上• ケーブルテストが実装されているEthernetカード(PHY)☞ 上記のサポートがあるEthernetカード？？？
16対応しているPHY (Linux v6.4 調べ)• ADI ADIN1200 / ADIN1300• Qualcomm Atheros AR8035 / AR8031 / AR8033 / AR8032• Qualcomm Atheros AR9331 built-in PHY / QCA9561 built-in PHY• Broadcom BCM54140• Marvell 88E1510 / 88E1540 / 88E1545• Marvell 88E6341 Family / 88E6390 Family / 88E6393 Family• Micrel KSZ8081 / KSZ8091• Micrel KSZ9031 Gigabit PHY / INDY Gigabit Quad PHY / LAN8841 Gigabit PHY• Microchip KSZ9131 Gigabit PHY / KSZ8851 Ethernet MAC or KSZ886X Switch /LAN87xx T1 / LAN937x T1• NXP C45 TJA1103 / TJA1102
17

サポートしているPHY (Linux v6.4 調べ)• ADI ADIN1200 / ADIN1300• Qualcomm Atheros AR8035 / AR8031 / AR8033 / AR8032• Qualcomm Atheros AR9331 built-in PHY / QCA9561 built-in PHY• Broadcom BCM54140• Marvell 88E1510 / 88E1540 / 88E1545
産業用PHY、アプライアンス系(NAS、無線AP)で• Marvell 88E6341 Family / 88E6390 Family / 88E6393 Family
使用されるPHYが多い• Micrel KSZ8081 / KSZ8091• Micrel KSZ9031 Gigabit PHY / INDY Gigabit Quad PHY / LAN8841 Gigabit PHY• Microchip KSZ9131 Gigabit PHY / KSZ8851 Ethernet MAC or KSZ886X Switch /LAN87xx T1 / LAN937x T1• NXP C45 TJA1103 / TJA1102
18

一応動かしてみる• LinkStatinon LS410D(PHY Marvell 88E1518)• Debian Bookwormをインストール• Bookworm -> Kernel6.1 / ethtool6.1

19

ethtool --cable-testを実行• ケーブル正常時(debian)# ethtool --cable-test eth0
Cable test started for device eth0.
Cable test completed for device eth0.
Pair A code OK
Pair B code OK
Pair C code OK
Pair D code OK20

ethtool --cable-testを実行• ケーブル未接続(debian)# ethtool --cable-test eth0
Cable test started for device eth0.
Cable test completed for device eth0.
Pair A code Open Circuit
Pair B code Open Circuit
Pair C code Open Circuit
Pair D code Open Circuit
Pair A, fault length: 0.80m
Pair B, fault length: 0.80m
Pair C, fault length: 0.80m
Pair D, fault length: 0.80m

21ethtool --cable-testを実行• ケーブルショート(debian)# ethtool --cable-test eth0
Cable test started for device eth0.
Cable test completed for device eth0.
Pair A code OK
Pair B code OK
Pair C code Short within Pair
Pair D code Short within Pair
Pair C, fault length: 1.60m
Pair D, fault length: 2.40m
22ethtool --cable-test-tdrを実行• 結果が返ってこない…
(debian)# ethtool --cable-test-tdr eth0
Cable test TDR started for device eth0.
Cable test TDR completed for device eth0.
TDR Pulse 1000mV
Step configuration: 0.80-149.73 meters in 0.80m steps※ 本来であればこの後にTDRのRAWデータとして各Pairに対する振幅(mV)出力がされるはず

23

Windowsでケーブルテストを行うには• ケーブルテスト実行ツール☞ Intel PROSet Adapter Configuration Utility(Win10まで)☞ Realtek Ethernet Diagnostic Utility• ケーブルテストのレジスタを叩けるドライバ(+OS)☞メーカー提供 or Windows提供• ケーブルテストが実装されているEthernetカード(PHY)☞ 上記のサポートのあるEthernet カード
確認した範囲ではIntel I21x、Realtek RTL8111など
24

Intel PROSet Adapter Configuration Utility

25

Intel PROSet Adapter Configuration Utility

26

RealTek Ethernet Diagnostic Utility• こんな感じ27

ケーブルテストが実装されているNW機器• 各メーカーのL2/L3SW、無線APあたりで実装されている
Cisco, Juniper, YAMAHA, Aruba, Ruckus etc…
• コマンドにtdrという文字が含まれていることがあるので、TDRで測定をしていると思われる

28

Ciscoの場合• サンプル• WS-C2960CG-8TC-L• IOS 15.2(2)E29

測定コマンド• # test cable-diagnostics tdr interface インタフェース名
Switch#test cable-diagnostics tdr interface gigabitEthernet 0/1
Link state may be affected during TDR test
TDR test started on interface Gi0/1
A TDR test can take a few seconds to run on an interface
Use 'show cable-diagnostics tdr' to read the TDR results.
※interface が shutdown している場合は実行できません30

測定結果表示コマンド• # show cable-diagnostics tdr interface インタフェース名
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 1000M Pair A 0 +/- 10 meters Pair B
NormalPair B 0 +/- 10 meters Pair A
NormalPair C 0 +/- 10 meters Pair D
NormalPair D 0 +/- 10 meters Pair C
Normal31

Pair A – Dが示す配線• Pair A -> Pair 3 (白緑/緑)• Pair B -> Pair 2 (白橙/橙)• Pair C -> Pair 1 (白青/青)• Pair D -> Pair 4 (白茶/茶)https://docs.ruckuswireless.com/fastiron/08.0.60/fastiron-08060-monitoringguide/GUID-6C7283B4-7740-4DE7-877B-BEB1C96C6CDC.html

32いくつかのケースを試してみる• WS-C2960CG-8TC-Lでケーブルテストを実施• 正常なケーブル• ケーブル断またはケーブル抜け• 一部損傷したケーブル• 接続先が100M HUB

33

サンプル: 正常な時
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 1000M Pair A 0 +/- 10 meters Pair B
NormalPair B 0 +/- 10 meters Pair A
NormalPair C 0 +/- 10 meters Pair D
NormalPair D 0 +/- 10 meters Pair C
Normal34

サンプル: LANケーブルが未接続
Switch#show cable-diagnostics tdr interface GigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 auto Pair A 0 +/- 10 meters N/AOpen
Pair B 0 +/- 10 meters N/AOpen
Pair C 0 +/- 10 meters N/AOpen
Pair D 0 +/- 10 meters N/A
Open
35

サンプル: LANケーブルの対向が未接続
Switch#show cable-diagnostics tdr interface GigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 auto Pair A 2 +/- 10 meters N/AOpen
Pair B 2 +/- 10 meters N/AOpen
Pair C 1 +/- 10 meters N/AOpen
Pair D 2 +/- 10 meters N/AOpen36

サンプル: 8極4芯のLANケーブル
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 100M Pair A N/APair B
NormalPair B N/APair A
NormalPair C N/APair D
NormalPair D N/APair C
Normal
別の機種では C,DはOpenとなるらしい、機種やIOSによって違う？

37

サンプル: 8極4芯のLANケーブル• Gi0/1 を speed 1000にして再実行
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 1000M Pair A N/A
N/A
NormalPair B N/A
N/A
NormalPair C 0 +/- 10 meters N/AOpen
Pair D 0 +/- 10 meters N/AOpen38

サンプル: PairC,Dに問題のあるケーブル
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 100M Pair A N/APair B
NormalPair B N/APair A
NormalPair C N/APair D
NormalPair D N/APair C
Normal参考サイトによるとC,DはOpenやShortとなるらしい、機種やIOSによって違う？

39サンプル: PairC,Dに問題のあるケーブル
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 1000M Pair A N/A
N/A
NormalPair B N/A
N/A
NormalPair C 3 +/- 10 meters N/A
Short
Pair D 2 +/- 10 meters N/A
Open40サンプル: 対向が100M HUB• 正常なCat5eケーブル＋100M HUB
Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 100M Pair A N/APair A
NormalPair B N/APair B
NormalPair C N/APair C
NormalPair D N/APair D
Normal41

サンプル: 対向が100M HUB• Gi0/1 を speed 1000にして再実行•

Switch#show cable-diagnostics tdr interface gigabitEthernet 0/1
TDR test last run on: April 01 23:59:59
Interface Speed Local pair Pair length
Remote pair Pair status--------- ----- ---------- ------------------ ----------- -------------------Gi0/1 1000M Pair A N/AN/A
NormalPair B N/AN/A
NormalPair C 1 +/- 10 meters N/A
Short
Pair D 2 +/- 10 meters N/A
Short
42

まとめ
• PHYから先の障害切り分けの役には立ちそうではありますが、診断結果は、物理的な機器構成など前提情報がないと分析が難しい場合があると感じました。
• 通信断を起こすコマンドなので、本番運用中の環境では今このタイミングで実行してもよいかを慎重に検討してから実行ましょう。

43