On Thursday, we had our 80th meeting with Mat, Peter and Ossama (Intel
OTC), Paolo (RedHat) and myself (Tessares).
Thanks again for this new good meeting!
Here are the minutes of the meeting:
- The list of accepted patches can be seen on PatchWork:
- By Paolo Abeni, Matthieu Baerts
1214271 Squash-to: "tcp: coalesce/collapse must respect MPTCP extension
1214225 Squash-to: "mptcp: Add MPTCP to skb extensions"
1213556 [v3] Squash-to: "tcp: Prevent coalesce/collapse when skb has MP
1212550 Squash-to: "mptcp: Add MPTCP socket stubs"
1212331 [2/2] Squash-to: "mptcp: Implement MPTCP receive path"
1212314 [1/2] Squash-to: "mptcp: Add MPTCP socket stubs"
1212209 Squash-to: "mptcp: recvmsg() can drain data from multiple subfl
1211460 Squash-to: "mptcp: Add key generation and token tree"
1211244 Squash-to: "sock: Make sk_protocol a 16-bit value"
1210776 Squash-to: "mptcp: Implement MPTCP receive path"
1210775 Squash-to: "mptcp: Handle MP_CAPABLE options for outgoing conne
1210697 [v2] Squash-to: "mptcp: cope with later TCP fallback"
1210382 Squash-to: tcp: Check for filled TCP option space before SACK
1210375 Squash-to: "sock: Make sk_protocol a 16-bit value"
1209395 Re: [PATCH] mptcp: cope with later TCP fallback.
- The list of pending patches can be seen on PatchWork:
- By Paolo Abeni, Matthieu Baerts, Peter Krystad
1194592: Changes Requested: [RFC,1/1] mptcp: Optimize struct mptcp_recei
1196109: RFC: [10/10,RFC] selftests:mptcp: decrease timeout to 100 sec
1214280: Changes Requested: [RFC,1/4] Squash-to: "mptcp: Handle MP_CAPAB
1214277: Changes Requested: [RFC,2/4] Squash-to "mptcp: Create SUBFLOW s
1214278: Changes Requested: [RFC,3/4] Squash-to: "mptcp: Implement MPTCP
1214279: Changes Requested: [RFC,4/4] Squash-to: "mptcp: cope with later
FYI: Current Roadmap:
- Part 1 (mainly TCP changes, will be sent with Part 2):
- Sent to Netdev, in review
- Part 2 (minimum set for MPTCP, up to KSelftests, one subflow):
- Sent to Netdev, in review, waiting for Part 1 to be ready
- Part 3 (MPTCPv1):
- Ready to be sent to Netdev, waiting for Part 2 to be ready
- Part 4 (to be sent before the end of the merge window or more
probably at the next one)
- Full DATA_FIN support [WIP]
- Shared recv window (drop data received on other subflows) [TODO]
- Active backup support [WIP]
- Opti in TCP option structures (unions) [to be rebased)
- Part 5 (to fully support MPTCP):
- Shared recv window (full support)
- IPv6 - IPv4 mapped support
- not dropping MPTCP options (ADD_ADDR, etc.)
- full MPTCP v1 support (reliable add_addr, etc.)
- after a few attempts of failed MPTCP, we fallback to TCP
(like TFO is doing)
- Part 6 (extra needed for prod):
Initial submission to net-next:
- Part 1:
- We got some reviews from Eric Dumazet and recommendations
- v1 has been sent on Friday:
- comments from Eric about patch 2 (struct sock) and patch
- v2 has been sent on Monday:
- v1 -> v2: sk_pacing_shift left as a regular struct member
(patch 2), and modified SACK space check based on recent -net fix (patch 9).
- comment from Eric about patch 2 again (struct sock)
- v3 has been sent on Tuesday:
- v2 -> v3: Ensure sk_type alignment in struct sock (patch 2)
- discussions on: tcp: Prevent coalesce/collapse when skb
has MPTCP extensions:
- Eric: This seems a very pessimistic change to me. Are
you planing later to refine this limitation ? Surely if a sender sends
TSO packet, we allow all the segments being aggregated at receive side
either by GRO or TCP coalescing.
- Davem: This turns off absolutely crucial functional
elements of our TCP stack, and will avoid all of the machinery that
avoids wastage in TCP packets sitting in the various queues.
skb->truesize management, etc. I will not apply these patches with such
a non-trivial regression in place for MPTCP streams, sorry.
- Paolo has just added support of coalescing for MPTCP:
- to coalesce the ones with the same options
- some room to improvement (DSN/ACK in sequence)
but additional hooks needed and it will increase the complexity
- here we address Eric concerns
- for the moment we are checking the bit-field on
each packet. We can optimise this later. Compiler can optimise stuff but
maybe not to that point.
- *Paolo* will check what the binary looks like
just after the meeting → The compiler did well his job!
- v4 & v5 have been sent on Thursday after the meeting:
- We got a full review from Eric (except the last patch)
- v6 is ready but will be sent in January
- Part 2:
- v1 was sent on Friday
- v2 was sent on Wednesday (rebase) but rejected until part 1
is applied. →
- Part 3:
- v1 was not sent on Wednesday, David Miller prefers to wait.
- We are not going to send Part 3 until part 1 & 2 are merged,
not even as an RFC
Other WIP items:
- Mostly on hold, focusing on part 1 → 3
- mptcpd 0.3: Beta release
- mainly plugin API, fixes, stabilisation, it's now a beta!
- could be nice to stress it (and the kernel part) to see if we can
use it for servers with a lot of connections (we can lose netlink messages)
- saw issues with the unblocked connect → mptcp_finish_connect()
can set msk fields async. In a specific sequences from the userspace, we
can have issues.
- we can address that later
- tests were done with MPTCP, one subflow, loopback, same machine
- we are close to TCP so that's good!
Plan for the next weeks:
- Enjoy the end of the year! Merry Xmas and Happy New Year everybody!
- Check patches from Part 1, ideally around the 2nd/3rd of January
- Tag "netdev-v6-part1" using:
$ git fetch origin
$ git tag -sfm "Multipath TCP part 1: Prerequisites, version 6" \
netdev-v6-part1 $(git log -1 --format=%H --grep \
'^skb: add helpers to allocate ext independently from s' \
$ git tag -sfm "Multipath TCP: full working branch, version 7" \
- Send part 1 v6 to netdev, ideally around the 2nd/3rd of January
- Let's do it!
- We decided to *skip the two next meetings* (26th / 2nd)
- We propose to have the next meeting on Thursday, the 9th of January.
- Usual time: 17:00 UTC (9am PST, 6pm CET)
- Still open to everyone!
Feel free to comment on these points and propose new ones for the next
Merry Xmas and Happy New Year everybody!
Talk to you next year,
Matthieu Baerts | R&D Engineer
Tessares SA | Hybrid Access Solutions
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium