From 3939a9b0822e6dabf505b361b124d937a356dcfc Mon Sep 17 00:00:00 2001 From: Benjamin Kaduk Date: Mon, 24 Jul 2017 23:00:19 +0000 Subject: [PATCH] Add 2017Q2 CloudABI-based network communication entry from ed --- .../news/status/report-2017-04-2017-06.xml | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/en_US.ISO8859-1/htdocs/news/status/report-2017-04-2017-06.xml b/en_US.ISO8859-1/htdocs/news/status/report-2017-04-2017-06.xml index 51d05dcd4d..cae647c000 100644 --- a/en_US.ISO8859-1/htdocs/news/status/report-2017-04-2017-06.xml +++ b/en_US.ISO8859-1/htdocs/news/status/report-2017-04-2017-06.xml @@ -1510,4 +1510,75 @@ Setup the automatic QA infrastructure. + + + Capability-Based Network Communication for Capsicum/CloudABI + + + + + Ed + Schouten + + ed@nuxi.nl + + + + + ARPC: GRPC-Like RPC Library That Wupports File Descriptor Passing + Flower: A Label-Based Network Backplane + + + +

One of the weaknesses of Capsicum and CloudABI is that it is + not easy to develop applications that need to make outgoing + network connections, since system calls like + connect() and sendto() are disabled. Though + we can sometimes work around this by ensuring that the + sandboxed process already possesses socket file descriptors on + startup, this doesn't allow the destination process to be + restarted, moved to a different network address, be load + balanced, etc.

+ +

Coming up with a solution for this is quite important for me, + as I am currently working on making CloudABI work on top of + Kubernetes, Google's open source cluster management suite. + The idea is that Kubernetes will schedule CloudABI processes + instead of Docker containers. All of these CloudABI processes + will have their dependencies on other services in the cluster + injected explicitly, making internal communication very + secure. All of this is intended to work on &os; as well, of + course!

+ +

To solve this problem, I've been working on a daemon called + Flower (read: flow-er) that allows software to register + services and connect to them. Servers are identified by a set + of labels with values (e.g., {datacenter: 'frankfurt', + service: 'mysql'}). Clients can connect these servers by + providing the corresponding label(s). Flower's security model is + capability-based, just like Capsicum. The ability to bind and + connect can be limited by permanently constraining labels to + certain values.

+ +

Flower has been designed not to act as a proxy. It does + not copy any data. It merely forwards existing socket file + descriptors or creates UNIX socket pairs and hands these out + to its clients and servers. To realize this, processes + communicate with Flower using an RPC library called ARPC. + ARPC is a very simple clone of Google's GRPC, with the special + feature that messages (Protobufs) can have file descriptors + attached.

+ + + Nuxi, the Netherlands + + + Finish implementing the Flower code. + + Integrate Flower with the Kubernetes/CloudABI runtime. + + Release the Kubernetes/CloudABI runtime as open source + software. + +