Tag: DoIP
All the articles with the tag "DoIP".
-
DoIP에서 NRC 0x31이 뜬다: DID와 Routine ID 범위를 세션 문제와 나눠 보자
DoIP에서 UDS 요청 후 NRC 0x31 Request Out Of Range가 오면 통신 실패보다 요청한 DID, Routine ID, sub-function, 세션별 지원 범위를 먼저 확인해야 한다. 0x22, 0x13과 헷갈리지 않도록 서비스 범위와 ECU 상태 조건을 분리해 보는 디버깅 순서를 정리한다.
-
DoIP에서 NRC 0x22가 뜬다: 조건 미충족을 통신 timeout처럼 보지 말자
DoIP에서 UDS 요청 후 NRC 0x22 Conditions Not Correct가 오면 TCP timeout이나 Routing Activation 문제가 아니라 ECU가 현재 상태에서 그 서비스를 수행할 조건이 아니라고 보는 편이 빠르다. 세션, Security Access, 전원 모드, Tester Present, 이전 작업 상태를 함께 확인하는 디버깅 순서를 정리한다.
-
DoIP에서 NRC 0x13이 뜬다: 메시지 길이 오류를 TCP 조각 문제로 착각하지 말자
DoIP에서 UDS 요청은 ECU까지 도착하는데 NRC 0x13 Incorrect Message Length or Invalid Format이 반복되면 TCP 조각이나 Routing Activation보다 먼저 DoIP Diagnostic Message 길이와 UDS 서비스별 payload 길이를 나눠 봐야 한다. Generic Header length, SA/TA, UDS payload 경계를 분리해 확인하는 디버깅 순서를 정리한다.
-
-
DoIP에서 한동안 가만히 두면 첫 요청만 timeout 난다: 살아 있는 것처럼 보이는 TCP socket을 먼저 의심하자
DoIP에서 Routing Activation까지는 정상처럼 보였는데 몇 분 또는 몇십 분 유휴 후 첫 UDS 요청만 timeout처럼 사라지면, ECU보다 먼저 이미 끊긴 TCP socket을 앱이 계속 살아 있다고 믿는 상태를 확인해야 한다. keepalive, Alive Check, 재연결 조건을 분리해 두는 편이 안전하다.
-
DoIP에서 두 테스터가 같은 Source Address를 쓰면 응답이 꼬인다: SA 충돌을 timeout처럼 보면 오래 헤맨다
DoIP에서 Routing Activation까지는 되는 것 같은데 UDS 응답이 가끔 다른 요청에 붙거나 timeout처럼 사라져 보이면, ECU보다 먼저 Source Address를 누가 같이 쓰고 있는지 확인해야 한다. 같은 SA를 공유하면 응답 매칭과 세션 문맥이 쉽게 꼬인다.
-
DoIP에서 Response Pending 중 Tester Present를 섞으면 꼬인다: 같은 세션 유지와 대기 흐름을 분리해서 봐야 한다
DoIP에서 긴 UDS 작업 중 NRC 0x78 Response Pending이 오는 동안 Tester Present를 같은 소켓과 같은 요청 흐름에 무심코 섞어 보내면, 대기 중인 서비스 응답과 keepalive 목적의 세션 유지 요청이 충돌해 로그 해석과 재시도 정책이 쉽게 꼬인다. 두 흐름을 분리해 관리하는 편이 안전하다.
-
DoIP에서 UDS를 ISO-TP처럼 자르면 안 된다: Diagnostic Message 경계를 먼저 봐야 한다
DoIP에서 UDS 요청이 길어질 때 CAN의 ISO-TP처럼 프레임을 쪼개어 처리하려 들면 길이 계산, 재전송, 응답 매칭이 쉽게 꼬인다. DoIP는 TCP stream 위에서 Generic Header의 payload length로 메시지 경계를 잡고, UDS 한 요청을 Diagnostic Message 단위로 다루는 편이 안전하다.
-
DoIP에서 Security Access 뒤 NRC 0x24가 뜬다: seed/key 이후 요청 순서와 세션 문맥을 같이 봐야 한다
DoIP에서 Security Access 자체는 되는 것 같은데 unlock 직후 요청이 NRC 0x24 Request Sequence Error로 실패하면, key 계산보다 먼저 seed/key 순서와 세션 문맥이 유지됐는지 봐야 한다. 재연결, 세션 전환, 병렬 요청이 끼면 같은 ECU라도 이전 unlock 흐름이 쉽게 무효화된다.
-
DoIP에서 ECU Reset 후 다시 안 붙는다: 소켓 종료와 재연결 순서를 같이 봐야 한다
DoIP에서 UDS ECU Reset 이후 연결이 살아 있는 것처럼 보이는데 다음 진단이 실패하면, ECU 애플리케이션보다 먼저 소켓 종료, Routing Activation 재수행, Tester Present 재개 순서를 확인해야 한다. reset 전후를 같은 세션으로 취급하면 ACK는 보이는데 실제 UDS가 안 붙는 식으로 쉽게 꼬인다.
-
DoIP에서 NRC 0x21이 반복된다: Busy Repeat Request를 timeout처럼 다루면 꼬인다
DoIP에서 UDS 요청 후 NRC 0x21 Busy Repeat Request가 반복되면 ECU가 죽은 게 아니라 아직 같은 자원을 점유 중인 경우가 많다. timeout과 같은 정책으로 재전송하면 세션이 더 꼬일 수 있어서, 0x21 전용 retry 간격과 요청 직렬화 기준을 따로 두는 편이 안전하다.