sure thing. We do a lot of sweeps so this seemed a natural thing to consider. It's just better done by a script for this type of request.
We've considered hooking up a feedback path (similar to ful-duplex mode) were the server stats are fed back to the client in "real-time." It's a fair amount of work to do this and difficult over lossy UDP. Aslo, what exactly to do with the feedback stats can't be easily generalized. For a feature of this type, we'd probably prototype using python code first and prove a use case before committing it to C or C++. Having ssh pipes to both iperf sessions really makes things a lot easier. Python's asyncio has proven itself to be quite good. Bob On Tue, Dec 1, 2020 at 4:55 PM Craig Reeves <craigree...@ambit-llc.com> wrote: > Bob, > > I appreciate you giving it some consideration. > > On Tue, Dec 1, 2020, 5:52 PM Bob McMahon <bob.mcma...@broadcom.com> wrote: > >> Ok, after some further discussions we've concluded this feature is best >> implemented by a script and not within iperf itself. The primary reason >> being is that an iperf client and iperf server don't have a feedback system >> per the "iperf protocol," i.e. stats on the server are not fed back to the >> client where traffic offered load decisions really need to know them to be >> effective. Note: Iperf does support traffic patterns that don't require >> source and sink knowledge, e.g. a video stream is defined by the source not >> the receiver, so that's supported. >> >> A python script using flows can better achieve this class of problems >> because it has complete flow information in near real time. It also scales >> well. The down side is a python script needs to be written. The hard part >> is mostly done with the flows and openssh modules. >> >> Bob >> >> On Tue, Dec 1, 2020 at 1:18 PM Bob McMahon <bob.mcma...@broadcom.com> >> wrote: >> >>> The flows code is likely broken at the moment. I've been focussed on >>> iperf 2.0.14 itself. >>> >>> The basic requirement is ssh access to both ends used to create a flow >>> via a python interpreter running 3.5 or greater (per the use of python's >>> asyncio <https://docs.python.org/3/library/asyncio.html>.) The iperf >>> hosts don't need to run python just ssh pipes and have a local iperf >>> binary. >>> >>> Async or event based programming >>> <https://en.wikipedia.org/wiki/Event-driven_programming> is a bit more >>> challenging than procedural based so keep that in mind. Simple traffic is >>> easy as it's just installations of flows then flow commence and flow >>> cease >>> <https://sourceforge.net/p/iperf2/code/ci/master/tree/flows/flows.py> which >>> are class methods. (Note: flows is in the experimental state too.) >>> >>> The data is put into a dictionary. The outputs are basically a csv file >>> but that's a pain. So one would probably want to integrate output logic >>> into a python script itself that imports the flows and ssh modules. There >>> is an example with computing a Kolmogorov smirnov table which is used to >>> cluster lots of latency distributions. These distributions can be >>> non-parametric so the KS distance is a good choice for a distance matrix - >>> though not the only one. We'll run thousands of tests and want to cluster >>> results. >>> >>> Bob >>> >>> On Tue, Dec 1, 2020 at 12:58 PM Craig Reeves <craigree...@ambit-llc.com> >>> wrote: >>> >>>> Bob, >>>> >>>> I am good with write side only since we can flip the ends (we normally >>>> have access to both ends we are using for testing). >>>> >>>> I am a python newbie, but I will take your advice and look at it. I >>>> was not aware of the pyflows module. >>>> >>>> >>>> >>>> Thanks, >>>> >>>> Craig Reeves >>>> >>>> "Bridging Communications" >>>> 3520 Lorna Ridge Drive >>>> Hoover, AL 35216 >>>> v.(205) 829-1800 >>>> f. (205) 536-6333 >>>> c. (205) 332-5916 >>>> >>>> >>>> On Tue, Dec 1, 2020 at 2:54 PM Bob McMahon <bob.mcma...@broadcom.com> >>>> wrote: >>>> >>>>> This doesn't seem to require read side rate limiting. I think write >>>>> side would do it. The full-duplex may be useful too. Then debug options >>>>> are like: >>>>> >>>>> - iperf -c <customer host> --full-duplex -u >>>>> --sweep-range=1m,10m,1m --sweep-step 10 -i 1 -l 200 -S 0xc0 >>>>> - iperf -c <customer host> --reverse -u --sweep-range=1m,10m,1m >>>>> --sweep-step 10 -i 1 -l 200 -S 0xc0 >>>>> - iperf -c <customer host> --u --sweep-range=1m,10m,1m >>>>> --sweep-step 10 -i 1 -l 200 -S 0xc0 >>>>> >>>>> which should cover the to/fro directions as well as full duplex (as >>>>> well as set the access class to VOIP priority.) >>>>> >>>>> If you can get clock sync then --trip-times might be useful too. Man >>>>> page here <https://iperf2.sourceforge.io/iperf-manpage.html> >>>>> >>>>> I'd suggest writing a python script using pyflows >>>>> <https://sourceforge.net/p/iperf2/code/ci/master/tree/flows/> if you >>>>> need the full duplex case to be synchronized before each step or for >>>>> triangulated flows (iperf 2.0.14 does support --incr-dstip with -P but I >>>>> doubt this will work for your triangulation needs.) Using a python >>>>> script, >>>>> one can then just use iperf and add the new features via python code. >>>>> >>>>> Note: Adding step sync over UDP with iperf isn't trivial - too much >>>>> handshaking required. It may require a control socket similar to iperf 3. >>>>> We've purposely tried to avoid a TCP socket for UDP tests in iperf 2 so >>>>> it's not something we'd want to do. >>>>> >>>>> The question becomes, should this all be a python script using flows >>>>> or is there enough value add in having iperf do it itself with the >>>>> knowledge there won't be any step synchronization? I see value to the >>>>> sweep >>>>> and step when hunting near congestion vs congestion (buffer bloat) so I'll >>>>> probably add that to iperf itself. >>>>> >>>>> Bob >>>>> >>>>> On Tue, Dec 1, 2020 at 12:25 PM Craig Reeves < >>>>> craigree...@ambit-llc.com> wrote: >>>>> >>>>>> Bob, >>>>>> >>>>>> Good question. So here is a typical scenario. We have a VOIP server >>>>>> sitting inside of a customer's data center behind a firewall (e.g. >>>>>> Sonicwall, PfSense, Palo Alto, etc.). The phone server is sitting on a >>>>>> VLAN inside the customer's network and has a 1Gb NIC. The customer (most >>>>>> of ours are very large) has a 200Mb Internet pipe from an ISP. Depending >>>>>> on the concurrent call volume we ask the customer to do traffic shaping >>>>>> and >>>>>> guarantee us 10Mb of the 200Mb pipe. They call after working fine for 2 >>>>>> years and complain that they can't hear outside callers (UDP traffic from >>>>>> the carrier into the VOIP server is being disrupted). We will run iperf >>>>>> tests from an external location (like on our VM setup at our office, or a >>>>>> VM we have on AWS) and start shooting UDP packets in (usually starting at >>>>>> 1Mb with a small datagram and working our way up to the 10Mb limit). >>>>>> Most >>>>>> of the time we start seeing issues with dropped packets at 3Mb/s. This >>>>>> then forces us to look at the Firewall and see if it is overwhelmed doing >>>>>> the shaping. If not then we setup a "triangulation" where we do iperf >>>>>> tests with 2 separate external sources and see the times when both pipes >>>>>> show dropped packets. If we see consistent drops from 2 separate legs >>>>>> this >>>>>> invariable points to an upstream problem at the ISP. >>>>>> >>>>>> Hope that helps, >>>>>> >>>>>> Craig Reeves >>>>>> >>>>>> "Bridging Communications" >>>>>> 3520 Lorna Ridge Drive >>>>>> Hoover, AL 35216 >>>>>> v.(205) 829-1800 >>>>>> f. (205) 536-6333 >>>>>> c. (205) 332-5916 >>>>>> >>>>>> >>>>>> On Tue, Dec 1, 2020 at 2:08 PM Bob McMahon <bob.mcma...@broadcom.com> >>>>>> wrote: >>>>>> >>>>>>> For UDP, are you expecting the sweep applies both to client and >>>>>>> server at the same time? I guess I'm confused about UDP read size rate >>>>>>> limiting. If the client applies 100m and the server is read limited per >>>>>>> a >>>>>>> sweep there is going to be drops. UDP doesn't flow control the client. >>>>>>> >>>>>>> Bob >>>>>>> >>>>>>> On Tue, Dec 1, 2020 at 11:42 AM Craig Reeves < >>>>>>> craigree...@ambit-llc.com> wrote: >>>>>>> >>>>>>>> Yes, but the percentage of drops is fairly low in a clean network >>>>>>>> pipe. >>>>>>>> >>>>>>>> Craig Reeves >>>>>>>> >>>>>>>> "Bridging Communications" >>>>>>>> 3520 Lorna Ridge Drive >>>>>>>> Hoover, AL 35216 >>>>>>>> v.(205) 829-1800 >>>>>>>> f. (205) 536-6333 >>>>>>>> c. (205) 332-5916 >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Dec 1, 2020 at 1:39 PM Bob McMahon < >>>>>>>> bob.mcma...@broadcom.com> wrote: >>>>>>>> >>>>>>>>> Ok, read side limiting would trigger source flow control for TCP >>>>>>>>> and cause drops per UDP. Is that what you'd expect? >>>>>>>>> >>>>>>>>> Bob >>>>>>>>> >>>>>>>>> On Tue, Dec 1, 2020 at 11:36 AM Craig Reeves < >>>>>>>>> craigree...@ambit-llc.com> wrote: >>>>>>>>> >>>>>>>>>> Bob, >>>>>>>>>> >>>>>>>>>> Yes, we would need the Read side as well. Sometimes we see >>>>>>>>>> packets drop from a single direction (that is actually very common). >>>>>>>>>> Technically we could just flip the roles of the 2 ends so it isn't >>>>>>>>>> critical. >>>>>>>>>> >>>>>>>>>> Craig Reeves >>>>>>>>>> >>>>>>>>>> "Bridging Communications" >>>>>>>>>> 3520 Lorna Ridge Drive >>>>>>>>>> Hoover, AL 35216 >>>>>>>>>> v.(205) 829-1800 >>>>>>>>>> f. (205) 536-6333 >>>>>>>>>> c. (205) 332-5916 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tue, Dec 1, 2020 at 1:32 PM Bob McMahon < >>>>>>>>>> bob.mcma...@broadcom.com> wrote: >>>>>>>>>> >>>>>>>>>>> Also, this would only be on the client. Iperf 2.0.14 supports >>>>>>>>>>> both write and read rate limiting via -b on the server as well as >>>>>>>>>>> client. >>>>>>>>>>> Sweeps wouldn't be supported by the server (or on the read side.) >>>>>>>>>>> >>>>>>>>>>> Any issue with that, or, is there a read size need as well? >>>>>>>>>>> >>>>>>>>>>> Bob >>>>>>>>>>> >>>>>>>>>>> On Tue, Dec 1, 2020 at 11:29 AM Craig Reeves < >>>>>>>>>>> craigree...@ambit-llc.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Bob, >>>>>>>>>>>> >>>>>>>>>>>> Thanks, we'd be more than happy to test it out. Just let me >>>>>>>>>>>> know and I'll get my engineering group to check it out. >>>>>>>>>>>> >>>>>>>>>>>> Craig Reeves >>>>>>>>>>>> >>>>>>>>>>>> "Bridging Communications" >>>>>>>>>>>> 3520 Lorna Ridge Drive >>>>>>>>>>>> Hoover, AL 35216 >>>>>>>>>>>> v.(205) 829-1800 >>>>>>>>>>>> f. (205) 536-6333 >>>>>>>>>>>> c. (205) 332-5916 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Dec 1, 2020 at 1:21 PM Bob McMahon < >>>>>>>>>>>> bob.mcma...@broadcom.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Craig, >>>>>>>>>>>>> >>>>>>>>>>>>> Any reason you need iperf 3 for this and can't use iperf >>>>>>>>>>>>> 2.0.14? >>>>>>>>>>>>> >>>>>>>>>>>>> We are in the process of early field test for iperf 2.0.14. >>>>>>>>>>>>> <https://sourceforge.net/projects/iperf2/> This is probably >>>>>>>>>>>>> an experimental feature that could be added last minute. We'd >>>>>>>>>>>>> need you to >>>>>>>>>>>>> test if willing. Our goal is to release 2.0.14 early 2021. >>>>>>>>>>>>> >>>>>>>>>>>>> We're out of short options and would need to use long options. >>>>>>>>>>>>> Maybe something like >>>>>>>>>>>>> >>>>>>>>>>>>> --sweep-range=1m,100m, 1m (start, final, step size) defaults >>>>>>>>>>>>> to 1m,10m,1m with just --sweep-range >>>>>>>>>>>>> --sweep-steptime 1.5 (units of seconds) defaults to 1 second >>>>>>>>>>>>> if --sweep-range and no --sweep-steptime >>>>>>>>>>>>> >>>>>>>>>>>>> Note that --sweep-range has optional arguments (per the =) and >>>>>>>>>>>>> sweep-steptime has a mandatory argument (if used.) >>>>>>>>>>>>> >>>>>>>>>>>>> All, do comment on more intuitive command line options. >>>>>>>>>>>>> >>>>>>>>>>>>> Bob >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Bob >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Dec 1, 2020 at 8:12 AM Craig Reeves < >>>>>>>>>>>>> craigree...@ambit-llc.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> First, many thanks for putting this tool together and sharing >>>>>>>>>>>>>> it. It has proved invaluable over the years when dealing with >>>>>>>>>>>>>> ISPs. >>>>>>>>>>>>>> >>>>>>>>>>>>>> That being said, we regularly encounter ISPs that don't think >>>>>>>>>>>>>> their network has issues. Most of the time we can pinpoint to a >>>>>>>>>>>>>> switch or >>>>>>>>>>>>>> connection that is over saturated. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I would love to see a feature that allowed us to set a >>>>>>>>>>>>>> starting throughput, incremental step up/down throughput, and >>>>>>>>>>>>>> interval. >>>>>>>>>>>>>> This would help find the point at which issues begin. Here is >>>>>>>>>>>>>> the idea: >>>>>>>>>>>>>> >>>>>>>>>>>>>> iperf3 -c 192.168.1.100 -bt 1M -et 10M -st 10s -t 100 -u >>>>>>>>>>>>>> >>>>>>>>>>>>>> -bt = beginning throughput >>>>>>>>>>>>>> -et = ending throughput >>>>>>>>>>>>>> -st = step up/down time >>>>>>>>>>>>>> >>>>>>>>>>>>>> The thinking is that iperf3 would start a test (UDP or TCP) >>>>>>>>>>>>>> at 1Mb/s throughput, and then ramp up in 1Mb/s steps ever 10 >>>>>>>>>>>>>> seconds. >>>>>>>>>>>>>> >>>>>>>>>>>>>> This eliminates the need to do individual runs with different >>>>>>>>>>>>>> settings. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thank you, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Craig Reeves >>>>>>>>>>>>>> >>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>> Iperf-users mailing list >>>>>>>>>>>>>> Iperf-users@lists.sourceforge.net >>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/iperf-users >>>>>>>>>>>>>> >>>>>>>>>>>>>
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ Iperf-users mailing list Iperf-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iperf-users