Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated ACK_FREQUENCY according to draft-ietf-quic-ack-frequency-10 #4670

Merged
merged 32 commits into from
Jan 3, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
d6cde24
added reordering threshold in ack frequency
gaurav2699 Nov 28, 2024
bf614d9
modified log filesd
gaurav2699 Dec 2, 2024
542c781
few refactoring
gaurav2699 Dec 2, 2024
54a90da
minor refactoring
gaurav2699 Dec 2, 2024
8097350
fixed clog
gaurav2699 Dec 2, 2024
e7b4add
fixed clog
gaurav2699 Dec 3, 2024
5fdcc8d
removed IgnoreOrder
gaurav2699 Dec 3, 2024
3f17438
removed IgnoreCE
gaurav2699 Dec 3, 2024
d4ed890
updated names
gaurav2699 Dec 3, 2024
d7d69b8
updated the values
gaurav2699 Dec 3, 2024
93dd676
added logic for reordering
gaurav2699 Dec 4, 2024
4a2c327
removed ignorereordering parameter in connection
gaurav2699 Dec 4, 2024
77474a6
added assert
gaurav2699 Dec 4, 2024
d607245
updated logic for the reordering threshold function
gaurav2699 Dec 4, 2024
7a8cbad
minor change
gaurav2699 Dec 4, 2024
4c0e62a
added unit test
gaurav2699 Dec 5, 2024
6191f1f
added more unit test cases
gaurav2699 Dec 5, 2024
1d1e130
changed the reordering logic
gaurav2699 Dec 11, 2024
4a9aae6
minor refactoring
gaurav2699 Dec 11, 2024
f354d43
minor refactoring
gaurav2699 Dec 12, 2024
2cb10ef
changed variable names
gaurav2699 Dec 15, 2024
5e48229
modified way of implementing to be more optimised
gaurav2699 Dec 16, 2024
d2baaa0
addressed comments
gaurav2699 Dec 17, 2024
95a3533
resolved comments
gaurav2699 Dec 18, 2024
a928db6
modified variable name
gaurav2699 Dec 19, 2024
70b564e
changed the alogrithm logic
gaurav2699 Dec 23, 2024
f53a7fb
resolved comments
gaurav2699 Dec 24, 2024
56f3f00
addressed comments
gaurav2699 Dec 24, 2024
a8f2386
minor change
gaurav2699 Dec 24, 2024
7a37125
minor change to fix the pipeline
gaurav2699 Jan 3, 2025
d94d218
minor change
gaurav2699 Jan 3, 2025
140e052
New Largest Packet Number check shifted
gaurav2699 Jan 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/core/ack_tracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
Licensed under the MIT License.

--*/

#if defined(__cplusplus)
extern "C" {
#endif
typedef struct QUIC_ACK_TRACKER {
gaurav2699 marked this conversation as resolved.
Show resolved Hide resolved

//
Expand Down Expand Up @@ -153,3 +155,7 @@ QuicAckTrackerHasPacketsToAck(
!Tracker->AlreadyWrittenAckFrame &&
QuicRangeSize(&Tracker->PacketNumbersToAck) != 0;
}

#if defined(__cplusplus)
}
#endif
gaurav2699 marked this conversation as resolved.
Show resolved Hide resolved
37 changes: 37 additions & 0 deletions src/core/unittest/FrameTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,43 @@ TEST(FrameTest, ReliableResetStreamFrameEncodeDecode)
ASSERT_EQ(Frame.ReliableSize, DecodedFrame.ReliableSize);
}

TEST(FrameTest, TestQuicAckTrackerDidHitReorderingThreshold)
gaurav2699 marked this conversation as resolved.
Show resolved Hide resolved
{
QUIC_ACK_TRACKER Tracker;
uint8_t ReorderingThreshold;

// Initialize the Tracker and other variables

QuicAckTrackerInitialize(&Tracker);

// Test case 1: ReorderingThreshold is 0
ReorderingThreshold = 0;
QuicRangeAddValue(&Tracker.PacketNumbersToAck, 100);
ASSERT_FALSE(QuicAckTrackerDidHitReorderingThreshold(&Tracker, ReorderingThreshold, 100));

// Test case 2: The number of ranges is less than 2.
ReorderingThreshold = 3;
QuicRangeAddValue(&Tracker.PacketNumbersToAck, 101);
ASSERT_FALSE(QuicAckTrackerDidHitReorderingThreshold(&Tracker, ReorderingThreshold, 101));

// Test case 3: PacketNumber is not the largest unacked packet number
QuicRangeAddValue(&Tracker.PacketNumbersToAck, 104);
QuicRangeAddValue(&Tracker.PacketNumbersToAck, 105);

ASSERT_FALSE(QuicAckTrackerDidHitReorderingThreshold(&Tracker, ReorderingThreshold, 103));

// Test case 4: Gap between smallest unreported missing packet and largest unacked packet is less than ReorderingThreshold
ReorderingThreshold = 5;
ASSERT_FALSE(QuicAckTrackerDidHitReorderingThreshold(&Tracker, ReorderingThreshold, 105));

// Test case 5: Gap between smallest unreported missing packet and largest unacked packet is greater than or equal to ReorderingThreshold
ReorderingThreshold = 3;
ASSERT_TRUE(QuicAckTrackerDidHitReorderingThreshold(&Tracker, ReorderingThreshold, 105));

// Clean up
QuicAckTrackerUninitialize(&Tracker);
}

struct ResetStreamFrameParams {
uint8_t Buffer[4];
uint16_t BufferLength = 4;
Expand Down
Loading