DoIP (Diagnostics over Internet Protocol) — ISO 13400에 정의된 차량 진단 데이터 전송 프로토콜. 기존 CAN TP 기반의 저속 진단 통신을 Ethernet + TCP/IP 스택으로 대체하여, UDS 진단 메시지를 고속·대용량으로 전달한다. 차량 Ethernet이 차량 진단 분야에 최초로 적용된 주요 계기.
표준 구성
DoIP는 ISO 13400과 ISO 14229의 조합으로 동작한다.
| 표준 | 범위 |
|---|---|
| ISO 13400-2 | Network / Transport Layer — TCP·UDP·IP 기반 DoIP 메시지 전송 |
| ISO 13400-3 | Physical / Data Link Layer — IEEE 802.3 기반 유선 차량 인터페이스 |
| ISO 14229 | 상위 진단 프로토콜 — DoIP가 운반하는 페이로드 |
DoIP는 진단 세션의 전송 수단만 담당하며, 진단 서비스 의미론은 UDS가 정의한다.
Ethernet Physical Layer 요구사항
DoIP Edge Node가 잡음 환경에서 진단기와 안정적으로 연결되기 위한 요구사항.
- 100BASE-TX 필수 — 최대 100 Mbit/s, 케이블 길이 100 m.
- 10BASE-T 필수 — 최대 10 Mbit/s, 케이블 길이 100 m.
- 진단기와 DoIP Edge Node PHY 사이 최대 케이블 길이로 구현 요구사항 정의.
Activation Line
Ethernet 컨트롤러를 선택적으로 활성/비활성화하는 하드웨어 제어 라인. WoL(Wake on LAN)의 대안으로 도입.
도입 목적
- 전자파 간섭(EMI) 감소 — 미사용 시 Ethernet 컨트롤러 OFF.
- DoIP Edge Node의 전력 소비 감소.
WoL의 단점
WoL(Wake on LAN)을 대신 쓰지 않는 이유:
- 깨우기 위한 MAC 주소가 필요.
- Magic Packet 수신을 지속 감시해야 하므로 전류 소모가 큰 Ethernet 컨트롤러가 계속 동작해야 함.
Activation Line 방식은 물리 선 한 가닥으로 컨트롤러 파워를 직접 제어하므로 이 두 문제를 회피.
전기 파라미터
| 파라미터 | Min | Typical | Max |
|---|---|---|---|
| 9 kΩ (−1%) | 10 kΩ (+1%) | - | |
| 0 mA | 1.3 mA | 2 mA | |
| 510 Ω (−5%) | 1 kΩ (+5%) | - | |
| 0 V | - | 16 V | |
| (t ≤ 60 s) | −14 V | - | 28 V |
- 면 Ethernet 비활성.
- 1.3 mA는 , 일 때의 예시.
DoIP Header 구조
DoIP Frame은 Generic DoIP Header + Payload로 구성된다.
| 필드 | 크기 (Byte) | 설명 |
|---|---|---|
| Protocol Version | 1 | DoIP 패킷의 프로토콜 버전 |
| Inverse Protocol Version | 1 | Protocol Version의 비트 반전값 — 수신 검증 패턴 (= V XOR 0xFF) |
| Payload Type | 2 | 페이로드 해석 방법 (진단 메시지, 게이트웨이 명령 등) |
| Payload Length | 4 | Payload 바이트 수 (헤더 제외, 최대 4 294 967 295) |
| Data | 가변 | Payload Type별 메시지 본문 |
Protocol Version 값
| 값 | 의미 |
|---|---|
| 0x00 | Reserved |
| 0x01 | DoIP ISO/DIS 13400-2:2010 |
| 0x02 | DoIP ISO 13400-2:2012 |
| 0x03~0xFE | Reserved |
| 0xFF | Vehicle Identification Request 메시지 기본값 |
Inverse Protocol Version은 V XOR 0xFF (예: 0x01 → 0xFE) — 노이즈·비정상 프레임 조기 검출용.
주요 Payload Type (진단 메시지)
| 값 | 이름 | 포트·프로토콜 |
|---|---|---|
| 0x8001 | Diagnostic message | TCP_DATA |
| 0x8002 | Diagnostic message positive acknowledgement | TCP_DATA |
| 0x8003 | Diagnostic message negative acknowledgement | TCP_DATA |
진단 메시지인 경우 Data 필드에는 UDS 메시지가 실린다.
Transport Layer 사용
TCP — 진단 메시지 송수신
- 포트 13400 (TCP_DATA).
- 진단 메시지(0x8001)·ACK(0x8002/0x8003)는 TCP 세션을 통해 전달.
- 세션 확립: ARP로 MAC 획득 → TCP 3-way Handshake → TCP_DATA 소켓 연결.
UDP — 차량 식별과 제어
- 포트 13400 (UDP_DISCOVERY).
- 외부 진단기 → DoIP Entity로 차량 정보 요청·제어 명령 전달.
- 외부 진단기가 보내는 UDP 패킷의 목적지 포트는 고정 13400, 소스 포트는 동적 할당.
| UDP 포트 | 번호 | 용도 |
|---|---|---|
| UDP_DISCOVERY | 13400 | 외부 진단기가 DoIP Entity로 차량 정보 요청·제어 명령 전송 (목적지). 소스로는 사용 가능하지만 동적 할당. |
| UDP_TEST_EQUIPMENT_REQUEST | 동적 할당 | 외부 진단기가 동적 할당. 메시지 전송 시 소스 포트, 응답 시 목적지 포트로 사용. |
TCP가 신뢰성 있는 바이트 스트림을 제공하므로 진단 메시지는 세그멘테이션으로 길이 제한 없이 전송 가능. 반면 UDP는 차량 탐색·알림 용도로 가볍게 사용.
Diagnostic Routing
진단 테스터와 CAN/FlexRay 기반 ECU 사이의 상호 운용을 위해 DoIP Edge Node(게이트웨이)가 수행하는 라우팅.
DoIP ↔ CAN ECU 라우팅
[Tester] ──DoIP/TCP──→ [Gateway] ──CAN──→ [CAN ECU]- TCP 소켓 연결 — Tester와 Gateway 사이.
- Gateway가 진단 라우팅 수행 — ECU의 TxID로 메시지 전송, RxID로 응답 수신.
- 응답 Forwarding — Gateway가 CAN ECU의 응답을 Tester로 전달.
구현 절차:
- ARP로 MAC 해석 — Tester(192.168.1.1)가 Gateway IP(192.168.1.2)의 MAC 획득.
- TCP 3-way Handshake → TCP_DATA 소켓 연결.
- Routing Activation 요청/응답 교환.
- Tester가 진단 메시지 전송 (예: Tester 0x200 → UDS ECU 0x203, UDS
10 01). - Gateway가 Positive Acknowledge 전송.
- ECU 응답(예:
06 50 01 F4 09 C4 00, 길이 6) → Gateway가 Tester로 Forward.
DoIP ↔ Ethernet ECU 라우팅
[Tester] ──DoIP/TCP──→ [Ethernet ECU]Gateway 경유 없이 Tester가 Ethernet ECU와 직접 TCP 세션을 맺는다.
- Tester(192.168.1.1)가 ECU(192.168.1.3) IP의 MAC을 ARP로 획득.
- TCP 3-way Handshake → TCP_DATA 소켓 연결.
- Routing Activation.
- Tester 진단 메시지 전송 (예: Tester 0x200 → DoIP ECU 0x205, UDS
10 03). - ECU 응답 Positive Acknowledge.
- ECU 처리 후 응답 (예:
50 03 11 D4 08 C7 62).
Routing Table
Gateway가 DoIP Target Address(TA)를 CAN 네트워크·CAN ID로 매핑하기 위해 보관.
| TA | Network | Rx ID | Tx ID |
|---|---|---|---|
| 0x201 | CAN 1 | 0x601 | 0x701 |
| 0x202 | CAN 2 | 0x602 | 0x702 |
| 0x203 | CAN 1 | 0x603 | 0x703 |
Gateway는 수신한 DoIP 메시지의 TA로 행을 조회하여 해당 CAN 네트워크에 TxID로 송신, 응답은 RxID로 수신하여 Tester에게 되돌린다.
성능 분석 (진단 처리 시간)
같은 진단 시퀀스를 경로별로 비교하면 Gateway 경유가 2 배 이상의 지연을 초래한다.
| 경로 | 구성 | Total 처리 시간 |
|---|---|---|
| DoIP ↔ CAN ECU | T_tester_gw + T_gw_process + T_gw_ecu + T_ecu_process + T_ecu_gw + T_gw_process_rev + T_gw_tester | 3129.2 µs (최대 5049.2 µs) |
| DoIP ↔ Ethernet ECU | T_tester_ecu + T_ecu_process + T_ecu_tester | 1011.2 µs |
- T_gw_ecu / T_ecu_gw는 CAN 통신 속도에 의해 결정되므로 T_total_can은 CAN 전송률에 따라 변동.
- Zonal 구조로 ECU를 Ethernet화하면 진단 처리 시간이 약 3배 단축 가능.