Множественный доступ с контролем несущей
Множественный доступ с контролем несущей (англ. Carrier Sense Multiple Access, CSMA) — это протокол управления доступом к среде передачи данных (MAC-уровень), используемый в компьютерных сетях, в первую очередь с общей шиной (например, Ethernet). Основная идея CSMA заключается в том, что перед отправкой данных узел «прослушивает» (контролирует) среду передачи на наличие несущей (сигнала). Если среда свободна, узел начинает передачу; если занята — ожидает освобождения. CSMA является базовым механизмом для предотвращения коллизий (одновременной передачи двух или более узлов), но сам по себе не гарантирует их отсутствия, поэтому часто дополняется алгоритмами разрешения коллизий, такими как CSMA/CD (с обнаружением коллизий) или CSMA/CA (с предотвращением коллизий).
История
Протокол CSMA был разработан в 1970-х годах в рамках исследовательского проекта по созданию радиосети ALOHAnet (Гавайский университет). Первоначальная версия, известная как ALOHA, предполагала, что узлы передают данные в любой момент, а в случае коллизии повторяют передачу после случайной задержки. Однако этот метод был крайне неэффективен: пропускная способность составляла лишь около 18% от максимальной.
В 1973 году Роберт Меткалф и Дэвид Боггс (Xerox PARC) предложили усовершенствование — протокол CSMA/CD, который лёг в основу технологии Ethernet. В CSMA/CD узел не только прослушивает среду перед передачей, но и продолжает прослушивать её во время передачи, чтобы обнаружить коллизию. При обнаружении коллизии передача немедленно прекращается, и узел ждёт случайное время перед повторной попыткой. Это позволило значительно повысить эффективность сети (до 30–40% при высокой нагрузке).
В 1980-х годах для беспроводных сетей (Wi-Fi) был разработан протокол CSMA/CA, который вместо обнаружения коллизий использует механизмы их предотвращения: узлы обмениваются короткими управляющими кадрами (RTS/CTS) для резервирования канала.
Принцип работы
Основные этапы передачи данных в CSMA
- Прослушивание среды (Carrier Sense). Узел проверяет, есть ли в среде несущая частота (сигнал). Если среда свободна, узел переходит к шагу 2. Если занята, узел переходит в режим ожидания (обычно с использованием алгоритма отсрочки, например, случайной задержки).
- Передача данных. Узел отправляет кадр данных.
- Обработка коллизий (если применимо). В CSMA/CD узел продолжает прослушивать среду во время передачи. Если обнаружена коллизия (сигнал искажается), узел немедленно прекращает передачу и отправляет специальный сигнал «заглушка» (jam signal), чтобы все узлы узнали о коллизии. После этого узел ждёт случайное время (по алгоритму экспоненциальной отсрочки) и повторяет попытку.
Алгоритмы отсрочки
- 1-постоянный CSMA (1-persistent CSMA). Узел прослушивает среду. Если среда свободна, передаёт немедленно. Если занята, продолжает прослушивание и передаёт, как только среда освобождается. При высокой нагрузке это приводит к большому числу коллизий, так как несколько узлов могут одновременно начать передачу после освобождения канала.
- Непостоянный CSMA (non-persistent CSMA). Узел прослушивает среду. Если среда свободна, передаёт. Если занята, ждёт случайное время и затем повторяет прослушивание. Это снижает количество коллизий, но увеличивает задержки.
- p-постоянный CSMA (p-persistent CSMA). Используется в сетях с временными слотами (например, в некоторых версиях Wi-Fi). Узел прослушивает среду. Если среда свободна, с вероятностью p передаёт немедленно, а с вероятностью (1-p) ждёт следующего слота. Если среда занята, ждёт случайное время. Этот алгоритм позволяет балансировать между задержкой и вероятностью коллизий.
Разновидности CSMA
CSMA/CD (Collision Detection)
CSMA/CD — протокол с обнаружением коллизий, используемый в классическом Ethernet (до появления коммутаторов). Узел не только прослушивает среду перед передачей, но и продолжает прослушивание во время передачи. Если обнаружена коллизия (например, по изменению уровня сигнала), передача немедленно прекращается, и узел отправляет jam-сигнал. После этого применяется алгоритм экспоненциальной отсрочки: узел ждёт случайное время, кратное базовому интервалу (slot time), и повторяет попытку. Максимальное количество попыток — 16, после чего кадр отбрасывается.
CSMA/CD эффективен в сетях с общей шиной (например, 10BASE5, 10BASE2), но в современных коммутируемых сетях Ethernet (с полнодуплексным режимом) коллизии не возникают, поэтому CSMA/CD в них не используется.
CSMA/CA (Collision Avoidance)
CSMA/CA — протокол с предотвращением коллизий, используемый в беспроводных сетях (IEEE 802.11, Wi-Fi). В беспроводных средах обнаружение коллизий затруднено (узел не может одновременно передавать и принимать), поэтому применяется механизм резервирования канала:
- Прослушивание среды. Узел проверяет, свободен ли канал (CCA — Clear Channel Assessment).
- Ожидание случайного времени (backoff). Если канал свободен, узел ждёт случайное количество временных слотов (backoff timer), чтобы снизить вероятность одновременной передачи.
- Обмен управляющими кадрами (опционально). Для предотвращения «скрытого узла» (когда два узла не слышат друг друга, но оба могут передавать на третий узел) используется механизм RTS/CTS (Request to Send / Clear to Send). Узел отправляет короткий кадр RTS, а принимающий узел отвечает кадром CTS. Все остальные узлы, услышавшие CTS, приостанавливают передачу на указанное время.
- Передача данных. После успешного обмена RTS/CTS (или после истечения backoff-таймера) узел отправляет кадр данных.
- Подтверждение (ACK). Принимающий узел отправляет кадр подтверждения (ACK). Если ACK не получен, передача считается неудачной и повторяется.
CSMA/CA обеспечивает надёжную передачу в условиях радиопомех и скрытых узлов, но вносит дополнительные задержки из-за обмена управляющими кадрами.
CSMA/CR (Collision Resolution)
CSMA/CR — протокол с разрешением коллизий, используемый в некоторых промышленных сетях (например, CAN-шина). В CAN-шине приоритет сообщений определяется арбитражем: если два узла начинают передачу одновременно, узел с более низким приоритетом (большим значением идентификатора) прекращает передачу, а узел с более высоким приоритетом продолжает. Это позволяет избежать потери данных при коллизиях.
Применение
Ethernet
Классический Ethernet (10 Мбит/с, 100 Мбит/с) на коаксиальном кабеле или витой паре с использованием повторителей (хабов) работал по протоколу CSMA/CD. С появлением коммутаторов (switches) и полнодуплексного режима (каждый узел может одновременно передавать и принимать) коллизии стали невозможны, и CSMA/CD перестал применяться. Однако в современных сетях Ethernet (1 Гбит/с и выше) протокол CSMA/CD может использоваться в полудуплексном режиме (например, для совместимости со старым оборудованием).
Wi-Fi (IEEE 802.11)
Беспроводные сети Wi-Fi используют CSMA/CA. Это связано с тем, что в радиосреде коллизии трудно обнаружить (узел не слышит свою собственную передачу из-за помех). CSMA/CA с механизмом RTS/CTS позволяет эффективно разделять канал между несколькими устройствами, особенно в условиях высокой загрузки.
CAN-шина (Controller Area Network)
CAN-шина, широко используемая в автомобильной и промышленной автоматике, применяет CSMA/CR. Каждый узел может начать передачу в любой момент, но если два узла начинают одновременно, арбитраж по идентификатору сообщения определяет, какой узел продолжит передачу, а какой — прекратит. Это обеспечивает детерминированное поведение и низкие задержки.
Другие применения
- Powerline Communication (PLC) — передача данных по линиям электропередачи (например, HomePlug AV) использует CSMA/CA.
- ZigBee — протокол для беспроводных сенсорных сетей (IEEE 802.15.4) также использует CSMA/CA.
- LoRaWAN — в некоторых режимах использует CSMA для снижения коллизий.
Преимущества и недостатки
Преимущества
- Простота реализации. CSMA не требует централизованного управления (как, например, Token Ring).
- Эффективность при низкой нагрузке. При малом количестве активных узлов задержки минимальны.
- Масштабируемость. CSMA может работать в сетях с большим числом узлов (хотя с ростом нагрузки эффективность падает).
Недостатки
- Коллизии. При высокой нагрузке вероятность коллизий возрастает, что приводит к снижению пропускной способности (особенно в CSMA без дополнительных механизмов).
- Неопределённость задержек. В CSMA/CA и CSMA/CD время доставки данных может варьироваться из-за случайных отсрочек, что делает его непригодным для жёсткого реального времени (например, в промышленных системах управления).
- Проблема «скрытого узла». В беспроводных сетях два узла могут не слышать друг друга, но оба могут передавать на третий узел, что приводит к коллизиям. CSMA/CA с RTS/CTS решает эту проблему, но вносит дополнительные накладные расходы.
Сравнение с другими протоколами
| Протокол | Тип доступа | Обнаружение коллизий | Предотвращение коллизий | Примеры |
|---|---|---|---|---|
| CSMA/CD | Случайный | Да | Нет | Ethernet (классический) |
| CSMA/CA | Случайный | Нет (только подтверждение) | Да (RTS/CTS, backoff) | Wi-Fi, ZigBee |
| CSMA/CR | Случайный | Да (арбитраж) | Нет | CAN-шина |
| Token Ring | Детерминированный | Нет | Нет | Token Ring (IBM) |
| TDMA | Детерминированный | Нет | Нет | GSM, спутниковая связь |
Интересные факты
- Протокол CSMA/CD был запатентован компанией Xerox в 1975 году, но позже стал открытым стандартом (IEEE 802.3).
- В классическом Ethernet минимальная длина кадра (64 байта) была выбрана так, чтобы узел мог обнаружить коллизию до завершения передачи (с учётом максимального времени распространения сигнала по сети).
- В Wi-Fi (IEEE 802.11) используется механизм «виртуального прослушивания» (Virtual Carrier Sense) на основе Network Allocation Vector (NAV), который позволяет узлам резервировать канал на определённое время, даже если они не слышат передачу напрямую.
Источники
- IEEE 802.3-2018 — Standard for Ethernet.
- IEEE 802.11-2020 — Standard for Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.
- Tanenbaum, A. S., Wetherall, D. J. (2011). Computer Networks (5th ed.). Pearson.
- Kurose, J. F., Ross, K. W. (2017). Computer Networking: A Top-Down Approach (7th ed.). Pearson.
- Меткалф, Р., Боггс, Д. (1976). «Ethernet: Distributed Packet Switching for Local Computer Networks». Communications of the ACM, 19(7), 395–404.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →