Re: [vpp-dev] weird crash when allocate new ho_session_alloc in debug image

2022-11-03 Thread Zhang Dongya
Hi,

I have made a patch and submit it to gerrit for review.

https://gerrit.fd.io/r/c/vpp/+/37567

I have run against vpp unit test for session feature and no regression
found yet.

Florin Coras  于2022年11月1日周二 23:42写道:

> Hi,
>
> Will you be pushing the fix or should I do it?
>
> Regards,
> Florin
>
> On Oct 25, 2022, at 9:26 AM, Florin Coras via lists.fd.io <
> fcoras.lists=gmail@lists.fd.io> wrote:
>
> Hi,
>
> Apologies, I missed your original point and only though about the large
> bitmap we create at startup. So yes, go for s->session_index + 1.
>
> Regards,
> Florin
>
> On Oct 24, 2022, at 9:11 PM, Zhang Dongya 
> wrote:
>
> Hi,
>
> Can you elaborate a bit on that, If session index is 64, if we do not
> increase by 1, it will only make one 64B vec for the bitmap, which may not
> hold the session index.
>
> Florin Coras  于2022年10月25日周二 01:14写道:
>
>> Hi,
>>
>> Could you replace s->session_index by s->session_index ? : 1 in the
>> patch?
>>
>> Regards,
>> Florin
>>
>> On Oct 24, 2022, at 12:23 AM, Zhang Dongya 
>> wrote:
>>
>> Hi list,
>>
>> Recently I am testing my TCP application in a plugin, what I did is to
>> initiate a TCP client in my plugin, however, when I build the debug image
>> and test, the vpp
>> will crash and complaint about out of memory.
>>
>> After doing some research, it seems the following code may cause the
>> crash:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *always_inline session_t *ho_session_alloc (void){  session_t *s;  ASSERT
>> (vlib_get_thread_index () == 0);  s = session_alloc (0);  s->session_state
>> = SESSION_STATE_CONNECTING;  s->flags |= SESSION_F_HALF_OPEN;  /* Not
>> ideal. Half-opens are only allocated from main with worker barrier   * but
>> can be cleaned up, i.e., session_half_open_free, from main without   * a
>> barrier. In debug images, the free_bitmap can grow while workers peek   *
>> the sessions pool, e.g., session_half_open_migrate_notify, and as a   *
>> result crash while validating the session. To avoid this, grow the bitmap
>>  * now. */  if (CLIB_DEBUG){  session_t *sp =
>> session_main.wrk[0].sessions;  clib_bitmap_validate (pool_header
>> (sp)->free_bitmap, s->session_index);}  return s;}*
>>
>> since the clib_bitmap_validate is defined as:
>>
>>
>>
>> */* Make sure that a bitmap is at least n_bits in size */#define
>> clib_bitmap_validate(v,n_bits) \  clib_bitmap_vec_validate ((v), ((n_bits)
>> - 1) / BITS (uword))*
>>
>>
>> The first half open session have a session_index with zero, so 0-1 will
>> make a overflow which cause it try to allocate (UINT64_MAX-1)/ 64 memory
>> which make
>> the vppinfra abort.
>>
>> I think we should modify the code above with s->session_index + 1, if
>> that's correct, I will submit a patch later.
>>
>>
>>
>>
>>
>>
>>
>>
>
>
> 
>
>
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22114): https://lists.fd.io/g/vpp-dev/message/22114
Mute This Topic: https://lists.fd.io/mt/94529335/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]
-=-=-=-=-=-=-=-=-=-=-=-



[vpp-dev] Policer classify as an output feature

2022-11-03 Thread Mahdi Varasteh
Hi VPP folks,

Less than 2 years ago, a new feature named `input policing` was added to VPP 
and 7 months ago the output counterpart was added which enables a policer on 
all the incoming/outgoing traffic on an interface.  

Here is a similar patch to add class-based policing as an output feature: 
https://gerrit.fd.io/r/c/vpp/+/37566


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22115): https://lists.fd.io/g/vpp-dev/message/22115
Mute This Topic: https://lists.fd.io/mt/94752054/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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [vpp-dev] DNS Resolution over VCL

2022-11-03 Thread Anthony Fee
Hi Florin,

Thanks for the feedback. I built a very basic application to trigger a TCP 
request, with gethostbyname() to resolve the hostname, using the VCL library 
directly. This worked as expected. Just to verify, I ran this also with 
LD_PRELOAD and I did see the gethostbyname() function stopped working. So it 
does look like that LD_PRELOAD is having an impact.

Anyway, the good news is that VCL is very easy to work.

Thanks again for your input.
Anthony

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22116): https://lists.fd.io/g/vpp-dev/message/22116
Mute This Topic: https://lists.fd.io/mt/94581374/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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [vpp-dev] weird crash when allocate new ho_session_alloc in debug image

2022-11-03 Thread Florin Coras
Thanks, merged!

Regards,
Florin


> On Nov 3, 2022, at 12:33 AM, 张东亚  wrote:
> 
> Hi,
> 
> I have made a patch and submit it to gerrit for review.
> 
> https://gerrit.fd.io/r/c/vpp/+/37567 
> 
> I have run against vpp unit test for session feature and no regression found 
> yet.
> 
> Florin Coras mailto:fcoras.li...@gmail.com>> 
> 于2022年11月1日周二 23:42写道:
> Hi, 
> 
> Will you be pushing the fix or should I do it? 
> 
> Regards, 
> Florin
> 
>> On Oct 25, 2022, at 9:26 AM, Florin Coras via lists.fd.io 
>>  > > wrote:
>> 
>> Hi, 
>> 
>> Apologies, I missed your original point and only though about the large 
>> bitmap we create at startup. So yes, go for s->session_index + 1.
>> 
>> Regards,
>> Florin
>> 
>>> On Oct 24, 2022, at 9:11 PM, Zhang Dongya >> > wrote:
>>> 
>>> Hi,
>>> 
>>> Can you elaborate a bit on that, If session index is 64, if we do not 
>>> increase by 1, it will only make one 64B vec for the bitmap, which may not 
>>> hold the session index.
>>> 
>>> Florin Coras mailto:fcoras.li...@gmail.com>> 
>>> 于2022年10月25日周二 01:14写道:
>>> Hi, 
>>> 
>>> Could you replace s->session_index by s->session_index ? : 1 in the patch? 
>>> 
>>> Regards, 
>>> Florin
>>> 
 On Oct 24, 2022, at 12:23 AM, Zhang Dongya >>> > wrote:
 
 Hi list,
 
 Recently I am testing my TCP application in a plugin, what I did is to 
 initiate a TCP client in my plugin, however, when I build the debug image 
 and test, the vpp
 will crash and complaint about out of memory.
 
 After doing some research, it seems the following code may cause the crash:
 
 always_inline session_t *
 ho_session_alloc (void)
 {
   session_t *s;
   ASSERT (vlib_get_thread_index () == 0);
   s = session_alloc (0);
   s->session_state = SESSION_STATE_CONNECTING;
   s->flags |= SESSION_F_HALF_OPEN;
   /* Not ideal. Half-opens are only allocated from main with worker barrier
* but can be cleaned up, i.e., session_half_open_free, from main without
* a barrier. In debug images, the free_bitmap can grow while workers 
 peek
* the sessions pool, e.g., session_half_open_migrate_notify, and as a
* result crash while validating the session. To avoid this, grow the 
 bitmap
* now. */
   if (CLIB_DEBUG)
 {
   session_t *sp = session_main.wrk[0].sessions;
   clib_bitmap_validate (pool_header (sp)->free_bitmap, 
 s->session_index);
 }
   return s;
 }
 
 since the clib_bitmap_validate is defined as:
 
 /* Make sure that a bitmap is at least n_bits in size */
 #define clib_bitmap_validate(v,n_bits) \
   clib_bitmap_vec_validate ((v), ((n_bits) - 1) / BITS (uword))
 
 
 The first half open session have a session_index with zero, so 0-1 will 
 make a overflow which cause it try to allocate (UINT64_MAX-1)/ 64 memory 
 which make
 the vppinfra abort.
 
 I think we should modify the code above with s->session_index + 1, if 
 that's correct, I will submit a patch later.
 
 
 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22117): https://lists.fd.io/g/vpp-dev/message/22117
Mute This Topic: https://lists.fd.io/mt/94529335/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]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [vpp-dev] DNS Resolution over VCL

2022-11-03 Thread Florin Coras
Hi Anthony, 

Great! Will add the gethostbyname issue to my never shrinking todo list but, 
should you look into it, let me know if you manage to figure out how ldp 
interacts with gethostbyname.

Regards, 
Florin

> On Nov 3, 2022, at 4:54 AM, Anthony Fee  wrote:
> 
> Hi Florin,
> 
> Thanks for the feedback. I built a very basic application to trigger a TCP 
> request, with gethostbyname() to resolve the hostname, using the VCL library 
> directly. This worked as expected. Just to verify, I ran this also with 
> LD_PRELOAD and I did see the gethostbyname() function stopped working. So it 
> does look like that LD_PRELOAD is having an impact.
> 
> Anyway, the good news is that VCL is very easy to work. 
> 
> Thanks again for your input.
> Anthony 
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22118): https://lists.fd.io/g/vpp-dev/message/22118
Mute This Topic: https://lists.fd.io/mt/94581374/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]
-=-=-=-=-=-=-=-=-=-=-=-