Hi ben,

In the beginning I also think it should be a barrier issue, however it
turned out not the case.

The pkt which had sw_if_index[VLIB_RX] set as the to-be-deleted interface
is actually being put to ip4-lookup node by my process node, the process
node add pkt in a timer drive way.

Since the pkt is added by my process node, I think it is not affected by
the worker barrier.  in my case the sub if is deleted by API, which is
processed in linux_epoll_input PRE_INPUT node, let's consider the following
sequence:


   1. my process add a pkt to ip4-node, and the pkt refer to a valid sw if
   index
   2. linux_epoll_input process a API request to delete the above sw if
   index.
   3. vpp schedule ip4-lookup node, then it will crash because the sw if
   index is deleted and ip4_lookup node can't use sw_if_index[VLIB_RX] which
   is now ~0 to get a valid fib index.


There are some code that do this way (ikev2_send_ike and others), I think
it's not doable to update the pending frame when the interface is deleted.

Benoit Ganne (bganne) via lists.fd.io <bganne=cisco....@lists.fd.io>
于2022年11月29日周二 22:22写道:

> Hi Zhang,
>
> I'd expect the interface deletion to happen under the worker barrier. VPP
> workers should drain all their in-flight packets before entering the
> barrier, so it should not be possible for the interface to disappear
> between your node and ip4-lookup. Or am I missing something?
> What I have seen happening is you'd have some data structure where you
> keep the interface index that you use in your node, and this data is not
> updated when the interface is removed.
> Regarding your proposal, I suspect an issue could be when we reuse the
> sw_if_index: if you del a sw_interface and then add a new one, chances are
> you'll be reusing the same index, but fib_index might be different.
>
> Best
> ben
>
> > -----Original Message-----
> > From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Zhang
> Dongya
> > Sent: Tuesday, November 29, 2022 3:45
> > To: vpp-dev@lists.fd.io
> > Subject: Re: [vpp-dev] possible use deleted sw if index in ip4-lookup and
> > cause crash
> >
> >
> > I have found a solution and it can solve the crash issue.
> >
> > In ip4_sw_interface_add_del which is a callback for interface deletion,
> we
> > may set the fib index of the removed interface to 0 (default fib) instead
> > of ~0.  This behavior is same with interface creation.
> >
> >
> >
> > Zhang Dongya via lists.fd.io <http://lists.fd.io>
> > <fortitude.zhang=gmail....@lists.fd.io <mailto:gmail....@lists.fd.io> >
> 于
> > 2022年11月28日周一 19:41写道:
> >
> >
> >       Hi list,
> >
> >       Recently I encountered a vpp crash with my plugin enabled, after
> > some investigation I find it may related with l3 sub interface delete
> > while my process node add work to ip4-lookup node.
> >
> >
> >       Intuitively I think it may related to a barrier usage but I tried
> > to fix by add some check in my process node to guard the case that l3 sub
> > interface is deleted. however the crash still exists.
> >
> >       Finally I think it should be related to a pattern like this:
> >
> >       1, my process node adds a pkt by using put_frame_to_node to ip4-
> > lookup directly, which set the rx interface to the l3 sub interface
> > created before.
> >
> >       2, my control plane agent (using govpp) delete the l3 sub
> > interface. (it should be handled in vpp api-process node)
> >
> >       3, vpp schedule pending nodes. since the rx interface is deleted,
> > vpp can't get a valid fib index and there is not check in the following
> > ip4_fib_forwarding_lookup, so it crash with abort.
> >
> >       I think vpp may schedule my process node(timeout driven) and api-
> > process node one over one, then it will schedule the pending nodes.
> >
> >       Should I add some check in ip4-lookup or there are better way of
> > sending pkt in ctrl process not correct ?
> >
> >       Thanks a lot.
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22256): https://lists.fd.io/g/vpp-dev/message/22256
Mute This Topic: https://lists.fd.io/mt/95307938/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to