Алгоритм доступа к сети
На рис. 7.1 показана структурная схема алгоритма доступа к сети в соответствии с методом CSMA/CD для одного из абонентов, имеющих данные (кадры) для передачи.
В начале из кадра, предназначенного для передачи, абонент (узел) формирует пакет. Далее при обозначении блоков информации, передаваемых по сети при использовании алгоритма CSMA/CD, понятия «кадр» и «пакет» не различаются, что не совсем правильно, но соответствует сложившейся практике.
Если после подготовки пакета сеть свободна, то абонент (узел) может начать передачу. Но сначала он должен проверить, прошло ли минимально допустимое время IPG после предыдущей передачи (блок 1 на рисунке). Только после окончания времени IPG абонент может начать передачу битов своего пакета (блок 2 на рисунке).
После передачи каждого бита абонент поверяет наличие конфликта (коллизии) в сети. Если коллизий нет, передача битов продолжается до окончания пакета (блок 4 на рисунке). В этом случае считается, что передача прошла успешно.
Рис. 7.1. Структурная схема алгоритма доступа к сети в соответствии с методом CSMA/CD
Если после передачи какого-то бита обнаружена коллизия, то передача пакета прекращается. Абонент (узел) усиливает коллизию, передавая 32-
битовый сигнал ПРОБКА и начинает готовиться к следующей попытке передачи (блок 3 на рисунке). Сигнал ПРОБКА гарантирует, что факт наличия коллизии обнаружат все абоненты, участвующие в конфликте.
После передачи сигнала ПРОБКА абонент, обнаруживший коллизию, увеличивает значение счетчика числа попыток (перед началом передачи счетчик был сброшен в нуль). Максимальное число попыток передачи должно быть не более 16, поэтому если счетчик попыток переполнился, то попытки передать пакет прекращаются. Считается, что в этом случае сеть сильно перегружена, в ней слишком много коллизий. Эта ситуация - аварийная, и обрабатывается она на более высоких уровнях протоколов обмена.
Если же количество попыток не превысило 16, то производится вычисление величины задержки по приведенной формуле, а затем и выдержка вычисленного временного интервала. Случайный характер величины задержки с высокой степенью вероятности гарантирует, что у всех абонентов, участвующих в конфликте, задержки будут различными. Затем попытка передать пакет повторяется с самого начала. Понятно, что тот абонент, у которого вычисленная задержка будет меньше, начнет следующую передачу первым и заблокирует все остальные передачи.
Если в момент возникновении заявки на передачу (после окончания подготовки пакета) сеть занята другим абонентом, ведущим передачу, то данный абонент ждет освобождения сети (блок 5 на рисунке). После освобождения сети он должен выждать после предыдущей передачи по сети время IPG до начала собственной передачи. Это связано с конечным быстродействием узлов, осуществляющих проверку наличия несущей (занятости среды каким-либо передающим абонентом).
Таким образом, получается, что метод CSMA/CD не только не предотвращает коллизии, наоборот, он их предполагает, он их даже провоцирует, а затем разрешает. Например, если заявки на передачу возникли у нескольких абонентов во время занятости сети, то после ее освобождения все эти абоненты одновременно начнут передачу и образуют коллизию. Коллизия возникает и в случае свободной сети, если заявки на передачу возникают у нескольких абонентов одновременно. В обоих этих случаях под словом «одновременно» понимается «в пределах интервала двойного прохождения сигнала по сети», то есть в пределах 512-битовых интервалов. Точно так же в пределах 512-битовых интервалов обнаруживаются все коллизии в сети.
Если коллизия обнаруживается раньше 480- битового интервала, то в результате в сети образуются пакеты, длина которых меньше нижнего установленного предела в 512-битовых интервалов (64 байта) даже с добавлением сигнала ПРОБКА. Такие, пакеты (кадры) называются карликовыми (runt frames). Если же коллизия обнаруживается в конце 512-битового интервала (после 480-битового интервала), то в результате может получиться пакет допустимой длины (вместе с сигналом ПРОБКА). Такие пакеты называть карликовыми не совсем правильно. Сигнал ПРОБКА, образующий 32 последних бита пакета, выступает в виде контрольной суммы пакета. Однако вероятность того, что ПРОБКА будет соответствовать правильной контрольной сумме пакета, крайне мала (примерно 1 случай на 4,2 миллиарда).
Коллизии (наложения пакетов в процессе передачи) могут и должны обнаруживаться до окончания передачи. Действительно, анализ принятого в конце каждого пакета поля FCS, фактически содержащего помехоустойчивый циклический код CRC (Cyclic Redundancy Check), привел бы к неоправданному снижению скорости передачи.
Практически коллизии обнаруживаются либо самим передающим абонентом, либо повторителями в сети, возможно, задолго до окончания передачи заведомо испорченного пакета. Если учесть, что длина пакетов в локальной сети типа Ethernet/Fast Ethernet может лежать в диапазоне от 64 до 1518 байт, то досрочное прекращение передачи и освобождение линии означает заметное повышение эффективности использования ее пропускной способности.
Первым признаком возникновения коллизии является факт получения сигнала ПРОБКА передающим абонентом во время передачи пакета. Другие признаки связаны с неверным форматом пакетов, передача которых была досрочно прекращена из-за возникновения коллизии:
Наконец, в сетях типа Ethernet используется код Манчестер-П и чисто аппаратный способ определения коллизии, основанный на анализе отклонения среднего значения сигнала от нуля.
Даже при загруженной сети для одного абонента число подряд следующих коллизий обычно не превышает 2—3. Этому способствует случайный характер возникновения запроса на передачу и случайная дискретная величина отсрочки следующей попытки передачи в случае возникновения коллизии. Всего же предусмотрено 16 попыток передачи, после чего
возникшая особая ситуация обрабатывается протоколом более высокого уровня. Число коллизий тем больше, чем больше диаметр (размер) сегмента и чем дальше расположены друг от друга абоненты с интенсивным трафиком.