[L4s-discuss] Configuring a L4S test plant

Matteo Guarna S303434 <matteo.guarna@studenti.polito.it> Tue, 03 October 2023 13:43 UTC

Return-Path: <matteo.guarna@studenti.polito.it>
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 549ABC15106A for <l4s-discuss@ietfa.amsl.com>; Tue, 3 Oct 2023 06:43:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.306
X-Spam-Level:
X-Spam-Status: No, score=-4.306 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-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 (1024-bit key) header.d=studenti.polito.it
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 fUnEIoWQ747M for <l4s-discuss@ietfa.amsl.com>; Tue, 3 Oct 2023 06:42:59 -0700 (PDT)
Received: from compass.polito.it (compass.polito.it [130.192.55.110]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B283FC180EBF for <l4s-discuss@ietf.org>; Tue, 3 Oct 2023 06:42:49 -0700 (PDT)
Received: from compass-fwd (localhost [127.0.0.1]) by compass.polito.it (Postfix) with ESMTP id CD82060010B7 for <l4s-discuss@ietf.org>; Tue, 3 Oct 2023 15:42:46 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1]) by compass.polito.it (Postfix) with ESMTP id C909160010B6 for <l4s-discuss@ietf.org>; Tue, 3 Oct 2023 15:42:46 +0200 (CEST)
Authentication-Results: compass.polito.it (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=studenti.polito.it
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= studenti.polito.it; h=user-agent:x-sender:message-id:subject :subject:to:from:from:date:date:content-type:content-type :mime-version:received:received; s=y2k10; t=1696340566; bh=tw7AV u3sNOjEduLvInPCZobMiEU23ap7R1AhOW1yKwA=; b=kXWc7Uh0J2JWDLvv1nLcY hV9bSserPl/Pt1lwWpV8QH3cQo5rtgroKemVceldKqhOFWkJeCvFje14rkA0eJFi wQBJ8ce0ExfBwGyCGkYvEFH9YS9TbbzzL03YiITAEpduY095lk+06nA14RMFW442 OwziNr2eAQClwJQVTNSjbo=
X-Virus-Scanned: amavisd-new at studenti.polito.it
Received: from compass.polito.it ([127.0.0.1]) by localhost (compass.polito.it [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id l3s2-YDtFjLh for <l4s-discuss@ietf.org>; Tue, 3 Oct 2023 15:42:46 +0200 (CEST)
X-AccountStatus: yes
Received: from mail.studenti.polito.it (mail.studenti.polito.it [130.192.55.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: s256987@studenti.polito.it) by compass.polito.it (Postfix) with ESMTPSA id F2A8B60010A4 for <l4s-discuss@ietf.org>; Tue, 3 Oct 2023 15:42:45 +0200 (CEST)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_d06ed5a9db43ef4fc9d9f83cd9872de7"
Date: Tue, 03 Oct 2023 15:42:45 +0200
From: Matteo Guarna S303434 <matteo.guarna@studenti.polito.it>
To: l4s-discuss@ietf.org
Message-ID: <7952e11516cc7b25484b53ae1380d88c@studenti.polito.it>
X-Sender: matteo.guarna@studenti.polito.it
User-Agent: Roundcube Webmail/1.2-rc
X-Webmail-IP: [ 151.18.77.248 ]
X-Encoded-IP: 1wgPwnNU4KyFUYbH1PERTnUceVkR+tKbgRa8kDuzu81NQp3vMdXNCUOWBe0MjOPWhRj6K+Xyuh/LMepiGEqRJQ==
Archived-At: <https://mailarchive.ietf.org/arch/msg/l4s-discuss/glblrUbYI_CaSuNlSgoZ3deb_xg>
Subject: [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: Tue, 03 Oct 2023 13:43:04 -0000

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

I am sure I am missing some important details in the setup, and I would 
really appreciate some help.

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.