Протокол діагностики Ethernet DoIP
AvtoAd
07/11/2022Зміст
1. Огляд.
3. Метод отримання DoIP і формат протоколу:
3.1. Порти.
3.2. Формат протоколу.
3.3. Версія протоколу та зворотна версія протоколу.
3.4. Тип корисного навантаження.
3.5. Довжина корисного навантаження.
4. Запуск і використання діагностики DoIP.
4.2. Виявлення транспортного засобу.
4.3. Встановлення сесії.
Огляд
Так званий DoIP насправді базується на протоколі зв’язку Ethernet для передачі даних протоколу UDS, тобто діагностичного зв’язку через Інтернет-протокол. Це також сам по собі протокол, стандартизований у стандарті ISO13400. Оскільки DoIP може передавати велику кількість даних, має швидку швидкість відгуку та може виконувати віддалену діагностику через Ethernet, DoIP поступово став заміною традиційним методам шини, таким як CAN, і став неминучою тенденцією діагностики мережі в автомобілі. .
Застосування DoIP в автомобільній сфері Перш за все, загальна структура автомобільної системи повинна підтримувати DoIP. Через швидкий розвиток автомобільного Ethernet, порівняно з традиційною автомобільною системою, загальна структура поточної автомобільної системи додасть рівень протоколу DoIP через TCP/IP. А щоб краще співпрацювати з OBD-діагностикою, дистанційною діагностикою, FOTA та іншими технологіями, загальну архітектуру транспортного засобу було скориговано за допомогою перемикача для підключення MPU, MCU та інших Ethernet ECU через Ethernet, а також підключення зовнішньої мережі до внутрішньої мережі. ізолювати.
Звичайно, DoIP є не лише носієм UDS. Хоча в стандарті ISO13400 немає багато вмісту, він також має певну логіку. Неможливо сказати, що додавання рівня інкапсуляції поверх TCP/IP може виконувати свої власні завдання. Тоді немає гарантії безпеки. Зрештою, Ethernet автомобіля може з’єднати внутрішню та зовнішню частини автомобіля через мережу, а DoIP є входом для діагностики. Якщо ці двері погано збереглися, будуть проблеми безпеки.
Простіше кажучи, DoIP може виконувати виявлення транспортного засобу, запит статусу, активацію маршрутизації (включаючи сертифікацію безпеки), а також надсилання та отримання діагностичних даних. Цей вміст буде розширено пізніше. За допомогою DoIP передача даних UDS може здійснюватися поверх DoIP, а передача UDS може здійснюватися, коли логіка попереднього замовлення DoIP у нормі. Звичайно, дані UDS не можуть передаватися поверх DoIP, який налаштовується клієнтами та може відповідати деяким іншим особливим вимогам передачі через Ethernet.
Топологія мережі DoIP
В ISO13400-2 є приклад наступного зображення, яке є більш репрезентативним. У цій статті ми в основному представляємо топологію мережі DoIP на основі цієї діаграми топології мережі.
На малюнку неважко побачити, що топологія мережі всього транспортного засобу розділена на дві частини, а саме внутрішню мережу та зовнішню мережу. Мережевий вузол на малюнку за замовчуванням може мати вузол, який підтримує з’єднання Ethernet, наприклад радар, камера тощо. Проте протокол DoIP не підтримується, але ви можете виконувати аналіз мережі на вузлах із префіксами DoIP у їхніх іменах. З малюнка ми легко бачимо, що топологія мережі DoIP складається з наступних ролей:
(1) Зовнішнє тестове обладнання
Ця частина є зовнішнім тестовим обладнанням, зазвичай діагностичним приладом OBD або іншим діагностичним клієнтом
(2) Шлюз крайового вузла DoIP
Чим ця частина відрізняється від шлюзу DoIP? Насправді різниці немає. Єдина відмінність полягає в оцінці додаткової лінії ввімкнення. На малюнку видно, що між зовнішнім тестовим обладнанням і шлюзом крайового вузла DoIP існує лінія, яка називається лінією активації. Тоді функція цієї лінії полягає в тому, щоб увімкнути стек протоколів. Звичайно, зв’язок між зовнішнім тестовим обладнанням і шлюзом периферійного вузла DoIP – це не лише лінія активації. Роз’єм OBD-II під’єднаний, а один із контактів – рядок активації. Для отримання додаткової інформації дивіться вступ до ISO 13400-4.
Повертаючись, яка роль цієї ролі? Перш за все, це шлюз. Як шлюз він має кілька ECU, змонтованих у своїй підмережі, що є таким же, як шлюз DoIP. По-друге, це вхід для взаємодії між автомобільною мережею та позаавтомобільною мережею та має функцію перемикання, яка контролює, чи працює стек протоколів DoIP.
Ця роль може підтримувати як серверну, так і клієнтську сторону. Сервер легко зрозуміти, а тестове обладнання може діагностувати вузол ECU під шлюзом. Отже, що відбувається на стороні клієнта? Уявіть собі, якщо шлюз крайового вузла DoIP діє як точка входу, як взаємодіяти з блоками DoIP ECU в інших внутрішніх підмережах? Звичайно, його пересилає шлюз крайового вузла DoIP. Це лише один із сценаріїв застосування, при перенаправленні буде виконано перемикання ідентичності, тобто серверна сторона перейде на клієнтську. Іншим сценарієм є оновлення через OTA. Рівень прикладної програми шлюзу крайового вузла DoIP може запускати програму клієнта OTA для діагностики та прошивки ECU інтрамережі. Наразі це ідентифікатор клієнта.
(3) Шлюз
DoIP Шлюз DoIP не сильно відрізняється від ролі шлюзу двох крайових вузлів DoIP. У реальних прикладних сценаріях MCU зазвичай відіграє цю роль, а MPU відіграє роль шлюзу крайового вузла DoIP, або навпаки, тому ця роль зазвичай запускає програму на стороні сервера окремо.
(4) Вузол
Роль вузла DoIP добре зрозуміла. ECU, який підтримує з’єднання Ethernet і підтримує протокол DoIP, вважається вузлом DoIP. Ця роль зазвичай запускає серверну програму самостійно.
Вся мережа автомобіля складається з чотирьох ролей.Зовнішнє тестове обладнання діє як клієнт для діагностики кожного ECU в мережі автомобіля, який підтримує стек протоколів DoIP. (Деякі CAN ECU зазвичай встановлюються на MCU, і MCU виконує маршрутизацію DoIP-DoCAN) Зовнішнє тестове обладнання мережі транспортного засобу зв’язується з периферійним шлюзом мережі автомобіля через OBD-II, а периферійний шлюз є використовується для включення мережі автомобіля Функція DoIP. Після того, як маршрутизація відкрита, надіслані діагностичні дані надходять до різних блоків ECU в автомобільній мережі відповідно до різних адрес призначення.
Метод отримання DoIP і формат протоколу
3.1 Порти
Як видно з назви DoIP, протокол базується на TCP/IP.Якщо ви хочете отримувати пакети протоколу DoIP, протокол передбачає, що вам потрібно контролювати номер порту, спеціально призначений стеку протоколів DoIP, а саме 13400, UDP, TCP Необхідно контролювати порт отримання, а порт відправлення є випадковим значенням у діапазоні [49152\~65535].Звичайно, стек протоколів у коді має кешувати порт відправлення протилежного кінця для відтворення даних.
Номер порту вказано, і клієнт і сервер можуть надсилати та отримувати дані через цей порт. Тоді мережевий пакет можна проаналізувати, чи дійсно дані, отримані портом, є пакетом DoIP. (Це може бути мережева атака, можливо, інша програма випадково використовує номер порту). Розбір отриманого повідомлення передбачає створення протоколу DoIP, і лише якщо воно відповідає специфікації, воно може вважатися законним і дійсним повідомленням DoIP.
3.2 Формат протоколу
Пакет DoIP складається із заголовка протоколу + корисного навантаження. Заголовок протоколу [8 байт] складається з наступних чотирьох полів
- Версія протоколу [1 байт]
- Версія інверсного протоколу [1 байт]
- Тип корисного навантаження [2 байт]
- Довжина корисного навантаження [4 байт]
- Корисне навантаження [N байт] Відповідно до фактичного типу корисного навантаження дані корисного навантаження відрізнятимуться
3.3 Версія протоколу та зворотна версія протоколу
Зазвичай версією протоколу є 0x02, а значення вище 0x02 наразі зарезервовано. Інверсна версія протоколу – це обернене значення версії протоколу. У цьому прикладі 0x02 є 0xFD після заперечення. У протоколі конкретно зазначено, що версія протоколу може бути 0xFF. Функція встановлення цього значення полягає в тому, що коли версії протоколу клієнта та сервера не збігаються, це значення можна встановити для обходу випадку невідповідності версії заголовка протоколу та відхилити запит.
3.4 Тип корисного навантаження
Тип корисного навантаження може представляти функції, які підтримуються стеком протоколів DoIP, як зазначено нижче (тип, який підтримується сервером, і тип, який підтримується клієнтом, навмисно розділені)
DoIP СЕРВЕР
DoIP клієнт
Він описаний окремо, як і вище, оскільки логіку можна розділити з точки зору реалізації коду. Тобто сервер дбає лише про типи корисного навантаження, які він підтримує, а клієнт дбає лише про типи корисного навантаження, які він підтримує, а ті, що не підтримуються, можна ігнорувати. Це сприяє поділу та комбінуванню модулів, а також корисно реалізувати різні ролі, згадані в попередньому розділі.У майбутньому різні ролі будуть представлені конфігурацією файлу конфігурації.
3.5 Довжина корисного навантаження
Довжина корисного навантаження тут виділяється 4 байтами, тобто максимальна передача повідомлення DoIP становить 4 ГБ /4294967295 байтів, що дорівнює 0xFFFFFFFF. Це лише допустимий діапазон. Загалом, діагностика через DoIP займає лише кілька байтів до десятків байтів, а пакет оновлення для оновлення ECU зазвичай становить лише кілька МБ. Тож 4 ГБ — це лише теоретична верхня межа.
Це значення можна використовувати для перевірки дійсності довжини, оскільки, крім діагностичних даних, інші типи корисного навантаження мають фіксовану довжину. Що ще можна зробити? Фактично, займаючись розробкою, ви також повинні розглянути, як впоратися з наступними ситуаціями.
- даних клей
- Обрізання даних
- незвично великий розмір
- Більше, ніж може витримати стек протоколів
3.6 Корисне навантаження
Корисне навантаження тут відноситься до корисного навантаження протоколу DoIP. Звичайно, коли тип корисного навантаження є типом діагностики, корисне навантаження включає дані UDS на додаток до вмісту самого DoIP для подальшого аналізу модулем UDS верхнього рівня. . Оскільки кожен тип навантаження корисного навантаження відрізняється, це не пояснюватиметься тут.У наступних розділах про функції буде надано детальний вступ.
Запуск і використання діагностики DoIP
4.1 Встановлення з'єднання
Таблиця з’єднань DoIP керується в об’єкті DoIP, який використовується для запису та підтримки логічного з’єднання діагностичного зв’язку. Малюнок вище є елементом цієї таблиці, логічно зв'язаним кінцевим автоматом. Поле на малюнку вище – це стан, у якому перебуває з’єднання, а [Крок] – це те, що відбувається, коли ви переходите між станами.
[Крок 1] Коли встановлюється новий сокет, стан логічного з’єднання змінюється з «слухати» на «ініціалізований сокет», і одночасно запускається таймер, таймер початкової бездіяльності.
[Крок 2] Коли об’єкт DoIP отримує повідомлення про активацію маршрутизації, надіслане тестером, стан логічного з’єднання змінюється з «сокет ініціалізовано» на «Зареєстровано [Очікує на автентифікацію]». У цей час початковий таймер бездіяльності зупиняється і a Таймер під назвою загальний таймер бездіяльності.
[Крок 3] Після завершення автентифікації статус логічного підключення змінюється з «Зареєстровано [Очікує на автентифікацію]» на «Зареєстровано [Очікує на підтвердження]».
[Крок 4] Після завершення підтвердження статус логічного з’єднання змінюється з «Зареєстровано [Очікує на підтвердження]» на «Зареєстровано [Маршрутизація активна]».
[Крок 5] Якщо початковий таймер або таймер загальної бездіяльності закінчується, а наступний запит не отримано, або автентифікацію та підтвердження відхилено, або зовнішній тестовий пристрій не відповідає на повідомлення про перевірку активності, логічне підключення переходить до «Завершення». стан.
[Крок 6]Після входу в Finalize TCP-сокет буде закрито та повернеться в стан «прослуховування».
4.2 Виявлення транспортного засобу
Коли об’єкт DoIP і зовнішнє тестове обладнання підключено до мережі, вони отримають власну IP-адресу за допомогою протоколу DHCP. У мережі маршрутизатор діє як сервер DHCP і призначає IP-адреси пристроям, щойно доданим до мережі. Після отримання IP-адреси є два способи виявлення автомобіля, як показано на зображенні вище. Один із методів полягає в тому, що транспортний засіб активно повідомляє власну інформацію 3 рази. Якщо тестове обладнання не отримує інформацію, яку активно повідомляє транспортний засіб, воно надішле запит на ідентифікацію.Якщо в мережі є транспортний засіб, транспортний засіб відповість на запит, і тестове обладнання знайде транспортний засіб, що тестується.
4.3 Встановлення сесії
Коли діагностичний пристрій знайде транспортний засіб, він додасть його до власного списку транспортних засобів. Коли користувач вибирає транспортний засіб у цьому списку, якщо підключення встановлено успішно, користувач може діагностувати автомобіль.
Далі користувач надсилає діагностичну інформацію в автомобіль, а шлюз пересилає діагностичну інформацію до відповідного ECU в мережі відповідно до об’єкта отримання інформації.Після отримання відповіді від ECU шлюз надсилає остаточну відповідь діагностичному приладу. . Коли користувач відмовляється, сокет, який використовується для зв’язку DoIP, закривається.
На наступному малюнку наведено приклад повної структури даних DoIP:
Приклад повної структури даних DoIP
байт 0: версія ISO13400
байт 1: версія ISO13400 побітова інверсія
байт 2~3: тип даних, 0x8001, що вказує на те, що це діагностичний інформаційний пакет
байт 4~7: довжина даних, в цей приклад Значення дорівнює 7, що вказує на наявність 7 байтів даних
байт 8~9: адреса джерела
байт 10~11: адреса призначення
байт 12~13: спеціальна діагностична команда, SID — 22, що означає читання, DID — 0xF8 10
Цей сегмент даних передається до протоколу нижчого рівня як SDU, інкапсулюється шар за шаром як повний кадр Ethernet і надсилається.
Ще одна стаття про DoIP