DPDK patches and discussions
 help / color / mirror / Atom feed
* TCP stack support on DPDK
@ 2023-01-20  8:11 Sam Kirubakaran
  2023-01-20 11:31 ` Thomas Monjalon
  2023-01-23 10:18 ` Liang Ma
  0 siblings, 2 replies; 8+ messages in thread
From: Sam Kirubakaran @ 2023-01-20  8:11 UTC (permalink / raw)
  To: dev

[-- Attachment #1: Type: text/plain, Size: 391 bytes --]

Hi team,

My name is Sam and I am a Software Engineer.
Currently, we are trying to improve the performance of proprietary in-house
tools by using DPDK but we are not sure whether DPDK has support for TCP
stack.
If yes, could you please point me to the link of apis alone. I will take it
from there.
Could you please guide me on this? Your response would be highly
appreciated!

Regards,
Sam

[-- Attachment #2: Type: text/html, Size: 503 bytes --]

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

* Re: TCP stack support on DPDK
  2023-01-20  8:11 TCP stack support on DPDK Sam Kirubakaran
@ 2023-01-20 11:31 ` Thomas Monjalon
  2023-01-20 16:51   ` Sam Kirubakaran
  2023-01-23 10:18 ` Liang Ma
  1 sibling, 1 reply; 8+ messages in thread
From: Thomas Monjalon @ 2023-01-20 11:31 UTC (permalink / raw)
  To: Sam Kirubakaran; +Cc: dev

20/01/2023 09:11, Sam Kirubakaran:
> Hi team,
> 
> My name is Sam and I am a Software Engineer.
> Currently, we are trying to improve the performance of proprietary in-house
> tools by using DPDK but we are not sure whether DPDK has support for TCP
> stack.

No there is no stack inside DPDK.
You can find some projects here: https://www.dpdk.org/ecosystem/#projects



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

* Re: TCP stack support on DPDK
  2023-01-20 11:31 ` Thomas Monjalon
@ 2023-01-20 16:51   ` Sam Kirubakaran
  0 siblings, 0 replies; 8+ messages in thread
From: Sam Kirubakaran @ 2023-01-20 16:51 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

[-- Attachment #1: Type: text/plain, Size: 595 bytes --]

Hi Thomas,

Thank you so much for your response :)
I will go through the link you shared and make use of it!

Regards,
Sam

On Fri, Jan 20, 2023 at 6:48 PM Thomas Monjalon <thomas@monjalon.net> wrote:

> 20/01/2023 09:11, Sam Kirubakaran:
> > Hi team,
> >
> > My name is Sam and I am a Software Engineer.
> > Currently, we are trying to improve the performance of proprietary
> in-house
> > tools by using DPDK but we are not sure whether DPDK has support for TCP
> > stack.
>
> No there is no stack inside DPDK.
> You can find some projects here: https://www.dpdk.org/ecosystem/#projects
>
>
>

[-- Attachment #2: Type: text/html, Size: 1086 bytes --]

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

* Re: TCP stack support on DPDK
  2023-01-20  8:11 TCP stack support on DPDK Sam Kirubakaran
  2023-01-20 11:31 ` Thomas Monjalon
@ 2023-01-23 10:18 ` Liang Ma
  2023-01-24  7:54   ` Sam Kirubakaran
  1 sibling, 1 reply; 8+ messages in thread
From: Liang Ma @ 2023-01-23 10:18 UTC (permalink / raw)
  To: Sam Kirubakaran; +Cc: dev

On Fri, Jan 20, 2023 at 01:41:56PM +0530, Sam Kirubakaran wrote:
> Hi team,
> 
> My name is Sam and I am a Software Engineer.
> Currently, we are trying to improve the performance of proprietary in-house
> tools by using DPDK but we are not sure whether DPDK has support for TCP
> stack.
> If yes, could you please point me to the link of apis alone. I will take it
> from there.
> Could you please guide me on this? Your response would be highly
> appreciated!
DPDK itself has no TCP stack. However, there are some userspace TCP
stack project which support DPDK. TPDK/Seastar/fullstack etc. 
> 
> Regards,
> Sam

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

* Re: TCP stack support on DPDK
  2023-01-23 10:18 ` Liang Ma
@ 2023-01-24  7:54   ` Sam Kirubakaran
  2023-02-16 14:39     ` Liang Ma
  0 siblings, 1 reply; 8+ messages in thread
From: Sam Kirubakaran @ 2023-01-24  7:54 UTC (permalink / raw)
  To: Liang Ma; +Cc: dev

[-- Attachment #1: Type: text/plain, Size: 1133 bytes --]

Hi Liang,

Thank you so much for your response.
I would like to convert our in-house tool into a high performance traffic
generator and it is written in Python.
Is it possible to use any of the user space TCP stack by compiling into
shared libraries and access it via Python using ctypes?
Could you please let me know any viable solution to make use of user space
TCP stack compatible with Python?

Regards,
Sam

On Mon, Jan 23, 2023 at 3:48 PM Liang Ma <liangma@liangbit.com> wrote:

> On Fri, Jan 20, 2023 at 01:41:56PM +0530, Sam Kirubakaran wrote:
> > Hi team,
> >
> > My name is Sam and I am a Software Engineer.
> > Currently, we are trying to improve the performance of proprietary
> in-house
> > tools by using DPDK but we are not sure whether DPDK has support for TCP
> > stack.
> > If yes, could you please point me to the link of apis alone. I will take
> it
> > from there.
> > Could you please guide me on this? Your response would be highly
> > appreciated!
> DPDK itself has no TCP stack. However, there are some userspace TCP
> stack project which support DPDK. TPDK/Seastar/fullstack etc.
> >
> > Regards,
> > Sam
>

[-- Attachment #2: Type: text/html, Size: 1589 bytes --]

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

* Re: TCP stack support on DPDK
  2023-01-24  7:54   ` Sam Kirubakaran
@ 2023-02-16 14:39     ` Liang Ma
  2023-02-16 15:01       ` Van Haaren, Harry
  0 siblings, 1 reply; 8+ messages in thread
From: Liang Ma @ 2023-02-16 14:39 UTC (permalink / raw)
  To: Sam Kirubakaran; +Cc: dev

On Tue, Jan 24, 2023 at 01:24:38PM +0530, Sam Kirubakaran wrote:
> Hi Liang,
> 
> Thank you so much for your response.
> I would like to convert our in-house tool into a high performance traffic
> generator and it is written in Python.
> Is it possible to use any of the user space TCP stack by compiling into
> shared libraries and access it via Python using ctypes?
> Could you please let me know any viable solution to make use of user space
> TCP stack compatible with Python?
sorry, I have no idea bout the python bind with DPDK, but there are some
Lua bind with DPDK. Like Moonwire.
> 
> Regards,
> Sam


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

* RE: TCP stack support on DPDK
  2023-02-16 14:39     ` Liang Ma
@ 2023-02-16 15:01       ` Van Haaren, Harry
  2023-02-16 21:00         ` Liang Ma
  0 siblings, 1 reply; 8+ messages in thread
From: Van Haaren, Harry @ 2023-02-16 15:01 UTC (permalink / raw)
  To: Liang Ma, Sam Kirubakaran; +Cc: dev

> -----Original Message-----
> From: Liang Ma <liangma@liangbit.com>
> Sent: Thursday, February 16, 2023 2:40 PM
> To: Sam Kirubakaran <samkirubakaranl@gmail.com>
> Cc: dev@dpdk.org
> Subject: Re: TCP stack support on DPDK
> 
> On Tue, Jan 24, 2023 at 01:24:38PM +0530, Sam Kirubakaran wrote:
> > Hi Liang,
> >
> > Thank you so much for your response.
> > I would like to convert our in-house tool into a high performance traffic
> > generator and it is written in Python.
> > Is it possible to use any of the user space TCP stack by compiling into
> > shared libraries and access it via Python using ctypes?
> > Could you please let me know any viable solution to make use of user space
> > TCP stack compatible with Python?

Liang replied:
> sorry, I have no idea bout the python bind with DPDK, but there are some
> Lua bind with DPDK. Like Moonwire.

Moongen: https://github.com/emmericp/MoonGen and its "library form"
Libmoon may be of interest yes! (https://github.com/libmoon/libmoon)

Note that LUA has certain properties that are nice for packet processing (soft-realtime capable).
Python unfortunately does not have the same properties by default (but likely can be configured/used/extended to mitigate impact).
This is only relevant if you want to generate packets "on the fly" with very low jitter (potentially caused by GarbageCollectors from Python runtimes).

Looking at the bigger picture:
1)  What are your requirements around performance for generating traffic?
2)  And what are the reasons that existing projects are not sufficient?
Trex is very configurable for many things: https://github.com/cisco-system-traffic-generator

As you likely know, writing a good reliable traffic generation tool is a lot of work,
and re-using existing work is likely a good idea. There is a list of DPDK users/libraries etc on the
official DPDK site here; https://www.dpdk.org/ecosystem/ Some of these libraries might
provide a good starting point for your needs?

My experience when developing a simple/minimal traffic generator for DPDK was that although
It might seem that generating of packets can be done in Python/other-interpreted-language, it
causes performance issues in the end. Imagine generating 1000 flows, the checksum of each
packet is going to be different. That leaves two options:
1) Generate all packets in advance, and "replay" them from memory (memory intensive, and no other customization potential as it corrupts checksums!)
2) Calculate checksums on the fly in C or other high performance language: the complexity of checksum calculations, offsets etc must be present in high-perf language, removes benefit of using Python/high-level language for "quick" packet generation.

The results of the Proof-of-Concept that Ronan Randles & I done is here, called TGen. I have
Presented my experience of "handmade" traffic generators as part of DPDK userspace:
 - Video: https://www.youtube.com/watch?v=Djcjq59H1uo
 - Patches: http://patches.dpdk.org/project/dpdk/cover/20220121103122.2926856-1-ronan.randles@intel.com/

Hope the above information is of use! Regards, -Harry


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

* Re: TCP stack support on DPDK
  2023-02-16 15:01       ` Van Haaren, Harry
@ 2023-02-16 21:00         ` Liang Ma
  0 siblings, 0 replies; 8+ messages in thread
From: Liang Ma @ 2023-02-16 21:00 UTC (permalink / raw)
  To: Van Haaren, Harry; +Cc: Sam Kirubakaran, dev

On Thu, Feb 16, 2023 at 03:01:28PM +0000, Van Haaren, Harry wrote:
> > -----Original Message-----
> > From: Liang Ma <liangma@liangbit.com>
> > Sent: Thursday, February 16, 2023 2:40 PM
> > To: Sam Kirubakaran <samkirubakaranl@gmail.com>
> > Cc: dev@dpdk.org
> > Subject: Re: TCP stack support on DPDK
> > 
> > On Tue, Jan 24, 2023 at 01:24:38PM +0530, Sam Kirubakaran wrote:
> > > Hi Liang,
> > >
> > > Thank you so much for your response.
> > > I would like to convert our in-house tool into a high performance traffic
> > > generator and it is written in Python.
> > > Is it possible to use any of the user space TCP stack by compiling into
> > > shared libraries and access it via Python using ctypes?
> > > Could you please let me know any viable solution to make use of user space
> > > TCP stack compatible with Python?
> 
> Liang replied:
> > sorry, I have no idea bout the python bind with DPDK, but there are some
> > Lua bind with DPDK. Like Moonwire.
> 
> Moongen: https://github.com/emmericp/MoonGen and its "library form"
> Libmoon may be of interest yes! (https://github.com/libmoon/libmoon)
> 
> Note that LUA has certain properties that are nice for packet processing (soft-realtime capable).
> Python unfortunately does not have the same properties by default (but likely can be configured/used/extended to mitigate impact).
> This is only relevant if you want to generate packets "on the fly" with very low jitter (potentially caused by GarbageCollectors from Python runtimes).
+1
> Looking at the bigger picture:
> 1)  What are your requirements around performance for generating traffic?
> 2)  And what are the reasons that existing projects are not sufficient?
> Trex is very configurable for many things: https://github.com/cisco-system-traffic-generator
> 
> As you likely know, writing a good reliable traffic generation tool is a lot of work,
> and re-using existing work is likely a good idea. There is a list of DPDK users/libraries etc on the
> official DPDK site here; https://www.dpdk.org/ecosystem/ Some of these libraries might
> provide a good starting point for your needs?
> 
> My experience when developing a simple/minimal traffic generator for DPDK was that although
> It might seem that generating of packets can be done in Python/other-interpreted-language, it
> causes performance issues in the end. Imagine generating 1000 flows, the checksum of each
> packet is going to be different. That leaves two options:
> 1) Generate all packets in advance, and "replay" them from memory (memory intensive, and no other customization potential as it corrupts checksums!)
> 2) Calculate checksums on the fly in C or other high performance language: the complexity of checksum calculations, offsets etc must be present in high-perf language, removes benefit of using Python/high-level language for "quick" packet generation.
> 
> The results of the Proof-of-Concept that Ronan Randles & I done is here, called TGen. I have
> Presented my experience of "handmade" traffic generators as part of DPDK userspace:
>  - Video: https://www.youtube.com/watch?v=Djcjq59H1uo
>  - Patches: http://patches.dpdk.org/project/dpdk/cover/20220121103122.2926856-1-ronan.randles@intel.com/
> 
> Hope the above information is of use! Regards, -Harry
> 

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

end of thread, other threads:[~2023-02-16 21:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-20  8:11 TCP stack support on DPDK Sam Kirubakaran
2023-01-20 11:31 ` Thomas Monjalon
2023-01-20 16:51   ` Sam Kirubakaran
2023-01-23 10:18 ` Liang Ma
2023-01-24  7:54   ` Sam Kirubakaran
2023-02-16 14:39     ` Liang Ma
2023-02-16 15:01       ` Van Haaren, Harry
2023-02-16 21:00         ` Liang Ma

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).