From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 94B754341C; Mon, 11 Dec 2023 11:58:40 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 307A040E0F; Mon, 11 Dec 2023 11:58:40 +0100 (CET) Received: from sender11-of-o51.zoho.eu (sender11-of-o51.zoho.eu [31.186.226.237]) by mails.dpdk.org (Postfix) with ESMTP id 53B9B402E9 for ; Mon, 11 Dec 2023 11:58:38 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; t=1702292266; cv=none; d=zohomail.eu; s=zohoarc; b=P71mIPBR5pMGMcziM9VUZA8nE6F8/swF0b/iiFaR8kQMz9ZbrCsar4LOBiKKNuDadh+1ArqvuuTgcEsDv7n+qYjxnqyNPDTa4QZlS+di6Rwz9I4H04SpF34zNfo34B7Fq3RklyfRRXlyioov9I14DQJozlTNr1vYvM0JthAZhXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.eu; s=zohoarc; t=1702292266; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=e247rtd4x+WpIKPi8gBcBec3hTtV6/PzGwnEXg8L7F4=; b=fOJLVjwMkEfazKHqNWIKB2Am+uZVGoDlJe++d21+tch7eyeFRM6p0mIH//H9Lo7haT6pcS08oLHmhUH/XVSBA7tXj0fz1cUh9Qckc8HTr8YHDq5M0fwyKaDiCHNgygrci05KrAUvxvpumGb+FhCLO6Os5smrXkcSwkGomzqaZ38= ARC-Authentication-Results: i=1; mx.zohomail.eu; spf=pass smtp.mailfrom=liangma@liangbit.com; dmarc=pass header.from= Received: from C02GF04TMD6V (147.161.142.179 [147.161.142.179]) by mx.zoho.eu with SMTPS id 1702292265082135.138163465537; Mon, 11 Dec 2023 11:57:45 +0100 (CET) Date: Mon, 11 Dec 2023 10:57:43 +0000 From: Liang Ma To: Yuanhan Liu Cc: libtpa@googlegroups.com, dev@dpdk.org, Yuanhan Liu Subject: Re: Libtpa: a DPDK based userspace TCP stack implementation Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-ZohoMailClient: External X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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