Libtpa: a DPDK based userspace TCP stack implementation
Liang Ma
liangma at liangbit.com
Mon Dec 11 11:57:43 CET 2023
Hi Yuanhan,
Congratulations!
Regards
Liang
On Mon, Dec 11, 2023 at 05:56:54PM +0800, Yuanhan Liu wrote:
> 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
More information about the dev
mailing list