DoIP 차량 진단 프로토콜 총정리

이전 블로그 글인 UDS overview에서 UDS가 CAN, 이더넷(Ethernet), FlexRay, LIN과 같은 다양한 통신 계층과 함께 사용될 수 있다고 언급했습니다. 이 글에서는 UDS가 이더넷 상에서 어떻게 동작하는지, 흔히 DoIP(Diagnostic over IP)라고 불리는 기술에 초점을 맞춥니다.

DoIP Overview

왜 UDSonCAN 등이 아닌 IP 기반의 UDS를 사용하는지 궁금하실 수 있습니다:

  • 차세대 차량 E/E 시스템은 이더넷을 차량 내 네트워크 백본으로 사용합니다.
  • 이더넷은 훨씬 더 높은 대역폭과 성능을 제공합니다.
  • 클라우드 및 원격 진단 작업과의 유연성, 확장성 및 호환성을 제공합니다.

DoIP(Diagnostic over IP)에 대한 정보를 제공하는 표준 사양은 다음과 같습니다:

  • ISO 14229-5: UDS 서비스에 대한 IP 전용 요구사항을 명시합니다.
  • ISO 13400 (Part 1–4): 트랜스포트, 네트워크, 데이터 링크 및 물리 계층을 포괄하는 DoIP 프로토콜을 정의합니다.

I. DoIP 아키텍처 개요

진단 기능은 차량 개발부터 서비스 단계까지 다양한 사용 사례에서 활용됩니다:

  • 차량/ECU 엔지니어링 (개발)
  • 차량/ECU 제조 (생산 공장, 조립 라인)
  • 서비스 (프랜차이즈 대리점, 애프터마켓 정비소)
  • 법적 검사 (배출가스 검사, 안전 검사)

⟹ DoIP는 다양한 통신 시나리오와 가능한 네트워크 구성(예: 직접 또는 간접, 1:n(테스트 장비) 대 1:n(DoIP 인스턴스))을 포괄해야 합니다.

DoIP network topology
일반적인 네트워크 토폴로지

위의 네트워크 구성 설정을 보면, UDS 애플리케이션 작동을 지원하기 위해 차량 내 DoIP 인스턴스와 외부 테스트 장비가 식별, 대상 노드 조회 또는 서브 네트워크 라우팅 제공과 같은 통신 채널 설정 핵심 기능을 제공해야 함을 명확히 알 수 있습니다. DoIP 네트워크의 일반적인 DoIP 엔티티는 다음과 같습니다:

  • Edge (엣지): 전체 차량과 외부 테스트 장비 간의 네트워크 인터페이스 역할을 하며, OBD-II 커넥터나 무선 인터페이스를 통한 물리적 진입점을 제공하고, 차량 DoIP 네트워크의 방화벽 역할을 수행하며, 외부 테스트 장비의 진단 메시지를 내부 차량 네트워크로(또는 그 반대로) 라우팅(애플리케이션 레벨)합니다.
  • Gateway (게이트웨이): 내부 라우팅(네트워크 레벨)을 제공하고 서브 네트워크 통신을 용이하게 하며, 외부 도구와 반드시 직접 연결될 필요는 없습니다.
  • Node (노드): 요청된 진단 기능을 통신하고 수행합니다 (참고: 게이트웨이(라우팅)를 통해 간접적으로 또는 외부 테스트 장비와 직접 P2P 연결을 통해 진단 서비스를 제공할 수 있어야 합니다).

예를 들어, 모든 IP 기반 네트워크가 IPv6를 사용하고, 생산용 외부 장비가 IPv4를 통해서만 차량의 DoIP Edge 노드와 통신을 지원한다고 가정해 봅시다. 이 경우 ECU A.2를 개발하는 동안 다음 중 하나를 수행할 수 있습니다:
- 대상 ECU에 직접 연결을 설정하는 임시 외부 테스트 장비(테스터)를 구현하거나
- 개발 중인 ECU와 실제 생산 외부 테스트 장비 간의 상호 작용을 위한 라우팅을 제공하는 임시 Edge 노드 시뮬레이션을 구현합니다.
CAN 서브 네트워크에 있는 ECU에도 동일한 접근 방식을 적용합니다.


II. DoIP 프로토콜 스택

DoIP OSI layer
DoIP module - OSI layers

다이어그램에서 볼 수 있듯이, DoIP는 표준화된 IP 통신 스택을 활용하여 이더넷 기반 진단을 가능하게 합니다. 핵심 트랜스포트 프로토콜(TCP/UDP)과 네트워크 프로토콜(IPv4/IPv6)을 사용하며, IP 네트워크에서의 일반적인 상태 검사, 주소 할당 및 주소 확인을 위한 보조 컴포넌트들을 함께 사용합니다.

DoIP는 미래를 대비하고 이점(링크 로컬 IP 주소 할당, 라우터를 통한 빠른 포워딩 등)을 활용하기 위해 IPv6와 함께 사용하도록 고안되었습니다. IPv4 및 관련 모듈은 하위 호환성 목적입니다.

DoIP AUTOSAR layer
DoIP module - AUTOSAR architecture

참고: IETF RFC 표준에 정의된 모든 기능이 필수적인 것은 아니며 OEM 사양에 따라 다릅니다. 이 글은 ISO 13400-2:2012에 정의된 비보안 DoIP(TCP 포트 13400)에 초점을 맞춥니다.

II.1. 주소 확인 및 할당 (Address resolution and assignment)

통신을 설정하기 위해 노드는 IP 주소를 획득하고 IP 주소를 MAC 주소로 변환(resolve)해야 합니다.

메커니즘 설명
정적으로 사전 구성된 IP 주소 대부분의 차량 ECU 내부 IP 인터페이스는 정적으로 구성됩니다.
DHCP / DHCPv6 동적으로 획득하며 가장 높은 우선순위를 가집니다.
AutoIP / SLAAC 임시 링크 로컬 주소를 자동 할당하는 대체 메커니즘입니다 (예: 169.254.x.x).

II.2. 데이터 전송 (Data transportation)

Transmission Control Protocol (TCP) User Datagram Protocol (UDP)
- 진단 데이터 교환을 위한 주 트랜스포트 프로토콜
- 전용 포트 TCP_DATA (13400) 사용
- 동시 진단 세션을 위해 n+1개의 TCP 소켓 지원 필수
- 주로 차량 발견, 식별 단계 및 상태 조회에 사용
- 수신 대기 및 자발적 알림 포트 UDP_DISCOVERY (13400)
- 데이터그램당 1개의 DoIP 메시지만 전송

III. DoIP 기능

III.1 메시지 구조

TCP나 UDP를 통해 전송되거나 수신되는 모든 DoIP 메시지는 동일한 일반 헤더(Generic Header)를 사용합니다.

DoIP msg structure

페이로드 유형 메시지 종류 주요 역할
0x0001 ~ 0x0004 차량 식별 요청 / 알림 응답 UDP를 통한 네트워크 상의 차량 탐색 및 정보 브로드캐스트
0x0005 ~ 0x0006 라우팅 활성화 요청 / 응답 TCP 연결 후 진단 데이터를 보내기 위한 통신 권한(로그인) 획득
0x0007 ~ 0x0008 Alive Check 요청 / 응답 연결된 TCP 소켓이 유효한지 주기적으로 확인하여 세션 유지
0x4001 ~ 0x4004 엔티티 상태 및 전원 모드 확인 버퍼 크기, TCP 한도 및 차량의 진단 준비 상태(Ready) 확인
0x8001 ~ 0x8003 진단 메시지 (UDS) 및 확인 실제 UDS (ISO 14229) 진단 데이터 페이로드 전송 및 수신 확인

III.2 차량 발견 및 식별 브로드캐스트 (UDP 채널)

이더넷 통신이 링크업되고 IP 주소가 할당되면, 진단 장비가 UDP 브로드캐스트로 차량을 찾고(요청), 차량은 자신의 차대번호(VIN), 논리 주소(Logical Address) 등을 응답하여 존재를 알립니다.

III.3 TCP 연결 설정 및 라우팅 활성화

테스터가 대상 차량을 확인하면 TCP 연결(3-Way Handshake)을 맺습니다. 이후 본격적인 통신 권한을 얻기 위한 일종의 로그인 과정인 '라우팅 활성화(Routing Activation, 0x0005)' 요청을 보냅니다.

  • 0x10: 라우팅 성공적으로 활성화됨
  • 0x04: 인증 누락으로 인한 거부
  • 0x06: 지원되지 않는 라우팅 활성화 유형

III.4 진단 메시지 전송 및 세션 관리

라우팅 활성화가 완료되면 본격적인 UDS 진단 메시지(0x8001)가 TCP를 타고 오고 갑니다. 안정적인 통신을 위해 다음 기능이 백그라운드에서 동작합니다:

  • Alive Check 메커니즘: 차량은 통신이 없는 소켓이 아직 유효한지 테스터에게 찔러보아 응답이 없으면 연결을 해제하고 리소스를 확보합니다.
  • 차량 준비 상태 확인: 이더넷 통신은 전력을 많이 소모하므로 평소에는 절전 모드에 있습니다. 테스터는 UDS 요청 전 전원 모드를 확인(0x4003)합니다.
  • 이더넷 인터페이스 활성화 라인: OBD-II 단자의 특정 핀(Activation Line)에 높은 전압이 걸리면 이더넷 PHY가 물리적으로 깨어나 통신을 준비합니다.

[Summary]

실제 자동차 개발 환경에서 대부분의 DoIP 구현 복잡성은 방화벽과 라우팅, 보안 인증을 담당하는 외부와 맞닿은 Edge 노드(게이트웨이)에 집중됩니다. 반면 차량 내부의 ECU(Node)들은 표준화된 DoIP 소프트웨어 스택만 올리면 큰 수정 없이 통신이 가능한 구조입니다.