diff mbox series

[v2,mptcp-next] mptcp: add MIB counter for invalid mapping

Message ID 9ec7261d647d0360851f3029ead0b46d38ccedd7.1622733220.git.pabeni@redhat.com (mailing list archive)
State Accepted, archived
Commit 57a908ed79bea0476cd84bb82ebcc2ae929e6186
Delegated to: Matthieu Baerts
Headers show
Series [v2,mptcp-next] mptcp: add MIB counter for invalid mapping | expand

Commit Message

Paolo Abeni June 3, 2021, 3:16 p.m. UTC
Account this exceptional events for better introspection.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
v1 -> v2:
 - update mptcp_snmp_list accordingly - Max
---
 net/mptcp/mib.c     | 1 +
 net/mptcp/mib.h     | 1 +
 net/mptcp/subflow.c | 4 +++-
 3 files changed, 5 insertions(+), 1 deletion(-)

Comments

Mat Martineau June 4, 2021, 12:08 a.m. UTC | #1
On Thu, 3 Jun 2021, Paolo Abeni wrote:

> Account this exceptional events for better introspection.
>
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> ---
> v1 -> v2:
> - update mptcp_snmp_list accordingly - Max
> ---
> net/mptcp/mib.c     | 1 +
> net/mptcp/mib.h     | 1 +
> net/mptcp/subflow.c | 4 +++-
> 3 files changed, 5 insertions(+), 1 deletion(-)
>

Useful counter, thanks for adding.

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>


> diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
> index e7e60bc1fb96..52ea2517e856 100644
> --- a/net/mptcp/mib.c
> +++ b/net/mptcp/mib.c
> @@ -25,6 +25,7 @@ static const struct snmp_mib mptcp_snmp_list[] = {
> 	SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC),
> 	SNMP_MIB_ITEM("DSSNotMatching", MPTCP_MIB_DSSNOMATCH),
> 	SNMP_MIB_ITEM("InfiniteMapRx", MPTCP_MIB_INFINITEMAPRX),
> +	SNMP_MIB_ITEM("DSSNoMatchTCP", MPTCP_MIB_DSSTCPMISMATCH),
> 	SNMP_MIB_ITEM("DataCsumErr", MPTCP_MIB_DATACSUMERR),
> 	SNMP_MIB_ITEM("OFOQueueTail", MPTCP_MIB_OFOQUEUETAIL),
> 	SNMP_MIB_ITEM("OFOQueue", MPTCP_MIB_OFOQUEUE),
> diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
> index 92e56c0cfbdd..193466c9b549 100644
> --- a/net/mptcp/mib.h
> +++ b/net/mptcp/mib.h
> @@ -18,6 +18,7 @@ enum linux_mptcp_mib_field {
> 	MPTCP_MIB_JOINACKMAC,		/* HMAC was wrong on ACK + MP_JOIN */
> 	MPTCP_MIB_DSSNOMATCH,		/* Received a new mapping that did not match the previous one */
> 	MPTCP_MIB_INFINITEMAPRX,	/* Received an infinite mapping */
> +	MPTCP_MIB_DSSTCPMISMATCH,	/* DSS-mapping did not map with TCP's sequence numbers */
> 	MPTCP_MIB_DATACSUMERR,		/* The data checksum fail */
> 	MPTCP_MIB_OFOQUEUETAIL,	/* Segments inserted into OoO queue tail */
> 	MPTCP_MIB_OFOQUEUE,		/* Segments inserted into OoO queue */
> diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
> index 259f99b61c35..ccc07cbab867 100644
> --- a/net/mptcp/subflow.c
> +++ b/net/mptcp/subflow.c
> @@ -1046,8 +1046,10 @@ static enum mapping_status get_mapping_status(struct sock *ssk,
> 	/* we revalidate valid mapping on new skb, because we must ensure
> 	 * the current skb is completely covered by the available mapping
> 	 */
> -	if (!validate_mapping(ssk, skb))
> +	if (!validate_mapping(ssk, skb)) {
> +		MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSTCPMISMATCH);
> 		return MAPPING_INVALID;
> +	}
>
> 	skb_ext_del(skb, SKB_EXT_MPTCP);
>
> -- 
> 2.26.3
>
>
>

--
Mat Martineau
Intel
Matthieu Baerts June 7, 2021, 3:16 p.m. UTC | #2
Hi Paolo, Mat,

On 03/06/2021 17:16, Paolo Abeni wrote:
> Account this exceptional events for better introspection.
> 
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>

Thank you for the patch and the review!

Now in our tree:

- 57a908ed79be: mptcp: add MIB counter for invalid mapping
- Results: a4f45379c78f..605dd61e1d4e

Builds and tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20210607T151624
https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export/20210607T151624

Cheers,
Matt
diff mbox series

Patch

diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index e7e60bc1fb96..52ea2517e856 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -25,6 +25,7 @@  static const struct snmp_mib mptcp_snmp_list[] = {
 	SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC),
 	SNMP_MIB_ITEM("DSSNotMatching", MPTCP_MIB_DSSNOMATCH),
 	SNMP_MIB_ITEM("InfiniteMapRx", MPTCP_MIB_INFINITEMAPRX),
+	SNMP_MIB_ITEM("DSSNoMatchTCP", MPTCP_MIB_DSSTCPMISMATCH),
 	SNMP_MIB_ITEM("DataCsumErr", MPTCP_MIB_DATACSUMERR),
 	SNMP_MIB_ITEM("OFOQueueTail", MPTCP_MIB_OFOQUEUETAIL),
 	SNMP_MIB_ITEM("OFOQueue", MPTCP_MIB_OFOQUEUE),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 92e56c0cfbdd..193466c9b549 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -18,6 +18,7 @@  enum linux_mptcp_mib_field {
 	MPTCP_MIB_JOINACKMAC,		/* HMAC was wrong on ACK + MP_JOIN */
 	MPTCP_MIB_DSSNOMATCH,		/* Received a new mapping that did not match the previous one */
 	MPTCP_MIB_INFINITEMAPRX,	/* Received an infinite mapping */
+	MPTCP_MIB_DSSTCPMISMATCH,	/* DSS-mapping did not map with TCP's sequence numbers */
 	MPTCP_MIB_DATACSUMERR,		/* The data checksum fail */
 	MPTCP_MIB_OFOQUEUETAIL,	/* Segments inserted into OoO queue tail */
 	MPTCP_MIB_OFOQUEUE,		/* Segments inserted into OoO queue */
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 259f99b61c35..ccc07cbab867 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -1046,8 +1046,10 @@  static enum mapping_status get_mapping_status(struct sock *ssk,
 	/* we revalidate valid mapping on new skb, because we must ensure
 	 * the current skb is completely covered by the available mapping
 	 */
-	if (!validate_mapping(ssk, skb))
+	if (!validate_mapping(ssk, skb)) {
+		MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSTCPMISMATCH);
 		return MAPPING_INVALID;
+	}
 
 	skb_ext_del(skb, SKB_EXT_MPTCP);