Open dtaht opened 8 years ago
You're going to have to be a bit more specific if you want this to turn into a proper feature request...
In TEACUP, we can generate many TCP/UDP traffics with different characteristics and durations as TEACUP provides very flexible traffic generates. The experiments with four TCP flows (figure 6 for example) in TR-160418A (mentioned by Dave), aim to demonstrate the effectiveness of the AQM when new flows join and leave the bottleneck with different configurations (emulated RTT and traffic shaper). The scenario is as follow: we have four TCP flows each runs for 60 seconds and each starts 10s after the previous one i.e. t=0, 10, 20, 30.
I did up a quick and dirty emulation of the 4 flows test in flent. Perhaps it is time to have a basic test example that also takes a tcpdump, and I dearly wanted to add a single measurement flow of some sort.
## -*- mode: python; coding: utf-8 -*-
include("netperf_definitions.inc")
DESCRIPTION="Four TCP upload streams; 10 sec start delay"
DEFAULTS={'PLOT': 'totals'}
DATA_SETS = o([
('TCP stream 1',
{'command': find_netperf("TCP_STREAM", LENGTH, HOST),
'units': 'Mbits/s',
'runner': 'netperf_demo',}),
('TCP stream 2',
{'command': find_netperf("TCP_STREAM", LENGTH, HOST),
'delay': 10,
'units': 'Mbits/s',
'runner': 'netperf_demo',}),
('TCP stream 3',
{'command': find_netperf("TCP_STREAM", LENGTH, HOST),
'delay': 20,
'units': 'Mbits/s',
'runner': 'netperf_demo',}),
('TCP stream 4',
{'command': find_netperf("TCP_STREAM", LENGTH, HOST),
'delay': 30,
'units': 'Mbits/s',
'runner': 'netperf_demo',}),
])
PLOTS = o([
('totals',
{'description': 'Bandwidth plot',
'type': 'timeseries',
'series': [{'data': 'TCP stream 1',
'label': 'Stream 1'},
{'data': 'TCP stream 2',
'label': 'Stream 2'},
{'data': 'TCP stream 3',
'label': 'Stream 3'},
{'data': 'TCP stream 4',
'label': 'Stream 4'},
]},),
('totals_5s',
{'description': 'Bandwidth plot, 5 second smoothed sample size',
'type': 'timeseries',
'series': [{'data': 'TCP stream 1',
'label': 'Stream 1',
'smoothing': 5.0/STEP_SIZE},
{'data': 'TCP stream 2',
'label': 'Stream 2',
'smoothing': 5.0/STEP_SIZE},
{'data': 'TCP stream 3',
'label': 'Stream 3',
'smoothing': 5.0/STEP_SIZE},
{'data': 'TCP stream 4',
'label': 'Stream 4',
'smoothing': 5.0/STEP_SIZE},
]},),
('box_combine',
{'description': 'Summarising combined tests',
'type': 'box_combine',
'cutoff': (DELAY,0),
'group_by': 'series',
'axis_labels': ['Mean bandwidth (MBits/s)'],
'series': [{'data': 'TCP stream 1',
'label': 'Stream 1',
'combine_mode': 'meta:MEAN_VALUE'},
{'data': 'TCP stream 2',
'label': 'Stream 2',
'combine_mode': 'meta:MEAN_VALUE'},
{'data': 'TCP stream 3',
'label': 'Stream 3',
'combine_mode': 'meta:MEAN_VALUE'},
{'data': 'TCP stream 4',
'label': 'Stream 4',
'combine_mode': 'meta:MEAN_VALUE'},
]},),
])
include("common.inc")
http://caia.swin.edu.au/reports/160418A/CAIA-TR-160418A.pdf has some nice tests. It would be good to have identical tests to these (use their tools to analyze the captures, flent to drive and analyze via it's own methods).
They have another paper, somewhere, using 3 staged flows, which would be even more useful to duplicate on a regular basis.