Это мой первый блог :)
Home
 

Коллизионный протокол

Для лучшего понимания этой статьи советую прочитать статью о Ehternet 10Base5.

Стоит упомянуть о том, что Ethernet изначально являлся протоколом моноканальным, где все слышат всех, включая самого себя. Поэтому как-то нужно распределять права доступа к среде передачи, чтобы различные станции не начали передавать одновременно и не испортили таким образом друг другу передачу. В Ethernet никакой административной раздачи прав на передачу не предусматривалось. Все компьютеры в сети Ethernet равноправны, в этом есть свои плюсы и минусы.

CSMA/CD (Carrier Sense Multiple Access with Collision Detection — множественный доступ с контролем несущей и обнаружением коллизий) — технология(802.3) множественного доступа к общей передающей среде в локальной компьютерной сети с контролем коллизий. Каждая станция работает в режиме «Слушай, что говоришь». Если станция слышит именно то, что она передает, значит она вещает одна. Если она слышит не то, что она передает, значит, что в линии есть кто-то еще.

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

В случае передачи без коллизий протокол выглядит так:

No collision

No collision

Станция заканчивает передачу frame, все ждут определенное время, которое называется interframe gap, чтобы успокоилась среда.

Все станции прождали нужное время и несколько станции могут начать передавать в линию одновременно. Такая ситуация называется коллизией.

Ситуация с коллизией

Ситуация с коллизией

В случае с коллизией в Ethernet не все так просто, потому что сигналы эти высокоскоростные и длинные линии передачи очень ощутимы даже на 10 Мб/с. На картинке выше изображено, что происходит во время коллизии для двух разнесенных станции (в смысле длины кабеля).

В один момент прекратилась передача для одной станции, а для другой станции, которая в смысле кабеля находится дальше, передача прекратилась в другой момент. То есть для МАС1 она закончилась пораньше, а для МАС2 попозже. Каждая из станции отсчитали IFG. МАС1 успешно начал передачу, в этот момент МАС2 еще отсчитывает IFG. Отсчитав свои IFG МАС2 начинает передачу, МАС1 не сразу услышит то, что он вещает не один. Вскоре МАС1 начнет слышать не то, что он передает, ему потребуется некоторое время, чтобы разобраться в том, что он слышит какую-то кашу и после этого он понимает, что произошла коллизия. Вот тут должно случиться: все станции должны понять, что произошла коллизия, именно все!, потому что некоторые станции могли уже счесть обрывок frame и счесть его валидным и начать пытаться обрабатывать; для этого мы должны еще некоторое время передавать jam (512 битовых времен), то есть некий мусор для того, чтобы заполнить эту линию, чтобы все станции на линии услышали этот мусор. Понять, что это мусор можно по битому CRC32 (checksum). Если МАС1 и МАС2 будут ждать одно и то же время тишины в среде перед тем, как передавать, то коллизия у них будет пожизненно (неизменность параметров среды это гарантирует)!  После передачи jam они обязаны замолчать на случайное количество времени (принцип экспоненциального отката), чтобы опять не начать передачу одновременно. Есть 15 попыток для передачи frame перед тем, как сообщить о том, что среда испорчена, ничего передать не могу.

Время слота равно 512 битовым интервалам, за этот период, если у вас не произошла коллизия, то значит, что ваш сигнал распространился по всему проводу и все услышали, что вы передаете. Дальше коллизий быть не может (в правильно функционирующей сети). Для Ethernet это время является фундаментальным. Это время определяет минимальную длину frame. Если frame будет меньше времени слота, то не все станции обнаружат коллизию. Jam служит для выравнивания ситуации на 512 бит.

Ethernet  работает очень плохо, когда канал загружен более, чем на 60% (соотношение тишина/передача) .

Как же происходит коллизия в репитере?

Сеть построенная на витой паре полнодуплексная (одна витая пара на прием, другая витая пара на передачу). Однако для того, что бы сохранить совместимость и не вносить изменения в МАС, на всех витых парах поддерживается коллизионный механизм — среда искусственно объявляется полудуплексной. В таком случае коллизии происходят в хабе, когда в него приходит сигнал с двух сторон. Репитер, обнаружив коллизию обязан выдавать во все стороны jam, так как он из себя изображает среду.

—————————————————————
Статья основа на лекциях Беляева Платона Евгеньевича по предмету «Компьютерные сети» на кафедре АФТИ ФФ НГУ.

06.05.2012 This post was written by Categories: Компьютерные сети 1 comment

One Response to “Коллизионный протокол”


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Top