obu-firmware builds against the vanetza-idf C-ITS library, which until now came from the colleague's microbu-esp32c5 tree beside the repository and was not tracked here, so a clone of this repository could not build the firmware it ships. The library alone is now part of obu-firmware, as obu-firmware/external/vanetza-idf: their external/vanetza-idf at commit cf4b99f, unchanged (9775 files; see its PROVENANCE.md). CMake takes it from there by default; -DVANETZA_IDF_DIR still points the build elsewhere. The rest of the colleague's tree (their own VAM firmware, PKI tooling, station-link Python tools, the V2X2MAP bridge) stays out of this repository and gitignored; nothing is pushed to their repository. NOTES.md, docs/06, TODO.md and the pcap verifier's usage line point at the new location.
3.7 KiB
Title: Overview
Vanetza in a nutshell
Vanetza is an open-source implementation of the ETSI C-ITS protocol suite. Among others, it comprises the following protocols and features:
- GeoNetworking (GN)
- Basic Transport Protocol (BTP)
- Decentralized Congestion Control (DCC)
- Security
- Support for ASN.1 messages (Facilities) such as CAM and DENM
Though originally designed to operate on ITS-G5 channels in a Vehicular Ad Hoc Network (VANET) using IEEE 802.11p, Vanetza and its components can be combined with other communication technologies as well, e.g. GeoNetworking over IP multicast.
Project layout
In the first place, Vanetza is a conglomerate of C++ libraries, some depending on others. Sources of these libraries, also known as Vanetza component, are bundled in their respective subdirectories.
| Component | Depends on | Features |
|---|---|---|
| access | net | Access layer, helpers for IEEE 802.11 PHY and MAC |
| asn1 | - | Generated code and wrappers for ASN.1 based messages, e.g. CAM and DENM |
| btp | geonet | Headers and interfaces for BTP transport layer |
| common | - | General purpose classes used across Vanetza components, including serialization and timing |
| dcc | access, net | Algorithms for DCC cross-layer |
| facilities | asn1, geonet, security | Helpers to generate and evaluate ITS messages |
| geonet | dcc, net, security | GeoNetworking layer featuring geographical routing |
| gnss | - | Satellite navigation integration for positioning |
| net | common | Utilities for socket API and packet handling |
| rpc | access, dcc, net | Cap'n Proto RPC client with Boost.Asio support |
| security | common, net | Security entity to sign and verify packets |
For most of the code unit tests exist. We are using Googletest for those.
Compilation of Vanetza unit tests can be enabled via the BUILD_TESTS CMake option.
You can the run those tests in your build directory by executing ctest.
Additionally, the tools directory contains several utilities making use of Vanetza libraries.
| Tool | Purpose | CMake option |
|---|---|---|
| benchmark | Benchmarking security features, e.g. signing or validating a lot messages in a row | BUILD_BENCHMARK |
| certify | Utility for generating and handling security certificates, authorization tickets etc. | BUILD_CERTIFY |
| certify-pqc | Experimental utility for generating and validating ECC/FN-DSA V3 certificate chains | BUILD_CERTIFY, VANETZA_WITH_PQC |
| socktap | Example application using most of the Vanetza stack operating on sockets, i.e. either Linux packet sockets or optionally Cohda LLC sockets | BUILD_SOCKTAP |
Deployments
Vanetza has been developed for network simulations and testing on embedded devices at Technische Hochschule Ingolstadt initially. Meanwhile, Vanetza is used by many more parties and for more use cases than anticipated in the beginning.
- Artery is a V2X simulation framework based on OMNeT++. Vanetza is used in this network simulation as (quite detailed) model of ITS-G5 protocols.
- Various communication units (roadside units, vehicles and testbeds) in the CARISSMA Car2X lab are powered by Vanetza.
- Prototype motorcycles operated by the Connected Motorcycle Consortium use Vanetza for evaluation of novel ITS applications to enhance rider safety.
- nfiniity integrates its cube V2X ecosystem with Vanetza.
If you are using Vanetza, we would love to add your project to the list above. Please write an e-mail to raphael@riebl.net or open a pull request.