thanks a lot to xiyun!
which kind of scenario you want to pass the pkt from work thread to main
thread. Although the pkt is already processed by work thread and still need to
put it to main thread for further processing?
What’s your real caseJ
//In fact, our use case is that, we wanna do some control-plane(slow-path)
things in main thread instead of worker thread, such as dynamic routing
protocol OSPF/BGP. But there is not a high performance method to do this.
The handoff mechanism which queuing between two different work threads maybe a
good way, we will deep learning it first.
And one more question, vlib_process_signal_event can be called in worker
thread ? No concurrency problem? Is it safe when there are Multiple worker
thread ?
王辉 wanghui
IT开发工程师 IT Development
Engineer
虚拟化南京四部/无线研究院/无线产品经营部 NIV Nanjing Dept. IV/Wireless Product R&D
Institute/Wireless Product Operation Division
原始邮件
发件人: <xiyun...@intel.com>
收件人: <dbar...@cisco.com>王辉10067165 <hongjun...@intel.com> <damar...@cisco.com>
抄送人: <vpp-dev@lists.fd.io>顾剑10036178赵志刚10017628潘凤艳00024606
日 期 :2017年03月09日 14:38
主 题 :RE: [vpp-dev] R Signal events between graph nodes within different threads
Do be a little confusion. AFAIK, the original question from ZTE, key message
should be: so we want to transfer some packet to main thread to continue
processing
Is this right, @ZTE wanghui
which kind of scenario you want to pass the pkt from work thread to main
thread. Although the pkt is already processed by work thread and still need to
put it to main thread for further processing?
What’s your real caseJ
Did you consider the handoff mechanism before? But it seems to pkt queuing btw
two different work threads
Thanks.
Regards
BTW:
In my understanding, Hongjun and ZTE guys mentions following two ways
(1) vlib_process_signal_event
it seems to be just pass the event/message(Event type + opaque data) to process
nodes which belong to main threads, instead of passing pkt from worker thread
to main thread.
It is asynchronous way.
(2) vl_api_rpc_call_main_thread
it is synchronous method to call the RPC function belongs to main thread
context, seems to be also not pkt passing btw two threads.
Let Dave and Damjan to correct meJ. Thanks!
From: vpp-dev-boun...@lists.fd.io [mailto:vpp-dev-boun...@lists.fd.io] On
Behalf Of Dave Barach (dbarach)
Sent: Wednesday, March 8, 2017 9:47 PM
To: wang.hu...@zte.com.cn Ni, Hongjun <hongjun...@intel.com> Damjan Marion
(damarion) <damar...@cisco.com>
Cc: vpp-dev@lists.fd.io gu.ji...@zte.com.cn zhao.zhig...@zte.com.cn
pan.feng...@zte.com.cn
Subject: Re: [vpp-dev] R Signal events between graph nodes within different
threads
Guys,
Oh, you want the main thread to process packets? Why didn’t you simply ask how
to do that in the first place?
At worst, a few lines’ worth of code - to enable e.g. dpdk-input in thread-0 -
might be required. Copying Damjan.
Thanks… Dave
From: wang.hu...@zte.com.cn [mailto:wang.hu...@zte.com.cn]
Sent: Wednesday, March 8, 2017 2:50 AM
To: hongjun...@intel.com
Cc: alaga...@gmail.com Dave Barach (dbarach) <dbar...@cisco.com>
zhao.zhig...@zte.com.cn gu.ji...@zte.com.cn pan.feng...@zte.com.cn
vpp-dev@lists.fd.io
Subject: 答复: RE: R[vpp-dev] Signal events between graph nodes within different
threads
Yes, I realize that, it could be work. Thanks to hongjun.
But vl_api_rpc_call_main_thread will degrade packet handling performance in
worker thread, I don't know if there is a common and high performance way to do
this?
And also I guess vlib_process_signal_event can only be used in main thread?
just my opinion, since I have not gone deep into the signal event code.
王辉 wanghui
IT开发工程师 IT Development Engineer
虚拟化南京四部/无线研究院/无线产品经营部 NIV Nanjing Dept. IV/Wireless Product R&D
Institute/Wireless Product Operation Division
原始邮件
发件人: <hongjun...@intel.com>
收件人:王辉10067165 <alaga...@gmail.com>
抄送人: <dbar...@cisco.com>赵志刚10017628顾剑10036178潘凤艳00024606 <vpp-dev@lists.fd.io>
日 期 :2017年03月08日 15:18
主 题 :RE: R[vpp-dev] Signal events between graph nodes within different threads
Hi Hui,
I think the SNAT example maybe meet what you want:
snat_in2out_node_fn_inline: (in worker thread)
slow_path
snat_ipfix_logging_nat44_ses_create
vl_api_rpc_call_main_thread
Regards,
Hongjun
From: wang.hu...@zte.com.cn [mailto:wang.hu...@zte.com.cn]
Sent: Wednesday, March 8, 2017 2:58 PM
To: alaga...@gmail.com
Cc: dbar...@cisco.com Ni, Hongjun <hongjun...@intel.com>
zhao.zhig...@zte.com.cn gu.ji...@zte.com.cn pan.feng...@zte.com.cn
vpp-dev@lists.fd.io
Subject: 答复: Re: [vpp-dev] 答复: Re: Signal events between graph nodes within
different threads
Maybe if you could expand on what it is you are trying to achieve?
//when starting worker thread , the main thread can't receive packet from IO,
so we want to transfer some packet to main thread to continue processing.
Is it specifically to do with DHCP (and proxy) or is that just the code you
found that looks like the kind of functionality you believe you need for your
use-case?
// that just looks like our use-case. vlib_process_signal_event called in
worker thread, and signal an event to the dhcp proccess node in main thread.
can vlib_process_signal_event do this?
王辉 wanghui
IT开发工程师 IT Development Engineer
虚拟化南京四部/无线研究院/无线产品经营部 NIV Nanjing Dept. IV/Wireless Product R&D
Institute/Wireless Product Operation Division
原始邮件
发件人: <alaga...@gmail.com>
收件人:王辉10067165 <dbar...@cisco.com> <hongjun...@intel.com>
抄送人:赵志刚10017628顾剑10036178潘凤艳00024606 <vpp-dev@lists.fd.io>
日 期 :2017年03月08日 13:04
主 题 :Re: [vpp-dev] 答复: Re: Signal events between graph nodes within different
threads
On Wed, Mar 8, 2017 at 2:29 PM <wang.hu...@zte.com.cn> wrote:
hi Dave and hongjun:
We also got confused with below code. Dos it works correctly?
Maybe the dhcp_proxy_to_client_input fuction runs in the worker thread, and
it will call vlib_process_signal_event function to trigger dhcp-proccess node
in the main thread.
If it works, maybe the question of mail title could be solved. But We can't
find any other use like this until now.
Maybe if you could expand on what it is you are trying to achieve?
Is it specifically to do with DHCP (and proxy) or is that just the code you
found that looks like the kind of functionality you believe you need for your
use-case?
dhcp_proxy_to_client_input
dhcp_client_for_us
vlib_process_signal_event (vm, dhcp_client_process_node.index,
EVENT_DHCP_CLIENT_WAKEUP, c - dcm->clients)
王辉 wanghui
IT开发工程师 IT Development Engineer
虚拟化南京四部/无线研究院/无线产品经营部 NIV Nanjing Dept. IV/Wireless Product R&D
Institute/Wireless Product Operation Division
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev