Skip to content

Commit ef4129e

Browse files
matttbemjmartineau
andcommitted
faq: add GRO support info
At Netdev 0x19, there were some discussions about hardware GRO: Eric reported that when comparing performances of TCP with MPTCP single-path, a performance drop can be explained by hardware GRO not being used with MPTCP. Apparently, some NIC's skip hardware GRO in presence of "unknown" TCP options: anything but TCP timestamps. It then seems interesting to write this down in the FAQ to help people understanding why hardware GRO might not be used with MPTCP. While at it, explain that software GRO works when TSO was used on the sender side. Co-authored-by: Mat Martineau <[email protected]> Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
1 parent 9897b09 commit ef4129e

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

faq.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,28 @@ is to increase the NIC RX queue. See issue
210210
[#253](https://github.com/multipath-tcp/mptcp_net-next/issues/253) for more
211211
details.
212212

213+
## Is GRO supported with MPTCP?
214+
215+
Software Generic Receive Offload (GRO) will merge packets when the MAC headers
216+
are identical, but only specific TCP and IP headers can differ. In other words,
217+
if the TCP options of one packet following another one are identical, they can
218+
be merged.
219+
220+
MPTCP adds TCP options in each packet, but when TCP Segmentation Offload (TSO)
221+
is used, the same MPTCP options will be duplicated in each packet. When such
222+
packets are received, and if all the other conditions are met, the receiver-side
223+
software GRO can re-create the sender's original pre-TSO packet because the TCP
224+
options of the segmented packets are all identical.
225+
226+
With hardware GRO, in theory, NICs can use the same technique. But some of them,
227+
like many Intel cards, are more "cautious", and they will not merge TCP packets
228+
if they contain non-supported TCP options, i.e. anything but TCP timestamps.
229+
With such NICs, hardware GRO cannot work with MPTCP and a fallback to software
230+
GRO will be done.
231+
232+
When comparing MPTCP performance with another protocol, it is then interesting
233+
to check if hardware GRO is used in both cases.
234+
213235
## How to enable MPTCP support with OpenSSH?
214236

215237
<details markdown="block">

0 commit comments

Comments
 (0)