Если две станции домена сети одновременно ведут передачу данных, то в домене
возникает коллизия. Коллизии бывают трех типов: местные, удаленные, поздние.
Местная коллизия (local collision) - это коллизия, фиксируемая в домене,
где подключено измерительное устройство, в пределах передачи преамбулы или первых 64 байт кадра,
когда источник передачи находится в домене. Алгоритмы обнаружения местной коллизии для сети на основе витой
пары (10BaseT) и коаксиального кабеля (10Base2) отличны друг от друга.
В сети 10Base2 передающая кадр станция определяет, что произошла локальная коллизия по
изменению уровня напряжения в канале связи (по его удвоению). Обнаружив коллизию, передающая
станция посылает в канал связи серию сигналов о заторе (jam), чтобы все остальные станции домена узнали,
что произошла коллизия. Результатом этой серии сигналов оказывается появление в сети коротких, неправильно
оформленных кадров длиной менее 64 байт с неверной контрольной последовательностью CRC.
Такие кадры называются фрагментами (collision fragment или runt).
В сети 10BaseT станция определяет, что произошла локальная коллизия, если во время передачи кадра она обнаруживает активность на приемной паре (Rx).
Удаленная коллизия (remote collision) - это коллизия, которая возникает в другом физическом сегменте сети
(т. е. за повторителем). Станция узнает, что произошла удаленная коллизия, если она получает неправильно оформленный
короткий кадр с неверной контрольной последовательностью CRC, и при этом уровень напряжения в канале связи остается
в установленных пределах (для сетей 10Base2).
Для сетей 10BaseT/100BaseT показателем является
отсутствие одновременной активности на приемной и передающей парах (Tx и Rx).
Поздняя коллизия (late collision) - это местная коллизия, которая фиксируется уже после того, как станция
передала в канал связи первые 64 байт кадра. В сетях 10BaseT поздние коллизии часто фиксируются
измерительными устройствами как ошибки CRC.
Если выявление локальных и удаленных коллизий, как правило, еще не свидетельствует о наличии в сети дефектов,
то обнаружение поздних коллизий - это явное подтверждение наличия дефекта в домене. Чаще всего это связано
с чрезмерной длиной линий связи или некачественным сетевым оборудованием.
Помимо высокого уровня утилизации канала связи коллизии в сети Ethernet могут быть вызваны дефектами
кабельной системы и активного оборудования, а также наличием шумов.
Даже если канал связи не является узким местом системы, коллизии несущественно,
но замедляют работу прикладного ПО. Причем основное замедление вызывается не столько
самим фактом необходимости повторной передачи кадра, сколько тем, что каждый компьютер сети
после возникновения коллизии должен выполнять алгоритм отката (backoff algorithm): до следующей попытки
выхода в канал связи ему придется ждать случайный промежуток времени, пропорциональный числу предыдущих неудачных попыток.
В этой связи важно выяснить, какова причина коллизий - высокая утилизация сети или "скрытые" дефекты сети.
Чтобы это определить, рекомендуется придерживаться следующих правил.
Правило # 2.1. Не все измерительные приборы правильно определяют общее число коллизий в сети.
Практически все чисто программные анализаторы протоколов фиксируют наличие коллизии только в том случае,
если они обнаруживают в сети фрагмент, т. е. результат коллизии. При этом наиболее распространенный тип
коллизий - происходящие в момент передачи преамбулы кадра (т. е. до начального ограничителя кадра (SFD)) - программные
измерительные средства не обнаруживают, так уж устроен набор микросхем сетевых плат Ethernet. Наиболее
точно коллизии обнаруживают аппаратные измерительные приборы, например LANMeter компании Fluke.
Правило # 2.2. Высокая утилизация канала связи не всегда сопровождается высоким уровнем коллизий.
Уровень коллизий будет низким, если в сети одновременно работает не более двух станций или если небольшое
число станций одновременно ведут обмен длинными кадрами (что особенно характерно для пакетного режима).
В этом случае до начала передачи кадра станции "видят" несущую в канале связи, и коллизии редки.
Правило # 2.3. Признаком наличия дефекта в сети служит такая ситуация, когда невысокая утилизация канала (менее 30%)
сопровождается высоким уровнем коллизий (более 5%).
Если кабельная система предварительно была протестирована сканером, то наиболее вероятной причиной повышенного
уровня коллизий является шум в линии связи, вызванный внешним источником, или дефектная сетевая плата,
неправильно реализующая алгоритм доступа к среде передачи (CSMA/CD).
Компания Network Instruments в анализаторе протоколов Observer оригинально решила задачу
выявления коллизий, вызванных дефектами сети. Встроенный в программу тест провоцирует возникновение коллизий:
он посылает в канал связи серию пакетов с интенсивностью 100 пакетов в секунду и анализирует число возникших коллизий.
При этом совмещенный график отображает зависимость числа коллизий в сети от утилизации канала связи.
Долю коллизий в общем числе кадров имеет смысл анализировать в момент активности подозрительных (медленно работающих)
станций и только в случае, когда утилизация канала связи превышает 30%. Если из трех кадров один столкнулся
с коллизией, то это еще не означает, что в сети есть дефект.
Правило # 2.4. При диагностике сети 10BaseT все коллизии должны фиксироваться как удаленные,
если анализатор протоколов не создает трафика.
Если вы пассивно (без генерации трафика) наблюдаете за сетью 10BaseT и физический сегмент
в месте подключения анализатора (измерительного прибора) исправен, то все коллизии должны фиксироваться как удаленные.
Если тем не менее вы видите именно локальные коллизии, то это может означать одно из трех: физический сегмент сети,
куда подключен измерительный прибор, неисправен; порт концентратора или коммутатора, куда подключен
измерительный прибор, имеет дефект, или измерительный прибор не умеет различать локальные и удаленные коллизии.
Правило # 2.5. Коллизии в сети могут быть следствием перегруженности входных буферов коммутатора.
Следует помнить, что коммутаторы при перегруженности входных буферов эмулируют коллизии, дабы "притормозить"
рабочие станции сети. Этот механизм называется "управление потоком" (flow control).
Правило # 2.6. Причиной большого числа коллизий (и ошибок) в сети может быть неправильная организация заземления
компьютеров, включенных в локальную сеть.
Если компьютеры, включенные в сеть не имеют общей точки заземления (зануления), то между
корпусами компьютеров может возникать разность потенциалов. В персональных компьютерах "защитная" земля объединена
с "информационной" землей. Поскольку компьютеры объединены каналом связи локальной сети, разность потенциалов
между ними приводит к возникновению тока по каналу связи. Этот ток вызывает искажение информации и является причиной
коллизий и ошибок в сети. Такой эффект получил название ground loop или inter ground noise.
Аналогичный эффект возникает в случае, когда сегмент коаксиального кабеля заземлен более чем в одной точке.
Это часто случается, если Т-соединитель сетевой платы соприкасается с корпусом компьютера.
Обращаем внимание на то, что установка источника бесперебойного питания не снимает описанных трудностей.
Наиболее подробно данные проблемы и способы их решения рассматриваются в материалах компании APC
(American Power Conversion) в "Руководстве по защите электропитания" (Power Protection Handbook).
При обнаружении большого числа коллизий и ошибок в сетях 10Base2 первое, что надо сделать, - проверить разность
потенциалов между оплеткой коаксиального кабеля и корпусами компьютеров. Если ее величина для любого компьютера в
сети составляет более одного вольта по переменному току, то в сети не все в порядке с топологией линий
заземления компьютеров.