Ethernet の Collision Detection の仕組み
Ethernet とは
Ethernet(イーサネット)は、有線コンピュータネットワークで最も使われている通信規格である。今は LAN の末端での端末の接続には Wi-Fi が使われることが多いが、2010年ころまでは、家庭や職場で PC の接続に使われていたのは 100BASE-T の Ethernet が主流だったと記憶している。
同軸ケーブル
10BASE-T や 100BASE-T といった Twisted Pair ケーブルを用いた規格が普及する前は、Ethernet は同軸ケーブルを用いる 10BASE5 や 10BASE2 が主流だった。有線で通信するには最低2本の導線が必要だが、その 2本をバウムクーヘンのように同じ中心軸を共有した 2つの導線で実現したものが同軸ケーブルである。中心の導線を絶縁体でくるんで、さらにそれを中空の導線で取り囲む。通常、中空の導線には網線が使われる。
10BASE5 の場合、1本の同軸ケーブルの最大長は 500m で、最大 100台の機器を直接つなぐことができる。この長さを活かして、ビルの構内ネットワークによく使われていた。一本の同軸ケーブルをビルの全フロアに順番に這わせて、ビルの基幹ネットワークとするわけである。10BASE2 の最大長は 200m であるため、ビルの基幹ネットワークにするには、やや足りないかもしれない。
10BASE5 の同軸ケーブルに機器をつなぐには、MAU(Medium Attachment Unit)という数センチ角程度の小さな箱を取り付ける。トランシーバーとも呼ばれる。2本の導体と電気的に接続するために、MAU を同軸ケーブルに「噛みつかせる」。同軸ケーブルに物理的に穴を開けて、中心の導線と周囲の網線の双方に電気的に接続する。別名ヴァンパイアタップと呼ばれる。
— Benno (@jeamland) October 17, 2017
Yes, that's a vampire tap on the Ethernet cable. Here's a bonus picture showing the vampire tap on a different transceiver. You can see the spike that goes into the cable. Also the tap tool for drilling a hole in the coaxial cable. pic.twitter.com/9xTmNaKbg9
— Ken Shirriff (@kenshirriff) January 10, 2018
もはやコンピュータネットワークで同軸ケーブルを使うことは無くなったが、無線機器とアンテナの接続には同軸ケーブルがよく使われる。家庭でも、壁についているテレビアンテナのコンセントとテレビ本体を接続するのは同軸ケーブルである。
CSMA/CD
アナログの電話線は 2本の導線を占有して電話機と電話局の交換機を接続している。10BASE5 のように 2本の導線(同軸ケーブル)に 3つ以上の機器を接続して相互に通信するには、どうすればいいだろうか。方式は大きく分けて 2つある。一つは利用する周波数を分けて多重化する方法。ケーブルテレビはこの方式だし、線を占有していない場合の通信はたいていこれだ。もう一つは時間で分けて多重化する方法。みんなが短時間ずつ使って譲り合えばいい。Ethernet はこの方式だ。
Ethernet では CSMA/CD(Carrier Sense Multiple Access with Collision Detection)という通信方式が採用されている。使う前に他の人が使っていないかどうかを確認して(Carrier Sense)、使っていなければ短時間だけ使わせてもらってみんなが使えるようにして(Multiple Access)、万が一他の人と同時に使ってしまった場合にはそれを検出して(Collision Detection)やり直す。
この Collision Detection はどのように実現されているのだろうか。例えば 2本の導線にみんなで 5V の信号を送ることにして、5V の信号が衝突(Collision)によって重なり合っても観測されるのは 5V の信号である。衝突しない場合と比べて波形はゆがんでいそうだが、このゆがみを検出するのだろうか。
同軸ケーブルの特性インピーダンス
衝突検出について考える前に、同軸ケーブルの基本的な性質について調べてみよう。同軸ケーブルには「特性インピーダンス」という数値が決められている。インピーダンスというのは、交流電流を流した場合の抵抗値である。世の中にある同軸ケーブルのほとんどは 50Ωの特性インピーダンスを持ち、例外的にテレビ用の同軸ケーブルのみ75Ωの特性インピーダンスを持つ。
特性インピーダンス50Ωの同軸ケーブルの一端で芯線と網線を短絡(接続)し、もう一端に -1V
〜 1V
の交流電圧をかける。すると、オームの法則 E = RI
より、この同軸ケーブルには 20mA
の交流電流が流れる。逆に、この同軸ケーブルに -20mA
〜 20mA
の交流電流を流せば、-1V
〜 1V
の交流電圧が観測される。
なお直流電流の場合、一端を短絡すると抵抗値は 0Ω
で最大の電流が流れ、短絡しないと抵抗値は ∞Ω
となって電流は流れない。
終端抵抗で反射波を消す
同軸ケーブルの両端では、それを解放しても短絡しても、反射波という逆方向に進む信号が発生する。進行波と反射波が合成される結果、同軸ケーブル上には定在波が発生する。ピーンと張った糸をはじくと固有の音が発生するのと同じ原理である。解放した場合、開放端では電圧最大、電流ゼロとなる。短絡した場合は電圧ゼロ、電流最大となる。短絡と解放の中間として何らかの抵抗値を持つ負荷をつなげば反射波は減る。同軸ケーブルの特性インピーダンスと同じ 50Ω
の負荷をつなぐと、理論的には 50Ω
の負荷で全電力が消費されて反射波がゼロになる。従って、10BASE5 のイーサネットでは、同軸ケーブルの両端にそれぞれ 50Ω
の抵抗をつなぐ。これをターミネーター(終端抵抗)と呼ぶ。ターミネーターを取り付けないと反射波が発生して信号がゆがめられ、通信できない。
電圧信号、電流信号
電気的に信号を送るには、2つの方法がある。一つは電圧で信号を送る方式。もう一つは電流で信号を送る方式。電流の測定よりも電圧の測定の方が簡単なため、ほとんどの電気回路は電圧を信号にしている。10BASE5、10BASE2 の Ethernet は電流を信号としている。電圧信号は楽ではあるものの、伝送路が長くなると、伝送路上の抵抗やノイズで劣化しやすい。電流信号は伝送距離が長くても、電流がどこかへ漏れたり、どこかから流し込まれたりしなければ、劣化しない。長距離の信号伝送に向いている。
電流信号の検出
電流信号の検出方法は 2通りある。一つは電流計をつなぐなどして電流そのものを測る方法。もう一つは電圧計をつなぐなどして電圧を測る方法である。電流を測るクランプメーターのように磁場を測る方法もあるが、盗聴は別として、一般的な通信手段としては使われていないと思われる。昔のアナログ電話に外付けで録音機能を追加できる「テレホンピックアップ」というコイルが存在したが、これは通信内容を磁場で検出する方式だった。
電流を測るには回路を切断しなければならないので手間がかかる。電圧を測る場合は、同軸ケーブルの特性インピーダンスが 50Ω
であることを前提に、計測した電圧を E = RI
によって電流に変換することで、電流を間接的に測れる。
Collision Detection
10BASE5 の場合、MAU からは 40mA
の電流信号を流す。E = RI
でいえば、R = 50Ω
、I = 40mA
であるから、E = 2V
となる。複数の MAU から同時に 40mA
の電流信号を流すと、最大で 80mA
の電流が流れ、最大電圧差が 4V
になる。この電圧異常を検出することで、衝突を検出(Collision Detection)できる。