I'm following up on this to ask a more specific question, since my first question was a bit all over the place. This is regarding the interplay between the host and the containers when setting up containers that can run DPDK applications. 

Based on what I've found so far, it looks like I will have to fully configure DPDK on the host and then mount devices onto each container, even if there's no need to connect the containers to the outside world. (Is this correct?) If so, I don't fully understand this, since a container/container network should be self-contained. 
  • Why do we need to set up DPDK on the host? (Why isn't the container enough?)
  • Why do we need to set up a DPDK-compatible driver on the host NICs? If the containers are on the same machine, exchanging packets, why would the host NIC be involved at all? Nothing is going in or out.
  • Why do we need to configure hugepages on the host and then mount them on the container? Why can't you just configure this on the containers? Is this something that can't be emulated?
Thank you so much again! 

On Sun, Nov 17, 2024 at 9:42 PM Thea Corinne Rossman <thea.rossman@cs.stanford.edu> wrote:
Hello all! 

I'm hoping for some general help getting started with DPDK in a Containernet topology. I have some DPDK experience, but I'm very new to container networking :). I've been working with an Ubuntu 24.10 VM, though I can run any experiments on Cloudlab (so am not necessarily tied to a particular architecture). 

First question: for setting up the host machine: Do I need to install DPDK, set up hugepages, etc., on the host, or is configuration in just the containers sufficient?

Second question: I'm having trouble creating containers that will let me run DPDK applications. High-level, I understand that I'll need to create or find a container image that's configured with DPDK and all dependencies, as well as the Containernet requirements

I tried to build on this: https://github.com/shanakaprageeth/docker-dpdk . However, when I ran the setup script, I get this error:

```
ERROR: failed to solve: process "/bin/sh -c apt-get install build-essential git python pciutils vim -y" did not complete successfully: exit code: 100
Unable to find `image 'ubuntu-dpdk:latest' locally
docker: Error response from daemon: pull access denied for ubuntu-dpdk, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
```

When I downloaded the image directly from docker (docker pull shanakaprageeth/ubuntu-dpdk), no commands on the container worked (ifconfig, apt-get, etc.). There was no error message.

I think I fundamentally don't understand how container images work and how to customize them, especially since I'm trying to write Containernet scripts (vs. actually ssh-ing into containers). I know I'll need a container that supports DPDK and has it downloaded, and I know it will also need to meet the Containernet requirements.

Could anyone please point me in the right direction?

Thank you!