[PATCH 0/6] IPv6 support
by Peter Krystad
Implemented support for IPv6. selftests pass with ipv6=true, but
they take twice as long to run...
With re-factoring the addition of IPv6 is very clean but I did not
split files yet as it will be hard to squash any changes after the
such a split.
Still to do: multiple subflows, handling IPv4-mapped connections.
Peter Krystad (6):
mptcp: Reference af_ops routines through struct ipv4_specific
mptcp: Re-factor create socket/subflow routines to be af-agnostic
mptcp: Re-factor mptcp_stream_ops routines to be af-agnostic
mptcp: Re-factor subflow routines to be af-agnostic
mptcp: Export low-level routines for IPv6
mptcp: Add IPv6 support
include/net/mptcp.h | 3 +
include/net/tcp.h | 3 +
net/ipv6/tcp_ipv6.c | 16 +++-
net/mptcp/ctrl.c | 11 +++
net/mptcp/protocol.c | 174 +++++++++++++++++++++++++++++++--------
net/mptcp/protocol.h | 9 +-
net/mptcp/subflow.c | 191 +++++++++++++++++++++++++++++++++++++------
7 files changed, 342 insertions(+), 65 deletions(-)
--
2.17.2
1 year, 2 months
[Weekly meetings] MoM - 24th of October 2019
by Matthieu Baerts
Hello,
Yesterday, we had our 72nd meeting with Mat, Peter and Ossama (Intel
OTC), Paolo, Florian and Davide (RedHat) and myself (Tessares).
Thanks again for this new good meeting!
Here are the minutes of the meeting:
Accepted patches:
- mptcp: recvmsg refactor follow-up:
- by Paolo
- fix tests
- Accepted by Matth & Mat
- Fix issues in prerequisite [IPv6] patches:
- by Peter
- 3 patches: 1 has been applied, accepted by Matth
Pending patches:
- mptcp: switch mptcp_poll to use parent sock wait queue:
- include: mptcp: sendmsg scheduler skeleton
- include: mptcp_poll should not block on each subflow:
- by Florian
- v2
- Accepted by Paolo
- *Waiting for application*
- selftests: mptcp: increase test coverage:
- include: selftests: fixes and improvements
- include: prepare for mptcp ipv6 support
- by Florian
- v3 sent + 1 new one
- *Waiting for review*
- mptcp: Add DATA_FIN transmission and handling:
- by Mat
- RFC
- Commented by Paolo, Christoph
- new version expected
- IPv6 support:
- by Peter
- RFC
- Commented by Paolo, Matth
- new version expected
- Fix issues in prerequisite [IPv6] patches:
- by Peter
- 3 patches: 2 are left on review
- Paolo raised a question about IPv4 mapped in IPv6: add the
support for later?
- new version expected
- selftests:mptcp: increase timeout:
- by Matth
- v2
- *Waiting for review*
- Fix bug processing options:
- by Peter
- *Waiting for review*
Remaining items for the initial submission: Planning:
- Part 1 (mainly TCP changes, will be sent with Part 2):
- MAINTAINERS file
- Part 2 (minimum set for MPTCP, up to KSelftests, one subflow):
- MPTCPv1 support
- opti in TCP options?
- Send DATA_FIN, no corner cases
- Part 3 (after the KSelftests, to be sent ideally before the end
of the year)
- Full DATA_FIN support
- Shared recv window
- Active backup support
Remaining items for the initial submission: Update:
- IPv6 support → part 2:
- Peter is working on a v2
- MPTCP v1 support → part 2:
- Paolo started to look at the RFC to support Christoph
- Christoph will be the submitter of the patch
- *Matth*: publish a branch with mptcp.org + MPTCPv1
- is it OK to have v0 then switch to v1 in the same series?
- maybe better to do the squashing to have a clearer code
(hoping the v1 simplify a bit some parts)
- will check if we squash or not when we have the code
- DATA_FIN → part 3 (after kselftests):
- Mat is working on it
- working on top of the recent changes done and the
mptcp_rcvmesg refactor
- trying to list the different corner cases (e.g. this is the
last packet and it is dropped)
- maybe we can have only the sending part for the moment
without the corner cases in the part 2 (before kselftests, after TCP)
- Mat will look at that perspective
- Shared recv window → part 3 (after kselftests, OK because we only
support one subflow before that):
- work to be done
- Active backup support → part 3 (after kselftests) or 4 (extra):
- Paolo is working on it
- receive part is done
- send side is handle by Florian
- found one issue with MP_JOIN
- optimisation of options in TCP "struct mptcp_options_received":
- Peter has a patch to share
- MAINTAINERS file
timeout in selftest:
- we will try to have default "series" around ~45seconds
IPv4 mapped in IPv6:
- add the support for later
- only support v4 only and v6 only
Feedback from netdev:
- nope :'(
- could be good to send a message to the list, explaining with
other words what we have sent, what it would be useful for us
- it is likely possible that we will not get any replies if we
don't ask or send something else
- Mat was asking if it could help if someone else was sending the
patches? Maybe just unlucky: reviewers were maybe busy
Patchwork:
- we need username
- Mat will check with Peter which one to use
- *Matth* will send the list to Patchwork maintainers
- Mat added their email in the subscribers list
Netdev?:
-
https://netdevconf.info/0x14/news.html?netdev-0x14-call-for-submissions
- In Vancouver
- close to Seattle
- Submission: around January
Next meeting:
- We propose to have it next Thursday, the 31st of October.
- *NOT* the usual time if you are going to change the clock this
weekend: 16:00 UTC (9am PDT, *5pm CET*)
- Still open to everyone!
- https://annuel2.framapad.org/p/mptcp_upstreaming_20191031
Feel free to comment on these points and propose new ones for the next
meeting!
Talk to you next week,
Matt
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
1 year, 2 months
Patchwork: "maintainer status"
by Matthieu Baerts
Hi,
After the last meeting, we said it would be interesting to have
patchwork to easily list pending patches with their status and not
having to maintain the list manually.
I contacted Patchwork maintainers and it seems they are OK to add MPTCP
to the list of projects. But they are asking 2 questions:
> - do you want all of your team to have maintainer status in
patchwork? (ie, should they all be able to update patch states?)
I don't know exactly who would need to have this. I guess everybody who
did a review with an "accept" ("LGTM") should be able to directly change
the status, no?
Patchwork maintainers are asking me to give them a list of usernames.
With the web interface, I can only get your user ID and email address
but not your username. May you reply to me in private (or to the list)
with your username?
(The username you used to log-in: https://patchwork.ozlabs.org )
I didn't find any user account for Peter and Ossama. I don't know if you
would like to be added to the list of people who can change the status
of the pending patches for the kernel but if yes, you can create an
account on the website:
https://patchwork.ozlabs.org/register/
> - are you able to subscribe <email> to your mailing list, without
requiring a confirmation step?
I guess that's a question for Mat :)
Cheers,
Matt
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
1 year, 2 months
stray code chunks in current export branch
by Paolo Abeni
Hi,
as per last mtg discussion, patch "mptcp: Write MPTCP DSS headers to
outgoing data packets", includes:
@@ -208,6 +303,14 @@ static struct sock *mptcp_accept(struct sock *sk, int flags, int *err,
mptcp_token_update_accept(new_sock->sk, new_mptcp_sock);
msk->subflow = NULL;
+
+ mptcp_crypto_key_sha1(msk->remote_key, NULL, &ack_seq);
+ msk->write_seq = subflow->idsn + 1;
+ ack_seq++;
+ msk->ack_seq = ack_seq;
+ msk->remote_key = subflow->remote_key;
+ msk->ack_seq++;
'remote_key' is set a few lines above, and the 2nd ack_seq increment is
wrong, we just incr it once.
The 2 bottom lines are deleted by "mptcp: Implement MPTCP receive
path". We should avoid inserting them at all. @Matt, can you do that
with git surgery, or do you prefer a patch?
Thanks,
Paolo
1 year, 2 months
[Weekly meetings] MoM - 31st of October 2019
by Matthieu Baerts
Hello,
Today, we had our 73rd (scary) meeting with Mat, Peter and Ossama (Intel
OTC), Christoph (Apple), Paolo, Florian and Davide (RedHat) and myself
(Tessares).
Thanks again for this new good meeting!
Here are the minutes of the meeting:
Accepted patches:
- mptcp: switch mptcp_poll to use parent sock wait queue:
- include: mptcp: sendmsg scheduler skeleton
- include: mptcp_poll should not block on each subflow:
- by Florian
- Accepted by Paolo
- selftests: mptcp: increase test coverage:
- include: selftests: fixes and improvements
- include: prepare for mptcp ipv6 support
- by Florian
- Accepted by Mat
- With a fix from Mat (capture options)
- selftests:mptcp: increase timeout:
- by Matth
- v2
- Fix bug processing options:
- by Peter
- Accepted by Mat
- (+ fixed a compilation error)
- self-tests: catch poll errors:
- by Paolo
- Accepted by Florian
- Small improvement in kselftests:
- by Matth
- accepted by Mat
- Fix issues in prerequisite [IPv6] patches:
- by Peter
- v2 accepted by Paolo
- *Peter*: there is a comment by Paolo: patch 2/2 will allow
mptcp clients to either ipv4 and ipv6 subflows, if the server
allows/supports that - e.g. mptcp.org server
Pending patches:
- mptcp: Add DATA_FIN transmission and handling:
- by Mat
- (old) RFC
- Commented by Paolo, Christoph
- IPv6 support:
- by Peter
- (new) v1
- v1 Commented by Paolo, Davide
- mptcp: add primitive scheduler:
- by Florian
- (new) v1
- v2 expected
Remaining items for the initial submission: Planning:
- Part 1 (mainly TCP changes, will be sent with Part 2):
- MAINTAINERS file
- Part 2 (minimum set for MPTCP, up to KSelftests, one subflow):
- IPv6 support
- MPTCPv1 support
- opti in TCP options?
- Send DATA_FIN, no corner cases
- if the peer never sends MPTCP-level ACK, a lot of memory will
be used
- Part 3 (after the KSelftests, to be sent ideally before the end
of the year)
- Full DATA_FIN support
- Shared recv window
- Active backup support
Remaining items for the initial submission: Update:
- IPv6 support:
- Peter is working on it
- patches are almost ready, mostly some changes needed related
to KConfig
- maybe separated files? Seems not needed now (specific changes
are small), could be done later once upstream
- ideally we would need CONFIG_MPTCP_IPV6=y by default
- MPTCP v1 support:
- Better to keep v1 patch alone with Christoph as an author
- Still need to check how we arrange patches but the idea is to
have v0 and v1 support in the same patch-set (series)
- Christoph is working on it
- Paolo: Looking at the code (mptcp.org), it seems to me the
above does not implement/use sha256, but it still relies on sha1 hmac:
- Should be SHA256
- additional patches are required (but small)
- Wireshark and TCPDump do not support MPTCPv1:
- Wireshark: https://code.wireshark.org/review/#/c/34896/
- DATA_FIN:
- Mat is working on it
- "Basic" support: send the data fin (at least one, will see
later for the retransmissions, receive, etc.)
- will share an update soon
- Shared recv window:
- work to be done
- Active backup support:
- Florian is working on it
- optimisation of options in TCP "struct mptcp_options_received":
- Peter is working on it
- if the peer never sends MPTCP-level ACK, a lot of memory will be
used:
- Florian is working on that
- quite tricky to fix but important
- MAINTAINERS file
- TODO
Netdev:
- no feedback
- should we send a new message?
- maybe now better to wait for part 2 to be ready instead of
sending a new message to have some feedbacks
exported branch:
- some code chunks should be moved to other patches:
- Paolo will send an email about that
- in some code of .h files, some spaces/tabs are used while it
should be the opposite:
- Peter will look at that when optimising stuff in struct
mptcp_options_received
Patchwork:
- no news from the maintainers
Next meeting:
- We propose to have it next Thursday, the 7th of November.
- *Back to the usual time* (for most of us): 17:00 UTC (9am PST,
6pm CET)
- Still open to everyone!
- https://annuel2.framapad.org/p/mptcp_upstreaming_20191107
Feel free to comment on these points and propose new ones for the next
meeting!
Talk to you next week,
Matt
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
1 year, 2 months
[PATCH v2 0/2] Fix issues in prerequisite patches
by Peter Krystad
Fix issues found by Mat in the "IPv6 prerequisite" patch series
when running against the multipath.org implementation.
v2: Only announce address if same family as listener
Only bind local address if same family as remote
Patch 1 of v1 set already merged.
Peter Krystad (2):
mptcp: Save address family when creating socket
mptcp: Use correct address family when creating subflows
net/mptcp/basic.c | 36 ++++++++++++++++++++++--------------
net/mptcp/protocol.c | 1 +
net/mptcp/protocol.h | 1 +
3 files changed, 24 insertions(+), 14 deletions(-)
--
2.17.2
1 year, 2 months
[PATCH 0/2] Small improvement in kselftests
by Matthieu Baerts
Just to improve a bit what is displayed, nothing important but this is tested
with the last version, variables names have not changed :)
Matthieu Baerts (2):
selftests: mptcp: track duration in ms
selftests: mptcp: fix alignment 2 first tests
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--
2.20.1
1 year, 2 months
[PATCH v2] self-tests: catch poll errors
by Paolo Abeni
Otherwise in case of a poll error, we end-up looping forever.
Squash-to: "mptcp: add basic kselftest for mptcp"
v1 -> v2:
- better error message, as per Florian's suggestion
Signed-off-by: Paolo Abeni <pabeni(a)redhat.com>
---
tools/testing/selftests/net/mptcp/mptcp_connect.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/testing/selftests/net/mptcp/mptcp_connect.c
index 5aaf7690dc10..ddfd85b31808 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.c
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c
@@ -340,6 +340,12 @@ static int copyfd_io(int infd, int peerfd, int outfd)
return 4;
}
}
+
+ if (fds.revents & (POLLERR | POLLNVAL)) {
+ fprintf(stderr, "Unexpected revents: "
+ "POLLERR/POLLNVAL(%x)\n", fds.revents);
+ return 5;
+ }
}
close(peerfd);
--
2.21.0
1 year, 2 months
[PATCH 0/2] Fix bug processing options
by Peter Krystad
Do not process incoming options if the subflow is not MPTCP.
Observed crash when running against out-of-tree kernel with
mis-matched checksum options.
Peter Krystad (2):
mptcp: Ignore incoming MPTCP options when not MP_CAPABLE
mptcp: Ignore incoming MPTCP options when not MP_CAPABLE
net/mptcp/options.c | 3 +++
1 file changed, 3 insertions(+)
--
2.17.2
1 year, 2 months
[PATCH v2 0/2] mptcp: add primitive scheduler
by Florian Westphal
This is a simplified version of a sendmsg ssk selection strategy,
so sendmsg or retransmit could also occur on a backup subflow.
In the initial submission it was pointed out that we should not
send more data when a retransmission is happening.
As this isn't directly related to this I've decided to send those two
patches now and work on sendmsg moderation next.
The plan is to add wmem_queued accounting to the mptcp socket and
then make sendmsg/mptcp_poll consider mptcp socket wmem limits to
avoid sending more data if there are no mptcp-level acknowledgements.
This however might take some time because msk->ack_seq update occurs only
at recvmsg time and not during mptcp ack processing.
For this to work properly, mptcp-level ack update should not depend on
a recvmsg call.
The following changes since commit dcb69525165804b78e07ed7875d33463a3fde7c8:
subflow: wake parent mptcp socket on subflow state change (2019-10-30 02:24:34 +0000)
are available in the Git repository at:
git://git.breakpoint.cc/fw/mptcp-next.git sendmsg_refactor_19
for you to fetch changes up to a1cb9992e1f55156914dc0e6727f92463fb96938:
mptcp: sendmsg: transmit on backup if other subflows have been closed (2019-10-30 14:42:48 +0100)
----------------------------------------------------------------
Florian Westphal (2):
mptcp: add and use mptcp_subflow_get_retrans
mptcp: sendmsg: transmit on backup if other subflows have been closed
net/mptcp/protocol.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++-----
net/mptcp/protocol.h | 1 +
net/mptcp/subflow.c | 7 +++-
3 files changed, 100 insertions(+), 10 deletions(-)
1 year, 2 months