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