Протокол диагностики Ethernet DoIP
AvtoAd
07/11/2022Содержание
1. Обзор.
2. Топология сети DoIP .
3. Метод получения DoIP и формат протокола :
3.1. Порты.
3.2. Формат протокола.
3.3. Версия протокола и обратная версия протокола.
3.5. Длина полезной перегрузки.
3.6. Полезная нагрузка.
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