Re: [RFC PATCH 0/7] Rust Socket abstractions

From: Davide Rovelli
Date: Fri Aug 18 2023 - 03:53:17 EST




On 8/18/23 03:30, Andrew Lunn wrote:

So you have an application in user space wanting to use this
protocol. I assume it is using BSD sockets to communicate with the
kernel and the protocol.

No, at the moment it uses procfs or a shared mmap'd chardev buffer.

So you need an API below sockets to get this
traffic, i assume a whole new protocol family? But you have an API on
top of sockets for TCP/UDP. So i guess your protocol somehow
encapsulate the traffic and then uses the API your are proposing to
send over TCP or UDP?

Yes, we take a message/value from a user space app and send it to
other nodes via UDP according to the chosen protocol. Mind that
the term "protocol" might be misleading here as it can be confused
with classic network protocols. Our API offers distributed services
such as failure detectors, consensus etc.

Which makes me think:

Why go through sockets twice for a low jitter networking protocol?

The idea behind the system is to be split: user space apps are
normal apps that can present arbitrary jitter, kernel space services
are isolated to provide low jitter. The same applies in the network
via a SDN based protocol which prioritises our traffic. By having
end-to-end timely communication and processing, we can achieve
new efficient distributed services.