ndt-server icon indicating copy to clipboard operation
ndt-server copied to clipboard

RFC: Add user-specified parameters for transfer byte limits

Open stephen-soltesz opened this issue 2 years ago • 2 comments

This change is a prototype that would add user parameters to NDT7 measurements and archival results. The current implementation is not ready to merge in its current form. This is an RFC.

The current implementation supports the following parameters:

  • param_close_after_download_bytes_acked - the server will close the websocket conn after observing tcpinfo.BytesAcked greater than the given value.
  • param_close_after_upload_bytes_received - the server will close the websocket conn after observing tcpinfo.BytesReceived greater than the given value.
  • param_cubic_download - parsed but not enableable. Included as an illustration of how we could enable this or other options in the future.

In the first two cases, the measurement/observation events depend on the measurer memoryless sample frequency - meaning that the time between actually reaching the BytesAcked or BytesReceived threshold (kernel state) and observing that (ndt-server) could be up to MaxPoissonSamplingInterval (625ms). So, there is a fundamental imprecision around when the server observes and closes the connection; there is no guarantee about how much data is actually transferred, only that it is at least the amount requested.

Currently, the parameter value is in bytes and unconstrained. Ideally, we would limit these values to a fixed set of thresholds, e.g. 1, 2.5, 5, 10, etc..


This change is Reviewable

stephen-soltesz avatar Jul 20 '22 20:07 stephen-soltesz

Pull Request Test Coverage Report for Build 1562

  • 7 of 38 (18.42%) changed or added relevant lines in 3 files are covered.
  • 7 unchanged lines in 4 files lost coverage.
  • Overall coverage decreased (-1.3%) to 80.373%

Changes Missing Coverage Covered Lines Changed/Added Lines %
ndt7/download/sender/sender.go 2 8 25.0%
ndt7/upload/sender/sender.go 2 9 22.22%
ndt7/handler/handler.go 3 21 14.29%
<!-- Total: 7 38
Files with Coverage Reduction New Missed Lines %
ndt5/ndt5.go 1 89.5%
ndt5/c2s/c2s.go 2 73.21%
ndt5/protocol/protocol.go 2 83.86%
ndt5/web100/web100_linux.go 2 94.44%
<!-- Total: 7
Totals Coverage Status
Change from base Build 1559: -1.3%
Covered Lines: 1769
Relevant Lines: 2201

💛 - Coveralls

coveralls avatar Jul 20 '22 20:07 coveralls

FYI: @bassosimone @robertodauria @mattmathis your comments/feedback are welcome. Regard everything as having a question at the end: "this is how I built a prototype; is there a better way to do this?"

stephen-soltesz avatar Jul 20 '22 22:07 stephen-soltesz

Obsolete

stephen-soltesz avatar Jun 27 '23 00:06 stephen-soltesz