Что такое коллизия в сети (collision)? Сегодня мы разберем само понятие коллизий в локальной сети, возможные причины их возникновения и как бороться с подобным явлением? Также узнаем, что такое домен коллизий?
Наша статья, будет состоять из двух частей: в первой (теоретической) мы рассмотрим основные понятия и термины, которые нам пригодятся в дальнейшем, а во второй части я покажу Вам (на примере), какие могут быть проблемы в реальной сети и к чему нужно быть готовым?
Итак, разберем само понятие коллизия. Буквально оно означает - столкновение. Что может сталкиваться в компьютерной сети? Правильно, - передаваемые по ней данные, точнее - пакеты (кадры) данных. Помните про принцип коммутации пакетов, о котором мы говорили в одной из наших статей?
Проиллюстрируем возникновение коллизии в компьютерной сети на простенькой схеме:
Как видите хост (компьютер) под номером «1» начинает передачу своих пакетов данных в сеть. Точно в это же время другой хост начинает передачу своих данных. В результате, данные "сталкиваются", что приводит к их полной или частичной потере. Как мы понимаем это - недопустимое явление, так как недоставленные данные нужно передавать снова, а это - временные задержки, которые не каждый пользователь будет готов терпеть. Да и Вам самим постоянное нытье "подопечных" скоро надоест:)
Итак, на основе сказанного выше, давайте дадим краткое определение коллизии в сети: коллизия это - столкновение двух или более кадров в сети, приводящее к их потере или искажению.
Сами столкновения происходят где? Правильно, - в кабеле! Отсюда следует еще одно определение: сетевой кабель это - разделяемая среда передачи данных для всех компьютеров сети. Разделяемая именно потому, что ее пропускная способность (полоса пропускания) делится между всеми компьютерами, образующими сеть.
Учитывая скорости движения данных в сети, вряд ли возникновение коллизии возможно в случае соединения только двух компьютеров? НО! Если компьютеров становится больше?
Или - очень много (несколько сотен) и всем нужно передавать (и принимать) сетевой трафик? Вот именно тогда и возрастает риск возникновения коллизий.
Здесь возникает необходимость в механизме синхронизации доступа сетевых интерфейсов отдельных компьютеров к общей разделяемой среде. Применимо к технологии Ethernet (не зависимо от скорости передачи) этот принцип доступа называется CSMA/CD (Carrier Sense Multiple Access with Collision Detection, что переводится так: множественный доступ с контролем несущей и обнаружением коллизий). Фактически, это - случайный метод доступа к среде. Иногда метод CSMA/CD называют протоколом, который работает на канальном уровне сетевой модели OSI.
Примечание: сетевая модель OSI (open systems interconnection basic reference model - базовая модель взаимодействия открытых систем). Это - модель совместной работы сетевых протоколов различных уровней (всего - семь), которая, в полной мере, позволяет реализовать эффективный обмен данными в сети.
Случайный характер алгоритма доступа к среде передачи данных, принятый в технологии Ethernet, нельзя назвать идеальным. При большом количестве запросов на доступ к среде передачи, генерируемых узлами в случайные моменты времени, вероятность возникновения коллизий также возрастает, что приводит к неэффективному использованию всего канала. Время обнаружения коллизии и время ее обработки составляют дополнительные временные затраты, а интервал в течение которого канал предоставляется в распоряжение каждому узлу, становится все меньше.
Чтобы понапрасну не впасть в состояние паники скажем, что для стандартной сетевой технологии Ethernet наличие коллизий в сети - нормальное явление! Другое дело, что иногда возникают ситуации, когда коллизионных столкновений становится настолько много, что вся полоса пропускания способность сети буквально "съедается" мусорным трафиком и передавать полезные данные становится просто невозможно!
Подобный случай мы рассматривали в статье, о возможности образования петли в локальной сети организации.
Давайте с Вами рассмотрим, какие же бывают разновидности коллизий?
- Коллизия на дальнем конце (в самом кабеле). Возникает из-за одновременной передачи по одной и той же линии данных двумя станциями.
- Коллизия на ближнем конце (в сетевой карте). Происходит, когда сбоит сетевой адаптер ПК или его драйвер и второй кадр начинается записываться в буфер карты еще до окончания передачи первого.
- Коллизии в активном оборудовании (свитчи, хабы). Возникают из-за перегрузки оборудования передаваемыми кадрами, приводя к ошибкам в адресации и наложению нескольких кадров друг на друга.
Чтобы покончить с обязательной терминологией, давайте рассмотрим еще одно нужное нам словосочетание: домен коллизий (Collision Domain).
Что это такое? Ну, грубо говоря, это - коммутатор (свитч) с подключенными к нему компьютерами. Как на схеме выше. Если чуть более академично то - "область сети одновременная передача двух и более станций которой приводит к образованию коллизии". Коммутатор изолирует большую часть трафика одного сегмента сети от трафика другого сегмента (домена коллизий). В результате, пропускная способность каждого отдельного сегмента увеличивается, а значит, - повышается и суммарная пропускная способность сети.
В идеале, коммутатор должен препятствовать распространению коллизии дальше (не пропускать ее), поэтому им, собственно, и ограничивается этот самый домен коллизий. Другое дело, что на практике это не всегда так и если возникновение коллизии происходит на ближнем конце (причиной является неисправная сетевая карта компьютера), то события могут разворачиваться совсем по другому. Но об этом - во второй (практической) части нашей статьи :)
Какие же есть методы, позволяющие предотвратить ситуацию, когда коллизия в сети может стать массовым явлением, что (со временем) приведет к полной ее неработоспособности?
Здесь для нас (как администраторов) есть две новости: одна - хорошая, а вторая - еще лучше! :)
Первая состоит в том, что механизм арбитража (реагирования) на возникновение коллизии уже встроен в большинство стандартных сетевых технологий! Применимо к наиболее распространенной из них технологии Ethernet, это выглядит следующим образом: один из участников коллизии (при обнаружении, что его передача приводит к столкновению кадров) автоматически генерирует на всю сеть специальную jam-последовательность (jam-signal). Получившие такой сигнал компьютеры знают, что им нужно немедленно прекратить свою передачу данных, сделать случайный временной тайм-аут (backoff time или delay) от 29-ти до 210-ти битовых интервалов, а затем - возобновить работу в штатном режиме. Метод доступа к среде CSMA/CD - в действии!
Примечание: битовый интервал это время, за которое по сети передается наименьшая единица информации - один бит.
На что похожа ситуация, которую мы описали выше? Лично мне она напоминает, когда два человека начинают говорить одновременно. Что происходит в такой ситуации при нормальных условиях? Оба говорящих замолкают, немного выжидают и кто-то первым начинает говорить снова, а второй - молчит и слушает. Потом - отвечает или задает свой вопрос.
Абсолютно идентично и с компьютерами! Их ведь люди создали, вот и "ведут" они себя так же :)
Вторая из новостей такая: с коллизией в сети можно бороться средствами, которые предоставляет нам сетевое оборудование соответствующего класса. Например: вот - один из центральных коммутаторов нашей сети на работе: D-Link DES-3550
Это - 50-ти портовый управляемый свитч стоимостью около 600 долларов. Управляемый означает, что он имеет в сети свой выделенный IP адрес и к нему можно подключиться удаленно (введя пароль доступа). Можно по сети производить конфигурацию устройства, включать или отключать отдельные порты, менять режим их работы, мониторить нагрузку на устройство, управлять скоростью каждого порта (подобным образом провайдеры выдумывают свои тарифные планы) и т.д.
Это - управляемый коммутатор второго уровня. Это значит, что он эффективно работает на втором уровне сетевой модели OSI. Сейчас все более популярными становятся устройства третьего уровня (могут работать уже на сетевом IP уровне). Упрощенно это уже - очень быстро передающие пакеты маршрутизаторы, к тому же - простые в использовании.
Давайте, о самом коммутаторе мы еще поговорим во второй части данной статьи (я покажу Вам подробные скриншоты его админ-зоны, покажу что там к чему), здесь я привел его фотографию для того, чтобы показать с помощью каких устройств можно бороться с коллизиями в сети. Коммутатор D-Link DES-3550 позволяет администратору видеть загрузку каждого из портов в режиме реального времени и если какой-либо из портов перегружен или на нем много коллизий - принять соответствующие меры.
Давайте еще немного поговорим на тему разделяемой среды передачи данных. Это, фактически, - и есть наш сетевой кабель, помните? При таком его кооперативном использовании, возникает задача утилизации среды передачи таким образом, чтобы в каждый отдельный момент времени по кабелю передавались данные только одного передатчика (компьютера).
Пропускная способность кабеля делится между всеми компьютерами сети. Например: если у нас 100 компьютеров и сеть работающая на скорости 100 мегабит в секунду, то в среднем на каждый ПК приходится 1Мбит/с пропускной способности. А если компьютеров становится больше? Время для передачи данных, выделяемое каждому из них, сокращается и, как следствие, - коллизия в сети гарантирована! Добавьте к этому все возрастающее время отклика сети, недовольство пользователей и Вы поймете, что возникновение коллизии - неприятная вещь, с которой надо бороться, а еще лучше - сводить возможность ее возникновения к минимуму еще на этапе планирования сети.
Также нужно четко понимать, что некоторую часть доступной пропускной способности сети отнимает у пользовательских данных широковещательный служебный трафик, который является неотъемлемой частью практически всех стеков протоколов, работающих в локальных сетях.
Несмотря на все эти сложности, принцип разделяемой среды используется достаточно часто. Такой подход, реализован в широко распространенных стандартных технологиях локальных сетей, например: Ethernet, Token Ring, FDDI. Почему? Наверное, из за простоты и дешевизны его конечной реализации (дешево и сердито) :)
Продолжение темы - во второй части статьи.