Столкновения в CSMA / CD Ethernet

5904
Baran

Я запутался из-за коллизий в CSMA / CD Ethernet. Когда будет отправлен сигнал о пробке? Почему сигналы джема отправляются? Если две одновременные передачи пакетов мешают друг другу, два передающих узла могут знать, что напряжение превышено, чтобы они могли завершить свои передачи и затем передать 32-битный сигнал помех, но почему? Может ли кто-нибудь записать все события одно за другим во временной последовательности?

4
для этого нужен тег "домашнее задание"? Spiff 13 лет назад 2

1 ответ на вопрос

11
Spiff

Во-первых, имейте в виду, что современные коммутируемые локальные сети Ethernet больше не являются CSMA / CD. CSMA / CD был техникой, которая применялась к Ethernet 10 Мбит / с и 100 Мбит / с, которые использовали концентраторы, а не коммутаторы. И, честно говоря, вокруг никогда не было много концентраторов 100BASE-TX; все ходили в это время. Для спецификации Gigabit Ethernet (1000BASE-T) требуются коммутаторы; нет такого понятия, как концентратор GigE.

В современных коммутируемых сетях Ethernet у вас больше нет общей среды. Когда вы подключены к коммутатору, «домен коллизий» находится только между вами и вашим портом коммутатора. И если вы находитесь в полнодуплексном режиме, что почти всегда верно для коммутаторов, то у вас вообще нет возможности столкновения. Если вы не можете столкнуться, вы никогда не обнаружите столкновение, поэтому у вас никогда не будет причин передавать сигнал о пробке.

Итак, еще во времена концентраторов (и общих кабелей, таких как thinnet / cheapnet / 10BASE-2 коаксиальный и thinnet 10BASE-5), вот как это работает:

Представьте, что у вас есть большая локальная сеть 10BASE-T с большим количеством концентраторов и кабелей максимальной длины, максимально увеличивая «правило ретранслятора», состоящее из максимум 4 ретрансляторов (концентраторов) между любыми двумя устройствами в локальной сети. Из-за задержек распространения сигнала через концентраторы может потребоваться максимум 232 бита для спецификации IEEE, чтобы сигнал, передаваемый от хоста A, достигал самого дальнего хоста в сети (хост B).

Теперь представьте, что хост A начинает передачу кадра, и, к несчастью, хост B, находящийся на другом конце сети, в 232 битах, начинает передавать кадр всего через 231 бит бит после того, как хост A начал передачу. Из-за задержек распространения в сети узел B не знал, что узел A уже отправил 231 бит, когда узел B отправил первый бит своей преамбулы. Теперь хост B обнаружит это столкновение в течение первых, скажем, 32 битов передачи хоста B, что может быть примерно на 232–264 битрейта раньше, чем хост A обнаружит его. Если хост B обнаружил его при первом бите передачи и просто прекратил передачу в тот момент, когда обнаружил это столкновение, возможно, он не оставался на носителе достаточно долго, чтобы хост A мог также обнаружить его и понять, что произошло столкновение ( вы можете' • гарантировать, что приемник обнаружит столкновение по самому первому биту столкновения). Это будет означать, что узел A не будет знать, как правильно выполнять процедуру обработки столкновений. Поэтому вместо того, чтобы просто прекратить передачу, хост B передает сигнал Jam так, чтобы он оставался на носителе достаточно долго, чтобы убедиться, что хост A осознает, что произошло столкновение.

Это также причина того, что кадры Ethernet имеют минимальную длину 64 байта. Это гарантирует, что Хост A остается на носителе достаточно долго, чтобы коллизия могла быть обнаружена на другой стороне сети, а сигнал Jam от Хоста B может пройти весь путь назад по сети, так что Хост При поступлении сигнала Jam A все еще находится в среде, поэтому он может понять, что кто-то столкнулся с его передачей.

Не требуется ли csma / cd в полнодуплексных соединениях? если да, то почему? Договорились, что отправка и прием осуществляется по двум разным кабелям, поэтому столкновения не будет, если устройство отправляет и получает одновременно. Но что, если устройство получает данные из двух источников одновременно? Тогда будет столкновение не так ли? Ashwin 11 лет назад 0
@Ashwin Коммутатор должен будет буферизовать один из двух кадров, которые он получает одновременно (на двух отдельных портах, поэтому нет коллизий), и отправить один перед другим на хост назначения. Spiff 11 лет назад 2
Означает ли это, что в полнодуплексных коммутируемых сетях Ethernet кадр Ethernet больше не должен иметь размер не менее 64 байтов? Во-вторых, если гигабитный Ethernet является полнодуплексным, есть ли минимальный размер кадра для гигабитного Ethernet? 9 лет назад 0
@GeorgeRobinson IEEE не устранил требования к минимальному размеру кадра в 64 байта, даже если он не служит такой важной цели для коммутируемого Ethernet, как в старых полудуплексных сетях на основе хабов. Spiff 9 лет назад 1