[DoIP] Diagnostic over IP

CS·2026년 2월 5일

Ethernet physical layer 요구 사항

잡음 환경에서 작동을 보장하도록 진단기와 DoIP Edge Node PHY간의
최대 케이블 길이에 의해 구현되기 위한 요구 사항

  • DoIP Edge Node는 100Base-TX 지원해야 함 ➢ 최대 100 Mbit/s 100m

  • DoIP Edge Node는 10Base-T를 지원해야 함 ➢ 최대 10 Mbit/s 100m

Activation line 요구 사항

  1. Ethernet controller를 활성화 또는 비활성화 해야 하는 이유
  • 전자파 간섭 감소
  • DoIP Edge Node의 전력 소비 감소
  1. Wake on LAN(WoL)의 단점
  • MAC 주소 필요
  • Magic Packet 수신을 확인해야 하기 때문에 전류가 많이 소모되는 Ethernet controller가 동작해야 함

DoIP 통신 표준이고 위에는 OBD-II 단자로 주행 도중 통신이 필요없음

DoCAN 대신 DoIP Layer로 하게 된다

  • ISO 13400-3 : 물리/데이터 링크 계층. IEEE 802.3 기반 유선 차량 인터페이스

  • ISO 13400-2 : NW, 전송 계층. TCP/UDP/IP 사용

  • ISO 14229 : UDS


DoIP Message

  1. Protocol Version : DoIP Packet의 버전

  2. Inverse Protocol Version : Inverse value of Protocol 버전

  3. Payload Type : DoIP가 제공할 진단 서비스

  4. Payload Length : Data length

  5. Data : Payload Type에 따른 서비스의 Data
    만약 진단 메시지라면, UDS가 쓰인다.

일반적인 DoIP Header의 구조

당연히 TCP/UDP를 사용하기 때문에 Port가 필요하고 열어야 할 필요가 있다.

  • DoIP 지원 TCP Port :13400(TCP_DATA)

  • 진단 메시지를 위해서는 TCP를 사용해야함

UDP인데 비신뢰성 비연결성 통신이다보니까
순서 뒤틀리고 데이터 무결성이 보증되진않다보니 진단에선 잘 안쓴다.

진단 서비스의 표준으로 DoCAN과 마찬가지로 SID가 존재한다.

  • Diagnostic Routing

DoIP 진단기와 CAN base ECU간 Interface가 필요함

일단 IP없는 CAN Node ECU의 경우 CGW_CCU가 CAN ID를 통해 어디로 라우팅할 지 결정한다
CGW_CCU가 DoIP M를 받고 CAN-TP를 통해 CAN M를 던진다.

[0x03, 0x22, 0x00, 0x01, 0x00 ...] 처럼


DoIP / CAN ECU routing

  1. 진단기와 CGW_CCU간 TCP socket의 연결이 되어야 함

  2. Gateway를 통한 진단 Routing

  • Gateway는 ECU의 TxID를 통해 진단 메세지를 보냄
  • Gateway는 ECU의 RxID를 통해 진단 메시지를 받음
  1. 진단기로 응답 Forwarding
  • DoIP 연결을 위한 IP 설정 방식

  • Vehicle Announcement(통지 메시지)

UDP 등을 사용해 브로드캐스트 또는 멀티캐스트하여 차량 정보를 통지
1. VIN 일부 : 첫 3or9 글자
2. Logical Address : UDS의 사용주소
3. EID(Entity Identifier) : 장치 고유 ID
4. GID(Group Identifier) : ECU가 속한 그룹 ID

해당 메시지의 Source IP를 이용해 Edge Gateway의 IP 주소를 알 수 있음

혹은

Static IP 설정 : Edge Gateway IP를 고정값을 사용

OEM별 자체 알고리즘 : OTA등을 위한 자체 알고리즘 활용함

  • Sequence Diagram

TCP 소켓 열고 Routing 요청과 응답을 받은 후에 진단 메시지 날린다.
CGW_CCU에서는 DoIP 메시지를 CAN으로 변환하여 Node에 전달(CAN Node 한정)

이는 응답때 다시 DoIP 메시지로 변환하여 결과를 응답해주게 됨

  1. ARP를 통한 MAC주소 확인 필요
    진단기(192.168.1.1)이 CGW_CCU(192.168.1.2)의 MAC주소를 get

  2. TCP Socket 연결 과정 수립
    Handshaking 후 연결 맺음

  1. Routing Activation
    진단기와 CGW_CCU간 Routing Activation 응답과 요청

  2. 진단기는 진단 메시지 요청을 전송
    진단기(0x200)이 UDS data(10 01)을 ECU(0x203)에 요청함
    CGW는 있는 서비스에 있는 노드니까 긍정 응답을 진단기에 전송

ECU는 진단 응답 메시지를 진단기에 전송

CGW는 ECU의 TxID(0x700)과 RxID(0x600)에 요청과 응답을 진행

  • ECU 응답 : [06] 50 01 F4 09 C4 [00]
    06: LEN / 그 뒤가 응답 Data

  • CGW는 이를 진단기에 응답(DoIP로 전환)


DoIP with Ethernet ECU

Ethernet Node의 경우 CGW타고 CAN-TP를 통해 보내줄 이유가 없음

  1. 진단기와 ECU간 TCP Socket 연결

  2. Routing Activation

  3. 진단기가 ECU에 진단 메시지 요청

  4. ECU 처리

  5. ECU가 진단기에 메시지 응답

이건 뭐 CGW랑 하는거랑 똑같다. TCP_DATA socket 연결

  1. Activate Diagnostic Routing
    진단기와 ECU간의 Routing Activation 요청/응답

  2. 진단기가 진단 메시지 송신
    진단기(0x200)이 UDS(10 03) Data를 요청함 - DoIP ECU에(0x205)
    ECU는 진단 응답(Pos ACK)을 진단기에 전송함

ECU가 진단 메시지를 진단기에 전송함(요청에 대한)

profile
학습

0개의 댓글