From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
To: zyjzyj2000@gmail.com
Cc: vyasevich@gmail.com, nhorman@tuxdriver.com,
linux-sctp@vger.kernel.org, netdev@vger.kernel.org,
alexandre.dietsch@windriver.com,
stefan.costandache@windriver.com
Subject: Re: [PATCH 1/1] net: sctp: dynamically enable or disable pf state
Date: Wed, 16 Dec 2015 11:18:00 +0000 [thread overview]
Message-ID: <20151216111759.GA5975@mrl.redhat.com> (raw)
In-Reply-To: <1450245304-29848-2-git-send-email-zyjzyj2000@gmail.com>
On Wed, Dec 16, 2015 at 01:55:04PM +0800, zyjzyj2000@gmail.com wrote:
> From: Zhu Yanjun <zyjzyj2000@gmail.com>
>
> As we all know, the value of pf_retrans >= max_retrans_path can
> disable pf state. The variables of pf_retrans and max_retrans_path
> can be changed by the userspace application.
>
> Sometimes the user expects to disable pf state while the 2
> variables are changed to enable pf state. So it is necessary to
> introduce a new variable to disable pf state.
>
> According to the suggestions from Vlad Yasevich, extra1 and extra2
> are removed. The initialization of pf_enable is added.
>
> Acked-by: Vlad Yasevich <vyasevich@gmail.com>
> Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
> ---
> Documentation/networking/ip-sysctl.txt | 23 ++++++++++++++++++++++-
> include/net/netns/sctp.h | 7 +++++++
> net/sctp/protocol.c | 3 +++
> net/sctp/sm_sideeffect.c | 5 ++++-
> net/sctp/sysctl.c | 7 +++++++
> 5 files changed, 43 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
> index 2ea4c45..f43ead3 100644
> --- a/Documentation/networking/ip-sysctl.txt
> +++ b/Documentation/networking/ip-sysctl.txt
> @@ -1723,6 +1723,25 @@ addip_enable - BOOLEAN
>
> Default: 0
>
> +pf_enable - INTEGER
> + Enable or disable pf (pf is short for potentially failed) state. A value
> + of pf_retrans > path_max_retrans also disables pf state. That is, one of
> + both pf_enable and pf_retrans > path_max_retrans can disable pf state.
> + Since pf_retrans and path_max_retrans can be changed by userspace
> + application, sometimes user expects to disable pf state by the value of
> + pf_retrans > path_max_retrans, but occasionally the value of pf_retrans
> + or path_max_retrans is changed by the user application, this pf state is
> + enabled. As such, it is necessary to add this to dynamically enable
> + and disable pf state. See:
> + https://datatracker.ietf.org/doc/draft-ietf-tsvwg-sctp-failover for
> + details.
> +
> + 1: Enable pf.
> +
> + 0: Disable pf.
> +
> + Default: 1
> +
> addip_noauth_enable - BOOLEAN
> Dynamic Address Reconfiguration (ADD-IP) requires the use of
> authentication to protect the operations of adding or removing new
> @@ -1799,7 +1818,9 @@ pf_retrans - INTEGER
> having to reduce path_max_retrans to a very low value. See:
> http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
> for details. Note also that a value of pf_retrans > path_max_retrans
> - disables this feature
> + disables this feature. Since both pf_retrans and path_max_retrans can
> + be changed by userspace application, a variable pf_enable is used to
> + disable pf state.
>
> Default: 0
>
> diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h
> index 8ba379f..c501d67 100644
> --- a/include/net/netns/sctp.h
> +++ b/include/net/netns/sctp.h
> @@ -89,6 +89,13 @@ struct netns_sctp {
> int pf_retrans;
>
> /*
> + * Disable Potentially-Failed feature, the feature is enabled by default
> + * pf_enable - 0 : disable pf
> + * - >0 : enable pf
> + */
> + int pf_enable;
> +
> + /*
> * Policy for preforming sctp/socket accounting
> * 0 - do socket level accounting, all assocs share sk_sndbuf
> * 1 - do sctp accounting, each asoc may use sk_sndbuf bytes
> diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
> index 3d9ea9a..cfbf49b 100644
> --- a/net/sctp/protocol.c
> +++ b/net/sctp/protocol.c
> @@ -1223,6 +1223,9 @@ static int __net_init sctp_defaults_init(struct net *net)
> /* Max.Burst - 4 */
> net->sctp.max_burst = SCTP_DEFAULT_MAX_BURST;
>
> + /* Enable pf state by default */
> + net->sctp.pf_enable = 1;
> +
> /* Association.Max.Retrans - 10 attempts
> * Path.Max.Retrans - 5 attempts (per destination address)
> * Max.Init.Retransmits - 8 attempts
> diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
> index 6098d4c..05cd164 100644
> --- a/net/sctp/sm_sideeffect.c
> +++ b/net/sctp/sm_sideeffect.c
> @@ -477,6 +477,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
> struct sctp_transport *transport,
> int is_hb)
> {
> + struct net *net = sock_net(asoc->base.sk);
> +
> /* The check for association's overall error counter exceeding the
> * threshold is done in the state function.
> */
> @@ -503,7 +505,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
> * is SCTP_ACTIVE, then mark this transport as Partially Failed,
> * see SCTP Quick Failover Draft, section 5.1
> */
> - if ((transport->state = SCTP_ACTIVE) &&
> + if (net->sctp.pf_enable &&
> + (transport->state = SCTP_ACTIVE) &&
> (asoc->pf_retrans < transport->pathmaxrxt) &&
> (transport->error_count > asoc->pf_retrans)) {
>
> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index 26d50c5..ccbfc93 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -308,6 +308,13 @@ static struct ctl_table sctp_net_table[] = {
> .extra1 = &max_autoclose_min,
> .extra2 = &max_autoclose_max,
> },
> + {
> + .procname = "pf_enable",
> + .data = &init_net.sctp.pf_enable,
> + .maxlen = sizeof(int),
> + .mode = 0644,
> + .proc_handler = proc_dointvec,
> + },
>
> { /* sentinel */ }
> };
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
WARNING: multiple messages have this Message-ID (diff)
From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
To: zyjzyj2000@gmail.com
Cc: vyasevich@gmail.com, nhorman@tuxdriver.com,
linux-sctp@vger.kernel.org, netdev@vger.kernel.org,
alexandre.dietsch@windriver.com,
stefan.costandache@windriver.com
Subject: Re: [PATCH 1/1] net: sctp: dynamically enable or disable pf state
Date: Wed, 16 Dec 2015 09:18:00 -0200 [thread overview]
Message-ID: <20151216111759.GA5975@mrl.redhat.com> (raw)
In-Reply-To: <1450245304-29848-2-git-send-email-zyjzyj2000@gmail.com>
On Wed, Dec 16, 2015 at 01:55:04PM +0800, zyjzyj2000@gmail.com wrote:
> From: Zhu Yanjun <zyjzyj2000@gmail.com>
>
> As we all know, the value of pf_retrans >= max_retrans_path can
> disable pf state. The variables of pf_retrans and max_retrans_path
> can be changed by the userspace application.
>
> Sometimes the user expects to disable pf state while the 2
> variables are changed to enable pf state. So it is necessary to
> introduce a new variable to disable pf state.
>
> According to the suggestions from Vlad Yasevich, extra1 and extra2
> are removed. The initialization of pf_enable is added.
>
> Acked-by: Vlad Yasevich <vyasevich@gmail.com>
> Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
> ---
> Documentation/networking/ip-sysctl.txt | 23 ++++++++++++++++++++++-
> include/net/netns/sctp.h | 7 +++++++
> net/sctp/protocol.c | 3 +++
> net/sctp/sm_sideeffect.c | 5 ++++-
> net/sctp/sysctl.c | 7 +++++++
> 5 files changed, 43 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
> index 2ea4c45..f43ead3 100644
> --- a/Documentation/networking/ip-sysctl.txt
> +++ b/Documentation/networking/ip-sysctl.txt
> @@ -1723,6 +1723,25 @@ addip_enable - BOOLEAN
>
> Default: 0
>
> +pf_enable - INTEGER
> + Enable or disable pf (pf is short for potentially failed) state. A value
> + of pf_retrans > path_max_retrans also disables pf state. That is, one of
> + both pf_enable and pf_retrans > path_max_retrans can disable pf state.
> + Since pf_retrans and path_max_retrans can be changed by userspace
> + application, sometimes user expects to disable pf state by the value of
> + pf_retrans > path_max_retrans, but occasionally the value of pf_retrans
> + or path_max_retrans is changed by the user application, this pf state is
> + enabled. As such, it is necessary to add this to dynamically enable
> + and disable pf state. See:
> + https://datatracker.ietf.org/doc/draft-ietf-tsvwg-sctp-failover for
> + details.
> +
> + 1: Enable pf.
> +
> + 0: Disable pf.
> +
> + Default: 1
> +
> addip_noauth_enable - BOOLEAN
> Dynamic Address Reconfiguration (ADD-IP) requires the use of
> authentication to protect the operations of adding or removing new
> @@ -1799,7 +1818,9 @@ pf_retrans - INTEGER
> having to reduce path_max_retrans to a very low value. See:
> http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
> for details. Note also that a value of pf_retrans > path_max_retrans
> - disables this feature
> + disables this feature. Since both pf_retrans and path_max_retrans can
> + be changed by userspace application, a variable pf_enable is used to
> + disable pf state.
>
> Default: 0
>
> diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h
> index 8ba379f..c501d67 100644
> --- a/include/net/netns/sctp.h
> +++ b/include/net/netns/sctp.h
> @@ -89,6 +89,13 @@ struct netns_sctp {
> int pf_retrans;
>
> /*
> + * Disable Potentially-Failed feature, the feature is enabled by default
> + * pf_enable - 0 : disable pf
> + * - >0 : enable pf
> + */
> + int pf_enable;
> +
> + /*
> * Policy for preforming sctp/socket accounting
> * 0 - do socket level accounting, all assocs share sk_sndbuf
> * 1 - do sctp accounting, each asoc may use sk_sndbuf bytes
> diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
> index 3d9ea9a..cfbf49b 100644
> --- a/net/sctp/protocol.c
> +++ b/net/sctp/protocol.c
> @@ -1223,6 +1223,9 @@ static int __net_init sctp_defaults_init(struct net *net)
> /* Max.Burst - 4 */
> net->sctp.max_burst = SCTP_DEFAULT_MAX_BURST;
>
> + /* Enable pf state by default */
> + net->sctp.pf_enable = 1;
> +
> /* Association.Max.Retrans - 10 attempts
> * Path.Max.Retrans - 5 attempts (per destination address)
> * Max.Init.Retransmits - 8 attempts
> diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
> index 6098d4c..05cd164 100644
> --- a/net/sctp/sm_sideeffect.c
> +++ b/net/sctp/sm_sideeffect.c
> @@ -477,6 +477,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
> struct sctp_transport *transport,
> int is_hb)
> {
> + struct net *net = sock_net(asoc->base.sk);
> +
> /* The check for association's overall error counter exceeding the
> * threshold is done in the state function.
> */
> @@ -503,7 +505,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
> * is SCTP_ACTIVE, then mark this transport as Partially Failed,
> * see SCTP Quick Failover Draft, section 5.1
> */
> - if ((transport->state == SCTP_ACTIVE) &&
> + if (net->sctp.pf_enable &&
> + (transport->state == SCTP_ACTIVE) &&
> (asoc->pf_retrans < transport->pathmaxrxt) &&
> (transport->error_count > asoc->pf_retrans)) {
>
> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index 26d50c5..ccbfc93 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -308,6 +308,13 @@ static struct ctl_table sctp_net_table[] = {
> .extra1 = &max_autoclose_min,
> .extra2 = &max_autoclose_max,
> },
> + {
> + .procname = "pf_enable",
> + .data = &init_net.sctp.pf_enable,
> + .maxlen = sizeof(int),
> + .mode = 0644,
> + .proc_handler = proc_dointvec,
> + },
>
> { /* sentinel */ }
> };
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2015-12-16 11:18 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-14 6:22 [V2 PATCH 1/1] net: sctp: dynamically enable or disable pf state zyjzyj2000
2015-12-14 6:22 ` zyjzyj2000
2015-12-14 14:23 ` Vlad Yasevich
2015-12-14 14:23 ` Vlad Yasevich
2015-12-16 5:39 ` [V3 " zyjzyj2000
2015-12-16 5:39 ` zyjzyj2000
2015-12-16 5:39 ` [PATCH " zyjzyj2000
2015-12-16 5:39 ` zyjzyj2000
2015-12-16 5:55 ` [V4 PATCH " zyjzyj2000
2015-12-16 5:55 ` zyjzyj2000
2015-12-16 5:55 ` [PATCH " zyjzyj2000
2015-12-16 5:55 ` zyjzyj2000
2015-12-16 11:18 ` Marcelo Ricardo Leitner [this message]
2015-12-16 11:18 ` Marcelo Ricardo Leitner
2015-12-16 15:57 ` David Miller
2015-12-16 15:57 ` David Miller
2015-12-14 15:38 ` [V2 PATCH " Marcelo Ricardo Leitner
2015-12-14 15:38 ` Marcelo Ricardo Leitner
-- strict thread matches above, loose matches on Subject: below --
2015-12-11 9:05 [PATCH " zyjzyj2000
2015-12-11 9:05 ` zyjzyj2000
2015-12-11 18:28 ` Vlad Yasevich
2015-12-11 18:28 ` Vlad Yasevich
2015-12-14 9:53 ` David Laight
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151216111759.GA5975@mrl.redhat.com \
--to=marcelo.leitner@gmail.com \
--cc=alexandre.dietsch@windriver.com \
--cc=linux-sctp@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=stefan.costandache@windriver.com \
--cc=vyasevich@gmail.com \
--cc=zyjzyj2000@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.