차량 CAN 통신에서 특정 노드 간 패킷 충돌 시 재전송 규칙의 실제 동작

1. CAN 통신이 차량에서 중요한 이유

현대 차량은 수십 개에서 많게는 100개 이상의 ECU가 네트워크로 연결되어 있습니다.
이 ECU들은 센서, 제어기, 액추에이터 등과 정보를 실시간으로 주고받는데, 이때 사용되는 핵심 네트워크가 바로 CAN(Controller Area Network)입니다.
CAN 통신의 특징은 여러 노드가 동시에 데이터를 전송하려 할 때 생길 수 있는 패킷 충돌(conflict)을 해결하는 능력이 매우 뛰어나다는 점입니다.
이 충돌 상황에서 CAN이 어떻게 재전송하고 우선순위를 결정하는지가 차량 전체 제어 안정성을 좌우합니다.

2. CAN 통신에서 패킷 충돌이 발생하는 이유

CAN 네트워크는 ‘버스(Bus)’라고 불리는 단일 통신 라인을 여러 ECU가 공유합니다.
따라서 다음과 같은 상황에서 충돌이 발생할 수 있어요.

  • 여러 ECU가 동시에 메시지 전송을 시도
  • 센서 이벤트가 동일한 타이밍에 발생
  • 오류 신호 발생 후 재전송 요청이 겹침
  • 네트워크 부하가 높은 구간에서 병목 현상

CAN은 이러한 충돌을 단순히 “패킷 손실”로 처리하지 않고, 우선순위 기반 비트 중재(bit arbitration)로 정교하게 해결합니다.

3. CAN의 패킷 충돌 처리 방식: 비트 중재(Bit Arbitration)

CAN에서는 패킷 충돌이 발생해도 전송이 중단되지 않습니다.
오히려 이 충돌을 이용해 우선순위가 높은 메시지가 먼저 전송되도록 설계돼 있습니다.

CAN 메시지는 ID 값을 가지고 있으며, 숫자가 낮을수록 우선순위가 높습니다.

예:
0x100(우선순위 낮음)
0x020(우선순위 높음)

비트 중재 규칙은 다음과 같습니다.

  1. 여러 노드가 동시에 송신 시작
  2. ID 값이 가장 낮은 메시지가 ‘지배적 비트(dominant)’를 보냄
  3. 우선순위가 낮은 노드는 자신의 비트가 덮어씌워지는 것을 감지
  4. 그 즉시 전송을 중단
  5. 전송을 포기한 노드는 버스가 비면 재전송

즉, CAN 충돌은 단순 충돌이 아니라 우선순위 판정 과정으로 쓰입니다.

4. 우선순위가 낮은 노드의 재전송 규칙

전송 중지된 노드(우선순위가 낮은 메시지)는 무작정 대기하는 것이 아니라, 엄격한 규칙에 따라 재전송합니다.

재전송 규칙

  • 버스가 ‘Idle(유휴)’ 상태가 되는 순간 다시 전송
  • 랜덤 백오프가 아닌, ID 기반 결정적(deterministic) 재전송
  • 충돌 재발 시 동일한 중재 절차 반복
  • 오류 플래그가 없는 충돌은 오류로 취급하지 않음

이 알고리즘 덕분에 CAN은 실시간성이 필요한 차량 환경에서도 매우 안정적으로 동작할 수 있습니다.

5. 충돌이 반복될 경우 발생하는 현상

통신량이 많거나 센서 이벤트가 겹치는 상황에서는 충돌이 반복될 수 있습니다.
이때 아래 문제가 나타날 수 있어요.

  • 낮은 우선순위 메시지가 계속 밀림
  • 제어 신호 지연
  • 네트워크 부하 증가
  • 노드 간 타이밍 불균형

그러나 CAN은 ‘하드 실시간 시스템’이 아닌 ‘소프트 실시간 시스템’이기에, 매우 낮은 우선순위의 메시지는 지연이 허용되는 성격인 경우가 많습니다(예: 편의 기능 데이터).

6. 오류가 포함된 충돌과 정상 중재의 차이

CAN에서 발생하는 ‘충돌’에는 두 종류가 있습니다.

1) 정상 충돌(중재 과정)

  • 여러 노드가 동시에 전송
  • 우선순위 판정 과정
  • 오류로 기록되지 않음

2) 오류 충돌(Error Frame 포함)

  • CRC 오차
  • ACK 오차
  • 비트 오류
  • 폼 오류

이 경우 재전송 절차 자체가 변경됩니다.

오류 충돌에서는 다음이 진행됩니다.

  • 오류 플래그(Error Frame) 전송
  • 모든 노드 전송 중지
  • 정의된 휴지 기간(Intermission) 이후 재전송
  • 특정 노드의 오류 카운터 증가

따라서 정상적 ‘중재 충돌’과 실제 ‘오류’는 완전히 다르게 처리됩니다.

7. 고부하 CAN 네트워크에서의 최적화 전략

최근 차량에서는 ADAS, 센서 증가로 CAN 네트워크 부하가 매우 커지고 있습니다.
그래서 제조사는 충돌 최소화를 위해 다음 전략을 사용합니다.

메시지 우선순위 재설계

  • 엔진 제어, 브레이크는 최상위 ID
  • 편의 기능은 최하위

주기/비주기 메시지 혼합 최적화

  • 비주기 이벤트 메시지의 발생 간격 재조정

CAN FD 도입

  • 데이터 전송량 증가
  • 충돌 빈도 감소

센서 그룹 분리

  • 고부하 ECU를 별도 CAN 라인으로 분리

이러한 설계는 실차에서 매우 실용적인 충돌 억제 방식입니다.

8. 결론

CAN 통신에서 발생하는 패킷 충돌은 단순한 오류가 아니라 우선순위 판정을 위한 정상적인 과정입니다.
비트 중재를 통해 가장 중요한 메시지가 먼저 전송되고, 우선순위가 낮은 메시지는 일정 규칙에 따라 재전송됩니다.
이 정교한 알고리즘 덕분에 차량은 수십 개의 ECU가 동시에 데이터를 주고받아도 안정적으로 작동할 수 있습니다.
CAN 충돌 처리 방식과 재전송 구조를 이해하면 차량 진단, 네트워크 오류 분석, ECU 설계 논리를 훨씬 깊이 있게 이해하는 데 도움이 될 것입니다.