
【CCNA_5】Auto MDI/MDI-X、両方Autoならどっちが切り替わる?|「自動」の仕組み
Ethernetケーブルについて勉強していると出てくる、
MDIとMDI-X
そして、
Auto MDI/MDI-X(Auto-MDIX)
という仕組み。
Auto MDI/MDI-Xがあれば、ストレートケーブルなのかクロスケーブルなのかを機器側が自動で判別してくれる。
ここまでは分かりました。
でも、そこで気になったことがあります。
両端の機器がどちらもAuto MDI/MDI-Xに対応していたら、
結局どっちがMDIになって、どっちがMDI-Xになるの?
どちらかに優先順位があって、片方が「譲る」のでしょうか。
そして両方が同時に切り替えたら、
ずっと同じ状態を行ったり来たりして、リンクアップできなくならないの?
今回は、Auto MDI/MDI-Xの「Auto」の部分がどうやって成り立っているのかを整理します。
まずMDIとMDI-Xとは?
そもそもMDIは、
Medium Dependent Interface
の略です。
一方のMDI-Xは、
Medium Dependent Interface Crossover
の略。
10BASE-Tや100BASE-TXでは、Ethernetケーブルの中に、
送信用のペア
と
受信用のペア
があります。
たとえば一般的なMDIでは、
* 1・2番ピン:送信
* 3・6番ピン:受信
という配置になります。
MDI-Xでは、これが逆になります。
* 1・2番ピン:受信
* 3・6番ピン:送信
つまりMDI-Xでは、送信と受信の役割が内部でクロスしています。

なぜ昔はストレートとクロスを使い分けた?
Ethernetでは、
相手の送信線と、自分の受信線
がつながらないと通信できません。
そのため従来は、接続する機器の組み合わせによってケーブルを使い分ける必要がありました。
たとえば、
PC(MDI) ⇔ スイッチ(MDI-X)
なら、もともと送信と受信が反対になっているので、
ストレートケーブル
で接続できます。
一方、
PC(MDI) ⇔ PC(MDI)
や、
スイッチ(MDI-X) ⇔ スイッチ(MDI-X)
のように同じ種類同士を接続すると、そのままでは、
送信 ⇔ 送信
受信 ⇔ 受信
になってしまいます。
そこでケーブル側で送信と受信を入れ替える、
クロスケーブル
が必要になります。
CCNAでは基本として、
異なる種類の機器 → ストレート
同じ種類の機器 → クロス
と覚えることが多いと思います。
Auto MDI/MDI-Xとは?
ここで登場するのが、
Auto MDI/MDI-X
です。
この機能に対応しているポートでは、
接続されたケーブルや相手側の状態に合わせて、PHYが必要な接続状態を自動的に選択します。
つまり、
「この接続ならMDIとして動けばいい」
「このままだと送受信が合わないからMDI-X側に切り替えよう」
という処理を機器側で行います。
そのため、Auto MDI/MDI-Xが有効なら、
ストレートケーブルかクロスケーブルかを人間が意識しなくてもリンクを確立できる
ようになります。
現在のEthernet機器で、
「適当にLANケーブルをつないでも普通につながる」
ことが多いのは、この仕組みのおかげです。
じゃあ両端ともAutoだったら、どっちが切り替わる?
ここが今回一番気になったところ。
たとえば、
機器A:Auto MDI/MDI-X
機器B:Auto MDI/MDI-X
だった場合。
どちらかが、
「じゃあ私がMDIになります」
「ではこちらがMDI-Xになります」
と相談しているのでしょうか。
結論としては、
「こちら側が優先」「スイッチ側が譲る」といった固定の役割分担があるわけではありません。
Auto MDI/MDI-Xでは、それぞれのPHYが接続状態を確認しながら、適切な構成を探します。
つまり、
どちらか一方が必ず切り替える
という仕組みではありません。
両方同時に切り替えたら永遠に合わないのでは?
ここでもうひとつ疑問。
もし両方が、
MDI
↓
合わない
↓
MDI-X
と同じタイミングで切り替えたら、
また両方同じ状態になります。
そこでまた同時に、
MDI-X
↓
MDI
と戻ったら、
永遠に同じ動きを繰り返すのでは?
と思いました。
でも、Auto MDI/MDI-Xはそんな単純な動きではありません。
規格上の仕組みでは、機器がまったく同じタイミングで永久にMDIとMDI-Xを切り替え続けないように、
タイミングをずらしながら状態を試す仕組み
が使われます。
MDI/MDI-Xの選択にはランダム性も取り入れられており、それぞれのPHYが独立して動作します。
そのため、
機器Aと機器Bが永久に完全同期してしまうことを避けながら、リンクが成立する組み合わせを探す
ことができます。
「譲る」というより「成立するまで探す」
なので、最初に持っていた、
「どちらが譲るの?」
というイメージとは少し違いました。
実際には、
機器A
MDI?
↓
MDI-X?
機器B
MDI?
↓
MDI-X?
と、それぞれが独立して適切な構成を探します。
そして、
通信できる組み合わせになったところでリンクを確立する
というイメージです。

つまり、
「片方が譲る」のではなく、「成立する状態を自動的に見つける」
と考えた方が分かりやすそうです。
片方だけAutoでも大丈夫?
では、
機器A:Auto MDI/MDI-X
機器B:固定
の場合はどうでしょうか。
この場合はAuto側が相手との接続状態に合わせられるため、対応する機器では適切な構成に自動的に切り替えてリンクを確立できます。
CiscoのAuto-MDIX対応スイッチでも、接続したインターフェースの片方または両方でAuto-MDIXが有効な場合、不適切な種類のケーブルであっても自動的に補正してリンクできる機種があります。
つまりAuto MDI/MDI-Xは、
必ず両端で有効になっていないと動かない仕組み
ではありません。
Auto Negotiationとは別物?
ここも少しややこしいところ。
Ethernetには、
Auto Negotiation
という仕組みもあります。
こちらは主に、
* 通信速度
* Duplex
などを相手機器と調整する仕組みです。
一方、
Auto MDI/MDI-X
は、
ケーブルの送受信ペアの接続状態を自動的に補正する仕組み
です。
名前にどちらも「Auto」がつくので混同しやすいですが、目的は違います。
ただし機器によっては両者が関連して動作します。
たとえばCiscoの一部スイッチでは、Auto-MDIXを正しく動作させるために、speedとduplexもautoに設定することが求められています。
なので、
Auto Negotiation=Auto MDI/MDI-X
ではないけれど、
機器の実装上は一緒に使われる場合がある
と理解しておきます。
1000BASE-Tでは少し事情が違う
ここまでは、送信用ペアと受信用ペアが分かれている、
10BASE-T/100BASE-TX
をイメージすると分かりやすい話です。
一方、1000BASE-Tでは、
4ペアすべてを使い、それぞれのペアで双方向に通信します。
そのため、
「1・2番ピンが送信、3・6番ピンが受信」
という10/100BASE-TXとまったく同じ考え方ではありません。
ただし1000BASE-Tでも、ペアの割り当てを適切に扱うためのAuto MDI/MDI-Xの仕組みがあります。
つまり、
Gigabit EthernetになったらAuto MDI/MDI-Xという考え方そのものがなくなる
わけではありません。
ただ、
10/100BASE-TXと1000BASE-Tでは物理層の通信方法が違う
という点は分けて考えた方がよさそうです。
今回のまとめ
今回気になったのは、
「Auto MDI/MDI-Xで両端とも自動なら、どちらが譲るの?」
という疑問でした。
結論としては、
どちらか一方が必ずMDI、もう一方が必ずMDI-Xになるような固定の優先順位があるわけではありません。
それぞれのPHYが接続状態を確認しながら、適切な構成を探します。
そして、
両端が同じタイミングで切り替え続けてリンクできなくならないよう、タイミングやランダム性を利用して動作する
仕組みになっています。
なのでイメージとしては、
× どちらかが譲る
ではなく、
○ リンクが成立する組み合わせを自動的に探す
という方が近い。
Auto MDI/MDI-Xという名前だけを見ると、
「何かを自動判別して切り替えてくれる」
くらいにしか考えていませんでした。
でも、
「両方Autoだったらどうやって決めるんだ?」
まで考えてみると、
単純にMDIとMDI-Xを交互に切り替えているわけではなく、きちんとリンクが成立するための仕組みがあることが分かりました。
※この記事は初学者が学習の中で調べながらまとめた内容になります。
先輩エンジニアの皆さま、間違いや誤解があるなという箇所や追加の補足情報などありましたらご指摘いただけますと大変ありがたいです🙇♂️
関連記事
・前回「【CCNA_4】Ethernetヘッダーの1501〜1535は何?|Length/Typeフィールドの謎」
・次回「【CCNA_6】サブネットマスクって結局何?|ネットワーク部・ホスト部から考えてみた」