The Edge Transportation Exchange (ETX) is a high-performance, mobile-network-integrated V2X (Vehicle-to-Everything) communication platform. By leveraging Verizon networks alongside low-latency Mobile Edge Compute (MEC), ETX enables near-real-time bidirectional data sharing between vehicles, vulnerable road users (pedestrians and cyclists), and intelligent infrastructure.
Unlike traditional V2X models that rely heavily on physical roadside units (RSUs), ETX uses a virtualized architecture and a sophisticated geospatial routing engine. This engine organizes the world into high-precision Geohashes, ensuring that messages—from safety-critical BSMs to traffic signal timings (SPaT)—are delivered only to participants within relevant proximity, maximizing system efficiency and reducing network noise.
| Feature | Implementation |
|---|---|
| Protocol | MQTT 3.1.1 (v4) |
| Security | TLS 1.2+ Mutual Authentication |
| Routing | Geospatial (Geohash-based) |
| Payload Format | J2735 UPER wrapped in Protobuf |
| QoS Levels | 0 (Preferred), 1 supported |
For more information and API specification please visit the link here.
Georouting in the ETX ecosystem follows a highly structured "wrapper" pipeline to balance standardized V2X intelligence with high-speed delivery.
Note: The encoding and wrapping mechanism (e.g. steps 1 and 2) is included in the language bindings.
The process begins with a J2735 message (such as a BSM), which is encoded into a compact, binary UPER format using the core C++/WASM codec.
Because standard MQTT brokers are "location-blind," the raw binary is encapsulated within a Protobuf wrapper (GeoRoutedMsg). This acts as a metadata envelope, attaching critical attributes:
- Payload: The raw J2735 UPER binary.
- Location: High-precision GPS coordinates (Lat/Long).
- Timestamp: Creation time for latency tracking.
Note: See below for how to generate these bindings yourself.
The serialized Protobuf object is sent as the MQTT payload to a topic structured by the client's current Geohash (e.g., vzimp/1/GeoRelevance/...).
The ETX broker parses the Geohash from the topic and the coordinates from the Protobuf header. It then "shuttles" the message to all relevant subscribers within a neighboring grid, ensuring the data reaches exactly who needs it based on physical proximity.
ETX supports four distinct communication patterns to meet diverse ITS requirements:
- Status Messages: Ecosystem-wide status messages (BSM/PSM). Distributed to applications monitoring the area where the clients are.
- Broadcast Alert Messages: Ecosystem-wide safety alerts (TIM/RSA). Anyone in the area is notified.
- Targeted Alert Messages: Direct, point-to-point interactions messages. Delivering alerts/notifications to a particular client.
Note: The reliability of these messages are subject to the delivery semantics of the MQTT standards. Please view our API for more information.
- A debugging guide for ETX registration is provided here.
Protobuf bindings are needed if you want to interact with ETX directly without the help of the language bindings provided in this project.
NOTE: Protobuf encoding/decoding is already happening in the language bindings provided!
# 1. Create distribution folder.
mkdir -p ./proto/dist/python
# 2. Install grpc tools.
pip3 install grpcio-tools
# 3. Generate protobuf output.
python3 -m grpc_tools.protoc \
-I=./proto \
--python_out=./proto/dist/python \
--pyi_out=./proto/dist/python \
./proto/georoutedmsg.proto# 1. Create distribution folder
mkdir -p ./proto/dist/node
# 2. Install the modern TypeScript generator and runtime
# ts-proto: The compiler plugin
# protobufjs: The required lightweight runtime
npm install --save-dev ts-proto
npm install protobufjs
# 3. Generate pure TypeScript files
# --ts_proto_out: tells protoc to use the ts-proto plugin
npx protoc \
--ts_proto_out=./proto/dist/node \
--ts_proto_opt=esModuleInterop=true \
-I=./proto \
./proto/georoutedmsg.proto