ansyun / dpdk-ans

ANS(Accelerated Network Stack) on DPDK, DPDK native TCP/IP stack.
https://ansyun.com
BSD 3-Clause "New" or "Revised" License
1.15k stars 322 forks source link

https client #111

Open ptrnycz opened 4 years ago

ptrnycz commented 4 years ago

Hello,

I would like to (try) use the dpdk stuff to implement realtime system with high performance networking. I need the following stuff:

It seems dpdk-ans is this what I am looking for (because of high performance assumption-dpdk and nice looking TCP stack implementation on the top of it), the next step is to port one of existing http(s) client and websocket client.

Can somebody point out which of existing a http(s) clients/websocket clients are easiest to port to this environment?

Maybe there is something existing and well tested?

Anyway, such basic tools like http(s) and websocket stuff would be very usefull as a part of high performance net stuff like dpdk-ans.

Best, Piotr

bluenet13 commented 4 years ago

You can refer to the example in dpdk-ans/examples directory. You can refer to dpdk-nginx and dpdk-redis too.

ptrnycz commented 4 years ago

Thank you for quick response!

I have looked around the examples, it seems I understand a concept. I would like to go into practice now.

So, if anybody could advice appropriate environment configuration.

Task done by system: to receive tcp packets via websocket, process it in RAM, to send response via http request then.

My ONLY priority is: extremely low latency between timestamps when packet goes into one of Ethernet interfaces (via websocket) and goes out via another Ethernet interface (via http request).

Server contains 12 Ethernet interfaces as total-3 cards,4 ports each. I assume that packet processing in RAM is optimal and processing time can't be shorten. The task for dpdk-ans - reduce input-output latency.

A packet body (http body) sizes are 128-256 bytes length,more or less. Memory and processor resources are almost unlimited. Bare metal linux machine, no virtualization layers. Currently I do have 48 phisical cores (96 hyperthreads) 256 GB RAM. If neccessary, can be available more resources. Neither DB processing nor additional resource consuming activities on the server are done.

Does anybody any suggestion in a term of such processing environment setup using dpdk-ans?

ps. I have intensionally NOT mentioned the packet count which gets into system each second. I would like to focus on reducing input/output latency, no compromises. If machine (server) starts to slowing down because of huge packet count, additional server will be added then.

Could you put me on the track how to manage this issue using dpdk-ans.

Maybe I should start from question, have I chosen proper framework?

:)

Best, Piotr

rbdm-qnt commented 8 months ago

Thank you for quick response!

I have looked around the examples, it seems I understand a concept. I would like to go into practice now.

So, if anybody could advice appropriate environment configuration.

Task done by system: to receive tcp packets via websocket, process it in RAM, to send response via http request then.

My ONLY priority is: extremely low latency between timestamps when packet goes into one of Ethernet interfaces (via websocket) and goes out via another Ethernet interface (via http request).

Server contains 12 Ethernet interfaces as total-3 cards,4 ports each. I assume that packet processing in RAM is optimal and processing time can't be shorten. The task for dpdk-ans - reduce input-output latency.

A packet body (http body) sizes are 128-256 bytes length,more or less. Memory and processor resources are almost unlimited. Bare metal linux machine, no virtualization layers. Currently I do have 48 phisical cores (96 hyperthreads) 256 GB RAM. If neccessary, can be available more resources. Neither DB processing nor additional resource consuming activities on the server are done.

Does anybody any suggestion in a term of such processing environment setup using dpdk-ans?

ps. I have intensionally NOT mentioned the packet count which gets into system each second. I would like to focus on reducing input/output latency, no compromises. If machine (server) starts to slowing down because of huge packet count, additional server will be added then.

Could you put me on the track how to manage this issue using dpdk-ans.

Maybe I should start from question, have I chosen proper framework?

:)

Best, Piotr

Were you ever able to do that using this framework? Curious to hear an update