DPDK patches and discussions
 help / color / mirror / Atom feed
* Libtpa: a DPDK based userspace TCP stack implementation
@ 2023-12-11  9:56 Yuanhan Liu
  2023-12-11 10:57 ` Liang Ma
  2023-12-11 11:32 ` [EXT] " Jerin Jacob Kollanukkaran
  0 siblings, 2 replies; 7+ messages in thread
From: Yuanhan Liu @ 2023-12-11  9:56 UTC (permalink / raw)
  To: libtpa; +Cc: dev, Yuanhan Liu

Hi all,

I'd like to share a new DPDK open source project, libtpa(Transport
Protocol Acceleration)[0], which is just another userspace TCP stack
implementation so far, written from scratch.

I started this project 3 years ago, while I was searching for a feasible
open source project with no luck. There were indeed quite a few options,
but none of them actually met my needs. I then started writing one. Likely,
there are still other guys out there looking for a high performance and
stable userspace TCP stack. This is what this email and libtpa for.

Libtpa is fast. To demonstrate that, we did a hacky redis integration. The
benchmark shows that libtpa can boost the performance more than 5 times,
from 0.21m rps to 1.14m rps[1]. Right, it can achieve 1 million rps just
with one CPU thread. Meanwhile, the p99 latency decreases from 0.815ms
to 0.159ms.

Regarding the stableness, I'd say it's not bad, all kudos to the
comprehensive testing. I've written more than 200 tests. Together with
the testing arguments matrix[2], it can result in a big variety of test
cases. Therefore, most of the bugs are captured before deployment.

Having said that, I'd still suggest you to do as much testing as you can
if you want to use it, for libtpa is still under active development and
it's just v1.0-rc0 being released. Tons of changes have been made since
the last stable release.

There is one more thing I'm a bit proud of about libtpa: as a DPDK based
project, libtpa has rich set of debug tools[3]. The sock tracing is
particularly handy on debugging that libtpa doesn't ship a tcpdump like
tool, simply for we don't really need one.

The TCP part then may not sound that exciting. It's basically just an
initial TCP implementation, with standard congestion avoid algorithm
(New Reno). Libtpa implements slightly more than that though, such as
SACK, congestion window validation, spurious retransmission detection,
keepalive, etc.

That's all. Comments, questions, patches and testing are all welcome!

Thanks,
Yuanhan Liu

---
[0]: libtpa: https://github.com/bytedance/libtpa
[1]: redis: https://github.com/bytedance/libtpa/tree/main/doc/redis.rst
[2]: matrix shell: https://github.com/bytedance/libtpa/tree/main/doc/internals.rst
[3]: user guide: https://github.com/bytedance/libtpa/tree/main/doc/user_guide.rst

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

end of thread, other threads:[~2023-12-11 13:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-11  9:56 Libtpa: a DPDK based userspace TCP stack implementation Yuanhan Liu
2023-12-11 10:57 ` Liang Ma
2023-12-11 11:32 ` [EXT] " Jerin Jacob Kollanukkaran
2023-12-11 12:16   ` Thomas Monjalon
2023-12-11 12:36     ` Yuanhan Liu
2023-12-11 12:17   ` Yuanhan Liu
2023-12-11 13:40     ` Jerin Jacob

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