From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44C463A1C5 for ; Tue, 2 Apr 2024 07:24:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042676; cv=none; b=gB5Dwbyyba1x+J2mUPpMafo7HCHqaACekH/rxpjUwfno1LqA8Inj1ZG/hFj+t8WeUHmrDj5ETVeqyaZAEhVdjqeOWaW3UQwYwV60gJxULj/hycedlbNb1lqEDzOoUXcApBUuiCuXz04w7B6hmdJkPdmg80KfyhLg9NaKpZ4MxFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042676; c=relaxed/simple; bh=imqx3zbk+fCgvlrMXkofoQ235vHpxLpmoivxLAoXqX4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yglqdtf6zIHexO37RXvUgbmEbXSkvcYN8fpyzawYaIoDHA4KdNdmOl4Z3KArjh39b87E0PLV94gpv/lkRC3apUti6PCWA6VW38YWCPJkjc+7tCtbeY9L0WFmvgtX75jXDykGit8cgw0hUPh5jEpE/C09dBVWfvW1lbB//NxOrXI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nYKfys3D; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nYKfys3D" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1932AC433F1; Tue, 2 Apr 2024 07:24:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042675; bh=imqx3zbk+fCgvlrMXkofoQ235vHpxLpmoivxLAoXqX4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nYKfys3DjzpPGmNUQaNBbnXswdgkHPgxHecNPZJ5Vm+RrMeo97B7LwXSxhczgg1Gv wtduhz9/qrjhdGEMZjqH/B0h8RxEVhcURPHUzIqAfGDqGbjL+CfH5EI1lTDJTg5MeI bNQLUgutmYJbdLEZER9iDkOtWSI1VPw+Mzw8jeFwQBUYP0dijmwjh7Xct4QRQomehn F6oHFN7WqJkHRTHYQsM6VjB37l4nIQyAVBTHDstEmkAlczDnQs9QiuMiM1PJYu66+Q fZHdVvj1N47WlIchd0ftWv6GYD/Pi7M6MYaqCxKLDReIwnfBsuhVW2zzWqBMHK6XsI cowOFkT8NtIOg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 1/8] Squash to "selftests/bpf: Add bpf scheduler test" 4 send_data Date: Tue, 2 Apr 2024 15:24:21 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Drop send_data. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 83 +------------------ 1 file changed, 1 insertion(+), 82 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 81cde7a0a26d..88899ff02a70 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -331,87 +331,6 @@ static void test_mptcpify(void) } =20 static const unsigned int total_bytes =3D 10 * 1024 * 1024; -static int stop, duration; - -static void *server(void *arg) -{ - int lfd =3D (int)(long)arg, err =3D 0, fd; - ssize_t nr_sent =3D 0, bytes =3D 0; - char batch[1500]; - - fd =3D accept(lfd, NULL, NULL); - while (fd =3D=3D -1) { - if (errno =3D=3D EINTR) - continue; - err =3D -errno; - goto done; - } - - if (settimeo(fd, 0)) { - err =3D -errno; - goto done; - } - - while (bytes < total_bytes && !READ_ONCE(stop)) { - nr_sent =3D send(fd, &batch, - MIN(total_bytes - bytes, sizeof(batch)), 0); - if (nr_sent =3D=3D -1 && errno =3D=3D EINTR) - continue; - if (nr_sent =3D=3D -1) { - err =3D -errno; - break; - } - bytes +=3D nr_sent; - } - - CHECK(bytes !=3D total_bytes, "send", "%zd !=3D %u nr_sent:%zd errno:%d\n= ", - bytes, total_bytes, nr_sent, errno); - -done: - if (fd >=3D 0) - close(fd); - if (err) { - WRITE_ONCE(stop, 1); - return ERR_PTR(err); - } - return NULL; -} - -static void send_data(int lfd, int fd, char *msg) -{ - ssize_t nr_recv =3D 0, bytes =3D 0; - pthread_t srv_thread; - void *thread_ret; - char batch[1500]; - int err; - - WRITE_ONCE(stop, 0); - - err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); - if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) - return; - - /* recv total_bytes */ - while (bytes < total_bytes && !READ_ONCE(stop)) { - nr_recv =3D recv(fd, &batch, - MIN(total_bytes - bytes, sizeof(batch)), 0); - if (nr_recv =3D=3D -1 && errno =3D=3D EINTR) - continue; - if (nr_recv =3D=3D -1) - break; - bytes +=3D nr_recv; - } - - CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", - bytes, total_bytes, nr_recv, errno); - - WRITE_ONCE(stop, 1); - - pthread_join(srv_thread, &thread_ret); - CHECK(IS_ERR(thread_ret), "pthread_join", "thread_ret:%ld", - PTR_ERR(thread_ret)); -} - #define ADDR_1 "10.0.1.1" #define ADDR_2 "10.0.1.2" #define PORT_1 10001 @@ -466,7 +385,7 @@ static void send_data_and_verify(char *msg, int addr1, = int addr2) if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) goto close_server; =20 - send_data(server_fd, client_fd, msg); + send_recv_data(server_fd, client_fd, total_bytes); =20 if (clock_gettime(CLOCK_MONOTONIC, &end) < 0) goto close_server; --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B149E3A1CB for ; Tue, 2 Apr 2024 07:24:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042677; cv=none; b=iG3sszojJDhi/VwHsUhcmdqWKF5XrkRIiC+aTL4AK/5edwinn57FOxMBCqwixUHtjPFAA9QjXQqBzF4Gzo2BGY2Mtym5HgOYtGBNEu/7rOe61oq6nZB0PQt1ZBjihzg0B7Uxd6qr1ibEhW4liBG1ed587ua1QaoP+FV5SccaSI0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042677; c=relaxed/simple; bh=E8wfXfEQTQks65NLFdPmY9LAXB8f215SIbsBjNEPNbE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lzEDjsC6PfokQMSOxIOKbfoVtPNig7sLtQCALfSTF4R5e1sk6MP6ffToSByMTO5oPvRL/oJ3sT3vcTxlf6v0U0E4FCzZho6zYONJE18AgidLteaijcU3GMc4GXQLj4b+/7I4Cv8/Cw4+3GFiiuHZq+1JedaJV4fpBuLMiBA/lY4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fIyAtpve; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fIyAtpve" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 68D4CC433C7; Tue, 2 Apr 2024 07:24:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042677; bh=E8wfXfEQTQks65NLFdPmY9LAXB8f215SIbsBjNEPNbE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fIyAtpvemSz3aOqsf3sXd13ZewDgkIqoOJYzA1UF5lr8znahkalxSTe8/lXK3+Vqb EgUSduvA0boXxvmtqCaC0S4UXYhKvTLG5kDAkyL9j7Lb2QcLvNUsl0gy9l/2vH+PzY kB5dwmGAKqrP0qCZO5fDJrTkhy9IxsT+SEfBdM5O1Ye/Ctd4+j62+90kuQse2pN2Be SoZM3FkuV3sP/Q0bXqqORUdzEmV5CPI2gOQKc7JlbOhbNb5f8yTho+rcRfEmPssCYS zRIDiYeNhKduwlUoQdxPTQp8GAHyVR2yBYWMEByUoFg3qOPsPVMuDXCWkkEHsySitZ 23gAlYYIqyotw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 2/8] selftests/bpf: Handle SIGINT when creating netns Date: Tue, 2 Apr 2024 15:24:22 +0800 Message-Id: <81a8524beeb96916cb42752b26d3624cb967c0ed.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 88899ff02a70..660964062e3d 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -69,11 +69,17 @@ struct mptcp_storage { char ca_name[TCP_CA_NAME_MAX]; }; =20 +static void sig_int(int sig) { + signal(sig, SIG_IGN); + SYS_NOFAIL("ip netns del %s", NS_TEST); +} + static struct nstoken *create_netns(void) { SYS(fail, "ip netns add %s", NS_TEST); SYS(fail, "ip -net %s link set dev lo up", NS_TEST); =20 + signal(SIGINT, sig_int); return open_netns(NS_TEST); fail: return NULL; --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A825339AC3 for ; Tue, 2 Apr 2024 07:24:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042678; cv=none; b=prB4lXuNeWmR/Byb6pNnRnSlTivcFHzBjBL2u05h+1iER6nP+uIqdhRY1W60K1SsiU9w87ZNg5fkT7HRXGs7056EFnzfrCi81zhRHqL/BVMM+5mzzx69EjkVpBhRYVpIDglEhq4DwpKUU8STnwCU89ePNVCzD5B9TI9qAM0Lmrs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042678; c=relaxed/simple; bh=CNbKg/48cYgP860g9j4gy42liUO3q1RGZ0M9HRZl8i0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G8Tq6TNHXN9wV/MiMniOKqPdKfwx64XRj9HxddkT0nQ70qid8ieRAmqNkq3cFx3v+Ms7/N8oe+Kwjv/j1GCJOH6+3Ubg5v5MwEZ7Q0BwCUGoO/pDtAiChgCuYwXpLF61N64yhIyADSZ3het/CbEHNsKVYikU8wy3eUgzeVlTMtU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UMlhwwLD; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UMlhwwLD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B61B1C433F1; Tue, 2 Apr 2024 07:24:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042678; bh=CNbKg/48cYgP860g9j4gy42liUO3q1RGZ0M9HRZl8i0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UMlhwwLDuMBqs0lMlmB8295TxauOM/gLk474CvSXXCYiHe6VFxosllbSVEd6A295D 1sCpNMePkLPWgyH5UmX7+/3X80elRUi2NeS9cHcsMaTgG9WHBu6rVINEAN5fVwqlkR T8kQz4aBVM36eGaxE81ZKGhHr2z67PPQaRYeKMu7wknReWfa9H70BJatX+/BhvqcBJ UyrbgGfCCK6Nw5GnTEm70kar9d3I/OIHRVlzOxBZrVXpz2RnvFl7YY7ZRVPkJjtbk+ iUzXjxCZrx4ITDecRvWyeKeGOueE8x44YlnLYMxur20ZhwF5GaLipt/xFZjgac4l+M j3pytxEu1wQIA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 3/8] selftests/bpf: Refactor mptcp_sock test Date: Tue, 2 Apr 2024 15:24:23 +0800 Message-Id: <28ff3a8211434440cc9cc57292fe0e116c635c8b.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This patch refactors mptcp_sock test, renames "base" to "mptcp_sock", extracts a new helper run_mptcp_sock() to start servers and run tests, moves all test skeleton operations, __open_and_load, __attach and __destroy from run_test() into test_mptcp_sock(). This prepares for the later unification of all MPTCP tests using a macro. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 61 +++++++++++-------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 660964062e3d..9bce55dec5e3 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -174,18 +174,10 @@ static int verify_msk(int map_fd, int client_fd, __u3= 2 token) return err; } =20 -static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) +static int run_test(int cgroup_fd, int server_fd, + struct mptcp_sock *sock_skel, bool is_mptcp) { int client_fd, prog_fd, map_fd, err; - struct mptcp_sock *sock_skel; - - sock_skel =3D mptcp_sock__open_and_load(); - if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) - return libbpf_get_error(sock_skel); - - err =3D mptcp_sock__attach(sock_skel); - if (!ASSERT_OK(err, "skel_attach")) - goto out; =20 prog_fd =3D bpf_program__fd(sock_skel->progs._sockops); map_fd =3D bpf_map__fd(sock_skel->maps.socket_storage_map); @@ -205,29 +197,19 @@ static int run_test(int cgroup_fd, int server_fd, boo= l is_mptcp) close(client_fd); =20 out: - mptcp_sock__destroy(sock_skel); return err; } =20 -static void test_base(void) +static void run_mptcp_sock(int cgroup_fd, struct mptcp_sock *skel) { - struct nstoken *nstoken =3D NULL; - int server_fd, cgroup_fd; - - cgroup_fd =3D test__join_cgroup("/mptcp"); - if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) - return; - - nstoken =3D create_netns(); - if (!ASSERT_OK_PTR(nstoken, "create_netns")) - goto fail; + int server_fd; =20 /* without MPTCP */ server_fd =3D start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); if (!ASSERT_GE(server_fd, 0, "start_server")) goto with_mptcp; =20 - ASSERT_OK(run_test(cgroup_fd, server_fd, false), "run_test tcp"); + ASSERT_OK(run_test(cgroup_fd, server_fd, skel, false), "run_test tcp"); =20 close(server_fd); =20 @@ -235,14 +217,41 @@ static void test_base(void) /* with MPTCP */ server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) - goto fail; + return; =20 - ASSERT_OK(run_test(cgroup_fd, server_fd, true), "run_test mptcp"); + ASSERT_OK(run_test(cgroup_fd, server_fd, skel, true), "run_test mptcp"); =20 close(server_fd); +} + +static void test_mptcp_sock(void) +{ + struct nstoken *nstoken =3D NULL; + struct mptcp_sock *sock_skel; + int cgroup_fd, err; + + cgroup_fd =3D test__join_cgroup("/mptcp"); + if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) + return; + + sock_skel =3D mptcp_sock__open_and_load(); + if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) + goto out; + + err =3D mptcp_sock__attach(sock_skel); + if (!ASSERT_OK(err, "skel_attach")) + goto out; + + nstoken =3D create_netns(); + if (!ASSERT_OK_PTR(nstoken, "create_netns")) + goto fail; + + run_mptcp_sock(cgroup_fd, sock_skel); =20 fail: cleanup_netns(nstoken); + mptcp_sock__destroy(sock_skel); +out: close(cgroup_fd); } =20 @@ -471,7 +480,7 @@ do { \ =20 void test_mptcp(void) { - RUN_MPTCP_TEST(base); + RUN_MPTCP_TEST(mptcp_sock); RUN_MPTCP_TEST(mptcpify); RUN_MPTCP_TEST(default); RUN_MPTCP_TEST(first); --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F089538FBC for ; Tue, 2 Apr 2024 07:24:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042680; cv=none; b=enGGuaUcOEy1LpKHF4DEbPYh9fBWYdSLX7eL/RUStCoPnEDYZ3UhDum6zHzeSyydbNY093kNUiSpG+cXyGpLiqKj1k0LD6ObVCJrwigsTO4VFNQMxgrMJ0dco3spjg2qQGiyUhB/cWTLxbNFlr3ch4LkIamH+RPQ5jjf/hbvkS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042680; c=relaxed/simple; bh=gVCl3j787vOGLAlP53I0sRTRRvFhD45T2BSIP6NnVUQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KmXyqCk3f51bCwQJaUEzcv4g+/FGN2UdlmBX+A6OOjTIaw8wh5vHkgK+OlrXlCQ6lwmr73VpLFjdPNFAwNZcTVI+M29znbO8m9P3RqIkC3e5CG5wB12qj/ZvODaSJVT6hKkW0Iig7mmXb7uVFF9SVpQ53jtGpfKrdXeklUQb99w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=p7hMtkob; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="p7hMtkob" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0DACEC433F1; Tue, 2 Apr 2024 07:24:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042679; bh=gVCl3j787vOGLAlP53I0sRTRRvFhD45T2BSIP6NnVUQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p7hMtkobaTtrIq2EHRPlKzOMZ+YzGt/YcSWTxeaHBVQti0KmFe92wjmBPUKuSyK4B RQTD2Y+3xIu+TjistYFtbLVWvWG6aOQm2BtWCNWdDFgmt4Qam5yQYGRXqIMzEaSewb Y8QjAADs+nFtmFl7sAoQML0T+BjRz0M3QaRCkkag7jgaJ7roA6PDvJoKdjasF3FKyG i+UtuLqvPvpjyyYwxwuLK2zgl53cUz99shdKbB6GqwLJK5PrXLpYh+meesDwujkpjo GIgMyHqc8hlaC0M1iM4fNu9ludz8pTvMGnOLgOJuYR6BiTFXILQ3KcpyDPRcUW17sJ qzQvfIi6BAebg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 4/8] selftests/bpf: Refactor mptcpify test Date: Tue, 2 Apr 2024 15:24:24 +0800 Message-Id: <5c3ccd48432e48b712f8c5823cdb0aa76db27270.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This patch refactors mptcpify test, moves all test skeleton operations, __open_and_load, __attach and __destroy from run_mptcpify() into test_mptcpify(). This prepares for the later unification of all MPTCP tests using a macro. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 9bce55dec5e3..50a932e3ad23 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -287,61 +287,58 @@ static int verify_mptcpify(int server_fd, int client_= fd) return err; } =20 -static int run_mptcpify(int cgroup_fd) +static void run_mptcpify(int cgroup_fd, struct mptcpify *skel) { int server_fd, client_fd, err =3D 0; - struct mptcpify *mptcpify_skel; - - mptcpify_skel =3D mptcpify__open_and_load(); - if (!ASSERT_OK_PTR(mptcpify_skel, "skel_open_load")) - return libbpf_get_error(mptcpify_skel); - - err =3D mptcpify__attach(mptcpify_skel); - if (!ASSERT_OK(err, "skel_attach")) - goto out; =20 /* without MPTCP */ server_fd =3D start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); - if (!ASSERT_GE(server_fd, 0, "start_server")) { - err =3D -EIO; - goto out; - } + if (!ASSERT_GE(server_fd, 0, "start_server")) + return; =20 client_fd =3D connect_to_fd(server_fd, 0); - if (!ASSERT_GE(client_fd, 0, "connect to fd")) { - err =3D -EIO; + if (!ASSERT_GE(client_fd, 0, "connect to fd")) goto close_server; - } =20 send_byte(client_fd); =20 err =3D verify_mptcpify(server_fd, client_fd); + ASSERT_OK(err, "verify_mptcpify"); =20 close(client_fd); close_server: close(server_fd); -out: - mptcpify__destroy(mptcpify_skel); - return err; } =20 static void test_mptcpify(void) { struct nstoken *nstoken =3D NULL; + struct mptcpify *mptcpify_skel; int cgroup_fd; + int err; =20 cgroup_fd =3D test__join_cgroup("/mptcpify"); if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) return; =20 + mptcpify_skel =3D mptcpify__open_and_load(); + if (!ASSERT_OK_PTR(mptcpify_skel, "skel_open_load")) + goto out; + + err =3D mptcpify__attach(mptcpify_skel); + if (!ASSERT_OK(err, "skel_attach")) + goto out; + nstoken =3D create_netns(); if (!ASSERT_OK_PTR(nstoken, "create_netns")) goto fail; =20 - ASSERT_OK(run_mptcpify(cgroup_fd), "run_mptcpify"); + run_mptcpify(cgroup_fd, mptcpify_skel); =20 fail: cleanup_netns(nstoken); + mptcpify__destroy(mptcpify_skel); +out: close(cgroup_fd); } =20 --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E69F2C689 for ; Tue, 2 Apr 2024 07:24:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042681; cv=none; b=UxclCUMfVysU0e8w3aJfMc/7a7ORpMpiOv4pT2EF/bJ7JQsGZOO62PlV/qbYOLvFTpDIZwH+BxNGDqEZKWmxdIUoeTLo94zvsHLr/9yavVQ+Sx1ZSad/xysBhcgBBgN+GR5U43gC2khwlpdz3VV7yFEjB26CegOI0XDctaT/T+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042681; c=relaxed/simple; bh=Q6+wPctNK0o2VvW5wDpdo4zVWpzhVway4GF7pt3FD1U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OpX6xaQ8YZXpwqr88VHLGcgeLcDpecVsU6cDX/uRpog/iHcl0kea2sZoGOdz76aYXYvqPpeBYIVnX5vmXeBmCFOjk8Cg5wEZY7GriUBXLqwnq8SHcyLFLaHg150TytuIHGJF3XHOuVjBxeKWdvh6jjGgI1sz6EOw2EufEy1gEx0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RiOc4sh7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RiOc4sh7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5A718C43399; Tue, 2 Apr 2024 07:24:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042681; bh=Q6+wPctNK0o2VvW5wDpdo4zVWpzhVway4GF7pt3FD1U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RiOc4sh7eSq7SYXk0JQyBwFBOaM6DOV83dGBCU5UWjM9secngltu6zjrUgTkQVdD9 uodi+xF3kepsyFmkCiuu30AGAGTlfO+hkf1pPcHRt1rLWhUEEII/GAgBzSfluZIHYv ZLk4xFppkmC/ArJAVMkD6gPM7GyvdnM+aqBfmQ7WLzbmOpy89vuRMdCddHLfxEMUEn krugd1TLcMXI/ZjFhJb8Ka5IqGyukf7mv9+N9jINLyq4ulZYFOEtBduVOi85xkPLD0 RTv54sjm432jYt8psZ/VnOPlxTybq2X5dA/xm9C+wi8b/XrtQoJn2p+KIuPtd6nqs7 A2HXR08+V/bXQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 5/8] selftests/bpf: Add MPTCP_BASE_TEST macro Date: Tue, 2 Apr 2024 15:24:25 +0800 Message-Id: <30f9ba0f3b08b5be92653a9328007a16bbff8720.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This patch adds a macro MPTCP_BASE_TEST to unify all MPTCP tests. test_mptcp_sock() can be replaced by MPTCP_BASE_TEST(mptcp_sock), and test_mptcpify() can be replaced by MPTCP_BASE_TEST(mptcpify). Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 98 +++++++------------ 1 file changed, 35 insertions(+), 63 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 50a932e3ad23..6043947f178c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -224,37 +224,6 @@ static void run_mptcp_sock(int cgroup_fd, struct mptcp= _sock *skel) close(server_fd); } =20 -static void test_mptcp_sock(void) -{ - struct nstoken *nstoken =3D NULL; - struct mptcp_sock *sock_skel; - int cgroup_fd, err; - - cgroup_fd =3D test__join_cgroup("/mptcp"); - if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) - return; - - sock_skel =3D mptcp_sock__open_and_load(); - if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) - goto out; - - err =3D mptcp_sock__attach(sock_skel); - if (!ASSERT_OK(err, "skel_attach")) - goto out; - - nstoken =3D create_netns(); - if (!ASSERT_OK_PTR(nstoken, "create_netns")) - goto fail; - - run_mptcp_sock(cgroup_fd, sock_skel); - -fail: - cleanup_netns(nstoken); - mptcp_sock__destroy(sock_skel); -out: - close(cgroup_fd); -} - static int verify_mptcpify(int server_fd, int client_fd) { struct __mptcp_info info; @@ -310,43 +279,46 @@ static void run_mptcpify(int cgroup_fd, struct mptcpi= fy *skel) close(server_fd); } =20 -static void test_mptcpify(void) -{ - struct nstoken *nstoken =3D NULL; - struct mptcpify *mptcpify_skel; - int cgroup_fd; - int err; - - cgroup_fd =3D test__join_cgroup("/mptcpify"); - if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) - return; - - mptcpify_skel =3D mptcpify__open_and_load(); - if (!ASSERT_OK_PTR(mptcpify_skel, "skel_open_load")) - goto out; - - err =3D mptcpify__attach(mptcpify_skel); - if (!ASSERT_OK(err, "skel_attach")) - goto out; - - nstoken =3D create_netns(); - if (!ASSERT_OK_PTR(nstoken, "create_netns")) - goto fail; - - run_mptcpify(cgroup_fd, mptcpify_skel); - -fail: - cleanup_netns(nstoken); - mptcpify__destroy(mptcpify_skel); -out: - close(cgroup_fd); -} - static const unsigned int total_bytes =3D 10 * 1024 * 1024; #define ADDR_1 "10.0.1.1" #define ADDR_2 "10.0.1.2" #define PORT_1 10001 =20 +#define MPTCP_BASE_TEST(name) \ +static void test_##name(void) \ +{ \ + struct nstoken *nstoken; \ + int cgroup_fd, err; \ + struct name *skel; \ + \ + cgroup_fd =3D test__join_cgroup("/" #name); \ + if (!ASSERT_GE(cgroup_fd, 0, "join_cgroup " #name)) \ + return; \ + \ + skel =3D name##__open_and_load(); \ + if (!ASSERT_OK_PTR(skel, "skel_open_load " #name)) \ + goto close_cgroup; \ + \ + err =3D name##__attach(skel); \ + if (!ASSERT_OK(err, "skel_attach " #name)) \ + goto skel_destroy; \ + \ + nstoken =3D create_netns(); \ + if (!ASSERT_OK_PTR(nstoken, "create_netns " #name)) \ + goto skel_destroy; \ + \ + run_##name(cgroup_fd, skel); \ + \ + cleanup_netns(nstoken); \ +skel_destroy: \ + name##__destroy(skel); \ +close_cgroup: \ + close(cgroup_fd); \ +} + +MPTCP_BASE_TEST(mptcp_sock); +MPTCP_BASE_TEST(mptcpify); + static struct nstoken *sched_init(char *flags, char *sched) { struct nstoken *nstoken; --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E12752C689 for ; Tue, 2 Apr 2024 07:24:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042683; cv=none; b=LHCsKh+qSDyqDtreLhzLwz3TZqLxLG3DgpMCWIWJz4ZJeg077eS9mw5xxQg2ZjqZRaBbZbT6Ps6eFtms5UUMUf0/mdTOZyFHdvs0eMUXyaOpSy9O2ShfyTt/GXXXMKN2S68g2nK28mSUnY8CKlPNhvHWlA03klRl3Bo7eXSIrQA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042683; c=relaxed/simple; bh=S0+kctrHQgktXLmfRi63oj2s6hctBrghW6AsPgATIqs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uV3GBk6/RCYebSpEtVH2iTwXO5XN2gg9mMluALRLck+cMKPY7vOYm08E1vJCWp+DTyugQksb5Q8EpoAuqciHsU8YN239AM/74i4UNoRgLAqB55A+F55uAZHpE1PqVKTHRwkRP9ZG8IZq11ZNgXtQf5e/3qZjVsyZFxU5435WMes= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hQiDcaZE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hQiDcaZE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A896EC433F1; Tue, 2 Apr 2024 07:24:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042682; bh=S0+kctrHQgktXLmfRi63oj2s6hctBrghW6AsPgATIqs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hQiDcaZEoxGQDqU/JbO8YWk175BD2QwdkDXeGF0hWCwcK4B9A0FBzK+mTMWmOJ9XJ Yi14Wep9yKmjvZkrw9PDr04Spm4dr1FikRp3qI/NSfsZNfYxRgkHvY0yuzLjwPlUSe g+f1bKg8MfPuZyAttLTdgPQWYD8JMDXWmXMK7ko0TR0di7oDAyZ3sq3pjF2XG6UItq jr5NGgMhW/VV3sSFTVdGYiShBYf7qItRX5IjUxWV2whMj/XNYDQgV+9gM8EQDZlp3x ClPyGrhrH53LqZQVFQYxRdJ1+u9aYPC8/g22T+cNmKk/chg7ONoahz8dw852HCujoN +Sz8dKKMtGxow== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 6/8] selftests/bpf: Add mptcp subflow example Date: Tue, 2 Apr 2024 15:24:26 +0800 Message-Id: <1d61922711dc017c4cd323199fc5341908a40b69.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Move Nicolas's patch into bpf selftests directory. This example added a test that was adding a different mark (SO_MARK) on each subflow, and changing the TCP CC only on the first subflow. This example shows how it is possible to: Identify the parent msk of an MPTCP subflow. Put different sockopt for each subflow of a same MPTCP connection. Here especially, we implemented two different behaviours: A socket mark (SOL_SOCKET SO_MARK) is put on each subflow of a same MPTCP connection. The order of creation of the current subflow defines its mark. The TCP CC algorithm of the very first subflow of an MPTCP connection is set to "reno". Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/76 Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_subflow.c | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_subflow.c diff --git a/tools/testing/selftests/bpf/progs/mptcp_subflow.c b/tools/test= ing/selftests/bpf/progs/mptcp_subflow.c new file mode 100644 index 000000000000..9553099ffd5f --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_subflow.c @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2024, Kylin Software */ +/* Author: Nicolas Rybowski */ + +#include // SOL_SOCKET, SO_MARK, ... +#include // TCP_CONGESTION +#include +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +#ifndef SOL_TCP +#define SOL_TCP 6 +#endif + +#ifndef TCP_CA_NAME_MAX +#define TCP_CA_NAME_MAX 16 +#endif + +char cc[TCP_CA_NAME_MAX] =3D "reno"; + +/* Associate a subflow counter to each token */ +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __uint(key_size, sizeof(__u32)); + __uint(value_size, sizeof(__u32)); + __uint(max_entries, 100); +} mptcp_sf SEC(".maps"); + +SEC("sockops") +int mptcp_subflow(struct bpf_sock_ops *skops) +{ + __u32 init =3D 1, key, mark, *cnt; + struct mptcp_sock *msk; + struct bpf_sock *sk; + int err; + + if (skops->op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) + return 1; + + sk =3D skops->sk; + if (!sk) + return 1; + + msk =3D bpf_skc_to_mptcp_sock(sk); + if (!msk) + return 1; + + key =3D msk->token; + cnt =3D bpf_map_lookup_elem(&mptcp_sf, &key); + if (cnt) { + /* A new subflow is added to an existing MPTCP connection */ + __sync_fetch_and_add(cnt, 1); + mark =3D *cnt; + } else { + /* A new MPTCP connection is just initiated and this is its primary + * subflow + */ + bpf_map_update_elem(&mptcp_sf, &key, &init, BPF_ANY); + mark =3D init; + } + + /* Set the mark of the subflow's socket to its apparition order */ + err =3D bpf_setsockopt(skops, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)); + if (err < 0) + return 1; + if (mark =3D=3D 1) + err =3D bpf_setsockopt(skops, SOL_TCP, TCP_CONGESTION, cc, TCP_CA_NAME_M= AX); + + return 1; +} --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38EA12C689 for ; Tue, 2 Apr 2024 07:24:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042684; cv=none; b=jd6fH5FgbfXFraPeuums3V06RXbJkUUyjeZXCQAco0MabyPJ7ZQK6FVf6kkPAo5Ew1Nvupjr/wPpOsi9O1xAsh8QoI8MA/SnN4C0jmxS0AvqcP3yFnLdoCMU1dM02idjP/mK7Pik5QDuhnu6o1mz9W3K3WBytJGZsRCcEhrwGtk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042684; c=relaxed/simple; bh=hwDwgf1tr56QleJO866C8miHeThccz2p2cZY4excdOE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mEbIF2+fMaoVtu0sEj4EYPka3UfdQBXWkoPJpOZ6taELQ5ZvOJOVjolguuNvFgsludlyFBZrPqFSx3GSB+KZ99oqIG/q4z08nsdvkVEzJL2P+ThTeH+PlgkCvWY2G7f8JJWlJXpZPGwH4DDtFaZC+1NdW+iVkH5tXzvaFgXFlag= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SB+8n/87; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SB+8n/87" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 032A8C43399; Tue, 2 Apr 2024 07:24:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042683; bh=hwDwgf1tr56QleJO866C8miHeThccz2p2cZY4excdOE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SB+8n/87eK14j1i+T5sgXwfm0DgwC2Hv0fyaHj97AxbwT0KCcVdtpzsgxjvYs1ahg 0W1sBfAhxPXEdj83gTZ42sEXeZyjT/uATJboT3d04NkZ8czYgdy821nJw3FUCl39eb bxUJrxQ21menuShljwpiBCkEaxDn+ht8I+mULgu2DRriPuwjF/TncSAygZqKwuS22S Yx1pCYAIIEX12WKhuPm7F9xNq3+5nzQ1DeYyV/9DB5wOYVXB2FrT9FYKLqsoD7GG5j QeFjAZ7h7kNSdvuZQ8ig5tY/+yzPTzeSo6Zae2Madky024E2XlYRUASw/hhf0s4iR5 qdc6/+Jf3Wsdg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 7/8] selftests/bpf: Add mptcp subflow subtest Date: Tue, 2 Apr 2024 15:24:27 +0800 Message-Id: <9d77d7eff53adeb03277d30f3e5cdab946718a26.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This patch adds a subtest named test_subflow to load and verify the newly added mptcp subflow example in test_mptcp. Add a helper endpoint_init() to add a new subflow endpoint. Add another helper ss_search() to verify the fwmark and congestion values set by mptcp_subflow prog using setsockopts. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/76 Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 79 ++++++++++++++++++- 1 file changed, 75 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 6043947f178c..8309ee97ac8c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -9,6 +9,7 @@ #include "network_helpers.h" #include "mptcp_sock.skel.h" #include "mptcpify.skel.h" +#include "mptcp_subflow.skel.h" #include "mptcp_bpf_first.skel.h" #include "mptcp_bpf_bkup.skel.h" #include "mptcp_bpf_rr.skel.h" @@ -16,6 +17,9 @@ #include "mptcp_bpf_burst.skel.h" =20 #define NS_TEST "mptcp_ns" +#define ADDR_1 "10.0.1.1" +#define ADDR_2 "10.0.1.2" +#define PORT_1 10001 =20 #ifndef IPPROTO_MPTCP #define IPPROTO_MPTCP 262 @@ -38,6 +42,8 @@ #define TCP_CA_NAME_MAX 16 #endif =20 +static const unsigned int total_bytes =3D 10 * 1024 * 1024; + struct __mptcp_info { __u8 mptcpi_subflows; __u8 mptcpi_add_addr_signal; @@ -279,10 +285,73 @@ static void run_mptcpify(int cgroup_fd, struct mptcpi= fy *skel) close(server_fd); } =20 -static const unsigned int total_bytes =3D 10 * 1024 * 1024; -#define ADDR_1 "10.0.1.1" -#define ADDR_2 "10.0.1.2" -#define PORT_1 10001 +static int endpoint_init(char *flags) +{ + SYS(fail, "ip -net %s link add veth1 type veth peer name veth2", NS_TEST); + SYS(fail, "ip -net %s addr add %s/24 dev veth1", NS_TEST, ADDR_1); + SYS(fail, "ip -net %s link set dev veth1 up", NS_TEST); + SYS(fail, "ip -net %s addr add %s/24 dev veth2", NS_TEST, ADDR_2); + SYS(fail, "ip -net %s link set dev veth2 up", NS_TEST); + SYS(fail, "ip -net %s mptcp endpoint add %s %s", NS_TEST, ADDR_2, flags); + + return 0; +fail: + return -1; +} + +static int _ss_search(char *src, char *dst, char *port, char *keyword) +{ + char cmd[128]; + + snprintf(cmd, sizeof(cmd), + "ip netns exec %s ss -Menita src %s dst %s %s %d | grep -q '%s'", + NS_TEST, src, dst, port, PORT_1, keyword); + return system(cmd); +} + +static int ss_search(char *src, char *keyword) +{ + return _ss_search(src, ADDR_1, "dport", keyword); +} + +static void run_mptcp_subflow(int cgroup_fd, struct mptcp_subflow *skel) +{ + int server_fd, client_fd, prog_fd, err; + + if (!ASSERT_OK(endpoint_init("subflow"), "endpoint_init")) + return; + + err =3D mptcp_subflow__attach(skel); + if (!ASSERT_OK(err, "skel_attach")) + return; + + prog_fd =3D bpf_program__fd(skel->progs.mptcp_subflow); + err =3D bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0); + if (!ASSERT_OK(err, "prog_attach")) + return; + + server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); + if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) + return; + + client_fd =3D connect_to_fd(server_fd, 0); + if (!ASSERT_GE(client_fd, 0, "connect to fd")) + goto close_server; + + if (set_nonblock(server_fd)) + goto close_server; + + send_recv_data(server_fd, client_fd, total_bytes); + + ASSERT_OK(ss_search(ADDR_1, "fwmark:0x1"), "ss_search fwmark:0x1"); + ASSERT_OK(ss_search(ADDR_2, "fwmark:0x2"), "ss_search fwmark:0x2"); + ASSERT_OK(ss_search(ADDR_1, "reno"), "ss_search reno"); + ASSERT_OK(ss_search(ADDR_2, "cubic"), "ss_search cubic"); + + close(client_fd); +close_server: + close(server_fd); +} =20 #define MPTCP_BASE_TEST(name) \ static void test_##name(void) \ @@ -318,6 +387,7 @@ close_cgroup: \ =20 MPTCP_BASE_TEST(mptcp_sock); MPTCP_BASE_TEST(mptcpify); +MPTCP_BASE_TEST(mptcp_subflow); =20 static struct nstoken *sched_init(char *flags, char *sched) { @@ -451,6 +521,7 @@ void test_mptcp(void) { RUN_MPTCP_TEST(mptcp_sock); RUN_MPTCP_TEST(mptcpify); + RUN_MPTCP_TEST(mptcp_subflow); RUN_MPTCP_TEST(default); RUN_MPTCP_TEST(first); RUN_MPTCP_TEST(bkup); --=20 2.40.1 From nobody Sat May 18 19:12:45 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D73639AC3 for ; Tue, 2 Apr 2024 07:24:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042685; cv=none; b=AaOW2H2C12SeJdrZd+8iUnOKMcHwFkiFbfklpeYXCiBSJpA/vUw+z51cWAgQflHp27Vf7xiVsNlmfJoMs2RQ3oTps5rd+AcAit54rkyI148In7Sq/qCuw52Yhg03pXORb/KlM+PlpP9YSkp5OrhqGbeY9RYyq7rQXGLwbeQ+cug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042685; c=relaxed/simple; bh=IcGme5b/Wm6kkcRHoKM4Oy+iy4MTvrj9QRdKQlg4kWU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C+FbAmI3+CEVGa54FbubWuwmiJFJ+1PtM/ghfBYE3bfwk5zYWeVvyLORopqs5PBR0sNMwQuLbIykjCFXAE8KvGgsa/D6vY4dK1jSJbE/LdrgvI2/9LQj3gvajAAkGiT8lZGNfFN9lBtFP6BW/dgEDxGLc+afRuOwoL+XY78Al3Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sBtZMOEd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sBtZMOEd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4FEC6C433F1; Tue, 2 Apr 2024 07:24:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042685; bh=IcGme5b/Wm6kkcRHoKM4Oy+iy4MTvrj9QRdKQlg4kWU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sBtZMOEdmQGDcinMjeD7aJA/Di8VDf+24WvF1TWfhkQ2c/gaz3PIqqueOSGEK2ZZ1 90K3JljFTC/h8HFT7aQ7HQAPdcGieH1ZJvKTlvz4hT0Bop2pepNAaqTQksKxiUwc+9 SDuNxL1lPs1rsTsQ7rBVedXtIGnxf6YFG1PQl75IK1LIIp2DN6ECvdysS7qChEUaTa GnbDA7+85clBi32m0GUQzVzkcIgUOabtBbJsLOuCiqcSGsP9Q1WtPWF8wLw9LwJESq 2Ln9Tcte0GdZYUo1GWYzvaGsZsM3UBkNW//oF5H99YLbYR/Nm626NFDd8PIHojp33G uDUBC9tSDJQ4A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 8/8] Squash to "selftests/bpf: Add bpf scheduler test" 5 endpoint_init Date: Tue, 2 Apr 2024 15:24:28 +0800 Message-Id: <8e2c3503798e2781ed7224408ef72a675c4e5068.1712042529.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Use endpoint_init and _ss_search. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 8309ee97ac8c..4ed5e59cc64a 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -395,28 +395,22 @@ static struct nstoken *sched_init(char *flags, char *= sched) =20 nstoken =3D create_netns(); if (!ASSERT_OK_PTR(nstoken, "create_netns")) + return NULL; + + if (!ASSERT_OK(endpoint_init("subflow"), "endpoint_init")) goto fail; =20 - SYS(fail, "ip -net %s link add veth1 type veth peer name veth2", NS_TEST); - SYS(fail, "ip -net %s addr add %s/24 dev veth1", NS_TEST, ADDR_1); - SYS(fail, "ip -net %s link set dev veth1 up", NS_TEST); - SYS(fail, "ip -net %s addr add %s/24 dev veth2", NS_TEST, ADDR_2); - SYS(fail, "ip -net %s link set dev veth2 up", NS_TEST); - SYS(fail, "ip -net %s mptcp endpoint add %s %s", NS_TEST, ADDR_2, flags); SYS(fail, "ip netns exec %s sysctl -qw net.mptcp.scheduler=3D%s", NS_TEST= , sched); =20 return nstoken; fail: + cleanup_netns(nstoken); return NULL; } =20 -static int has_bytes_sent(char *addr) +static int has_bytes_sent(char *dst) { - char cmd[128]; - - snprintf(cmd, sizeof(cmd), "ip netns exec %s ss -it src %s sport %d dst %= s | %s", - NS_TEST, ADDR_1, PORT_1, addr, "grep -q bytes_sent:"); - return system(cmd); + return _ss_search(ADDR_1, dst, "sport", "bytes_sent:"); } =20 static void send_data_and_verify(char *msg, int addr1, int addr2) --=20 2.40.1