Brainstorm Session - Integrated Tomato Internet Speed Test

Discussion in 'Tomato Firmware' started by WRD - EasyTomato, Jul 22, 2012.

  1. WRD - EasyTomato

    WRD - EasyTomato Networkin' Nut Member

    Hey everyone,

    I've got another feasibility question, so bring the smart ideas...

    We're working on a Tomato version called EasyTomato (the post about it is here for some background). We want to have an automatic bandwidth tester built into EasyTomato. How should we go about doing this to make it as accurate and unobtrusive as possible?

    Knowing the connection speed lets us present bandwidth data in a FAR more useful fashion to our target audience. Beyond this, it allows us to look into automated QoS setup and integrated EasyTomato caching server recommendations down the road.

    Right now bandwidth graphs are dynamically scaled, which makes them look nice, but doesn't give a clear picture of how much bandwidth is being consumed as a percentage of the total available.

    We want to use bandwidth graphs to help nontechnical users detect potential bandwidth hogs and then go talk to them (this is our main enforcement method). We will do this by overlaying (on mouse over) bandwidth per IP data on total consumed, with a line showing maximum possible (y axis max). Fixing the Y axis to the maximum upload and download speeds (perhaps two graphs, we will figure out how to present this in way that makes sense) shows very clearly how saturated the entire network is as well as showing per IP, how much of the total network resources each user is consuming.

    Do remember, we can't use is simply total consumed bandwidth as this will lead to false positives. Alice is the only person in the office on Sunday and checks her mail. She has used 100% of the consumed bandwidth (what current graphs would show), but has only used 0.1% of the available bandwidth (what we care about and what a fixed Y graph would show).

    How and How Often?
    We were kinda hoping you all could help us out with this part :).

    These connections may be fairly dynamic in speed. Sat connections can be affected by things such as rain. Sometimes these connections are shared by an area, as a cable connection is so you are fighting with neighbors for bandwidth.

    Because we do have access to all of the router bandwidth data (full WAN data) we don't have to clear off the network to get an accurate speed, unlike running a bandwidth test from a computer browser. If the bandwidth test is 50% slower due to someone useing 50% of the network for something else, fine. We are going to look at total throughput during that time, so it doesn't matter.

    In fact, if we know that over a given time the connection would be saturated (a few parts of the graph flat topping at the same bandwidth), we could simply use those saturation points as our network maxes. Not sure we can make this assumption though.

    Things to keep in mind when answering.
    Manual testing is not an option (also could run into the browser issue stated above). Our end users are teachers or nurses in the developing world with no IT experience and it simply won't happen.

    A very high percentage of our users are going to make decisions based on the data we directly present them. It's our job to make them come to good networking conclusions based on what we present them.

    Ok! Lets hear some great ideas!!

    The EasyTomato Team
  2. WRD - EasyTomato

    WRD - EasyTomato Networkin' Nut Member

    Nothing?? Come on, this is a cool problem to solve! :)
  3. lancethepants

    lancethepants Network Guru Member

    So you'll just have to figure out someway to saturate the link. Generally for your browser based speed test, there are a variety of mirrors, and one is picked for you depending on location. Maybe not so important in this case, as we're just saturating the link (and not looking at ping so much) . But at least you'll need some sort of router script to connect to some server and begin a file transfer or something to saturate things.

    Perhaps it could download some file to ram, then upload that same file back to the server, to get both your download. and (possibly more important) upload speeds. Just start and stop monitoring throughput when starting and stopping the transfer. Perhaps you could run a cron job, to check and auto-adjust every so often, and/or take note of total bandwidth throughput at different intervals in the day and auto-adjust to how you may expect your neighbors with whom you share bandwidth to clog up the works (cron sounds easier :) )

    Would be nice to have the graphs show (or possibly toggle) the consumed bandwidth to total available bandwidth as you mentioned. This has been a request from several posters, and I'm sure it would find its way up-stream when implemented.
  4. lancethepants

    lancethepants Network Guru Member

    The interesting thing with QOS that kind of boggles my mind a bit (when not thinking too hard about it), is that you're effectively slowing down your internet, to make it faster, lol. As I'm sure you're familiar with QOS, the #1 rule it seems, is to never saturate the link. Once this happens, QOS may as well go out the window, because it has lost control when it has nothing to work with. This does kind of stink to think you have to cut your throughput of an already slow connections, but the overall return will be much greater.

    Toastman's QOS rules are pretty good. I usually go with all his defaults, add a couple of voip devices and media devices that need a bit of prioritizing. Toastman's rules are probably the best base to go with, especially with environments that will have many users, and where you have no control of how users will be using your bandwidth.

    I think it's important to make clear, possibly in the gui, that enabling qos should make it faster for everyone as a whole. I could imagine a situation where someone notices, on a congested network, that his file transfer is going more slowly with QOS enabled. Deciding that QOS is the culprit (which it is), and that QOS sucks (which it doesn't) decides to turn it off, much to the frustration of everyone else on the network. QOS will be very vital on these sorts of networks, because it will take literally very little to saturate the link. As this should scale to all types of network speeds, I think you can get some good feedback from beta testers with the different speeds we may have in our various locations, and also may be of some interest upstream too.
  5. WRD - EasyTomato

    WRD - EasyTomato Networkin' Nut Member

    Thanks for the thoughts. This all sounds pretty reasonable to me and right along the lines of what we were thinking. We will have toggleable y-axis scaling too, just need to figure out how to present it so it makes sense.(I don't mean technically), but this isn't a show stopper.

    What about the bandwidth test specifically? How do you think we would run that? Whose servers can we use? Do we need to find ones that are close and how would we as we aren't running this through the browser?

    I've read Toastman's long QoS paper and it all makes sense to me. I'm happy with his defaults and that's likely all we would use (as with everything else EasyTomato on/off only). You are right on the warning people that its improving overall network performance, not an individuals computer.

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice