Category: DoIP
DoIP 카테고리에 작성된 글 목록입니다.
DoIP Roadmap
TCP는 붙었는데 진단은 왜 실패할까. DoIP를 연결, 라우팅, 세션, 타임아웃 관점으로 차근차근 읽는 순서입니다.
처음부터 순서대로 읽어도 좋고, 막히는 지점이 분명하다면 해당 묶음부터 바로 읽어도 좋습니다.
입문과 구조
- DoIP 개론, CAN 진단 보다가 처음 보면 헷갈리는 포인트 정리
CAN 진단에 익숙한 상태에서 DoIP를 처음 볼 때 잡아야 할 큰 그림을 정리합니다.
- DoIP 프로토콜 구조 뜯어보기, 헤더와 필드는 어떻게 생겼나
DoIP 패킷을 읽기 위한 header, payload type, payload length의 기본 구조를 봅니다.
- DoIP는 TCP stream이다: recv()만 믿고 파싱하면 깨지는 이유
TCP stream에서 DoIP 메시지를 안정적으로 framing/파싱하는 기본 패턴을 정리합니다.
Discovery와 연결 준비
- DoIP Vehicle Identification, 처음 연결할 때 이거부터 이해하자
DoIP에서 대상 차량이나 ECU를 찾고 다음 연결 단계로 넘어가기 위한 discovery 기본 흐름입니다.
- DoIP Vehicle Discovery가 가끔 안 잡히는 이유
Discovery가 간헐적으로 실패할 때 UDP broadcast, interface, boot timing을 어떻게 봐야 하는지 다룹니다.
- DoIP는 붙었는데 진단이 안 된다: Entity Status/Power Mode로 상태부터 확인하기
Vehicle discovery 이후에 '살아있는지/진단 가능한 상태인지'를 빠르게 가르는 체크 포인트(상태/전원 모드)를 정리합니다.
- DoIP Routing Activation, 여기서 막히는 이유 정리해보자
TCP 연결 이후 왜 Routing Activation이 필요하고, 여기서 왜 자주 막히는지 정리합니다.
Diagnostic Message와 라우팅
- DoIP Diagnostic Message, UDS가 실제로 어떻게 실리는지 보자
UDS 데이터가 DoIP Diagnostic Message 안에 어떻게 실리고 SA/TA가 왜 중요한지 봅니다.
- Routing Activation은 됐는데 첫 UDS가 실패한다: SA/TA와 재연결 순서를 같이 보자
Routing Activation 이후 첫 UDS 요청이 실패할 때 SA/TA와 재연결 순서를 어떻게 봐야 하는지 정리합니다.
- DoIP Gateway 구조를 이해해야 ECU가 보인다
TCP endpoint와 실제 ECU가 다른 gateway 환경에서 logical address와 internal routing을 읽는 방법입니다.
- DoIP Functional Address는 왜 응답이 이상하게 보일까
Functional request에서 여러 ECU 응답, source tracking, timeout policy가 왜 중요한지 정리합니다.
세션과 유지 관리
- DoIP에서 Session Control 먼저 이해해야 하는 이유
연결이 됐어도 ECU 기능이 열리지 않는 이유를 UDS Session Control 관점에서 봅니다.
- DoIP에서 Tester Present 왜 계속 보내는 걸까
Tester Present가 왜 주기적으로 나가고, 진단 세션 유지와 어떤 관계가 있는지 정리합니다.
- DoIP 통신이 가끔 끊긴다: Alive Check / TCP Keepalive / Tester Present를 분리해서 보자
Alive Check, TCP Keepalive, Tester Present를 분리해서 세션 끊김을 분석하는 글입니다.
- DoIP Security Access, 여기서부터 ECU 성격이 확 달라진다
Seed/Key 기반 Security Access가 ECU 정책과 세션 상태에 따라 어떻게 달라지는지 봅니다.
응답과 타임아웃 디버깅
- DoIP timeout 처리, Response Pending 제대로 이해해야 덜 헤맨다
Response Pending 0x78과 timeout 정책을 잘못 보면 정상 ECU도 실패로 보이는 이유를 다룹니다.
- DoIP에서 응답이 이상할 때, Negative Response부터 봐야 한다
UDS Negative Response와 NRC를 보고 통신 문제와 ECU 정책 문제를 구분하는 기본 글입니다.
- DoIP에서 ACK를 받았는데 UDS 응답이 없다: Diagnostic ACK/NACK를 제대로 쓰는 법
DoIP ACK/NACK와 UDS 응답을 분리해서 ACK를 성공으로 오해하지 않도록 정리합니다.
- DoIP Negative Acknowledge, UDS 에러랑은 다르다
DoIP NACK와 UDS 0x7F를 구분해서 parser/protocol 문제와 application 문제를 나눠 봅니다.
Firmware Transfer
- DoIP Firmware Download에서 갑자기 문제가 터지는 이유
Firmware download에서 large payload, TCP stream parser, flash latency, retry state가 왜 터지는지 봅니다.
최근 글
-
Routing Activation은 됐는데 첫 UDS가 실패한다: SA/TA와 재연결 순서를 같이 보자
DoIP에서 Routing Activation까지는 성공했는데 첫 UDS 요청만 간헐적으로 실패하면, ECU 로직보다 먼저 SA/TA와 재연결 이후 상태를 의심해야 한다. ACK/NACK, 무응답, 다른 ECU로 간 것처럼 보이는 증상을 같은 그림으로 정리한다.
-
DoIP는 TCP stream이다: recv()만 믿고 파싱하면 깨지는 이유
DoIP는 UDP처럼 '패킷 단위'로 읽히지 않는다. recv() 결과를 그대로 DoIP 메시지로 간주하면 부하에서 payload length mismatch/NACK/무응답이 터진다. TCP stream 기준으로 DoIP framing을 구현하는 안전한 순서를 정리한다.
-
DoIP는 붙었는데 진단이 안 된다: Entity Status/Power Mode로 상태부터 확인하기
TCP는 붙고 Vehicle Identification도 되는데 Routing Activation/UDS가 안 될 때가 있다. 이때 패킷 필드를 무작정 붙잡기 전에, DoIP의 Entity Status/Power Mode 같은 상태성 정보를 써서 '지금 진단 가능한 상태인지'를 먼저 확인하는 디버깅 흐름을 정리한다.
-
-
DoIP Vehicle Discovery가 가끔 안 잡히는 이유
DoIP Vehicle Discovery가 간헐적으로 실패하는 원인은 UDS보다 UDP broadcast, interface 상태, gateway boot timing, retry 정책, discovery cache 관리에 있는 경우가 많다.
-
DoIP Gateway 구조를 이해해야 ECU가 보인다
DoIP에서는 TCP 연결 endpoint와 실제 진단 대상 ECU가 다를 수 있다. Gateway 기반 차량 네트워크에서 logical address, routing activation, internal forwarding, response source tracking을 어떻게 봐야 하는지 정리한다.
-
DoIP Firmware Download에서 갑자기 문제가 터지는 이유
DoIP firmware download에서는 작은 진단 요청 때 보이지 않던 TCP stream 처리, large payload, timeout, flash latency 문제가 한꺼번에 드러난다. TransferData 흐름과 parser 안정성 관점에서 정리한다.
-
DoIP Negative Acknowledge, UDS 에러랑은 다르다
DoIP Negative Acknowledge와 UDS Negative Response는 완전히 다른 레이어의 신호다. DoIP NACK는 transport/protocol 문제이고, UDS 0x7F는 diagnostic application 문제라는 점을 로그와 파서 관점에서 정리한다.
-
DoIP에서 ACK를 받았는데 UDS 응답이 없다: Diagnostic ACK/NACK를 제대로 쓰는 법
DoIP에서 Diagnostic ACK를 봤는데 UDS 응답이 없으면 보통 'ACK를 UDS 응답으로 착각'한 경우가 많다. DoIP ACK/NACK는 DoIP 레벨 신호고, UDS 응답(Positive/Negative/NRC)은 별개다. ACK/NACK를 디버깅 힌트로 쓰는 관점을 정리한다.
-
DoIP Functional Address는 왜 응답이 이상하게 보일까
DoIP functional request는 특정 ECU 하나를 대상으로 하는 physical request와 다르다. 하나의 요청에 여러 ECU가 응답할 수 있고, 응답 순서도 보장되지 않는다. 그래서 response collection, source tracking, timeout policy가 중요하다.
-
DoIP 통신이 가끔 끊긴다: Alive Check / TCP Keepalive / Tester Present를 분리해서 보자
DoIP는 TCP라서 붙기만 하면 끝인 줄 아는데, 실무에서는 가만히 두면 어느 순간 세션이 끊기는 경우가 많다. Alive Check, TCP Keepalive, UDS Tester Present는 목적이 다르다. 끊김을 줄이려면 이 셋을 분리해서 설계해야 한다.