-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for Interpartition Communication Drivers #14
Comments
I will try to see how this can be accomplished through namespaces. |
I've began working on this within the |
I have investigated this a bit further and it looks more complicated than I originally thought, but it's definitely do-able. 😄 It looks like that the The fishy 🐟 things that occurs however, is that after the call to Starting next week, I'll spend my two work days working on a The only thing I am asking myself right now: Is |
That sounds great! I think for testing and development purposes, a What information does the |
The partition process would probably also need CAP_NET_RAW to send raw Ethernet frames on the interface. The hypervisor would have to allow it in the capability bounding set. The effective capabilities could then be controlled for example by the file capabilities. How the effective capabilities are calculated is documented in capabilities(7).
|
Currently, all partitions seem to be started with Another question would be how we might specify which capabilities are allowed for which partition. Maybe we could specify this in the configuration file? |
Setting the file capabilities for the hypervisor partition probably won't work, since the executable is copied to the file system of the partition process. |
I've checked. If I understand correctly, we would have to either set the file capabilities when copying the executable to the file process root or add |
@emilengler: @wucke13 and I were wondering if it would be better to use UDP sockets for this at first, just to get things working initially. It's probably a lot easier than working with capabilities and veth, although being able to directly use Ethernet would be more useful, since it is closer to the production environment. |
What do you mean by UDP sockets exactly? A socket to communicate from the host to the partition and vice-versa? |
No, what I mean is a socket that can be used to send or receive datagrams from the network. The hypervisor may create such a socket and pass it to the partition process using an AF_UNIX socket. |
Here is a draft for this using UDP sockets. #24 |
We have something like that now by sending TCP and UDP sockets to partitions. |
The hypervisor should support initializing and attaching a device driver to a partition, as specified by ARINC 653P5-1. The device driver should be accessible to other partitions through sampling- or queueing-ports and execute inside the partition it is attached to.
In the case of apex-linux, a device driver that exposes the receive / send system calls of an UDP-Socket could be useful for development purposes. The semantics of UDP-Sockets can be pretty much directly translated to the semantics of UDP-Sockets, since both are message-based. The following semantics should be implemented by a partition that is handed a UDP "device driver".
Messages that are received on a UDP-Socket should be available immediately on the associated sampling port. This can be achieved by writing them to the sampling port source as-soon-as they are received, and keeping the contents of the port the same, unless another message is received on the UDP-Socket.
For sending via UDP-Sockets, each write to the sampling port should lead to exactly one successful
send
for the UDP-Socket. If the content of the sampling port does not change (no newer message was written to the sampling port), no further UDP-Message should be sent.The text was updated successfully, but these errors were encountered: