버스 네트워킹에서 여러 노드가 공유 매체를 나눠 쓰려면 bus access, 즉 누가 언제 매체를 점유할 수 있는지를 정하는 규칙이 필요하다. 이 방식은 프로토콜마다 크게 다르며, 크게 이벤트 구동·마스터-슬레이브·시간 동기·논리 링(logical ring) 네 갈래로 나뉜다.
| 방식 | 메커니즘 | 예시 |
|---|---|---|
| 이벤트 구동 | 아무 노드나 유휴 상태의 버스에 접근하고, 충돌 시 우선순위 기반 비트단위 중재로 해소 | CAN |
| 마스터-슬레이브 | 마스터 노드가 스케줄에 따라 요청을 보내고, 슬레이브는 요청에만 응답 | LIN |
| 시간 동기(TDMA) | 각 노드에 고정된 시간 슬롯을 할당, 접근은 순전히 경과 시간으로 결정 | FlexRay |
| 논리 링 | 전송 권한이 각 노드의 논리적 후속 노드로 순차 전달 | OSEK NM |
CAN은 이벤트 구동 방식을 쓴다. 버스가 유휴 상태이면 어떤 노드든 즉시 전송을 시작할 수 있고, 둘 이상의 노드가 동시에 전송을 시작하면 식별자를 이용한 무손실 비트단위 중재(nondestructive bitwise arbitration)로 충돌을 해소한다 — 더 높은 우선순위(더 작은 식별자 값)를 가진 메시지가 살아남고, 이 과정에서 정보도 시간도 유실되지 않는다[1][2]. 이 비트단위 중재가 실제로 어떻게 진행되는지는 Bitwise Arbitration에서 다룬다.
Warning
CAN의 이 방식은 종종 “CSMA/CA”로 잘못 소개된다. CSMA/CA(Collision Avoidance)는 충돌을 사전에 피하려 무작위 대기시간을 두는 Wi-Fi(IEEE 802.11) 계열 방식이고, CAN이 실제로 쓰는 방식은 공식 문서가 “CSMA/CD+AMP”(Collision Detection + Arbitration on Message Priority)라 부르는, 충돌이 나면 비트단위로 즉시 해소하는 방식이다[2].
LIN은 마스터-슬레이브 방식이다. 하나의 마스터 노드가 스케줄 테이블에 따라 헤더를 전송해 통신을 개시하고, 슬레이브 노드들은 자신에게 할당된 헤더에 대해서만 응답을 실어 보낸다[3].
FlexRay는 시간 동기(TDMA) 방식이다. 반복되는 통신 주기(communication cycle) 안에서 각 노드에 고정된 시간 슬롯(static segment)이 미리 할당되고, 접근 권한은 그 노드가 보낼 데이터가 있는지가 아니라 순전히 경과 시간으로 결정된다[4].
OSEK NM이 예시로 드는 논리 링 방식은 전송 권한을 명시적으로 전달한다는 점에서 마스터-슬레이브·TDMA와 다르다. 각 노드는 네트워크 전역에 동기화된 논리적 순번(logical successor)을 가지며, 전송 권한 구실을 하는 ring message를 자신의 순번이 왔을 때 수신한 노드만 그 시간창에서 자기 데이터를 실어 다음 노드로 전달한다[5].