From patchwork Tue Aug 17 22:07:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mat Martineau X-Patchwork-Id: 498589 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7FBC8C4338F for ; Tue, 17 Aug 2021 22:07:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5CDAE60EB5 for ; Tue, 17 Aug 2021 22:07:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235625AbhHQWIL (ORCPT ); Tue, 17 Aug 2021 18:08:11 -0400 Received: from mga05.intel.com ([192.55.52.43]:12963 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234860AbhHQWII (ORCPT ); Tue, 17 Aug 2021 18:08:08 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10079"; a="301788851" X-IronPort-AV: E=Sophos;i="5.84,330,1620716400"; d="scan'208";a="301788851" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Aug 2021 15:07:32 -0700 X-IronPort-AV: E=Sophos;i="5.84,330,1620716400"; d="scan'208";a="573058341" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.9.45]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Aug 2021 15:07:32 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, geliangtang@xiaomi.com Subject: [PATCH net-next 0/6] mptcp: Add full mesh path manager option Date: Tue, 17 Aug 2021 15:07:21 -0700 Message-Id: <20210817220727.192198-1-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The path manager in MPTCP controls the creation of additional subflows after the initial connection is created. As each peer advertises available endpoints with the ADD_ADDR MPTCP option, the recipient of those advertisements must decide which subflows to create from the known local and remote interfaces that are available for use by MPTCP. The existing in-kernel path manager will create one additional subflow when an ADD_ADDR is received, or a local address is newly configured for MPTCP use. The maximum number of subflows has a configurable limit. This patch set adds a MPTCP_PM_ADDR_FLAG_FULLMESH flag to the MPTCP netlink API that enables subflows to be created more aggressively. When an ADD_ADDR is received from a peer, new subflows are created between that address/port and all local addresses configured for MPTCP. Similarly, when a new local address is newly configured for use by MPTCP, new subflows are created between that local address and all known remote addresses for that MPTCP connection. The configurable limit on the number of subflows still applies. If the new flag is not used the path manager behavior is unchanged. Patch 1 adds a helper function and refactors another function to prepare for the rest of the patch series. Patches 2 and 3 add two mesh connection capabilities: initiating subflows based on added local addresses, or reacting to incoming advertisements. Patches 4-6 add full mesh cases to the self tests. Geliang Tang (6): mptcp: drop flags and ifindex arguments mptcp: remote addresses fullmesh mptcp: local addresses fullmesh selftests: mptcp: set and print the fullmesh flag selftests: mptcp: add fullmesh testcases selftests: mptcp: delete uncontinuous removing ids include/uapi/linux/mptcp.h | 1 + net/mptcp/pm_netlink.c | 154 ++++++++++++++++-- net/mptcp/protocol.h | 5 +- net/mptcp/subflow.c | 7 +- .../testing/selftests/net/mptcp/mptcp_join.sh | 74 ++++++++- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 16 +- 6 files changed, 231 insertions(+), 26 deletions(-) base-commit: 752be2976405b7499890c0b6bac6d30d34d08bd6