-
Notifications
You must be signed in to change notification settings - Fork 484
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
Topic/pull dctcp #536
Closed
Closed
Topic/pull dctcp #536
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ecnEnabled was the previous name
DUPTHRESH is now configurable via dupthresh parameter in Tcp.ned
The initial value for Slow Start threshold is now configurable via NED parameter initialSsthresh in Tcp.ned. The default value is set arbitrarily high (0xFFFFFFFF)
Raw amount of payload bytes received at the Tcp including duplicates, out of order, etc) for TCP throughput calculation
Additional handling of IP/ECN (on top of settig gotCeIndication) can be implemented by overriding processEcnInEstablished() Marking strategy can be implemented by overriding shouldMarkAck(). The default implementaion (in TcpAlgorithm) marks an Ack when in ecnEchoState. ecnEchoState is reset when CWR (congestion window reduced) is received.
Since DcTcp MUST adhere to standard Tcp behaviour (Slow Start, Fast-Retransmit, Congestion Avoidance, Fast-Recovery, packet drops, ...) the implementation is based on TcpReno class by overriding receivedDataAck(). It reduces the cwnd window by a fraction of marked data DCTCP.Alpha = DCTCP.Alpha * (1 - g) + g * M cwnd = cwnd * (1 - DCTCP.Alpha / 2) Addional state variables are in dedicated class. Overrides processEcnInEstablished() - set state->dctcp_ce based on gotCeIndication - set ack_now if necessary It also overrides shouldMarkAck() - marks only when state->dctcp_ce is set (only one marked Ack for one received marked data segment) Tcp.ned extended with configurable dtcpGamma (default 0.0625 (1/16))
merged. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a DCTCP implementation based on RFC 8257.
It based on the TCP Reno (slow start, fast retransmit, fast recovery, congestion avoidance).
In case of ECN (Explicit Congestion Notification) the DCTCP behaves differently than typical TCP.
Each ECN marked data packet is reflected in one Ack packet (normal TCP sends ECE marked Acks until it receives CWR).
The sender then uses two equations to reduce cwnd
where g is preconfigured variable and M is the ration of bytesMarked/bytesAcked.
and
Also included is one scenario (Incast) with DcTcp config and TcpReno for easy comparison.