Skip to content
Go DevBJ
Go back

DoIP에서 Tester Present 왜 계속 보내는 걸까

Edit page

DoIP 디버깅하다 보면 은근 자주 보이는 패킷이 하나 있다.

3E 00

처음 보면 좀 이상하다.

근데 계속 주기적으로 날아간다.

이게 바로:

다.

오늘은 이게 왜 필요한지,
실무에서는 어떻게 보는지 가볍게 정리해보자.

Tester Present 한 줄 정리

Tester Present는
ECU에게 “아직 진단 중이니까 세션 유지해라”라고 알려주는 메시지다.

즉:

이 의미다.

왜 이런 게 필요하냐

ECU 입장에서 생각해보면 간단하다.

진단기가:

그러면 ECU는 이렇게 생각한다.

“작업 끝났나 보다”

그래서 일정 시간 지나면:

이렇게 돌아간다.

이걸 막기 위한 게 Tester Present다.

보통 어디서 쓰이냐

실무에서는 거의 이런 상황이다.

Flash 작업 중

가장 대표적이다.

Firmware 다운로드 중에는
시간이 꽤 오래 걸린다.

이때 Session 유지 안 하면
중간에 Default Session으로 돌아간다.

긴 Routine 실행 중

예:

이런 작업도 시간 걸린다.

사용자 대기 상황

툴에서 잠깐 멈춘 동안에도
세션 유지 필요할 때가 있다.

패킷 구조는 엄청 단순하다

요청

3E 00

의미:

3E → Tester Present
00 → Sub Function

응답

7E 00

그러면 ECU가:

“응 유지 중”

이렇게 응답한 거다.

근데 응답 안 오는 경우도 있다

여기서 헷갈린다.

UDS에서는:

Suppress Positive Response

옵션이 있다.

예:

3E 80

이 경우 ECU가 응답 안 할 수도 있다.

즉:

이런 흐름 가능하다.

처음 보면 timeout처럼 착각하기 쉽다.

실무에서 많이 터지는 문제

이건 진짜 자주 본다.

1) Tester Present 안 보내서 Session 종료

대표적이다.

알고 보면 Session timeout이다.

2) 주기 너무 느림

ECU timeout보다 느리게 보내면 의미 없다.

예:

이러면 이미 세션 종료된 뒤다.

3) 너무 자주 보냄

반대로 너무 빠르게 보내는 것도 좋지 않다.

실무에서는 보통:

이 정도 많이 쓴다.

S3 timeout이라는 것도 같이 본다

Tester Present 이야기 나오면
거의 항상 같이 붙는 게 있다.

S3 Server Timeout

이건 ECU가:

“얼마 동안 요청 없으면 세션 종료할지”

정하는 시간이다.

즉:

이 둘이 연결된다.

디버깅할 때 보는 포인트

개인적으로는 이 순서로 본다.

1. 현재 Session 확인
2. S3 timeout 확인
3. Tester Present 주기 확인
4. Session 유지 여부 확인
5. 중간에 Default 복귀하는지 확인

특히:

이런 건 Session timeout 꽤 많다.

DoIP에서는 더 티가 난다

CAN에서는 상대적으로 단순하게 보였는데,
DoIP에서는:

이 상황이 자주 나온다.

그래서:

“TCP alive ≠ Diagnostic alive”

이걸 구분해야 한다.

패킷 흐름 느낌으로 보면 이렇다

10 03
→ Extended Session 진입

27 01
→ Security Access 진행

3E 00
→ Session 유지

3E 00
→ Session 유지

31 01
→ 실제 작업 수행

이 흐름이 꽤 자주 나온다.

다음 글에서는 ECU Reset 쪽 보자

Tester Present까지 이해했으면
Session 흐름은 거의 잡힌다.

다음은 이런 걸 보면 좋다.

여기부터는 실제 ECU 동작 느낌이 더 강해진다.

추천 대상

한 줄 요약

Tester Present는 ECU에게 진단 세션이 아직 활성 상태임을 알려 Session timeout과 Default Session 복귀를 방지하는 유지 메시지다.

추천 키워드

UDS Tester Present, S3 timeout, DoIP session keep alive, UDS over IP, Automotive Ethernet


DevBJ | No Bio, Just Log #오늘을살자


Edit page
Share this post on:

Next Post
DoIP에서 Session Control 먼저 이해해야 하는 이유