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

feature/issue40 #42

Merged
merged 1 commit into from
Dec 9, 2015
Merged

feature/issue40 #42

merged 1 commit into from
Dec 9, 2015

Conversation

sgalgano
Copy link
Member

@sgalgano sgalgano commented Dec 4, 2015

Under high traffic load and certain datarate configurations, when
downstream traffic arrives it is possible for the packet queue to be
empty but the previous packet end-of-transmission (EOT) time to still
be in the future. Failure to check for that condition leads to
immediate transmission of the newly arrived packet instead of waiting
for EOT.

Additional code was added to processDownstreamPacket() to test for a
currentEndOfTransmissionTime_ in the future in order to determine if a
callback should be scheduled or if the newly arrived packet can be
immediately sent.

Additional code was added to handleDownstreamQueueEntry() to engage
transmission logic even if the scheduled handler had been short
circuited as long as there exists a packet to transmit in the queue
and currentEndOfTransmissionTime_ has past.

Configurable jitter and fixed delay logic was modified to apply the
values when figuring out currentEndOfTransmissionTime_ for the
purposes of determining the earliest possible time another packet may
be transmitted.

See #40

downstream traffic arrives it is possible for the packet queue to be
empty but the previous packet end-of-transmission (EOT) time to still
be in the future. Failure to check for that condition leads to
immediate transmission of the newly arrived packet instead of waiting
for EOT.

Additional code was added to processDownstreamPacket() to test for a
currentEndOfTransmissionTime_ in the future in order to determine if a
callback should be scheduled or if the newly arrived packet can be
immediately sent.

Additional code was added to handleDownstreamQueueEntry() to engage
transmission logic even if the scheduled handler had been short
circuited as long as there exists a packet to transmit in the queue
and currentEndOfTransmissionTime_ has past.

Configurable jitter and fixed delay logic was modified to apply the
values when figuring out currentEndOfTransmissionTime_ for the
purposes of determining the earliest possible time another packet may
be transmitted.

See #40
@eschreiber-alink
Copy link
Member

This fix passes regression tests. Ok to merge to develop.

Note that the rfpipe flowcontrol test results disagree with previous results - but this is not due to the changes here. The discrepancy is dependent on the kernel version. The flowcontrol=on flow fails when running 4.2.6-301 kernel (current Fedora 23 kernel), but is ok with 3.13.0-71-generic (current Ubuntu 14.04). tun_flowctl (https://github.com/adjacentlink/tun_flowctl) will need to be updated to address.

@sgalgano sgalgano merged commit 7fb2090 into develop Dec 9, 2015
@sgalgano sgalgano deleted the feature/issue40 branch December 9, 2015 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants