Skip to content

Commit f991c3f

Browse files
jbeshayfacebook-github-bot
authored andcommitted
Write ACK_EXTENDED frame when supported by peer
Summary: Write the new ACK_EXTENDED frame. When any of the ACK_EXTENDED features are enabled locally and supported by the peer, this frame type will take precedence over ACK_ECN and ACK_RECEIVETIMESTAMPS. See first diff in the stack for the features. Frame format: ``` ACK_EXTENDED Frame { Type (i) = 0xB1 // Fields of the existing ACK (type=0x02) frame: Largest Acknowledged (i), ACK Delay (i), ACK Range Count (i), First ACK Range (i), ACK Range (..) ..., Extended Ack Features (i), // Optional ECN counts (if bit 0 is set in Features) [ECN Counts (..)], // Optional Receive Timestamps (if bit 1 is set in Features) [Receive Timestamps (..)] } // Fields from the existing ACK_ECN frame ECN Counts { ECT0 Count (i), ECT1 Count (i), ECN-CE Count (i), } // Fields from the existing ACK_RECEIVE_TIMESTAMPS frame Receive Timestamps { Timestamp Range Count (i), Timestamp Ranges (..) ..., } Timestamp Range { Gap (i), Timestamp Delta Count (i), Timestamp Delta (i) ..., } ``` Reviewed By: sharmafb Differential Revision: D68931148 fbshipit-source-id: 0fb4bac23e121f82a11602daabc1ec7084db43dd
1 parent 622d9d7 commit f991c3f

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

proxygen/httpserver/samples/hq/HQCommandLine.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,20 @@ DEFINE_uint32(
121121
max_ack_receive_timestamps_to_send,
122122
quic::kMaxReceivedPktsTimestampsStored,
123123
"Controls how many packet receieve timestamps the peer should send");
124-
DEFINE_uint32(
125-
extended_ack_features,
126-
0,
127-
"Replace the ACK frame with ACK_EXTENDED with the following features."
128-
"The bitwise values can be ORed together."
129-
"bit 1 - ECN support"
130-
"bit 2 - Receive timestamps support"
131-
"Example: 3 means both ECN and receive timestamps are supported");
124+
DEFINE_uint32(advertise_extended_ack_features,
125+
0,
126+
"Advertise ACK_EXTENDED frame support to the peer. The following"
127+
"bitwise values can be ORed together:"
128+
"bit 1 - ECN support"
129+
"bit 2 - Receive timestamps support"
130+
"Example: 3 means both ECN and receive timestamps are supported");
131+
DEFINE_uint32(enable_extended_ack_features,
132+
0,
133+
"Replace the ACK frame with ACK_EXTENDED when supported by the "
134+
"peer. The following bitwise values can be ORed together:"
135+
"bit 1 - ECN support"
136+
"bit 2 - Receive timestamps support"
137+
"Example: 3 means both ECN and receive timestamps are supported");
132138
DEFINE_bool(initiate_key_updates,
133139
false,
134140
"Whether to initiate periodic key updates");
@@ -316,7 +322,9 @@ void initializeTransportSettings(HQToolParams& hqUberParams) {
316322
hqParams.transportSettings.disableMigration = false;
317323

318324
hqParams.transportSettings.advertisedExtendedAckFeatures =
319-
FLAGS_extended_ack_features;
325+
FLAGS_advertise_extended_ack_features;
326+
hqParams.transportSettings.enableExtendedAckFeatures =
327+
FLAGS_enable_extended_ack_features;
320328
} // initializeTransportSettings
321329

322330
void initializeHttpServerSettings(HQToolServerParams& hqParams) {

0 commit comments

Comments
 (0)