Re: [L4s-discuss] Configuring a L4S test plant

Sebastian Moeller <moeller0@gmx.de> Wed, 04 October 2023 10:03 UTC

Return-Path: <moeller0@gmx.de>
X-Original-To: l4s-discuss@ietfa.amsl.com
Delivered-To: l4s-discuss@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0329DC151994 for <l4s-discuss@ietfa.amsl.com>; Wed, 4 Oct 2023 03:03:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.844
X-Spam-Level:
X-Spam-Status: No, score=-6.844 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmx.de
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MNVOvdD4k7tI for <l4s-discuss@ietfa.amsl.com>; Wed, 4 Oct 2023 03:03:48 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 33B59C19E0FD for <l4s-discuss@ietf.org>; Wed, 4 Oct 2023 03:03:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1696413819; x=1697018619; i=moeller0@gmx.de; bh=sO+esFzHefWb+WYHLnynGOiM0qzQOxwckXOS35VbhiY=; h=X-UI-Sender-Class:Subject:From:In-Reply-To:Date:Cc:References:To; b=ic5szN3YjuPK9dutD3kfVlT+YIO/qYaLXERsLVylQevOf+m8iWZlHVOgo67duQdDOGj8Vk6nBCz +kBjJiPXzEbR9YDj6vuP3vkDpqwS/kDspCc/RJf4ZrSfznThLmTW8w911tGG622jd5P9NCHUv3FU9 yOrz5ZWCZfo0Elbx8urTQayNbZ3gm/Il7blCiKlp/O6oezSbkou9oh0aCM8xSlbIe3PG6DZqivkaM acSyL6CSKeYRK0sK58760+qj7VKDnN33iCoJu489u+c6+/XoXzysyiQT6HzY558vCws3j49Rb9M8X Xz5OrTBYfhVACoNg1XAC3AjGKtKeD5vAw+VA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from smtpclient.apple ([134.76.241.253]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MXXuB-1r6y4S2Rjz-00Z1ei; Wed, 04 Oct 2023 12:03:39 +0200
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.4\))
From: Sebastian Moeller <moeller0@gmx.de>
In-Reply-To: <b82b81e36e168f6e627798d8cd588db8@studenti.polito.it>
Date: Wed, 04 Oct 2023 12:03:38 +0200
Cc: l4s-discuss@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <A3BEF415-8574-4854-93D5-7CD1DB7B60F5@gmx.de>
References: <7952e11516cc7b25484b53ae1380d88c@studenti.polito.it> <230D9924-C32F-4DE8-8BBD-F3D35D94B05B@gmx.de> <b82b81e36e168f6e627798d8cd588db8@studenti.polito.it>
To: Matteo Guarna S303434 <matteo.guarna@studenti.polito.it>
X-Mailer: Apple Mail (2.3696.120.41.1.4)
X-Provags-ID: V03:K1:4rWPjK1PuRjOgzWQ7awzfTFhb4Jj+wAxaGhqxqhQup17KcSiELq C5sNnNAOPBMFHpoR2j+Fov0geCnLxgQfPrdGXpk6UWNM/3EddTAmBLEam8UoY2T8L+aPMYP 2nJWogn7UCYZYHnGSxOaqyseXZbtRIw6RCijTdKWbqi8sb/Q7H8iJXT3IQ9k9xrmn8ulxMM AK5vV/qYdm/u7itBqIK+g==
UI-OutboundReport: notjunk:1;M01:P0:KYt7OGzdFmY=;KZhcGpZVRDf7v+58HdeClTyWmC6 gb1twUwMGT65QCnz6jGbPUfw40+lBLneU6d0m5sW/cVXCp40Of6+eLoS2z7ufbDYL1eKrvakv ZDHVDDvues44im7tdWGCJyY/t6KsXi26K8PE850qMaz3X3OxJpGzgvvuHkY/WCa2wOH5Lapfo Jsf9EHxi383rtiGEF8pRLeHXqOvQXci7oWRVZ6zZ+aSeghxC5LRBBPEGWOHW40FoA6v/l8HGY x23xl7tofzF+peo200TGqhnqP3pbedNrpEA4j4r/8nPMl1XlPoXt7KWSXdAoJSISnhH3tq/cZ NCLkwRAveC3AtT8o06vNB2OdtRcQyr2FlmvX12NWmf4D+4EemQWEj8C9ZER+C5TsDMMJoihw+ R9eDp4f9efCm4A1KCoxB6HgeISbCpm2Hp5u11GK6ejExzR0iXKqcNvMDlKv0Q5BUcSRx4o6/j Wn51WYEkPFJO/PRp6ir50hJG4mFy95ok8Uw7KPS+NCsfMozDxYSurWbFnlw8EsZtMD6vpWnT5 ac46BNQ3iuSOSsmHdtIY+WXvHRT2PmMY6awgzg2lEWHCyHAMIq/IXVNOUXwXupPAhvmOUhnKk RdicJkDrf0RLZJIgWf9h90JP/QPTIRvC0g+IyPBXwmH9drIi9LdVufo2tSvTdgITh7kry1o7I h9jiqU9GthJ3egWXhScCNsOQ7Fbd17FKegMuYs2XigVc3dq5rnjR7ySrKEpjAC2EloFD9sY9u Vp+97rc2gjPFahkRGmYoLXNzDy1Ho2tjMbTYoHuMQd+Rhh5aZfT4Dx3CTpDV8Q0L+saWvVbe7 No8DChuUyry3C6+3vkQmE7K8e5iIsDagViz0UAnXtH8dfF/4jbhiwlZTKpmPK5LtT8+IUNf33 hZ1YpXjYvl6VLfJ52YlZwDcvpCMRDvRKbV6QMIXiIlL5nl5BXdt07d2JKK4LlVOaTHmjTwAe8 Cb+tDEm8wwHCd4jyPa/FJHqqRX0=
Archived-At: <https://mailarchive.ietf.org/arch/msg/l4s-discuss/DoOd_XQoiBDOKJtX7O_Utxps_q4>
Subject: Re: [L4s-discuss] Configuring a L4S test plant
X-BeenThere: l4s-discuss@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Low Latency, Low Loss, Scalable Throughput \(L4S\) " <l4s-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/l4s-discuss>, <mailto:l4s-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/l4s-discuss/>
List-Post: <mailto:l4s-discuss@ietf.org>
List-Help: <mailto:l4s-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/l4s-discuss>, <mailto:l4s-discuss-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 04 Oct 2023 10:03:54 -0000

Hi Matteo,

> On Oct 4, 2023, at 11:48, Matteo Guarna S303434 <matteo.guarna@studenti.polito.it> wrote:
> 
> Hi Sebastian and thank you for your answer
> 
> Il 2023-10-03 16:39 Sebastian Moeller ha scritto:
>> Hi Matteo.
>>> On Oct 3, 2023, at 15:42, Matteo Guarna S303434 <matteo.guarna@studenti.polito.it> wrote:
>>> Greetings everyone,
>>> I hope the question isn't too off-topic, please forgive me in advance if it is so.
>>> I am still trying to perform some fairness measurements with both L4S and classic flow, although now on a physical test plant instead of a virtualized one. I'm relying on the L4STeam Github project for the deployment of the L4S architecture and I am looking for someone who's familiar with the project and might be willing to help me: in fact I seem not to be able to achieve the correct configuration.
>>> My setup is very simple: I have four servers (two senders and two receivers) exchanging two traffic flows through one server acting as a router. One client-server pair uses Prague as CC, while the other uses Cubic. All servers have the patched kernel provided in the https://github.com/L4STeam/linux/ repository branch.
>>> If I trigger a congestion on the router by generating both the Prague and the Cubic flows (let's say the flows measure 100 Mbit/s each, and they come though a L2 switch both on the same router's input interface on a 1Gb Ethernet link; only a 100M link though is in place on the output interface towards the receivers) I see the L4S flow having higher delay, higher jitter and a smaller (and more variable) bandwidth share. The Prague share is 1/4 of the Cubic share. I am sending an attachment with a graphical representation of the scenario here described.
>>> I configured my L4S endpoints as follows:
>>> - I set the CC as tcp Prague (sysctl -w net.ipv4.tcp_congestion_control=prague)
>>> - I set the AccEcn, even if it's not necessary apparently (sysctl -w net.ipv4.tcp_ecn=3)
>>> - I disabled the required offloading capabilities on the endpoints (sudo ethtool -K $NETIF tso off gso off gro off lro off)
>> 	[SM] I think you need to do the same on the router... or with your
>> topology with running prague and cubic over separate end-points
>> especially on the router itself. Side-node, sch_cake grew a split-gso
>> mode to automatically handle this issue because it can be a bit of a
>> whack-a-mole problem to make these configs stick (and in the case of
>> cake the idea was to make deployment easy even for non-experts).
> 
>    [MG] I tried as you suggested and unfortunately the situation remains unvaried.

	[SM2] Hmmm, that would indicate that it might not be "lumpyness" of inputs into the router. I guess I would take packet captures on both interfaces of the router to see whether there is any unexpected distribution of packets between both input and output? Also worth looking is the CPU usage on the router... we occasionally run into issues with aggressive? power/voltage/frequency scaling where a CPU might take much longer to wake up than expected, the L-queue with its rather low (IMHO too low) reference delay of 1ms would be especially sensitive to such issues.
	Also does your 100Mbps interface support BQL?


> Still, I think I missed the point regarding sch_cake, could you explain again what it is and if and how could it be useful?

	[SM2] I am talking about Linux's cake qdisc and just as example, cake does not support special treatment of ECT(1) but implements rfc3168 ECN signaling for both ECT(0) and ECT(1). So for your experiments it might not be that useful (but for the fun of it, maybe try it as alternative for DualQ) I just mentioned it as an example for a qdisc that opted for not simply disabling all offloads. After all these offloads are quite useful, as they can considerably reduce the CPU of networking. (GSO/GRO work by ameliorating the somewhat fixed per-packet cost of Linux network-stack over multiple ethernet frames, as long as the increased deelay inherent in such bathing approaches this can help a lot).


> Apologize, I guess I perfectly fit into the definition of "non experts". I tried to look it up on the internet but I struggled to find any clarification.

	[SM2] Sorry, my bad, I should have been clearer that I was talkning about a qdisc here, see "man tc-cake" on a sufficietly modern Linux system, the source code file is called sch_cake.c (see e.g. https://elixir.bootlin.com/linux/latest/source/net/sched/sch_cake.c)


> 
>>> - I configured the fair queue on the endpoints (sudo tc qdisc replace dev $NETIF root fq)
>>> I configured my router as follows:
>>> - I enabled forwarding through these interfaces to obtain the routing capabilities (sudo sysctl -w net.ipv4.ip_forward=1)
>>> - I set the dualpi2 on both interfaces (sudo tc qdisc replace dev $NETIF root dualpi2)
>>> I then applied the fair queue and disabled the offloading capabilities on both my classic endpoints to ensure that the classic and l4s flows act as fairly as possible, but to no avail (even without these precautions the results remain roughly the same).
>> 	[SM] Again, I think with your topology offloads at the endpoints
>> should not have much influence, but at the router the well might. If
>> that turns out to help this might be explained by Prague's (and/or
>> DualQ's L-queue) considerably higher sensitivity to bursty traffic
>> compared to classic traffic and queue.
>>> I am sure I am missing some important details in the setup, and I would really appreciate some help.
>> 	[SM] To me this looks rather straight forward, and I probably would
>> try something similar, but I did not actually try in practice.
>> Regards & good luck
>> 	Sebastian
> 
>    [MG] Thanks in advance for your help, and if you have other tips or if you (or anyone else for that matter) are by any chance aware of a paper or project using the prague branch of the L4STeam repository, that might indeed be really helpful too.

	[SM] I am not the best/most objective person to quizz here, as I consider L4S in general too little too late and neither TCP Prague nor the DualQ AQM worth deploying in their current state (but that is why I consider your effort researching these admirable, both IMHO really need more research direly).

I would always try to run the same tests over a bottleneck using a fq-scheduler, be it the all in one cake or fq_codel. Fq_codel actually con be configured to treat ECT(1) mire in line with what TCP Prague desires, so that might well be a decent starting point for alternative measurements....

Regards
	Sebastian


> 
> My best regards to you and the community,
>    Matteo
> 
>>> Regards,
>>> Matteo
>>> P.s.
>>> I just want to point out that by looking at the packet traces everything seems fine: Prague carries the ECN=1, the dualpi2 marks packets with ECN=3, the AccEcn control signals on the ACE fields are coherent, and no losses occur in the Prague flow, while they do happen with the Cubic flow. It looks like Prague is underperforming for whatever reason. Furthermore, if I switch back to two Cubic flows I measure perfect share, equal delay and equal jitter, so it looks to me like there are no physical impairments on the testbed.<testplant_issue.pdf>--
>>> L4s-discuss mailing list
>>> L4s-discuss@ietf.org
>>> https://www.ietf.org/mailman/listinfo/l4s-discuss
> 
> -- 
> L4s-discuss mailing list
> L4s-discuss@ietf.org
> https://www.ietf.org/mailman/listinfo/l4s-discuss