Dear DPDK Developers,

I am reporting an issue encountered in an environment running Linux kernel
version 5.4.46 with DPDK 19.11. When attempting to run Docker containers in
bridge mode, the container creation fails consistently. The kmsg indicate a
crash during the initialization of the loopback device within a new
*net_namespace*, specifically due to the loopback interface not being
assigned the expected ifindex of 1.

*Issue Description:*

During the creation of a  net_namespace, the kernel initializes network
devices in a specific order. It is expected that the loopback interface is
the first to be initialized, thereby receiving an ifindex of 1. This
assumption is enforced in the kernel code, where a BUG_ON check ensures
that the loopback interface has *ifindex == 1.* However, with the DPDK KNI
module loaded, this assumption fails, resulting in a kernel panic during
container creation.

*Root Cause Analysis:*

Upon investigation, it appears that the KNI module registers its network
operations using the *register_pernet_subsys()* function. This registration
method places the KNI initialization function before the loopback device's
initialization in *pernet_list*. Consequently, when a new * net_namespace*
is created, the KNI interface is initialized before the loopback interface,
causing the KNI interface to receive ifindex 1 and the loopback interface
to receive ifindex 2. This order violates the kernel's expectation and
triggers the BUG_ON check.

*Environment Details:*

   -

   DPDK Version: 19.11
   -

   Kernel Version: 5.4.46
   -

   Operating System:  Linux
   - Architecture: x86_64

*Reproduction Steps:*

   1.

   Load the DPDK KNI module.
   2.

   Use Docker to create a new container in bridge mode.
   3.

   Observe the kernel panic due to the loopback interface not having ifindex
   1.

*Additional Information:*

We would appreciate it if the DPDK development team could review this issue
and consider incorporating the proposed change into future releases. Please
let us know if further information or testing is required from our side.

Best regards,

Reply via email to