From: Simon Dietz <simon.dietz@plantwatch.de>
To: andrew@lunn.ch
Cc: andrew+netdev@lunn.ch, davem@davemloft.net,
dietz23838@hs-ansbach.de, edumazet@google.com,
johannes@sipsolutions.net, kuniyu@google.com,
linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
simon.dietz@plantwatch.de
Subject: short description of GeoNetworking
Date: Mon, 20 Jul 2026 20:36:13 +0200 [thread overview]
Message-ID: <20260720183613.2020886-1-simon.dietz@plantwatch.de> (raw)
In-Reply-To: <89b3aa8c-f2ec-4b27-b5b0-5891d870e001@lunn.ch>
Hi Andrew,
> Is there an architecture documentation somewhere?
No really available one, at least not public. The ETSI ITS standard is
public available and there are research papers, but that would be a lot
to read.
> One of my comments was about routing tables.
I agree that cosine calculations may not belong to the kernel space.
Before we continue talking about routing tables, let me give a short
Description of the GeoNetworking (gn) protocol
GeoNetworking is used in a vehicle2x context where vehicles exchange
position information (and other data in higher protocol layers like
BTP) for use cases like trafic jam notifications, or railroad crossing
communication with cars or trains.
gn transmitts packets in various possible 'modes', including:
* broadcast (all recievers in range, like ip)
* single hop broadcast (all recievers in direct range, like ip, if the
reviever is in the same network and no default gateway is used)
* unicast (one reciever out of range, packet is sent to the closest
intermediary; only here a routing decision is involved)
gn packets contain a gps position and a geographic target scope, which
can be one of predefined shapes (rectangle, circle, ellipsis) and
dimensions of that shape (radius if circle, length and width if
rectangle). Hosts with a position outside the shape may recieve, e.g.
a broadcast, but drop the packet (because it's out of the target scope)
There are beacon packets, which are continously sent by each host,
which contain the gps position of the host in order for the other hosts
to be able to perform distance calculations necessary for the routing
and (if no beacon packet has been recieved for a certain while) for
pruning the routing tables from other hosts which are no longer there.
There are location service (ls) requests, which are used to query
nearby hosts for the location of a host out of the sender's own range,
which are answered with ls reply packets.
There is an address rotation mechanism for privacy reasons, so it may
occur, that a vehicle disappears at a point and reappears as different
vehicle (without advertisement of the address change, so a correlation
of old/new address is not feasable).
So regarding routing there is the question where (user or kernel space)
the beacons and location service should be handled.
I would suggest to handle them in kernel space and only notify the user
space, if something happens (previously unknown beacon recieved, ls
reply recieved, ...) instead of passing all the beacon and ls packets
to user space.
> There also seems to be a need for location information. How does that
> get into the kernel? Is there a daemon for that? Patches to gpsd?
In the first version /proc has been used, after that ioctl; today
netlink generic seems to be the most reasonable option. We used
standard u-blox gps recievers and wrote a little userspace tool to
inject the location information into the kernel space (via ioctl).
That brings me to the question, how the ideal interface between user
and kernel space should look like for this module/functionality.
For short term, it should be possible to strip the routing stuff incl.
the cos table from the module and return -EOPNOTSUPP and/or -EINVAL
when using advanced stuff like routing and only support recieving gn
packets and send broadcast and beacon packets. Routing could then be
added in a v2 patch series.
What do you think?
Simon
next prev parent reply other threads:[~2026-07-20 18:38 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-18 21:00 [RFC PATCH net-next v0.1 0/1] add GeoNetworking protocol Simon Dietz
2026-07-18 21:00 ` [RFC PATCH net-next v0.1 1/1] net: " Simon Dietz
2026-07-19 17:16 ` Andrew Lunn
2026-07-23 18:54 ` Simon Dietz
2026-07-19 17:28 ` Andrew Lunn
2026-07-19 23:33 ` Andrew Lunn
2026-07-23 17:12 ` Simon Dietz
2026-07-23 17:54 ` Andrew Lunn
2026-07-23 18:24 ` Simon Dietz
2026-07-23 17:43 ` short description of GeoNetworking Simon Dietz
2026-07-23 18:05 ` Andrew Lunn
2026-07-23 18:38 ` [RFC PATCH net-next v0.1 1/1] net: add GeoNetworking protocol Simon Dietz
2026-07-19 16:21 ` [RFC PATCH net-next v0.1 0/1] " Andrew Lunn
2026-07-20 18:36 ` Simon Dietz [this message]
2026-07-20 20:16 ` short description of GeoNetworking Andrew Lunn
2026-07-22 21:34 ` Simon Dietz
2026-07-23 0:30 ` Andrew Lunn
2026-07-23 12:37 ` Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260720183613.2020886-1-simon.dietz@plantwatch.de \
--to=simon.dietz@plantwatch.de \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=dietz23838@hs-ansbach.de \
--cc=edumazet@google.com \
--cc=johannes@sipsolutions.net \
--cc=kuniyu@google.com \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox