On Thu, Jul 15, 2021 at 2:12 PM RaviKiran Veldanda <ravi.jup...@gmail.com>
wrote:

> Hi Experts,
> We implemented a PLUGIN, this plugin reads packets from physical interface
> and sends to memif.
> The memif other end is our application, it takes necessary action.
> The packet flow would be
>
> Devie-Input --> OUR Plugin --> Memif --> Our application.(Plugin filters
> the packets and send to memif or Bond-input.)
> or
> Devie-Input --> OUR Plugin --> bond-input --> VPP processing.
>
> Our plugin is working with only physical interface. Now we are trying to
> make this work with Bonded Interface, its not working with bonded interface.
> If we disable bond-input for that physical interface and only enable our
> plugin it will work fine. But we needed BondedInterface support for LACP.
> So we can't just avoid BondedInterface.
>

Hi Ravi,

What constitutes "not working"? Packets are not reaching your plugin node?
Packets are not reaching your application across the memif? Packets handed
by your plugin node to bond-input are not forwarded as expected? VPP
crashes? Something else?



> Our feature arc is
> VNET_FEATURE_INIT (ipgw_ent, static) =
> {
>   .arc_name = "device-input",
>   .node_name = "ravi_plugin",
>   .runs_before = VNET_FEATURES ("ethernet-input"),
> };
>
> I tried placing different arcs for my plugin, its not working. Can you
> please suggest how can our plugin to make it work for logical interfaces.
> Like if we want to make it work for BondedInterface.1100? which arc we
> should choose, we need raw packet to our application.
> Any pointers are very big help.
>
>
It's hard to say what the problem is without more information. It would be
helpful to see output of a vppctl packet trace for one of the packets which
is being handled incorrectly. Hopefully your plugin node is capable of
adding trace data.
Output of 'vppctl show runtime' might also be helpful.

Some guesses of things that might be related to the problem:

   - If you're using LACP, some inband signaling is required between your
   physical interfaces and the devices they're attached to. Is your plugin
   causing LACP packets to be dropped?
   - bond-input is itself a node on the device-input arc. With your
   declaration containing '.runs_before = VNET_FEATURES ("ethernet-input"),',
   I don't think you are guaranteed that your plugin node will process a
   packet before bond-input does. Maybe changing to '.runs_before =
   VNET_FEATURES ("bond-input"),' will help.
   - How is your plugin node handing packets off to bond-input? Are you
   calling vnet_feature_next() or are you explicitly handing off to
   bond-input? bond-input calls vnet_feature_next() to figure out the next
   node it should hand a packet to. If your plugin node did not call
   vnet_feature_next() and instead just handed the packet directly to
   bond-input, that might cause issues when bond-input calls
   vnet_feature_next().

-Matt
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19795): https://lists.fd.io/g/vpp-dev/message/19795
Mute This Topic: https://lists.fd.io/mt/84233170/21656
Mute #plugin:https://lists.fd.io/g/vpp-dev/mutehashtag/plugin
Mute #memif:https://lists.fd.io/g/vpp-dev/mutehashtag/memif
Mute #bondedinterface:https://lists.fd.io/g/vpp-dev/mutehashtag/bondedinterface
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to