DPDK usage discussions
 help / color / mirror / Atom feed
* [dpdk-users] Questions about IP-PIPELINE
@ 2016-04-26 15:20 Wu, Xiaoban
  2016-04-29 13:38 ` Singh, Jasvinder
  0 siblings, 1 reply; 2+ messages in thread
From: Wu, Xiaoban @ 2016-04-26 15:20 UTC (permalink / raw)
  To: users

Dear DPDK,


I am a beginner of DPDK, recently I want to work on IP-PIPELINE. I am reading the source codes by myself, but I think it could be more efficient if the following questions can be answered.


Question 1: The ip_pipeline.cfg is parsed at runtime, what is the data type or structure that stores these information?


Question 2: Suppose the configuration file has been parsed and stored, where and how these information will start to have effect, like in which functions, could you please list some of these functions?


Question 3: If multiple threads (cores) are running at the same time, can these threads send or receive packets at the same time? If so, are the packets stored separately in each own TX or RX queue, or merged into a single data structure? Where are these data structures defined and used, can you please list some functions that explicitly involve these data structures? And moreover, which functions are used to send or receive the packets?


Some other unrelated questions, but they could help me see the picture


Question 4: What is igb-uio driver? What is the purpose of binding the NIC with igb-uio driver?


Question 5: Does the "hugepage" uses physical memory or physical disk space?


Question 6: In the codes, there are both physical address and virtual address in the struct rte_mbuf, struct rte_memzone, struct rte_memseg. If virtual address is the memory address like a pointer, what is physical address and what is the usefulness of physical address?


Thanks so much for your reply and help.


All the best,

Xiaoban

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-users] Questions about IP-PIPELINE
  2016-04-26 15:20 [dpdk-users] Questions about IP-PIPELINE Wu, Xiaoban
@ 2016-04-29 13:38 ` Singh, Jasvinder
  0 siblings, 0 replies; 2+ messages in thread
From: Singh, Jasvinder @ 2016-04-29 13:38 UTC (permalink / raw)
  To: Wu, Xiaoban, users

Hi Xiaoban,

Please see response inline,

> -----Original Message-----
> From: users [mailto:users-bounces@dpdk.org] On Behalf Of Wu, Xiaoban
> Sent: Tuesday, April 26, 2016 4:21 PM
> To: users@dpdk.org
> Subject: [dpdk-users] Questions about IP-PIPELINE
> 
> Dear DPDK,
> 
> 
> I am a beginner of DPDK, recently I want to work on IP-PIPELINE. I am reading
> the source codes by myself, but I think it could be more efficient if the
> following questions can be answered.
> 
> 
> Question 1: The ip_pipeline.cfg is parsed at runtime, what is the data type or
> structure that stores these information?
 
In ip_ipeline/app.h, "app_params" structure stores all parsed information related to nic ports, software rings between the pipelines and all other configuration parameters required for initializing and running the application. When configuration file is parsed (ip_pipeline/config_parse.c), app_params structure fields are populated with the parsed information and validated  using ip_pipeline/config_check.c

 > Question 2: Suppose the configuration file has been parsed and stored,
> where and how these information will start to have effect, like in which
> functions, could you please list some of these functions?

 In ip_pipeline/main.c,  all the functions required to launch and run the ip_pipeline applications are invoked in "main" function. Once the configuration file is parsed and parameters values are checked, application initilisation takes place which involves EAL initialisation (please refer  http://dpdk.org/doc/guides/prog_guide/env_abstraction_layer.html) followed by mempool, hardware(nic)/software (rings) queues initialisation.
The commands accepted by all the pipeline modules as well as specific to pipeline modules are registered. Then pipelines modules are initialised - first, the front end part (CLI commands definitions specific to the pipeline) of the pipeline modules are initialised.  Then, the back-end part of the pipelines which performs packet forwarding and handles commands sent from CLI, is launched on the assigned cores. All routines releted to application initialisation are implemented in app_init() routine (ip_pipeline/init.c).
 
> Question 3: If multiple threads (cores) are running at the same time, can
> these threads send or receive packets at the same time? If so, are the
> packets stored separately in each own TX or RX queue, or merged into a
> single data structure? Where are these data structures defined and used, can
> you please list some functions that explicitly involve these data structures?
> And moreover, which functions are used to send or receive the packets?

Depending upon the application, different cores can be pinned to different queues of the network interface port and they can receive and transmit packets in parallel.  For more details, in addition to abovementioned files, refer- lib/librte_port and lib/rte_pipeline libraries.   

> Some other unrelated questions, but they could help me see the picture

Please try to put questions related to different topics on separate emails so that folks can get an idea from subject line and quickly respond to them.  
 
> Question 4: What is igb-uio driver? What is the purpose of binding the NIC
> with igb-uio driver?

To understand the need of binding igb_uio to DPDK application, please refer link below,
http://dpdk.org/doc/guides-2.2/linux_gsg/build_dpdk.html#loading-modules-to-enable-userspace-io-for-dpdk

> Question 5: Does the "hugepage" uses physical memory or physical disk
> space?

It uses physical memory.  On how to reserve hugepages for DPDK applications, 
http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html

> Question 6: In the codes, there are both physical address and virtual address
> in the struct rte_mbuf, struct rte_memzone, struct rte_memseg. If virtual
> address is the memory address like a pointer, what is physical address and
> what is the usefulness of physical address?

The physical addresses refer to addresses in physical memory. These addresses are generally used in direct memory access (DMA) I/O operations as use of this mechanism can greatly increase throughput to and from a device. For more detailed information on this, refer - 
http://www.oreilly.com/openbook/linuxdrive3/book/ch15.pdf

> Thanks so much for your reply and help.
> 
> 
> All the best,
> 
> Xiaoban
> 
>
Thanks,
Jasvinder
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-04-29 13:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-26 15:20 [dpdk-users] Questions about IP-PIPELINE Wu, Xiaoban
2016-04-29 13:38 ` Singh, Jasvinder

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).