- PR -

Ethernet全二重でコリジョンが発生しない、って本当ですか?

投稿者投稿内容
YSC
会議室デビュー日: 2007/07/10
投稿数: 2
投稿日時: 2007-07-10 14:48
Ethernetの仕組みについて調べていたら、「全二重ではコリジョンが発生しない」という記述があちこちで見つかりました。
これって、同一のホストに対して複数のホストからの送信が発生した場合でもコリジョンにならないのでしょうか?

A B C D の4台のホストが全二重スイッチングハブにつながっているとします。
A→B の送信が行われているとき、C→D の送信を開始してもコリジョンにならない、ということは分かります。

このとき、C→B の送信が発生したら、コリジョンが発生しそうに思うのですが。

詳説 TCP/IPプロトコル 第8回 (参照元記事URL)では、
「スイッチング・ハブは、…(中略)…中継先のポートにトラフィックがある場合は、フレームを内部に蓄えておいて後で中継することができる」
とあります。
これによってさらにコリジョンが発生しにくくなることは分かりますが、
あくまでバッファを使った回避であって、原理的にコリジョンが発生しないわけではない、と思うのですが。
バッファがあふれるくらいに送信が集中したらどうなるのでしょうか?

このあたり、どういうことになっているのか、御存知の方がいらっしゃいましたら、
〜を見よ、ぐらいで構いませんから、よろしくお願いします。
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2007-07-10 16:05
こんにちは。

引用:
参照元記事より

10BASE5や10BASE2では、1つのケーブルを複数のステーションで共有しているが、このようなシステムでは、1つのステーションが送信をしている間は、そのステーションがケーブルを占有し、他のステーションからデータを送信することはできない。たとえ1対1の通信でも、一方が送信をしているときは、他方は受信しかできず、データを送信することができないのである。このように、送信と受信を同時に行えない通信方式を「半二重(half-duplex)通信方式」という。

 これに対して送信と受信が同時に行える通信方式を「全二重(full-duplex)通信方式」という。例えば、電話は全二重の通信方式で、2人が同時に話すことができる。


ここに書かれていることは図示するとこういうことですが、理解できませんか?
wojisan
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 149
投稿日時: 2007-07-10 16:14
引用:

YSCさんの書き込み (2007-07-10 14:48) より:
Ethernetの仕組みについて調べていたら、「全二重ではコリジョンが発生しない」という記述があちこちで見つかりました。
これって、同一のホストに対して複数のホストからの送信が発生した場合でもコリジョンにならないのでしょうか?

A B C D の4台のホストが全二重スイッチングハブにつながっているとします。
A→B の送信が行われているとき、C→D の送信を開始してもコリジョンにならない、ということは分かります。

このとき、C→B の送信が発生したら、コリジョンが発生しそうに思うのですが。

詳説 TCP/IPプロトコル 第8回 (参照元記事URL)では、
「スイッチング・ハブは、…(中略)…中継先のポートにトラフィックがある場合は、フレームを内部に蓄えておいて後で中継することができる」
とあります。
これによってさらにコリジョンが発生しにくくなることは分かりますが、
あくまでバッファを使った回避であって、原理的にコリジョンが発生しないわけではない、と思うのですが。
バッファがあふれるくらいに送信が集中したらどうなるのでしょうか?

このあたり、どういうことになっているのか、御存知の方がいらっしゃいましたら、
〜を見よ、ぐらいで構いませんから、よろしくお願いします。



一方,全二重方式はコリジョンが発生しない環境(スイッチングハブやブリッジによるコリジョンフリー環境)において用いられ,コリジョン検出回路が不要なためデータの送受信を同時に行うことができる.スイッチ上でパケットがぶつかる場合があるが,これはスイッチ上にパケットをキャッシュすることで,回避している.
※ Full Duplex 10Mbps では送受信を別々の経路(UTP の別々のワイヤ)を使うため,コリジョンが発生せず, 100% のパフォーマンス(Tx/Rx 合計 20Mbps)が発揮できる

*
http://www.iis.elec.fuk.kindai.ac.jp/~sira/index.php?%A5%A4%A5%F3%A5%BF%A1%BC%A5%CD%A5%C3%A5%C8%B9%A9%B3%D8%2F2005-04-27 より
AMD286
常連さん
会議室デビュー日: 2007/04/27
投稿数: 23
お住まい・勤務地: 兵庫県
投稿日時: 2007-07-10 16:38
全二重でのフロー制御なら、「IEEE802.3x」について調べてみると幸せになれるかもしれません。
たらお
大ベテラン
会議室デビュー日: 2006/12/25
投稿数: 206
お住まい・勤務地: 東京・永代通り
投稿日時: 2007-07-10 21:51
>バッファがあふれるくらいに送信が集中したらどうなるのでしょうか?

フレーム破棄が発生しますが、コリジョンとは状態が異なります。

私の理解の範囲ですが、コリジョン検出では、メディア電圧をチェックしています。
コリジョン検出対象のメディア内のフレーム存在数が増加し、電圧が閾値に達すると、
電圧が正常になるまで送信を抑制します。

このコリジョン検出の論理から、Ethernetフレームサイズが決められています。
フレームサイズが小さすぎると、電圧の変化が検出しにくいし、
フレームサイズが大きいと、電圧の変化が大きく、コリジョンと間違えます。
よって、外部からのノイズなどの影響を受けにくい同軸やツイストペアケーブル
が使用されることになります。

# いにしえの10Base5では、もう少し難しい処理をしているようで、
# メディアの何m先でコリジョンが発生したかまで分かる仕組みのようです。
# と言っても、私が最後に10Base5を見たのは、5年前のビル管理システムです。

転じて全二重のEthernetでは、機器がバックプレッシャに対応しており、
これが有効になっている状態でバッファがフルになると、送信抑制信号を出します。

卒論頑張ってくださいね。

_________________
_福田太郎_
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2007-07-11 00:58
引用:

A B C D の4台のホストが全二重スイッチングハブにつながっているとします。
A→B の送信が行われているとき、C→D の送信を開始してもコリジョンにならない、ということは分かります。
このとき、C→B の送信が発生したら、コリジョンが発生しそうに思うのですが。


原理的に、コリジョンは発生しません。
# というか、全二重では一本の電線につながっている送信デバイスが一個しかないので、
# コリジョンを発生させたいと望んでも実現できません。

複数のフレームが同じタイミングで競合した場合は、
(1) 即座に送れない分は、バッファに溜めておいて後で送る。
(2) バッファがあふれた場合は、黙って捨てる。
ということになります。

半二重と全二重の差は、コリジョンが発生するとA→BとC→Bの両方のフレームが失われるが、
「黙って捨てる」方式ならどちらか片方は無事に伝送されることです。
YSC
会議室デビュー日: 2007/07/10
投稿数: 2
投稿日時: 2007-07-11 21:58
御回答くださった方々、ありがとうございます。
おかげさまで、なんとか理解できたと思います。

とりあえず、「コリジョン」という言葉の認識がズレていたようです。
「送信の衝突」のことだと思っていたのですが、
「信号線に同時に複数の送信信号が出ること」というのが正しいのですね。

全二重の場合、「送信の衝突」は発生するが、「信号線に同時に複数の送信信号が出ること」はありえない。(→よって、「コリジョン」は発生しない)
全二重の場合、「送信の衝突」は、ハブ内では検出できるがホストのIFでは検出できない。
「送信の衝突」をハブ内で検出したとき、ハブ内でバッファに溜めておいて再送を試み、
あふれた場合は破棄して送信抑制信号を出す。

だいたい、このようなものであると理解できました。
皆様、ありがとうございました。
yawata133
ベテラン
会議室デビュー日: 2007/04/06
投稿数: 76
投稿日時: 2007-07-12 00:39
以前、リピータハブに同じスイッチングハブから出力されているLANをつないで、ネットワーク障害が起こったので、てっきり二重化はできないと思ってました。
非常に勉強になります。
最近のハブはインテリジェントになってきましたね。

スキルアップ/キャリアアップ(JOB@IT)