=LANのCSMA/CDの話。
どんなものか知らなかったので調べた。(以下、メモ)
通信関連用語集 | 通信 | FAQ | サポート | ルネサスエレクトロニクス
ジャム信号(Jam Signal)
妨害信号。
ジャム=Jam=妨害、という意味。
「ジャム信号」とは:ITpro
CSMA/CD方式のネットワーク上でデータを送信している端末が,衝突を検出した際に送出する32ビット長の信号のこと。ジャム信号を送出することで衝突時間をある程度継続させ,ネットワーク上のすべての端末に衝突の発生を認識させる。
データを送信中の端末は,データを送信しながら衝突信号の検出を監視している。衝突信号を検出すると,送出する信号をデータ信号からジャム信号へと即座に切り替える。ジャム信号を送出し終わると,データの再送を開始する。
ジャム信号って、32ビットの信号なんだ。
どんなビット列なのか定義されているのかな?
[ CSMA/CD による送信のフローチャート ] - Network Analysis
コリジョンが検出されても、フレーム送出はすぐに停止されません。
ジャム信号に切り替えて 32 ビット分、送出します。
ジャム信号とは、他のステーションに衝突(コリジョン)を知らせるためのものです。
IEEE 802.3 の仕様では規定されていませんが、たいていは 10101010.... という信号です。
・IEEEの規格でジャム信号の内容は定義されていない。
・たいていは「10101010101010101010101010101010」と、1と0が交互に32個並んだビット列になっている。
ということらしい。
妨害信号=64ビット以下で、正規のフレームとして認識されない信号であればOK、ということかな?
●衝突検知の仕組み
CSMA/CD方式のコリジョン・ディテクション(衝突検知)の仕組みについて、詳しい説明があった。
CSMA/CDの衝突検出およびJAM信号について | OKWave
「送信側の衝突検出」と「受信側の衝突検出」を分けて考えてください。
回答1>送信したつもりな信号と受信した信号を比較
回答2>ケーブルの電圧を監視することで衝突を検知する
これはどちらも同じことを言っています。
CSMA/CDでは、複数の送信者が、同じ信号線の電圧を操作することで
「multiple access」を実現していますが、送信者は、送信時にも常時受信(電圧を監視)しています。
自分の意図しない電圧変化があれば、それは、別の送信者が電圧を変化させたということです。
すなわち、衝突が発生したということを意味します。
つまり別の送信者が送信を開始したらすぐに衝突は検出されます。
実際には、信号伝送に時間がかかりますから、
>衝突した相手の先頭bitが自分のところに到達すると
というタイミングで、意図しない電圧変化が発生し、
衝突が検出される、という流れになります。
基本的に、
・衝突の検知は送信者が行う。
・受信者は、送信者が送るジャム信号で、衝突を知る。
=送信者と受信者に分けて、衝突検知の仕組みが作ってある。
●CSMA/CDは、昔の半二重のなごり
ジャム信号を使うCSMA/CD方式は、半二重通信で使われる古い通信方式だ。
今や全二重通信が主流になり、信号の衝突検知は必要なくなった。
=ジャム信号も不要。
ネットワークエンジニアを目指して・イーサネット(Ethernet)のしくみ(2) -CSMA/CD方式-
しかし近年、通信速度の高速化とセグメントごとのノードの増加に伴い、イーサネットで使用されてきたCSMA/CD方式での衝突の検知では対応できなくなっています。
このような状況から現在はCSMA/CD通信ではなく全二重通信が主流になっています。
●通信の種類
全二重通信と半二重通信 -- Key:雑学事典
片方向通信【simplex】…テレビの電波。常に送信者と受信者が固定されている。
半二重通信【half duplex】…トランシーバー。一方がしゃべっているときにもう一方がしゃべることはできません。
全二重通信【full duplex】…電話。どちらか一方が話をしている途中でももう方一方が話しかけることができます。
テレビ、トランシーバー、電話…データの流れ方に注目すると、通信は3種類の方式があると。
CSMA/CDは、トランシーバーに相当するんだな。
●無線LANは、トランシーバーと同じ
ジャム信号を調べていて、オマケの収穫があった。
無線LANの通信方式について、理解を得た。
ケーブルを使う有線LANでは今や全二重通信が主流だが、無線LANは今でも半二重通信だ。
動作原理を考えれば当たり前ということになるが、なるほどと思った。
考えることもしなかったがCSMA/CAっていうことは半二重通信ということですよね: アメコロガシ
信号の衝突回避を考慮しなければならないCSMA/CAを利用している無線LANは半二重通信であるということ。
更に無線LANは無線LANルータ一台と複数のクライアントを結ぶときに特定の一つのチャンネルを利用して通信するから当然通信媒体は共有ということになり、効率はクライアントが増えるほど悪くなる。
つまり802.11n等の超高速な無線LANを実現したとしても、所詮半二重通信であり期待できるスループットが出るとは限らないというか絶対出ないということ。
無線LANは理論値と実効スループットに凄い開きがあることは承知していましたが、こういった理由もあるんですかね。
・無線LANは、トランシーバーと同じで、昔ながらの半二重通信を行っている。
無線LAN、無線セキュリティとソリューションのコルブリス・ネットワークス - 無線LANの基礎:CSMA/CAで空間共有
無線の基本は半二重通信
無線通信の大きな特徴的に、半二重通信という点がある。
送信と受信に同じ周波数を使う限り、送信と受信を同時に行うことができないのである。
トランシーバーやアマチュア無線では送信を終わるたびに送信側が「どうぞ」などと言い、相手に送信を譲るという運用上の工夫で送受信を切り替えているのはご存知だろう。
初期のイーサネットも半二重通信だった。
10Base-5や10Base-2だった頃は、一本の同軸ケーブルを複数の端末が共有していた。ある端末が送信している間は他の端末は送信を待つしかない。
これは通信が一対一でも同じで、一方が送信していれば他方は送信できない。
無線LANも基本はこれと同じで、通信制御の方式もかなり似ている。
しかし無線固有のオーバーヘッドがある。
無線LANとCSMA/CA
無線LANの通信制御に関してば、イーサネットの10Base-5や10-Base-2の時代と同等である。
無線端末は送信前にまずチャンネルを調べ他の無線端末が通信中かどうかを調べる(キャリアセンス)。
通信中の無線端末がいなければDIFS(Distributred Inter Frame Space)と呼ばれる待ち時間の後、送信を開始する。
送信終了後、ACKを待つ。
ACKが戻らなければ衝突やその他の問題と判断し、再度送信手順を繰り返す。
キャリアセンスの際に他の無線端末の通信を検知した場合、その通信の終了後、DIFSにランダムな時間を加えた待ち時間の後、送信を行う(バックオフ)。
この一連の通信制御をCSMA/CA (Carrier Sense Multiple Access/Collision Avoidance)と呼ぶ。
この方法とイーサネットとの違いは、まず送信中に衝突の検知を行わないことがある。
イーサネットの場合はケーブルの電圧を常時監視し、送信中に衝突があった場合は電圧の異常から即時にそれを検知できる。
無線LANでは、他の無線端末が出している電波の強度は、その無線端末との距離により大きく変わるため、送信中は電波の強弱で衝突の有無を確実に判断できない。
そこで送信相手からのACKが戻るかどうかで衝突やその他の問題の有無を判断する。
ACKを待つ必要があるため衝突が発生したタイミングで検知できない。
もう一つの違いは、送信の前に必ずDIFSの待ち時間がある点である。
これはチャンネルが使用中から空き状態になったことを確実にするのに必要な時間である。
キャリアセンスを行ったタイミングでチャンネルに信号が無くても通信中ではない保証は無い。
データ・フレームは必ずACKを伴うが、たまたまデータ・フレームとACKの間なのかも知れないからだ。
ACK、CTS/RTS(後述)のような制御用のパケットはSIFS (Short Inter Frame Space)と呼ばれるDIFSよりも短い待ち時間の後、送信される。
DIFSの間待ちあわせることで制御パケットとの衝突を回避できる。
・無線LANは、電波の強弱で衝突を検知できないから、受信者からのACKを待つしかない。
・衝突が起こった瞬間に、衝突を検知できない。
無線LANのCSMA/CAは、有線LANのCSMA/CDよりも、込み入った手順を踏んで通信をしているんだな。
勉強になった。
無線LANの高速化は大変なんだろう。
ネットワーク技術者の方、頑張ってください。