mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-21 17:11:46 +00:00
[tcp] Reduce path MTU to 1280 bytes
The path MTU is currently hardcoded to 1460 bytes, which fails to allow space for TCP options. Sending a maximum-sized datagram (which is viable when using HTTP POST) will therefore fail since the Ethernet MTU will be exceeded. Reduce the hardcoded path MTU to produce a maximum datagram of 1280 bytes, which is the size required of data link layers by IPv6. It is a reasonable assumption that all intermediary data link layers will be able to convey this packet without fragmentation, even for IPv4. Note that this reduction has a minimal impact upon download throughput, since it affects only the transmit data path. Originally-fixed-by: Suresh Sundriyal <ssundriy@vmware.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
8aaa48beb8
commit
8dd180f165
@ -316,10 +316,19 @@ struct tcp_options {
|
||||
/**
|
||||
* Path MTU
|
||||
*
|
||||
* We really ought to implement Path MTU discovery. Until we do,
|
||||
* anything with a path MTU greater than this may fail.
|
||||
* IPv6 requires all data link layers to support a datagram size of
|
||||
* 1280 bytes. We choose to use this as our maximum transmitted
|
||||
* datagram size, on the assumption that any practical link layer we
|
||||
* encounter will allow this size. This is a very conservative
|
||||
* assumption in practice, but the impact of making such a
|
||||
* conservative assumption is insignificant since the amount of data
|
||||
* that we transmit (rather than receive) is negligible.
|
||||
*
|
||||
* We allow space within this 1280 bytes for an IPv6 header, a TCP
|
||||
* header, and a (padded) TCP timestamp option.
|
||||
*/
|
||||
#define TCP_PATH_MTU 1460
|
||||
#define TCP_PATH_MTU \
|
||||
( 1280 - 40 /* IPv6 */ - 20 /* TCP */ - 12 /* TCP timestamp */ )
|
||||
|
||||
/**
|
||||
* Advertised TCP MSS
|
||||
|
Loading…
Reference in New Issue
Block a user