Thanks Dave, Neale.

This is great information.

On Mon, Apr 6, 2020 at 6:14 AM Neale Ranns (nranns) <nra...@cisco.com>
wrote:

>
>
> In the test harness you can inject onto a given worker, e.g. see
> IpsecTun6HandoffTests.
>
>
>
> /neale
>
>
>
> *From: *<vpp-dev@lists.fd.io> on behalf of Paul Vinciguerra <
> pvi...@vinciconsulting.com>
> *Date: *Sunday 5 April 2020 at 17:24
> *To: *"Dave Barach (dbarach)" <dbar...@cisco.com>
> *Cc: *Elias Rudberg <elias.rudb...@bahnhof.net>, "vpp-dev@lists.fd.io" <
> vpp-dev@lists.fd.io>
> *Subject: *Re: [vpp-dev] VPP nat ipfix logging problem, need to use
> thread-specific vlib_main_t?
>
>
>
> How can we test scenarios like this?
>
> 'set interface rx-placement' doesn't support pg interfaces.
>
> DBGvpp# set interface rx-placement TenGigabitEthernet5/0/0 worker 2
> DBGvpp# set interface rx-placement pg0 worker 2
> set interface rx-placement: not found
>
> DBGvpp#
>
> Is there another command to bind a pg interface to a worker thread?
>
>
>
> On Sun, Apr 5, 2020 at 8:08 AM Dave Barach via lists.fd.io <dbarach=
> cisco....@lists.fd.io> wrote:
>
> If you have the thread index handy, that's OK. Otherwise, use
> vlib_get_main() which grabs the thread index from thread local storage.
>
> -----Original Message-----
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Elias Rudberg
> Sent: Sunday, April 5, 2020 4:58 AM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] VPP nat ipfix logging problem, need to use
> thread-specific vlib_main_t?
>
> Hello VPP experts,
>
> We have been using VPP for NAT44 for a while and it has been working fine,
> but a few days ago when we tried turing on nat ipfix logging, vpp crashed.
> It turned out that the problem went away if we used only a single thread,
> so it seemed related to how threading was handled in the ipfix logging
> code. The crash happened in different ways on different runs but often
> seemed related to the snat_ipfix_send() function in
> plugins/nat/nat_ipfix_logging.c.
>
> Having looked at the code in nat_ipfix_logging.c I have the following
> theory about what goes wrong (I might have misunderstood something, if so
> please correct me):
>
> In the the snat_ipfix_send() function, a vlib_main_t data structure is
> used, a pointer to it is fetched in the following way:
>
>    vlib_main_t *vm = frm->vlib_main;
>
> So the frm->vlib_main pointer comes from "frm" which has been set to
> flow_report_main which is a global data structure from vnet/ipfix-
> export/flow_report.c that as far as I can tell only exists once in memory
> (not once per thread). This means that different threads calling the
> snat_ipfix_send() function are using the same vlib_main_t data structure.
> That is not how it should be, I think, instead each thread should be using
> its own thread-specific vlib_main_t data structure.
>
> A suggestion for how to fix this is to replace the line
>
>    vlib_main_t *vm = frm->vlib_main;
>
> with the following line
>
>    vlib_main_t *vm = vlib_mains[thread_index];
>
> in all places where worker threads are using such a vlib_main_t pointer.
> Using vlib_mains[thread_index] means that we are picking the
> thread-specific vlib_main_t data structure for the current thread, instead
> of all threads using the same vlib_main_t. I pushed such a change to
> gerrit, here: https://gerrit.fd.io/r/c/vpp/+/26359
>
> That fix seems to solve the issue in my tests, vpp does not crash anymore
> after the change. Please have a look at it and let me know if this seems
> reasonable or if I have misunderstood something.
>
> Best regards,
> Elias
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#16003): https://lists.fd.io/g/vpp-dev/message/16003
Mute This Topic: https://lists.fd.io/mt/72786912/21656
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