From patchwork Tue Sep 22 08:12:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1368822 X-Patchwork-Delegate: pabeni@redhat.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.01.org (client-ip=2001:19d0:306:5::1; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=DFN8C9zp; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [IPv6:2001:19d0:306:5::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BwZ1351VKz9sS8 for ; Tue, 22 Sep 2020 18:17:27 +1000 (AEST) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id C7F14142638B8; Tue, 22 Sep 2020 01:17:25 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::544; helo=mail-pg1-x544.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 544BB13F83505 for ; Tue, 22 Sep 2020 01:17:23 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id l71so11337606pge.4 for ; Tue, 22 Sep 2020 01:17:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=jh8OxijdQXmDPa8Ji1M6wWV1ETDgWX+jF00TxYxCUZg=; b=DFN8C9zpnTnXs+iaMX2+XCWX3p6fh7CNpXZtxWqrKFNvarJ20HmaCuL/iClQXjSvuv j9wonXZTo3mUKqOPGr0vwurr1MMAMkinPSsyzh+bMDnF45uLsCcF1Mk0yXg1WsNkfHt4 DnfsFGko1nJEXe29wf/W9cg/NMGPWu7JV23h3BFiZmqOlady8v8FjDCJ6Sapj3Oz5fzd qGLiYRXnVEy1aAI8fjDJg+UYJG5K7X9mgltjA5Bc7Kf5+b9pzIvxgX4C0CYn2WjNt38S tEsFEoqlZrwgj22HMKqUGHj6CtlIbdv8JUjPuxREFP3x3Fon70htN9hWrQXPbMAgFAPZ 3pKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=jh8OxijdQXmDPa8Ji1M6wWV1ETDgWX+jF00TxYxCUZg=; b=afHbWQrg8weZ5SwormHIpDM816aojk3yy1aBheDjzCnefv9dkE+JN5ozapapla26Ek Z2zuejBGRash6yVQPTQt1VISU2r1GESoHh8hLdahy/LnribSpx7QxFXMLMyHPS3Q1194 ZTjOjhJWOrRJROM/UeAMVN2UUsPEWtIpOr0og2NT16xpAIx1LHO0wmI82SYYLY6vaD0D mL3z60wcUTFtcs113O+qCjZoTFl6MuvsTNxMhuLOWPcodnSHun2iuLqx8ZybhhqkjWJA SyhUS2XW3GfGEpQAPGyu86MmUSsxN+9X/hMXyoe2Pldj9E7JGobYMmgJ+q4Tg0+KszVg +4NA== X-Gm-Message-State: AOAM533NjJEOLm5CwkI2BEsFHoTvaXEmPai9AfyQW3MtXQEYUBqrJYLF PSx/JoESsYsnBwyBtluw1PNJlAUqfzs3uQ== X-Google-Smtp-Source: ABdhPJxkZXLrBpZt8xFhZrinQ2j6gQTSdgCTNvgcSrBPyD2/emrnNBkKDZ4IDm5x/L/+yjM0Sx354g== X-Received: by 2002:a17:902:7d8e:b029:d1:f2df:ad4 with SMTP id a14-20020a1709027d8eb02900d1f2df0ad4mr3713393plm.44.1600762642557; Tue, 22 Sep 2020 01:17:22 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id d25sm13881005pgl.23.2020.09.22.01.17.21 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Sep 2020 01:17:21 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Tue, 22 Sep 2020 16:12:51 +0800 Message-Id: <8d5a4bc3ef6b50f38e829f2cd5db881a30d41d5d.1600762109.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Message-ID-Hash: YZ4ENXAG5Y7ELTA6KE73WHBVMWEVUQJA X-Message-ID-Hash: YZ4ENXAG5Y7ELTA6KE73WHBVMWEVUQJA X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [MPTCP][PATCH mptcp-next 1/3] mptcp: add add_addr_echo sysctl List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This patch added a new sysctl, named add_addr_echo, to control the ADD_ADDR echo ability. Signed-off-by: Geliang Tang --- net/mptcp/ctrl.c | 14 ++++++++++++++ net/mptcp/pm.c | 9 ++++++--- net/mptcp/pm_netlink.c | 4 +++- net/mptcp/protocol.h | 1 + 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 54b888f94009..2a250f2047a7 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -18,6 +18,7 @@ struct mptcp_pernet { struct ctl_table_header *ctl_table_hdr; int mptcp_enabled; + int add_addr_echo; }; static struct mptcp_pernet *mptcp_get_pernet(struct net *net) @@ -30,6 +31,11 @@ int mptcp_is_enabled(struct net *net) return mptcp_get_pernet(net)->mptcp_enabled; } +int mptcp_add_addr_echo_is_enabled(struct net *net) +{ + return mptcp_get_pernet(net)->add_addr_echo; +} + static struct ctl_table mptcp_sysctl_table[] = { { .procname = "enabled", @@ -40,12 +46,19 @@ static struct ctl_table mptcp_sysctl_table[] = { */ .proc_handler = proc_dointvec, }, + { + .procname = "add_addr_echo", + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, {} }; static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled = 1; + pernet->add_addr_echo = 1; } static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) @@ -61,6 +74,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) } table[0].data = &pernet->mptcp_enabled; + table[1].data = &pernet->add_addr_echo; hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 7e81f53d1e5d..01663ec0c7e2 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -143,6 +143,7 @@ void mptcp_pm_subflow_closed(struct mptcp_sock *msk, u8 id) void mptcp_pm_add_addr_received(struct mptcp_sock *msk, const struct mptcp_addr_info *addr) { + struct net *net = sock_net((struct sock *)msk); struct mptcp_pm_data *pm = &msk->pm; pr_debug("msk=%p remote_id=%d accept=%d", msk, addr->id, @@ -150,10 +151,12 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, spin_lock_bh(&pm->lock); - if (!READ_ONCE(pm->accept_addr)) - mptcp_pm_announce_addr(msk, addr, true); - else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) + if (!READ_ONCE(pm->accept_addr)) { + if (mptcp_add_addr_echo_is_enabled(net)) + mptcp_pm_announce_addr(msk, addr, true); + } else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) { pm->remote = *addr; + } spin_unlock_bh(&pm->lock); } diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 5a0e4d11bcc3..d45f2320355a 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -369,6 +369,7 @@ void mptcp_pm_nl_subflow_established(struct mptcp_sock *msk) void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) { struct sock *sk = (struct sock *)msk; + struct net *net = sock_net(sk); struct mptcp_addr_info remote; struct mptcp_addr_info local; @@ -394,7 +395,8 @@ void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) __mptcp_subflow_connect((struct sock *)msk, &local, &remote); spin_lock_bh(&msk->pm.lock); - mptcp_pm_announce_addr(msk, &remote, true); + if (mptcp_add_addr_echo_is_enabled(net)) + mptcp_pm_announce_addr(msk, &remote, true); } void mptcp_pm_nl_rm_addr_received(struct mptcp_sock *msk) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 7cfe52aeb2b8..e0b00cc8bfaf 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -361,6 +361,7 @@ mptcp_subflow_get_mapped_dsn(const struct mptcp_subflow_context *subflow) } int mptcp_is_enabled(struct net *net); +int mptcp_add_addr_echo_is_enabled(struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool mptcp_subflow_data_available(struct sock *sk); From patchwork Tue Sep 22 08:12:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1368823 X-Patchwork-Delegate: pabeni@redhat.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.01.org (client-ip=2001:19d0:306:5::1; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=RIC7xkVX; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [IPv6:2001:19d0:306:5::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BwZ3f04MGz9sS8 for ; Tue, 22 Sep 2020 18:19:41 +1000 (AEST) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 1639B143A3609; Tue, 22 Sep 2020 01:19:40 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::442; helo=mail-pf1-x442.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9DEB213F83505 for ; Tue, 22 Sep 2020 01:19:38 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id k13so11227092pfg.1 for ; Tue, 22 Sep 2020 01:19:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=Bfz8xEl6r7rGfgObnZ6BiyKU60DxIdz+faZZHBwVfZE=; b=RIC7xkVXPksKgT0W/sx74qV8fAcdm3vBIwae7ITyGOzu4ZtVtcEyJH4tQLi6EQ34tH ltiiRn4Ho4y5qAJN92Mn5svsb1qwlxVRpII0ujNId8Zjl+2ee4Nsqn6Xje2SNbkXTW09 yeLuq4CYNn1lPivGfi3i5fEX+GUccmIdpInO9LuVyNrUfbhj+PPwgydSmocs/7KH9nl1 DiJCGK1cC4oSMoEh/6a6F9k8iuP5bmF9mTONKkrDNC4H+n6jsbkqsn+dTTMqjJgahcJ4 dm3finhEESbLb/WYG30V6gpXl52wxX6VfhMi8sVPRpkGqRtIfly7V9Rpd7J0sD88MpBR 1/Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=Bfz8xEl6r7rGfgObnZ6BiyKU60DxIdz+faZZHBwVfZE=; b=GpVgINAA76MzlE6S6lHkICJZ5hfkAI4I4Kp5avAI+akH8OunNPY6tRC6baHt3Ewzxk YnqDttkZiXKMcXHc8K3xwhfof5xs0viykI05FTqQ/+4E0/+kkx3rQobcGwMssO9dcHUb Q7zNuDhIgdDfjrSYZkxFL5nYW9nhKBcn7HCtuuoL9f/cc7cOSTYZAJFe/ZV7K7+d1jfq Hy+hCXp7XS9QwcnHeId9swixanO7ykOFU0CQO5cZneLJThLSG3hurSsOW3EkR0+LFrJi x3WThJSFpGjyh80+oe5wVHxyA1pHNAJkzPvgrx3aZ1Rpl92PvLAJhYLUEyB61yI0Aht+ eYYg== X-Gm-Message-State: AOAM5338m/Rfn2x6tKFv2wk2h2qMlXyMrHDD/fVnByzevyC9sz1r8zoa FPokBDdmFUogbf/oT7Wt0uT9l2dTAJHFww== X-Google-Smtp-Source: ABdhPJx22H+9x7AiCtD1yQeZ+0kYjMs8RRXr3KSuMGz7HdqSYnE/TQGBlBz/wpOtp+ixxlMCZG5rVA== X-Received: by 2002:a17:902:9e95:b029:d2:4276:1ddc with SMTP id e21-20020a1709029e95b02900d242761ddcmr1366346plq.81.1600762777683; Tue, 22 Sep 2020 01:19:37 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id kf10sm1550770pjb.2.2020.09.22.01.19.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Sep 2020 01:19:36 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Tue, 22 Sep 2020 16:12:52 +0800 Message-Id: <42aa4bc355cb51f90e1cd6748baf08ddab4627c8.1600762109.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <8d5a4bc3ef6b50f38e829f2cd5db881a30d41d5d.1600762109.git.geliangtang@gmail.com> References: <8d5a4bc3ef6b50f38e829f2cd5db881a30d41d5d.1600762109.git.geliangtang@gmail.com> Message-ID-Hash: RUNFIX5G4LF6Y7TW67ZXDHVBI3HOX7ZX X-Message-ID-Hash: RUNFIX5G4LF6Y7TW67ZXDHVBI3HOX7ZX X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [MPTCP][PATCH mptcp-next 2/3] mptcp: add add_addr_timeout sysctl List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This patch added a new sysctl, named add_addr_timeout, to control the timeout value (in seconds) of the ADD_ADDR retransmission. Signed-off-by: Geliang Tang --- net/mptcp/ctrl.c | 14 ++++++++++++++ net/mptcp/pm_netlink.c | 8 ++++++-- net/mptcp/protocol.h | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 2a250f2047a7..4131f496cd84 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -19,6 +19,7 @@ struct mptcp_pernet { int mptcp_enabled; int add_addr_echo; + u32 add_addr_timeout; }; static struct mptcp_pernet *mptcp_get_pernet(struct net *net) @@ -36,6 +37,11 @@ int mptcp_add_addr_echo_is_enabled(struct net *net) return mptcp_get_pernet(net)->add_addr_echo; } +unsigned long mptcp_get_add_addr_timeout(struct net *net) +{ + return jiffies + mptcp_get_pernet(net)->add_addr_timeout * HZ; +} + static struct ctl_table mptcp_sysctl_table[] = { { .procname = "enabled", @@ -52,6 +58,12 @@ static struct ctl_table mptcp_sysctl_table[] = { .mode = 0644, .proc_handler = proc_dointvec, }, + { + .procname = "add_addr_timeout", + .maxlen = sizeof(u32), + .mode = 0644, + .proc_handler = proc_douintvec, + }, {} }; @@ -59,6 +71,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled = 1; pernet->add_addr_echo = 1; + pernet->add_addr_timeout = TCP_RTO_MAX / HZ; } static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) @@ -75,6 +88,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) table[0].data = &pernet->mptcp_enabled; table[1].data = &pernet->add_addr_echo; + table[2].data = &pernet->add_addr_timeout; hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index d45f2320355a..1d6d2840be7a 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -206,6 +206,8 @@ static void mptcp_pm_add_timer(struct timer_list *timer) struct mptcp_pm_add_entry *entry = from_timer(entry, timer, add_timer); struct mptcp_sock *msk = entry->sock; struct sock *sk = (struct sock *)msk; + struct net *net = sock_net(sk); + unsigned long timeout = mptcp_get_add_addr_timeout(net); pr_debug("msk=%p", msk); @@ -232,7 +234,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) } if (entry->retrans_times < ADD_ADDR_RETRANS_MAX) - sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX); + sk_reset_timer(sk, timer, timeout); spin_unlock_bh(&msk->pm.lock); @@ -264,6 +266,8 @@ static bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, { struct mptcp_pm_add_entry *add_entry = NULL; struct sock *sk = (struct sock *)msk; + struct net *net = sock_net(sk); + unsigned long timeout = mptcp_get_add_addr_timeout(net); if (lookup_anno_list_by_saddr(msk, &entry->addr)) return false; @@ -279,7 +283,7 @@ static bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, add_entry->retrans_times = 0; timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0); - sk_reset_timer(sk, &add_entry->add_timer, jiffies + TCP_RTO_MAX); + sk_reset_timer(sk, &add_entry->add_timer, timeout); return true; } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index e0b00cc8bfaf..d922884a1f96 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -362,6 +362,7 @@ mptcp_subflow_get_mapped_dsn(const struct mptcp_subflow_context *subflow) int mptcp_is_enabled(struct net *net); int mptcp_add_addr_echo_is_enabled(struct net *net); +unsigned long mptcp_get_add_addr_timeout(struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool mptcp_subflow_data_available(struct sock *sk); From patchwork Tue Sep 22 08:12:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1368824 X-Patchwork-Delegate: pabeni@redhat.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.01.org (client-ip=198.145.21.10; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=gWkLGBQI; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BwZ6G1KFcz9sSC for ; Tue, 22 Sep 2020 18:21:58 +1000 (AEST) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 53E56143B3007; Tue, 22 Sep 2020 01:21:55 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::1033; helo=mail-pj1-x1033.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E3A4513F83505 for ; Tue, 22 Sep 2020 01:21:53 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id jw11so1093888pjb.0 for ; Tue, 22 Sep 2020 01:21:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=01NLNHpDe+injRxt9aoMUMe5OZyiL+Gq8d90v5zwS70=; b=gWkLGBQIoeHWy20w8PMY7O/DyyNPqZmDLyiBmcXOlKHYfrS1wO1NAQKvilsHnfXLhr 23p1Z9SLub/Ek0O9pOEzV1BW9gCHH9IXH+/I+8L/q4NG0e5yPSrDiNelHzVl7P+b9TXy O9Kc/flqKTBGtrVVSZtEDv2Gu0X7MsDE7tloiEg4f2Vk+GZ94Agpcn5jJwZw+6fp9Baj zbKAjqrXpDumk3kMkY5MzcGmhAWD8B1s+qqUML4bO/ifMdDUXtSACW//YC3ymZlIi+tV ra29gSWcWRgGrD9UTcp9X0E3akF8VuIJsk4oLLWx24vCekqOm9z+QTjwfHfhZZVM0YcQ KobA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=01NLNHpDe+injRxt9aoMUMe5OZyiL+Gq8d90v5zwS70=; b=o2LGI+hv8I4yI9WBlK6/ks63eghBI8PGEPf22+LsBh9Mnz4D5O8BlEjyNfYik44haQ GsniE6hdYCUwE7jyqiClkUMoubPAxS5Dsxzmn4N3MZd8NF3TIs+GbfJJTf3yFmjMIrFY oPp0nTCwqhU/fxn8LTzlgGi50U4ujAHncjCgX9PiU8Tjv0VjG/Eof44KK1JLzq5rryUI vd/Rcswi7bmAcf2/PxvN7rCWz5cgA9kBqkmVJEZggr+bqImIHENYLQJy4CNpmiKTX/KD zJrCZqjjmHPvTYYPhdHis9RZ/sWjSIUZMZt6abnSQQ6C2t08Om1vUAAwp0Vx2xjDyOCa I7oA== X-Gm-Message-State: AOAM533ya3ZdoSbDdrc1uCfkL2SOn3SjIHwoo2Bbs1MYpbEfl0PeOnvg 3EVOEq4E6e/PyAK0VzDOf6704Zv3Vr0FYA== X-Google-Smtp-Source: ABdhPJzWBlpKNSd4QGXqgPmkrPmplfYct9j251BeuM9awRBj9sAajUdtLkgGPC9chweJv2vL6E9XaA== X-Received: by 2002:a17:90a:6a4e:: with SMTP id d14mr2640647pjm.63.1600762912818; Tue, 22 Sep 2020 01:21:52 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id e19sm1081554pgt.43.2020.09.22.01.21.51 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Sep 2020 01:21:52 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Tue, 22 Sep 2020 16:12:53 +0800 Message-Id: <4ea3b478ddb556e9eb3aff0cbeb786325833e768.1600762109.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: <42aa4bc355cb51f90e1cd6748baf08ddab4627c8.1600762109.git.geliangtang@gmail.com> References: <8d5a4bc3ef6b50f38e829f2cd5db881a30d41d5d.1600762109.git.geliangtang@gmail.com> <42aa4bc355cb51f90e1cd6748baf08ddab4627c8.1600762109.git.geliangtang@gmail.com> Message-ID-Hash: EFP3V4TH3HXBMK3HUQOO3ZXI3GLZI4SG X-Message-ID-Hash: EFP3V4TH3HXBMK3HUQOO3ZXI3GLZI4SG X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [MPTCP][PATCH mptcp-next 3/3] selftests: mptcp: add ADD_ADDR timeout test case List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This patch added the test case for retransmitting ADD_ADDR when timeout. It set NS1's add_addr_timeout to 1 second, and disable NS2's add_addr_echo. And we need to slow down the transfer process of all data to let the ADD_ADDR suboptions can be retransmitted three times. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_join.sh | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh index 08f53d86dedc..fa0011f2422e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -82,6 +82,14 @@ reset_with_cookies() done } +reset_with_timeout() +{ + reset + + ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1 + ip netns exec $ns2 sysctl -q net.mptcp.add_addr_echo=0 +} + for arg in "$@"; do if [ "$arg" = "-c" ]; then capture=1 @@ -135,6 +143,7 @@ do_transfer() connect_addr="$5" rm_nr_ns1="$6" rm_nr_ns2="$7" + slow="$8" port=$((10000+$TEST_COUNT)) TEST_COUNT=$((TEST_COUNT+1)) @@ -159,7 +168,7 @@ do_transfer() sleep 1 fi - if [[ $rm_nr_ns1 -eq 0 && $rm_nr_ns2 -eq 0 ]]; then + if [ $slow -eq 0 ]; then mptcp_connect="./mptcp_connect -j" else mptcp_connect="./mptcp_connect -r" @@ -252,7 +261,7 @@ run_tests() connect_addr="$3" lret=0 - do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} 0 0 + do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} 0 0 0 lret=$? if [ $lret -ne 0 ]; then ret=$lret @@ -269,7 +278,22 @@ run_remove_tests() rm_nr_ns2="$5" lret=0 - do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} ${rm_nr_ns1} ${rm_nr_ns2} + do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} ${rm_nr_ns1} ${rm_nr_ns2} 1 + lret=$? + if [ $lret -ne 0 ]; then + ret=$lret + return + fi +} + +run_timeout_tests() +{ + listener_ns="$1" + connector_ns="$2" + connect_addr="$3" + lret=0 + + do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} 0 0 1 lret=$? if [ $lret -ne 0 ]; then ret=$lret @@ -491,6 +515,15 @@ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr "multiple subflows and signal" 3 3 3 chk_add_nr 1 1 +# add_addr timeout +reset_with_timeout +ip netns exec $ns1 ./pm_nl_ctl limits 0 1 +ip netns exec $ns2 ./pm_nl_ctl limits 1 1 +ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal +run_timeout_tests $ns1 $ns2 10.0.1.1 +chk_join_nr "signal address, timeout" 1 1 1 +chk_add_nr 4 0 + # single subflow, remove reset ip netns exec $ns1 ./pm_nl_ctl limits 0 1