summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorMatthieu Baerts <matthieu.baerts@tessares.net>2023-02-24 17:52:00 +0100
committerGopher Robot <gobot@golang.org>2023-04-18 13:48:22 +0000
commitfd8acb5d4aeb262a033b5151de311a97025af7d4 (patch)
tree79c39670556428c106c0e6f538ef55e3fcbf1ea4 /api
parent5a34790d6dd0b31b1070e0f7df9b0c57c2d62525 (diff)
downloadgo-git-fd8acb5d4aeb262a033b5151de311a97025af7d4.tar.gz
net: mptcp: add TCPConn's MultipathTCP checker
This new TCPConn method returns whether the connection is using MPTCP or if a fallback to TCP has been done, e.g. because the other peer doesn't support MPTCP. When working on the new E2E test linked to MPTCP (#56539), it looks like the user might need to know such info to be able to do some special actions (report, stop, etc.). This also improves the test to make sure MPTCP has been used as expected. Regarding the implementation, from kernel version 5.16, it is possible to use: getsockopt(..., SOL_MPTCP, MPTCP_INFO, ...) and check if EOPNOTSUPP (IPv4) or ENOPROTOOPT (IPv6) is returned. If it is, it means a fallback to TCP has been done. See this link for more details: https://github.com/multipath-tcp/mptcp_net-next/issues/294 Before v5.16, there is no other simple way, from the userspace, to check if the created socket did a fallback to TCP. Netlink requests could be done to try to find more details about a specific socket but that seems quite a heavy machinery. Instead, only the protocol is checked on older kernels. The E2E test has been modified to check that the MPTCP connection didn't do any fallback to TCP, explicitely validating the two methods (SO_PROTOCOL and MPTCP_INFO) if it is supported by the host. This work has been co-developed by Gregory Detal <gregory.detal@tessares.net> and Benjamin Hesmans <benjamin.hesmans@tessares.net>. Fixes #59166 Change-Id: I5a313207146f71c66c349aa8588a2525179dd8b8 Reviewed-on: https://go-review.googlesource.com/c/go/+/471140 Auto-Submit: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com>
Diffstat (limited to 'api')
-rw-r--r--api/next/59166.txt1
1 files changed, 1 insertions, 0 deletions
diff --git a/api/next/59166.txt b/api/next/59166.txt
new file mode 100644
index 0000000000..2a620831e8
--- /dev/null
+++ b/api/next/59166.txt
@@ -0,0 +1 @@
+pkg net, method (*TCPConn) MultipathTCP() (bool, error) #59166