[dpdk-dev] Kni interface unable to receive ipv6 solicited node multicast addressed frames

Srinivasan J srinidpdk at gmail.com
Sat Jan 25 03:09:37 CET 2020


Calling rte_eth_allmulticast_enable() in the DPDK KNI sample app
solved the issue. Sharing the fix so that it will be helpful for
others facing similar issue.

Regards,
Srini

/dpdk-stable-18.08.1/examples/kni/main.c

@@ -618,8 +619,10 @@
                rte_exit(EXIT_FAILURE, "Could not start port%u (%d)\n",
                                                (unsigned)port, ret);

-       if (promiscuous_on)
+       if (promiscuous_on) {
+              rte_eth_allmulticast_enable(port);
                rte_eth_promiscuous_enable(port);
+       }

Corresponding flags/settings in the dVswitch post calling
rte_eth_allmulticast_enable() in KNI app.

/net/portsets/DvsPortset-0/ports/50331671/> cat status
port {
   port index:23
   portCfg:
   dvPortId:17
   clientName:Ubuntu 18 64bit.eth1
   clientType:port types: 5 -> VMM Virtual NIC
   clientSubType:port types: 9 -> Vmxnet3 Client
   world leader:180572
   flags:port flags: 0xc01d3 -> IN_USE ENABLED WORLD_ASSOC RX_COALESCE
TX_COALESCE TX_COMP_COALESCE CONNECTED MULTICAST_ROUTER
   Impl customized blocked flags:0x00000000
   Passthru status:: 0x20 -> DISABLED_BY_PG
   fixed Hw Id:00:50:56:80:b3:6e:
   ethFRP:frame routing {
      requested:filter {
         flags:0x0000000d
         unicastAddr:00:50:56:80:b3:6e:
         numMulticastAddresses:0
         multicastAddresses:
         LADRF:[0]: 0x0
         [1]: 0x0
      }
      accepted:filter {
         flags:0x0000000d
         unicastAddr:00:50:56:80:b3:6e:
         numMulticastAddresses:0
         multicastAddresses:
         LADRF:[0]: 0x0
         [1]: 0x0
      }
   }
   filter supported features:features: 0 -> NONE
   filter properties:properties: 0 -> NONE
   rx mode:properties: 0 -> INLINE
   tune mode:Tuning mode: 0 -> default
}

On Thu, Jan 23, 2020 at 9:06 PM Srinivasan J <srinidpdk at gmail.com> wrote:
>
> On further investigation, it' seen that the dvSwitch does not have any
> multicast MAC registered when using DPDK vmxnet3 poll mode driver
> along with the KNI sample app post configuring IPv6 address on the
> vEth0 KNI interface. The same interface when used with the kernel
> driver works fine. Any help or pointers are really appreciated.
>
> Regards,
> Srini
>
> Non Working case: Using DPDK sample KNI interface in the same Ubuntu
> ================
> /net/portsets/DvsPortset-0/ports/50331667/> cat status
> port {
>    port index:19
>    portCfg:
>    dvPortId:17
>    clientName:Ubuntu 18 64bit.eth1
>    clientType:port types: 5 -> VMM Virtual NIC
>    clientSubType:port types: 9 -> Vmxnet3 Client
>    world leader:180572
>    flags:port flags: 0x401d3 -> IN_USE ENABLED WORLD_ASSOC RX_COALESCE
> TX_COALESCE TX_COMP_COALESCE CONNECTED
>    Impl customized blocked flags:0x00000000
>    Passthru status:: 0x20 -> DISABLED_BY_PG
>    fixed Hw Id:00:50:56:80:b3:6e:
>    ethFRP:frame routing {
>       requested:filter {
>          flags:0x00000019
>          unicastAddr:00:50:56:80:b3:6e:
>          numMulticastAddresses:0
>          multicastAddresses:
>          LADRF:[0]: 0x0
>          [1]: 0x0
>       }
>       accepted:filter {
>          flags:0x00000009
>          unicastAddr:00:50:56:80:b3:6e:
>          numMulticastAddresses:0
>          multicastAddresses:
>          LADRF:[0]: 0x0
>          [1]: 0x0
>       }
>    }
>    filter supported features:features: 0 -> NONE
>    filter properties:properties: 0 -> NONE
>    rx mode:properties: 0 -> INLINE
>    tune mode:Tuning mode: 0 -> default
> }
>
> Working case: Using Kernel interface in Ubuntu
> ===========
> /net/portsets/DvsPortset-0/ports/50331667/> cat status
> port {
>    port index:19
>    portCfg:
>    dvPortId:17
>    clientName:Ubuntu 18 64bit.eth1
>    clientType:port types: 5 -> VMM Virtual NIC
>    clientSubType:port types: 9 -> Vmxnet3 Client
>    world leader:180572
>    flags:port flags: 0x401d3 -> IN_USE ENABLED WORLD_ASSOC RX_COALESCE
> TX_COALESCE TX_COMP_COALESCE CONNECTED
>    Impl customized blocked flags:0x00000000
>    Passthru status:: 0x20 -> DISABLED_BY_PG
>    fixed Hw Id:00:50:56:80:b3:6e:
>    ethFRP:frame routing {
>       requested:filter {
>          flags:0x0000000b
>          unicastAddr:00:50:56:80:b3:6e:
>          numMulticastAddresses:6
>          multicastAddresses:01:00:5e:00:00:01,01:80:c2:00:00:00,01:80:c2:00:00:03,01:80:c2:00:00:0e,33:33:00:00:00:01,33:33:ff:80:b3:6e,
>          LADRF:[0]: 0x0
>          [1]: 0x0
>       }
>       accepted:filter {
>          flags:0x0000000b
>          unicastAddr:00:50:56:80:b3:6e:
>          numMulticastAddresses:6
>          multicastAddresses:01:00:5e:00:00:01,01:80:c2:00:00:00,01:80:c2:00:00:03,01:80:c2:00:00:0e,33:33:00:00:00:01,33:33:ff:80:b3:6e,
>          LADRF:[0]: 0x0
>          [1]: 0x0
>       }
>    }
>    filter supported features:features: 0x1 -> LRO
>    filter properties:properties: 0 -> NONE
>    rx mode:properties: 0 -> INLINE
>    tune mode:Tuning mode: 0 -> default
> }
>
> On Fri, Jan 17, 2020 at 10:56 PM Srinivasan J <srinidpdk at gmail.com> wrote:
> >
> > Hi,
> >    I observed that DPDK kni interface is not able to receive solicited
> > node multicast addressed (derived from the IPv6 address configured on
> > vEth0 interface) when the kni sample app is being run in Ubuntu VM on
> > ESXI server. The only way to have the frames reach the kni interface
> > is by setting the promiscuous mode in dvSwitch. However regular kernel
> > interface with IPv6 address on the same vmxnet3 port works fine
> > without having to set promiscuous mode in the dvSwitch. Has anyone
> > seen this issue before? Any suggestions to have kni interface working
> > with ipv6 addresses in non promiscuous mode of dvSwitch.
> >
> > Ubuntu version used  = Ubuntu 18.04.3 LTS
> > DPDK version: 18.08.1
> > VMware ESXI 6.5.0
> >
> > auto at auto_ubuntu18:~/source/dpdk-stable-18.08.1/usertools$ uname -a
> > Linux auto_ubuntu18 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19
> > 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
> >
> > sudo /tmp/kni -l 6-7  -- -P -p 0x1 --config="(0,6,7)"
> >
> > Thanks,
> > Srini


More information about the dev mailing list