Hi,
I am bringing in some legacy code which worked with DPDK standalone,
and converting it into a VPP plugin (VPP 22.10)
The legacy code uses the DPDK rte_timer api's
Now as soon as my VPP plugin calls the DPDK API
rte_timer_subsystem_init, I get the following error from EAL of DPDK
EAL:
, wrote:
> I did not heard anything like this.
> Can you try to reproduce with latest master? Do you have some proprietary
> plugins loaded also?
>
> Best
> ben
>
> > -Original Message-
> > From: vpp-dev@lists.fd.io On Behalf Of Prashant
> > Upadhyaya
&
Hi,
I am migrating from VPP21.06 where my usecase works without issues
overnight, but in VPP22.06 it gives the following crash in 7 to 8
minutes of run.
Just wondering if this is a known issue or if anybody else has seen this.
Further, when I run in VPP22.06 with a single worker thread, this
> -Original Message-
> > From: Prashant Upadhyaya
> > Sent: jeudi 6 janvier 2022 12:33
> > To: Benoit Ganne (bganne)
> > Cc: vpp-dev
> > Subject: Re: [vpp-dev] Prioritized packet sending
> >
> > Thanks Benoit, let me be more specific than l
ards, but you'll skip any other nodes (eg. let's say
> you're on the device-input feature arc and you want to skip the whole L3 path
> - ip4-lookup and friends).
>
> Best
> ben
>
> > -Original Message-----
> > From: vpp-dev@lists.fd.io On Behalf Of Prashant
>
Hi,
Assume we are inside the code of a node in a plugin on a worker.
Normally we would do the packet processing the usual way, enqueue the
packets to various other nodes and return and the graph scheduler
would send the packets out as normal dispatch logic.
But what if from my node code, I want
Hi,
Wanted to find out if it is safe to call a shell script like
system("foo.ksh") in VPP from the main thread, say, periodically. The
foo.ksh does some simple operations and does not block for a long
time.
Reason I ask is that I have noticed that the fastpath seems to stop
working once I do the
, 2021 at 12:59 AM Damjan Marion wrote:
>
>
> —
> Damjan
>
>
>
> On 06.09.2021., at 15:27, Prashant Upadhyaya wrote:
>
> Hi,
>
> I am using VPP21.06
> In vlib_buffer_advance there is the following assert --
> ASSERT ((b->flags & VLIB_BUFFER_N
Hi,
I am using VPP21.06
In vlib_buffer_advance there is the following assert --
ASSERT ((b->flags & VLIB_BUFFER_NEXT_PRESENT) == 0 ||
b->current_length >= VLIB_BUFFER_MIN_CHAIN_SEG_SIZE);
The above is problematic as I have a usecase where I construct a chained packet.
The first packet
Hi,
I am using VPP21.06.
I have successfully created an IPSec tunnel between VPP and a Strong Swan peer.
Packets from VPP are going into ESP towards the peer, the peer is
responding back with ESP as well (inner cleartext packets are ICMP)
Now then, I have a node of my own which is sitting on the
Thanks Benoit for the information.
Regards
-Prashant
On Tue, Sep 29, 2020 at 3:14 PM Benoit Ganne (bganne) wrote:
>
> Hi Prashant,
>
> > 1. What is the expected performance benefit if RDMA driver is used in
> > VPP instead of DPDK driver ?
>
> - out-of-the-box support for Mellanox CX4/5 NIC
Hi,
I am trying to evaluate usage of RDMA driver with VPP.
So two immediate questions which I need to answer to my higher ups :-
1. What is the expected performance benefit if RDMA driver is used in
VPP instead of DPDK driver ?
2. Which NIC's are supported with RDMA driver in VPP ? Conversely
ly, spin up 1-N threads to run the shaper and driver TX path, and
> nothing else. See also the handoff node.
>
> HTH... Dave
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Thursday, July 23, 2020 2:39 AM
> T
Hi,
I have implemented a shaper as a poll node in VPP. worker.
The implementation is such that the shaper needs to send packets out
which are sitting/scheduled in a timer wheel with microsecond
granularity slots.
The shaper must invoke at a precise regular interval, say every 250
microseconds
t;
> Aside from accounting for the issue in your code, there probably isn't much
> to be done about it...
>
> D
>
> -----Original Message-
> From: Prashant Upadhyaya
> Sent: Monday, June 15, 2020 8:58 AM
> To: Dave Barach (dbarach)
> Cc: vpp-dev@lists.fd.io
>
ex machina
> (e.g. NTP) involved?
>
>
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Sunday, June 14, 2020 10:32 AM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] Regarding vlib_time_now
>
>
>
> Hi
Hi,
I am using VPP 19.08
In my worker threads, I am observing that when I am making successive
calls to vlib_time_now in a polling node, sometimes the value of the
time reduces.
Is this expected to happen ? (presumably because of the implementation
which tries to align the times in workers ?)
I
> sysctl -w kernel.core_pattern="|/usr/local/bin/compressed_corefiles %e %t"
>
> HTH... Dave
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Tuesday, February 4, 2020 4:38 AM
> To: Benoit Ganne (bganne)
gt; ben
>
> > -Original Message-
> > From: vpp-dev@lists.fd.io On Behalf Of Prashant
> > Upadhyaya
> > Sent: mardi 4 février 2020 09:15
> > To: vpp-dev@lists.fd.io
> > Subject: Re: [vpp-dev] Regarding buffers-per-numa parameter
> >
> > Woops, my
)
If anybody else facing issues with higher configured buffers, please do share.
Regards
-Prashant
On Tue, Feb 4, 2020 at 1:31 PM Prashant Upadhyaya
wrote:
>
> Hi,
>
> I am using DPDK Plugin with VPP19.08.
> When I set the buffers-per-numa parameter to a high value, say,
> 25, I
Hi,
I am using DPDK Plugin with VPP19.08.
When I set the buffers-per-numa parameter to a high value, say,
25, I am seeing crashes in the system.
(The corresponding parameter controlling number of mbufs in VPP18.01
used to work well. This was in dpdk config section as num-mbufs)
I quickly
On Fri, Dec 6, 2019 at 9:32 PM Damjan Marion wrote:
>
>
>
> > On 6 Dec 2019, at 07:16, Prashant Upadhyaya wrote:
> >
> > Hi,
> >
> > I use VPP with DPDK driver for I/O with NIC.
> > For high speed switching of packets to and from kernel, I use DPD
Hi,
I use VPP with DPDK driver for I/O with NIC.
For high speed switching of packets to and from kernel, I use DPDK KNI
(kernel module and user space API's provided by DPDK)
This works well because the vlib buffer is backed by the DPDK mbuf
(KNI uses DPDK mbuf's)
Now, if I choose to use a native
hings have changed since 18.01 - thousands of patches' worth, including
> significant performance tunes and a new build system - IIWY I'd rebase to
> 19.04 and/or master/latest.
>
> HTH... Dave
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
r size increases smoothly as offered load increases, up a
> vector size of maybe 128 or so
> Hit the wall: a slight increate in offered load causes a huge jump in the
> vector size, traffic loss, etc.
>
>
>
> HTH... Dave
>
>
>
> -Original Message-
> From:
Hi,
I understand that VPP workers poll so they are always at 100 % CPU.
However, I want to get an estimate of what is the effective CPU
utilization i.e. the amount which was spent in doing the work for
packet processing.
In the native applications, the crude way I used to employ was to take
a
in.time_last_barrier_release - now;
> vm->time_last_barrier_release = vlib_time_now (vm);
> }
>
> See also the "show clock" command.
>
> There should be no need to re-solve this problem yourself.
>
> Thanks...
>
> -Original Message-
Hi,
I suppose vlib_time_now can return different times on different workers.
If I want to have some global notion of time between workers (and
possibly main thread), what would be the best way, please suggest.
I thought of passing the vm of main thread for the above usecase, from
workers, while
Hi,
I see that there is a node called 'interface-output'
And there is a feature arc called 'interface-output'
My understanding is that if I send a packet to the node
interface-output then that will further send the packet to the device
specific node to accomplish the actual output.
If I make a
of the vlib_node_t's index of the target
node.
Regards
-Prashant
On Mon, Mar 4, 2019 at 9:31 PM Neale Ranns (nranns) wrote:
>
>
> I'll bite __ why would you want to do that?
>
> /neale
>
> -Message d'origine-----
> De : au nom de Prashant Upadhyaya
>
> Date : lundi 4
e index corresponding to the next index
> you have in mind: nNext = vlib_get_node (vm, n->next_nodes[i])
>
> HTH... Dave
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Monday, March 4, 2019 9:29 AM
> To: vpp-dev@lists.fd.
Hi,
When a node is on a feature arc, a good practice for that node is to
inspect the next feature with vnet_feature_next, obtain the next0 from
that and send the packets to the next0. All this works properly.
My question -- how can I obtain the true vlib_node_t pointer
corresponding to the next0
Hi,
I am facing a strange issue in vec_validate.
I use an incrementing id and keep doing a vec_validate based on that
id for a certain single dimensional array of structures. Each
structure in the array itself is 216 bytes long. Around the time when
the id reaches 1.3 million, the vec_validate
Hi,
Assuming the heap is sufficiently dimensioned, can any size be
requested from clib_mem_alloc which fits in u32 ? Are there any issues
if higher sizes are requested eg. can clib_mem_alloc actually return a
pointer but the allocated size is not as much as the requested size ?
Perhaps it is
Hi,
I want to write a node which gets all the GTP-u packets which enter
into VPP via an interface.
I understand from
https://docs.fd.io/vpp/17.07/clicmd_src_plugins_gtpu.html
that I have to run the following command for the interface --
set interface ip gtpu-bypass
In my code, kindly confirm,
Hi,
If I spawn some of my own pthreads from the main thread, then can I
use the clib functions inside my own pthread, eg. clib_mem_alloc/free
safely ?
In general, are there any guidelines to be followed regarding own
pthreads, would appreciate any input on this front.
Regards
-Prashant
te_t
> new_state)
>
> -Original Message-
> From: Prashant Upadhyaya
> Sent: Thursday, November 22, 2018 8:53 AM
> To: Dave Barach (dbarach)
> Cc: vpp-dev@lists.fd.io
> Subject: Re: [vpp-dev] Difference between PRE_INPUT and INPUT nodes
>
> Thanks Dave.
>
l happens at the top of the loop.
>
> D.
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Thursday, November 22, 2018 7:41 AM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] Difference between PRE_INPUT and INPUT node
Hi,
What is the difference between --
.type = VLIB_NODE_TYPE_PRE_INPUT
and
.type = VLIB_NODE_TYPE_INPUT
when the --
.state = VLIB_NODE_STATE_POLLING
Typically when should the PRE_INPUT be used and when the INPUT, would
appreciate any advice on this. My usecase needs to do a high speed
polling.
Hi,
Can the vlib_time_now return way-off different values in different
workers threads/main thread even if it is called around the same time
?
I have the following situation --
I initialize a per worker data structure in the main thread with a
call to vlib_time_now (by passing the vm of the
Hi,
I have a usecase where I have two IP Datagrams, let's call them IP1,
IP2. Each contains UDP Payload.
IP1 size is bigger than mtu.
IP2 size is lesser than mtu.
I ship these both one after the other in that order to ip4-lookup.
IP1 gets fragmented, as expected, to IP1.1 and IP1.2 and the
Sorry about this, this was a brain-freeze case.
I was made to realize that it is the wait_at_barrier field initialized
to 1 and not workers_at_barrier
Once again sorry for spamming on this one. Everything's fine here.
Regards
-Prashant
On Tue, Nov 13, 2018 at 5:50 PM Prashant Upadhyaya
wrote
; From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Sunday, November 11, 2018 2:37 AM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] Regarding communication from main thread to worker threads
>
> Hi,
>
> The function, vl_api_rpc_call_main_thread, is
Hi,
The function, vl_api_rpc_call_main_thread, is useful to do message
transfer from worker thread to the main thread.
Is there any mechanism where I can call a function in worker thread
from the main thread ? That is, just the reverse of the above.
I can use interrupts
is if the fragments do land up at
ip4-input or not.
Regards
-Prashant
On Thu, Nov 8, 2018 at 10:11 PM Ole Troan wrote:
>
>
>
> > On 8 Nov 2018, at 23:26, Prashant Upadhyaya wrote:
> >
> > Hi,
> >
> > If I hand-construct an IP datagram (bigger than mtu) using chain
Hi,
If I hand-construct an IP datagram (bigger than mtu) using chained
vlib buffers and send this chain to ip4-lookup, would that be
fragmented and sent out as per the mtu requirements of the interface
from which the packet is determined to be sent out ? (assume that the
rx and tx sw_if_index is
Hi,
I am writing a plugin node which will get packets the usual way.
I will pipeline these packets between my worker threads (in the same
plugin node) using the handoff mechanism available.
Thus, when my plugin node gets a packet, it could have been from an
internal handoff from one of my
s.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Friday, November 2, 2018 12:54 PM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] Regarding vlib_buffer_alloc
>
> Hi,
>
> When I allocate a buffer using the vlib_buffer_alloc, are the fields in the
> vlib_buffer_t guaranteed
Hi,
When I allocate a buffer using the vlib_buffer_alloc, are the fields
in the vlib_buffer_t guaranteed to be properly initialized (eg. with
all zero values) or is there any obligation on the caller to
initialize these because the values may be unpredictable ?
Regards
-Prashant
Hi,
I have two buffer chains whose starting vlib_buffer_t's are --
vlib_buffer_t* chainHead1; (let's call this chain1)
vlib_buffer_t* chainHead2; (let's call this chain2)
The chain1, chain2 may have one or more buffers each.
Is there any convenience function which connects the last buffer of
ut feature arc instead.
>
> Please note that packets on that arc are not (optionally) assigned to
> sub-interfaces yet.
> So if you have vlan subinterface, packets will show up as main interface
> packets and with
> original l2 header.
>
> --
> Damjan
>
> On 29 Oct 2018, at
Hi,
I am using DPDK Plugin
I want to write a node which will get to observe all the non-IP packets.
By observe, I mean that I want my node to see the non-IP packets, but
when I return from my node, the packets should traverse the original
graph of VPP which they would have followed had my node
Hi,
I understand that when I do something like the following --
clib_file_t template = {0};
template.read_function = my_read_cb;
template.file_descriptor = my_fd;
template.private_data = my_data;
my_handle = clib_file_add (_main, );
Then my_read_cb will be called whenever the my_fd has data
l Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Sunday, October 28, 2018 3:13 AM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] Regarding vlib_buffer_t construction for tx of a self-made
> packet
>
> Hi,
>
> I have a situation wher
Hi,
I have a situation where one of my plugins needs to construct an l2
packet (containing an ip datagram inside).
So I have a local buffer which contains the following bytes laid out --
dst mac
src mac
ethertype
ip header + payload
Assume for the sake of generality that the above buffer is 4K
when you create it, so you can set e.g. next0 to the
> correct value in MyNode.
>
> HTH... Dave
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> Upadhyaya
> Sent: Wednesday, October 24, 2018 2:15 AM
> To: vpp-dev@lists.
Hi,
I have a registered node like the following --
VLIB_REGISTER_NODE (MyNode) = {
.name = "MyNode",
.
.
.n_next_nodes =N,
.next_nodes = {
[firstone] = "error-drop",
[secondone] = "ip4-lookup",
[thirdone] = "ip6-lookup",
Hi,
I am using clib_bihash_40_8_t (VPP version 18.01)
The number of buckets is 65536.
I am going to add 1 million records into the bihash. My application
takes care that at any point of time there will never be more than 1
million records going into the bihash.
Given the above, what should be
I am using clib_bihash_40_8_t (VPP version 18.01)
The number of buckets is 65536.
I am going to add 1 million records into the bihash. My application
takes care that at any point of time there will never be more than 1
million records going into the bihash.
Given the above, what should be the
about to shoot at my own foot.
On Fri, Sep 21, 2018 at 9:58 PM Prashant Upadhyaya
wrote:
>
> Thanks Dave, Damjan for the shove in the right direction !
> I believe that the safest field to use is vnet_buffer_opaque2_t-> u32
> unused[10]
> So far as I confine myself to the above
Hi,
I want to pass around some custom data between my plugins using vlib_buffer_t.
I believe the pre_data field of 128 bytes can be used for this. (I use
the DPDK plugin)
However, are there some best practices to use this field ? I ask this
because I do see that some debug capabilities of VPP
Hi,
I need to use symmetric RSS hash in VPP while using DPDK plugin, so
that both sides of my TCP flows land on the same worker.
Requesting to please advise what would be the correct way of achieving
this in VPP via the hardware (say Intel82599 NIC) -- I believe it is
possible to configure an
line will be a true u8 * vector: no null-termination. If you need
> null termination: vec_add1 (line, 0);
>
> Remember to vec_free(...) it unless you're planning to keep it.
>
> HTH... Dave
>
> -Original Message-
> From: vpp-dev@lists.fd.io On Behalf Of Prashant
> U
Hi,
I am relatively new to this and trying to learn the art of using
format/unformat.
My requirement is that if my command is "mycmd" followed by some
string (which may have spaces in it), then I should be able to read
the entire string up to the \n character typed by the user.
Eg. if the
Hi,
I have compiled VPP and it's running. I have an interface up and can
ping the IP applied there.
Now I am trying to bring up a legacy application TCP server (the one
which uses POSIX calls). So I set the LD_PRELOAD to point to
it will be to backport the
rx capture functionality and add it as a patch to 18.01.
Regards
-Prashant
On Thu, Jul 26, 2018 at 4:56 PM, Prashant Upadhyaya
wrote:
> Thanks Damjan,
>
> I had a temporary brain-freeze, I do see there is a max parameter as well.
>
> Regards
> -Prashant
>
>
Thanks Damjan,
I had a temporary brain-freeze, I do see there is a max parameter as well.
Regards
-Prashant
On Thu, Jul 26, 2018 at 4:46 PM, Prashant Upadhyaya
wrote:
> Hi Damjan,
>
> Thanks for your CLI pointers.
> It seems there is a limit of 100 packets which would wor
f weight around them. Typical VPP
> feature
> code can work even without DPDK being present.
>
> If you explain your use case we might be able to advise you how to approach
> your problem
> in a way native to VPP, without relying on DPDK legacy features.
>
> Regards,
>
>
t be able to advise you how to approach
> your problem
> in a way native to VPP, without relying on DPDK legacy features.
>
> Regards,
>
> --
> Damjan
>
> On 25 Jul 2018, at 13:11, Prashant Upadhyaya wrote:
>
> Hi,
>
> I am running VPP with DPDK plugin.
> I se
Hi,
I am running VPP with DPDK plugin.
I see that when I normally run other non VPP DPDK applications, they
create a file called /var/run/.rte_config
But VPP running as a DPDK application (and calling rte_eal_init) does
not create this file.
There are consequences of the above in certain
> To be specific for your question
>
> next0 = hi0->output_node_next_index;
>
> output_node_next_index is the index of next node at which the current vector
> has to be copied. (Transition from one node to another along the graph)
>
> Note: All this I got through brow
Hi,
I am trying to walk throught the code to see how the packet arrives
into the system at dpdk rx side and finally leaves it at the dpdk tx
side. I am using the context of the macswap sample plugin for this.
It is clear to me that dpdk-input is a graph node and it is an 'input'
type graph node
Hi,
I am looking for some white paper or some slides which explain deeply
how the data structures related to the frames are organized in fd.io.
Specifically, I need to create a mind map of the following data
structures in the code –
vlib_frame_t
vlib_next_frame_t
vlib_pending_frame_t
Then the
73 matches
Mail list logo