CSMA/CD
CSMA/CD (Carrier Sense Multiple Access with Collision Detection — множественный доступ с контролем несущей и обнаружением коллизий) — это протокол управления доступом к среде передачи данных в компьютерных сетях, использующий метод случайного доступа. Он предназначен для предотвращения и разрешения конфликтов (коллизий), возникающих при одновременной передаче данных несколькими устройствами в общей среде, например, в сегменте Ethernet на коаксиальном кабеле или витой паре. CSMA/CD является основой работы классических сетей Ethernet (стандарты IEEE 802.3) до появления коммутируемых сетей и полнодуплексного режима.
История
Протокол CSMA/CD был разработан в начале 1970-х годов в исследовательском центре Xerox PARC (Palo Alto Research Center) в рамках проекта создания первой локальной сети Ethernet. Основная идея заключалась в том, чтобы обеспечить эффективный доступ к общей среде передачи данных для множества устройств, избегая централизованного управления. Первая реализация Ethernet, предложенная Робертом Меткалфом и Дэвидом Боггсом, использовала коаксиальный кабель, где все узлы подключались к одной шине.
В 1980 году компании DEC, Intel и Xerox опубликовали спецификацию Ethernet DIX (Digital-Intel-Xerox), которая закрепила использование CSMA/CD. В 1983 году этот протокол был стандартизирован Институтом инженеров по электротехнике и электронике (IEEE) как часть стандарта IEEE 802.3. До середины 1990-х годов CSMA/CD был доминирующим методом доступа в локальных сетях Ethernet, работающих в полудуплексном режиме. С широким внедрением коммутаторов (switches) и полнодуплексной передачи, где коллизии невозможны, CSMA/CD утратил свою актуальность для большинства современных сетей, но остаётся важной частью истории сетевых технологий и используется в устаревшем оборудовании или при работе в полудуплексном режиме.
Принцип работы
CSMA/CD основан на четырёх последовательных этапах: прослушивание несущей, передача данных, обнаружение коллизии и повторная передача после случайной задержки.
1. Контроль несущей (Carrier Sense)
Перед началом передачи данных устройство (узел) проверяет, свободна ли среда передачи. Если на кабеле присутствует электрический сигнал (несущая частота), устройство ждёт, пока среда освободится. Если среда свободна, устройство начинает передачу кадра данных.
2. Множественный доступ (Multiple Access)
Любое устройство в сети может начать передачу в любой момент, если среда свободна. Это создаёт риск одновременной передачи несколькими узлами, что приводит к коллизии.
3. Обнаружение коллизий (Collision Detection)
Во время передачи устройство постоянно контролирует уровень сигнала в среде. Если два или более узла начинают передачу одновременно, их сигналы накладываются, вызывая превышение допустимого уровня напряжения (или искажение сигнала). Устройство обнаруживает коллизию, сравнивая передаваемые данные с принимаемыми. При обнаружении коллизии передача немедленно прекращается.
4. Обработка коллизий
После обнаружения коллизии устройство отправляет в среду специальный сигнал «jam» (зашумление) длительностью 32 или 48 бит, чтобы гарантировать, что все остальные узлы также обнаружат коллизию. Затем устройство ожидает случайный промежуток времени (backoff) перед повторной попыткой передачи. Длительность задержки вычисляется по алгоритму двоичной экспоненциальной задержки (Binary Exponential Backoff):
- После первой коллизии задержка выбирается случайным образом из интервала от 0 до 2^1-1 (0 или 1) временных слотов (slot time).
- После второй коллизии — из интервала от 0 до 2^2-1 (0–3) слотов.
- После n-й коллизии — из интервала от 0 до 2^n-1 слотов, вплоть до 10-й коллизии (максимальный интервал 0–1023 слотов).
- После 16-й коллизии передача кадра считается неудачной, и устройство сообщает об ошибке вышестоящему протоколу.
Характеристики и ограничения
Время обнаружения коллизий
Ключевым параметром CSMA/CD является минимальная длина кадра (64 байта для Ethernet). Она должна быть такой, чтобы коллизия была обнаружена до завершения передачи. Если кадр слишком короткий, передатчик может закончить отправку до того, как сигнал коллизии вернётся от удалённого узла. Это ограничение определяет максимальный диаметр коллизионного домена (расстояние между двумя самыми удалёнными узлами) — для Ethernet 10 Мбит/с он составляет около 2500 метров (с учётом повторителей).
Пропускная способность
CSMA/CD эффективен при низкой нагрузке на сеть, когда коллизии редки. При увеличении числа активных узлов и объёмов трафика частота коллизий растёт, что приводит к снижению полезной пропускной способности (так называемая «деградация производительности»). При высокой нагрузке сеть может тратить до 50% времени на обработку коллизий и повторные передачи.
Полудуплексный режим
CSMA/CD работает только в полудуплексном режиме, когда устройство не может одновременно передавать и принимать данные. В современных сетях с коммутаторами используется полнодуплексный режим, где коллизии исключены за счёт отдельных каналов для приёма и передачи.
Классификация и варианты
CSMA/CD является разновидностью более общего протокола CSMA (Carrier Sense Multiple Access). Существуют и другие модификации:
- CSMA/CA (Collision Avoidance) — используется в беспроводных сетях Wi-Fi (IEEE 802.11). Вместо обнаружения коллизий (которое в радиосреде затруднено) применяется механизм предотвращения коллизий: устройство перед передачей отправляет короткие служебные кадры (RTS/CTS) для резервирования среды.
- CSMA/CR (Collision Resolution) — используется в некоторых промышленных сетях (например, CANbus), где коллизии разрешаются на основе приоритетов, а не случайных задержек.
Применение
Основное применение CSMA/CD — классические сети Ethernet на коаксиальном кабеле (10BASE2, 10BASE5) и витой паре (10BASE-T) в полудуплексном режиме. До середины 1990-х годов CSMA/CD был стандартом для локальных сетей офисов, учебных заведений и промышленных предприятий. С появлением коммутаторов и полнодуплексного режима CSMA/CD утратил практическое значение, но продолжает использоваться в:
- Устаревшем оборудовании (например, концентраторы-хабы).
- Симуляторах и лабораторных стендах для изучения сетевых технологий.
- Некоторых промышленных протоколах (например, EtherNet/IP в полудуплексном режиме).
Критика и недостатки
Основные недостатки CSMA/CD:
- Неэффективность при высокой нагрузке — частые коллизии снижают пропускную способность.
- Ограничение на расстояние — максимальный диаметр коллизионного домена жёстко ограничен временем распространения сигнала.
- Отсутствие приоритетов — все устройства равны, что делает протокол непригодным для приложений, требующих гарантированной задержки (например, голосовая связь или управление в реальном времени).
- Сложность масштабирования — добавление новых узлов увеличивает вероятность коллизий.
С появлением коммутируемых сетей и полнодуплексного режима эти проблемы были решены, и CSMA/CD постепенно вышел из активного использования.
Интересные факты
- Алгоритм двоичной экспоненциальной задержки был вдохновлён методом разрешения конфликтов в радиоэфире, использовавшемся в сети ALOHAnet на Гавайях.
- Стандарт IEEE 802.3 предусматривает, что после 16 коллизий кадр отбрасывается, а вышестоящий протокол (например, TCP) отвечает за повторную передачу на более высоком уровне.
- В ранних версиях Ethernet (10 Мбит/с) минимальная длина кадра составляла 64 байта, что позволяло обнаруживать коллизии на расстоянии до 2500 метров при использовании 4 повторителей.
- CSMA/CD часто называют «слушай перед тем, как говорить, и слушай, когда говоришь».
Источники
- IEEE Standard 802.3-2018 (Ethernet).
- Tanenbaum A., Wetherall D. «Computer Networks» (5th edition), 2011.
- Меткалф Р., Боггс Д. «Ethernet: Distributed Packet Switching for Local Computer Networks» (Communications of the ACM, 1976).
- Stallings W. «Data and Computer Communications» (10th edition), 2014.
- Олифер В., Олифер Н. «Компьютерные сети. Принципы, технологии, протоколы» (5-е издание), 2016.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →