SommR arrive
Une première étape pour uProtocol dans le domaine automobile embarqué

Dans la première partie de cette (très courte) série, nous avons abordé la sémantique et la syntaxe de la communication, ainsi que leur signification dans le contexte des software-defined vehicles (SDV). Nous avons examiné de manière préliminaire les défis liés à la création de produits concrets dans un monde où les solutions potentielles sont nombreuses et en constante évolution, et où la culture d'ingénierie est tout aussi variée dans le domaine des véhicules. Nous avons conclu en nous intéressant au projet Eclipse uProtocol et à la manière dont il vise à apporter une valeur ajoutée dans ce contexte.
Nous allons maintenant consacrer un peu plus de temps à l'étude des facteurs de réussite de la vision uProtocol. Nous allons approfondir une opportunité, en nous projetant dans ce qui pourrait se passer cette année si plusieurs éléments s'alignent comme prévu.
Facteurs de réussite du protocole uProtocol
Le protocole uProtocol n'est pas en soi une solution exhaustive à tous les problèmes de communication dans le monde automobile. Il pourrait plutôt être qualifié de « méta-middleware », fournissant une base et des concepts communs pour permettre la communication entre les services dans les domaines technologiquement diversifiés impliqués dans les scénarios modernes impliquant des véhicules, le cloud et des applications.
Pour qu'une infrastructure logicielle comme celle-ci soit vraiment couronnée de succès, il faut que de nombreux facteurs soient réunis. Comme nous l'avons laissé entendre dans le premier article, la plupart d'entre eux ne sont pas de nature technique. Définissons quelques dimensions du succès, qui serviront de toile de fond au reste de cette discussion.
Le succès technologique est l'axe où quelque chose résout un problème technologique spécifique et le fait suffisamment bien pour être considéré comme adapté à l'usage prévu, mesuré par les indicateurs de performance clés techniques pertinents dans un scénario donné.
La réussite en matière de maturité consiste à remplir des exigences « non techniques » qui vont au-delà du simple code : l'objectif et l'état d'esprit de la communauté de développeurs consistent-ils à créer et à maintenir des logiciels prêts à être mis en production ? Cela se traduit-il par la création et l'évolution d'artefacts non liés au code qui sont en rapport avec les indicateurs de conformité aux processus de qualité et y contribuent ?
Le succès de l'adoption est essentiellement le multiplicateur de valeur ajoutée d'un projet, où la question posée est : « Ce code est-il utilisé de manière productive par plus d'une organisation ? » Cet attribut a en fait un deuxième effet, plus implicite, mais tout aussi souhaitable : chaque adoptant et contributeur actif d'une base de code sait par définition « comment les choses fonctionnent », ils parlent le même vocabulaire. Il s'agit là d'un avantage majeur pour toute collaboration commerciale, car les parties impliquées peuvent passer outre l'alignement conceptuel et technique et se concentrer directement sur la partie de leur travail liée à la création de valeur.
La réussite d'un écosystème se produit lorsque tous les facteurs ci-dessus s'alignent et que la technologie de base permet l'extensibilité et encourage les contributions de toutes sortes. Un écosystème performant permet aux participants de tirer parti du succès de l'adoption des éléments de base pour leur propre extension et contribution, tant pour les modèles ouverts que commerciaux. Les écosystèmes peuvent créer des boîtes à outils incroyablement efficaces pour résoudre des problèmes spécifiques. À titre d'exemple particulièrement réussi, comparez l'écosystème Cloud Native Compute Foundation qui s'est développé autour des concepts fondamentaux (et de la mise en œuvre) de Kubernetes (k8s).
Même si je serais (agréablement) surpris de voir uProtocol atteindre l'ampleur de k8s, nous pouvons tout de même envisager les étapes de réussite ci-dessus pour ce projet plus modeste et discuter des idées qui pourraient nous aider à suivre cette voie.
Concepts du protocole uProtocol
Pour illustrer les concepts d'uProtocol, imaginons un cas d'utilisation où les informations de vitesse d'un véhicule spécifique sont demandées à partir d'une application compagnon pour smartphone, ce qui entraîne une demande d'abonnement à un datagramme de vitesse qui parcourt tout le chemin depuis l'application, via un ensemble de services backend, jusqu'au véhicule en question, puis à l'intérieur du véhicule jusqu'au domaine et à l'unité de contrôle qui sont réellement en mesure de fournir le point de données demandé. Le point de terminaison de l'abonnement traite la demande d'abonnement et procède à la publication des informations de vitesse dans son « voisinage réseau », qui sont ensuite récupérées et transmises tout au long de la chaîne par le maillage de services uProtocol, ce qui permet à l'application compagnon d'afficher la vitesse (presque) actuelle du véhicule.
uProtocol définit plusieurs composants pour y parvenir :
- Implémentations uPClient qui adaptent le protocole global uProtocol sub/sub et les messages commande/réponse à des protocoles de transport spécifiques. Par exemple, il peut exister une implémentation Rust d'un uPClient pour le protocole MQTT.
- Les uStreamers sont capables d'acheminer des messages (données pub/sub, messages de commande/réponse) entre différents domaines de protocole de transport. Pour ce faire, un uStreamer se connecte à au moins deux uPClients et suit les messages qui doivent être transférés de l'un à l'autre.
- Les services uSubscription gèrent les abonnements interdomaines. Par exemple, si deux réseaux pub/sub différents font partie d'une solution plus large, les composants uSubscription de chacun de ces réseaux suivent et transmettent les demandes d'abonnement des clients d'un réseau pour les messages initialement publiés dans l'autre réseau.
Il existe davantage de détails et quelques composants supplémentaires, tels que uTwins, qui peuvent être utilisés pour la mise en cache/la mise en mémoire tampon/le stockage de données au sein d'un domaine ou pour un ensemble de domaines (comme pour l'ensemble du véhicule), mais nous nous en tiendrons aux éléments constitutifs fondamentaux dans le cadre de cet article.
Cette architecture de composants avec des points d'extension intégrés présente les caractéristiques clés sur lesquelles un écosystème peut être construit : elle combine une définition du modèle de programmation de base (API, sémantique) avec la compréhension claire que seule l'adoption et la construction d'une boîte à outils plus grande au sein d'une communauté permettront de concrétiser véritablement la vision initiale. uProtocol devient exponentiellement plus utile à chaque nouvel utilisateur qui ajoute à cette boîte à outils. Par exemple, l'ajout d'un seul nouvel adaptateur uPClient augmentera la valeur de tous les autres composants uProtocol, car il étend leur applicabilité à un nouvel environnement.

La connexion intégrée
Pour que uProtocol soit utile en tant que maillage de services automobiles, il doit se connecter aux protocoles automobiles, c'est-à-dire aux réseaux de communication embarqués des domaines mécatroniques. C'est là que les choses se compliquent généralement, pour des raisons qui mériteraient un article à part entière. Dans ce texte, nous allons donc imaginer un scénario utile au niveau conceptuel et au niveau de l'écosystème, même si une mise en œuvre réelle ne peut être rendue publique au moment dela rédaction de cetarticle1.
Conformément au thème évoqué ci-dessus, une bonne première étape pour uProtocol dans le domaine automobile embarqué serait de relier les réseaux pub/sub aux deux extrémités du spectre. Du côté automobile, un protocole pertinent est AUTOSAR® SOME/IP, une spécification pour la communication de type pub/sub au-dessus de l'infrastructure réseau automobile. En créant une implémentation SOME/IP uPClient, nous pouvons intégrer les segments de réseau SOME/IP au maillage de services uProtocol plus large. Cela permettrait de mettre en œuvre le cas d'utilisation décrit ci-dessus, dans lequel un datagramme de vitesse est publié par une entité au sein d'un réseau SOME/IP embarqué 2, puis acheminé vers d'autres segments de l'infrastructure réseau/protocole via les mécanismes uProtocol.
Le principal défi lié à cette idée est à nouveau d'ordre non technique : SOME/IP est une spécification AUTOSAR®, ce qui signifie que les implémentations open source de la version actuelle de la spécification sont interdites par la licence AUTOSAR IP 3, et qu'il ne peut donc y avoir d'implémentation d'une connexion uProtocol-SOME/IP dans un projet open source.
Espoirs pour SommR
À ce stade, au sein du groupe de travail Eclipse SDV, nous attendons l'arrivée de SommR. SommR est une implémentation entièrement nouvelle de SOME/IP en Rust, qui serait parfaitement adaptée à la création d'un pont uProtocol. Depuis l'annonce du projet au milieu de l'année 2022, le contributeur au projet s'efforce d'obtenir l'autorisation concernant les politiques IP d'AUTOSAR®. Bien que cela n'ait pas encore abouti, il y a de fortes chances pour que le résultat soit positif d'ici la fin de l'année.
Une fois SommR disponible, nous verrons apparaître un uPClient qui s'y connectera, permettant ainsi l'intégration de SOME/IP dans les maillages de services uProtocol. Cela nous permettra de créer le scénario d'application compagnon décrit ci-dessus, ainsi que des configurations similaires incluant des unités de contrôle SOME/IP. Nous espérons ainsi établir un premier pont entre les mondes open source et automobile traditionnel.
Un autre élément pourrait s'avérer intéressant dans ce contexte : les projets SommR et uProtocol visent tous deux à fournir et à maintenir un code prêt à l'emploi pour une utilisation dans des produits automobiles. Les détails et l'étendue de cette initiative sont encore en cours d'élaboration, mais on peut d'ores et déjà affirmer qu'elle couvrira de manière substantielle des aspects tels que la définition des processus (via le processus de développement de la Fondation Eclipse), la spécification des exigences du projet, la documentation, la couverture des tests et les indicateurs de performance clés associés, etc. Ces projets sont susceptibles d'être les premiers à adopter le programme Eclipse SDV de qualité/maturité (également en cours de développement), qui vise à fournir les bases nécessaires à l'utilisation de ce logiciel dans les processus d'ingénierie des produits automobiles commerciaux.
À emporter
En résumé, Eclipse uProtocol et le projet Eclipse SommR à venir peuvent devenir une vitrine illustrant comment l'open source peut être un catalyseur essentiel pour la création d'une infrastructure logicielle automobile. Cette vitrine comprendra :
Intégration transparente de la technologie automobile établie avec les piles réseau de type informatique, pour former un ensemble plus vaste.
Exemple concret illustrant comment les modèles de développement ouverts et les fondations open source peuvent permettre une collaboration de premier ordre et à faible coût entre les partenaires de la chaîne de valeur automobile.
un incubateur et un terrain d'essai pour montrer comment les projets OSS peuvent fournir une qualité logicielle de niveau automobile, et ainsi peut-être même donner une idée de ce que cela signifie réellement...
Si l'un des éléments mentionnés ici vous semble pertinent, nous serions ravis de vous accueillir dans l'espace Slack Eclipse SDV, lors de nos réunions sur le projet uProtocol, sur la liste de diffusion ou lors de l'un de nos événements communautaires (pour plus d'informations sur la manière de procéder, veuillez vous reporter à cette page d'informations Eclipse SDV).
« La collaboration au-delà des frontières est le meilleur moyen de sortir du jeu habituel des entreprises, où tout le monde est perdant. »
1: Mais voir la dernière section de l'article.
2: Non, un maillage uProtocol ne remplacerait pas une solution dédiée optimisée pour une communication en temps réel à haut débit et à très faible latence. Oui, cela laisse encore de nombreux cas d'utilisation pertinents et attendus par les clients (qui sont en fait généralement beaucoup plus visibles pour eux). Non, uProtocol dans son ensemble n'est probablement pas un objet utile pour discuter de la certification de sécurité automobile, même si certaines sous-parties et certains adaptateurs dédiés pourraient très bien l'être.
3: Nous connaissons le projet vsomeip. Mais compte tenu de la controverse actuelle concernant toute implémentation ouverte des spécifications AUTOSAR® existantes, nous ne savons pas trop quelle position adopter à ce sujet.
Contactez-nous
Vous avez besoin de plus d'informations sur un produit ou un service spécifique ? Ou d'une réponse personnalisée à votre question ?
Nos commerciaux sont prêts à vous aider.