On 08/12/2023 18:10, Maryam Tahhan wrote:
Thanks Stephen,  I will have a look.

I've seen a few places mention that abstract sockets are attached to the network namespace of a process. For our use case the 2 processes (pods) will have separate network namespaces. So I'm not sure it will work. However, it should be easy to validate and I can give it a try in a k8s environment for completeness. Otherwise all the pods would need to be host networked which is not what we want at all.

I was able to find a case where abstract sockets were used by containerd (CVE-2020-15257) [1]. Our AF_XDP DP Pod is also host networked and so it seems that we would be opening ourselves up to similar issues,  in that a bad acting container could block containers that actually want to use afxdp_dp by simply connecting to the DP and just failing to handshake on all the abstract sockets it finds in,the host namespace.

I will circle back on Mon re the first open, but considering that containerd abandoned this approach, I'm not sure it's the way to go for us. But let's cross that bridge after we have an answer to the first issue.

Hi Stephen

Circling back, I built a simple example here [1] using kind. The abstract sockets don't work across network namespaces (which is our scenario with the Pods) and so will not be usable for what we are trying to do here.

The example creates a simple kind cluster. It builds a simple docker image that incorporates socat. Then it launches 2 pods:

- The first pod is the server (it will use socat to create an abstract socket).

- The second pod is the client (it will use socat to try to connect to the abstract socket).


The connection attempt in the client fails.


[1] https://github.com/maryamtahhan/ans-kind-example

Reply via email to