UDS가 규정하는 진단 요청·응답은 전송 계층과 무관하게 정의되지만, 이를 이더넷 기반 IP 네트워크 위에서 실제로 주고받으려면 그 네트워크에 특화된 전송·라우팅 규약이 있어야 한다. DoIP(Diagnostic communication over Internet Protocol)가 이 역할을 하며, ISO 13400으로 표준화되어 있다 — Part 1(일반 정보·유스케이스), Part 2(전송·네트워크 계층, TCP/UDP/IP 기반), Part 3(IEEE 802.3 기반 물리·데이터링크 계층)으로 나뉜다[1][2][3]. UDS 메시지는 DoIP가 나르는 payload로 실린다.

네트워크 구조

DoIP 프로토콜을 구현하는 호스트를 DoIP entity라 하며, 자신에게만 접근을 제공하는 DoIP node와 자신과 연결된 vehicle subnetwork(IP 기반이 아닌 차량 내 네트워크, 예: CAN)의 ECU까지 접근을 중계하는 DoIP gateway 두 종류로 나뉜다 — vehicle subnetwork는 IP 기반 네트워크에 직접 연결되지 않으므로, 그 안팎을 오가는 데이터는 반드시 연결된 DoIP gateway를 거친다[1]. Activation line이 종단되고 외부 네트워크로의 링크가 종단되는 지점을 DoIP edge node라 하며, 실무에서는 Gateway가 Edge Node를 겸하는 구성이 일반적이다[3].

Vehicle Vehicle subnetwork(CAN) ECU ECU DoIP Gateway (Edge Node) External network External test equipment IP 기반 네트워크 Activation line

외부 진단기(external test equipment)는 IP 기반 네트워크를 거쳐 DoIP entity에 접속해 진단을 수행하는 차량 밖 장치다[1].

활성화 라인

DoIP Edge Node의 이더넷 컨트롤러를 진단기 연결 시점에만 켜는 이유는 두 가지다 — 평소의 전자파 간섭을 줄이고, Edge Node의 대기 전력 소비를 줄이기 위해서다[3].

표준 Wake on LAN(WoL)은 이 용도에 맞지 않는다 — WoL로 컨트롤러를 깨우려면 그 MAC 주소를 미리 알아야 하는데 차량이 정비소에 들어오는 시점에는 이 값을 알 수 없고, WoL의 Magic Packet은 컨트롤러가 프레임 전체를 처리해야 인식되므로 오히려 대기 전류 소비가 늘어난다[3]. 그래서 DoIP는 이더넷 배선과 별도로 Activation line이라는 전용 신호선을 두어 컨트롤러 전원을 직접 제어한다.

이 activation line과 맞물려 DoIP Edge Node의 물리 계층 요구사항도 정해진다 — 100BASE-TX(100Mbit/s)를 지원해야 하고, 100Mbit/s 연결이 성립하지 않는 환경을 위한 폴백으로 10BASE-T(10Mbit/s)도 지원해야 한다[3].

메시지 형식

DoIP 메시지는 8바이트 generic header로 시작한다 — Protocol version(1바이트), Protocol version을 비트 반전한 Inverse protocol version(1바이트), 뒤따르는 데이터의 해석 방식을 가리키는 Payload type(2바이트), 그 데이터의 길이인 Payload length(4바이트) 순이며, 이어서 Payload type에 따라 해석되는 데이터가 붙는다 — Inverse protocol version은 수신 측이 올바른 형식의 DoIP 메시지인지 검증하는 패턴 역할을 한다[2][4].

Protocol version 값은 표준 개정을 반영해 갱신됐다 — 0x02는 ISO 13400-2:2012, 0x03은 ISO 13400-2:2019를 가리킨다[4].

이 헤더와 payload는 UDP나 TCP, 다시 IP, 다시 이더넷 프레임 순으로 캡슐화되어 실려 나간다.

UDS DoIPHeader User data TCP/UDPHeader Data IPHeader Data EthernetHeader Data / Payload CRC 46–1500바이트

Ethernet Header와 CRC 사이의 Data/Payload는 46~1500바이트로 제한된다[5].

Payload type 값 가운데 일부는 진단 메시지 자체를 식별한다[4]:

Payload type이름Connection
0x8001Diagnostic messageTCP
0x8002Diagnostic message positive acknowledgementTCP
0x8003Diagnostic message negative acknowledgementTCP

전송과 라우팅

DoIP는 IANA에 등록된 포트 13400을 두 프로토콜로 나눠 쓴다 — TCP 13400(doip-data)은 진단 메시지 교환에, UDP 13400(doip-disc)은 차량 탐색(vehicle discovery)에 쓰인다[6]. 외부 진단기가 TCP 소켓을 연 직후 곧바로 진단 메시지를 보낼 수는 없다 — 먼저 Routing Activation 요청을 보내 응답을 받아야, 그 소켓 연결에서 특정 Source Address(진단기)·Target Address(ECU) 쌍의 진단 메시지 경로가 활성화된다[1][4].

이후 도착하는 진단 메시지는 순서대로 검증된다 — 소켓에 등록된 Source Address와 일치하는지, Target Address가 알려져 있는지, 메시지 크기가 허용 범위인지, 수신 버퍼가 충분한지, Target Address의 경로가 Routing Activation으로 활성화됐는지를 차례로 확인하고, 하나라도 실패하면 실패 사유별 negative acknowledgement를 보내고 메시지를 폐기한다[4]. 모두 통과하면 DoIP gateway는 UDS 페이로드를 Target Address가 속한 vehicle subnetwork로 중계한다 — 그 하위 네트워크가 CAN이라면 이후 전송은 ISO-TP 몫이다.

참고문헌

[1]
ISO, “ISO 13400-1:2011 — Road vehicles — Diagnostic communication over Internet Protocol (DoIP) — Part 1: General information and use case definition”, 2011.
[2]
ISO, “ISO 13400-2:2025 — Road vehicles — Diagnostic communication over Internet Protocol (DoIP) — Part 2: Transport protocol and network layer services”, 2025.
[3]
ISO, “ISO 13400-3:2016 — Road vehicles — Diagnostic communication over Internet Protocol (DoIP) — Part 3: Wired vehicle interface based on IEEE 802.3”, 2016.
[4]
AUTOSAR, “Specification of Diagnostic over IP, AUTOSAR CP, Release R23-11”, 2023.
[5]
IEEE, “IEEE 802.3-2022 — IEEE Standard for Ethernet”, 2022.
[6]
IANA, “Service Name and Transport Protocol Port Number Registry”. [Online]. Available at: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml