Slashdot Mirror


Morality of Throttling a Local ISP?

An anonymous reader writes "I work for a small (400 customers) local cable ISP. For the company, the ISP is only a small side business, so my whole line of expertise lies in other areas, but since I know the most about Linux and networking I've been stuck into the role of part-time sysadmin. In examining our backbone and customer base I've found out that we are oversubscribed around 70:1 between our customers' bandwidth and our pipe. I've gone to the boss and showed him the bandwidth graphs of us sitting up against the limit for the better part of the day, and instead of purchasing more bandwidth, he has asked me to start implementing traffic shaping and packet inspection against P2P users and other types of large downloaders. Because this is in a certain limited market, the customers really only have the choice between my ISP and dial-up. I'm struggling with the desire to give the customers I'm administering the best experience, and the desire to do what my boss wants. In my situation, what would you do?"

20 of 640 comments (clear)

  1. bill, don't throttle by seanadams.com · · Score: 5, Insightful

    This is not a hard problem. You can not maintain a reasonable oversell ratio unless you have low average usage. Yes, one way to get that is throttling, but it's difficult to do that in an effective way that won't piss off your customers.

    What you should do is tell them they get 40G/mo or whatever, plus a usage fee above that, and let the customers throttle themselves if they want to. If you want to be a nice guy about it, you could give them the option of being auto-throttled or suspended if they approach the limit, so they don't get an unexpected bill. Of course whatever you do, you'll need to revise your terms of service.

    Voila, you maintain low pricing and good performance for everyone, because the p2p guys will police themselves now. If you have customers that routinely transmit hundreds of GB because they're a professional video editor or something, then they won't mind paying for the bandwidth.

    1. Re:bill, don't throttle by volsung · · Score: 5, Insightful

      Amen, but to add to this: If you are going to institute some kind of usage billing, it is *absolutely* critical you give people the tools to monitor their usage. At a minimum, there should be a web page that customers can view their current usage (no more than 24 hours old) relative to the quota. For bonus points, give people the ability to get email updates when they pass predefined levels, or if their one-day usage exceeds some value.

    2. Re:bill, don't throttle by commodore64_love · · Score: 5, Interesting

      >>>it doesn't sound at all like subby has the freedom to change the ToS or implement hard caps.

      That depends. If the original contracts said "unlimited time" not unlimited gigabytes, then yes the ISP can move to a metered model. I'd implement relatively easy limits like "100 gigabytes maximum" with $1 for every gigabyte over the limit. This would catch the most egregious users, and any extra dollars can be used to add more lines to handle more people.

      Oh and to justify it to the boss, I'd cite the recent court case which states ISPs may not discriminate against P2P traffic. i.e. It's effectively illegal to filter traffic, but not illegal to implement metered usage such that customers reduce usage voluntarily.

      --
      "I disapprove of what you say, but I will defend to the death your right to say it." - historian Evelyn Beatrice Hall
    3. Re:bill, don't throttle by Cimexus · · Score: 5, Interesting

      Yep - that's how they do it here in Australia and despite all the flak we cop on Slashdot about our metered ISP accounts, the user-pays system actually avoids a lot of the problems you see with ISPs overseas.

      - P2P throttling? Not here.
      - Artificial speed shaping or restrictions. Not here, unless you surpass your monthly limit on a flat rate plan.
      - Forbidding servers on residential connections? Not here.
      - Deep packet inspection and other traffic manipulation? Not here.
      - Bad contention ratios. Not here (on the good ISPs at least).

      The 70:1 contention ratio in the summary is pretty shocking ... good ISPs here (iiNet, Internode etc) have 10:1 or less and buy more bandwidth proactively, before they actually need it. They can afford to do that, and keep their links running at 50-70% capacity, BECAUSE it's a user pays system. Additional bandwidth use means more revenue for the ISP and hence it's attractive to them to keep their pipes un-congested and fast.

      The other advantage is that light users can pay pretty small amounts for a basic connection. My parents just use email and so I put them on a TINY 1GB per month plan. They never even use more than half of that, and the cost savings are significant (consider that they pay only 20 bucks a month, but larger plans of 50, 100, 200 GB per month cost 60-100 bucks).

      So if you absolutely cannot upgrade your links, the "bill, don't throttle" approach is more attractive. It's less work than setting up packet shaping infrastructure and rules, won't affect the large majority of your customers, and will make sure that top 5% of leechers keep their habit under control a bit better (or pay for a higher account, which means more money for you!).

      Oh and one last thing. Don't bill for excess usage - just shape their connection. Because if Joe Sixpack gets a virus and their connection downloads 100s of GB without their knowledge, they are not going to want a huge bill. The way most ISPs do it in Australia is after you reach your monthly limit (say, 80 GB at 24 Mbps), they'll shape your traffic to a slower speed (e.g. 128 kbps). That's still fast enough to browse the web and stuff, but will ease backhaul congestion due to P2P etc.

    4. Re:bill, don't throttle by morgan_greywolf · · Score: 5, Informative

      I agree, but with the caveat that you have to do what your boss tells you to do. By all means, present this idea to the boss, but be absolutely sure that you are complying with the requirements of the job you are assigned: after all, in this economy, you do not want to give your boss a reason to fire you.

      You will definitely have to consult your boss about this, and you would be remiss in not telling your boss to send the TOS to your company's attorney and have him advise on the legalities regarding whatever plan you and your boss ends up deciding on. You don't want your company to get sued and you don't want anyone to say it's your fault because that would be another reason you might get fired.

      In the end, look over the TOS, and if your boss asked you to shape it and shaping doesn't meet with the TOS, by all means CYA and ask your boss to send his request to you in writing. Preferrably signed. Digitally signed e-mail might be okay, too. Just make sure you have some proof of what you were ordered to do, because you want to be sure if there is any fallout from the shaping that you can prove you were just doing as ordered.

      It bears repeating so I'll say it again: always CYA.

    5. Re:bill, don't throttle by bigcmoney · · Score: 5, Insightful

      I run a similar sized WISP. All I do is use NFSEN to see who is using the bandwidth, and then give them a call. Almost all the time the customer's kids are doing the downloading, or they have a virus. This level of service really makes the customer appreciate doing business with you.

    6. Re:bill, don't throttle by mysidia · · Score: 5, Insightful

      There's really very little moral question here, you are selling a service. The quality of the bandwidth you use, and whether the same amount of bandwidth is available in bulk heavy usage, for bulk file transfers, as for normal, expected usage patterns, is your call as an ISP.

      And for the most part ISPs don't buy a bit of internet bandwidth, for every bit of subscriber bandwidth. This practice is not oversubscription (per se), you should calculate the expected usage patterns for your average subscriber, and multiply by your total number of subscribers, and add 'safety' factors for flash crowds; as for P2P applications and "bulk data transfers", you should do the math there as well, and determine, what proportions of your traffic are P2p transfers.

      Keeping usage of heavy users under reasonable control just as much about providing everyone a quality service, as it is about 'saving on bandwidth bills' -- because, even if you add more bandwidth, downloaders will manage to eat it, if you don't put something in place.

      And ISPs all over the country are taking measures to limit P2P's usage, so a few users don't get to hog all the network resources, or to overutilize.

      This is not so much a justification based on the theory "everyone is doing it", but more a justification based on "your consumers probably expect you to do this" (do your best to block, prevent, or control, excessive usages from other subscribers that would degrade their services)

      What you should do is tell them they get 40G/mo or whatever, plus a usage fee above that, and let the customers throttle themselves if they want to....

      He only has 400 customers. There's not enough play here to provision capacity on demand, if a few users want to heavily use the service, he may need to get commitments for this to be affordable.

      They can stay below those monthly limits and still cause major problems, if they happen to all be on at the same time fully utilizing their pipe fairly continuously.

      Also, consumers will rightly be concerned about the possibility of malware or unwanted DoS attacks artificially inflating their bandwidth bill.

      There are a lot of good things to be said for using technologies like NBAR and policing to reduce the flow of unwanted traffic.

      Actual general shaping is not recommended, as it will very possibly degrade proper operation of the service, for non-bandwidth-hungry users.

    7. Re:bill, don't throttle by mysidia · · Score: 5, Interesting

      That depends. If the original contracts said "unlimited time" not unlimited gigabytes, then yes the ISP can move to a metered model. I'd implement relatively easy limits like "100 gigabytes maximum" with $1 for every gigabyte over the limit.

      This actually penalizes the guy who downloads a heck of a lot, but he times his downloads so they always run from 11 pm to 5 am.

      While it rewards all those folks who download a 10th that, but always max out the link from 4:30pm to 9:00pm, with P2P, and streaming download, at the same time all the other subscribers are trying to surf the web and get decent performance.

      Usage-based billing doesn't make any sense -- ISPs often get burstability pay for a CIR, to the 95th percentile.

      Consumers should too... That is, you should be able to burst your connection to download files, for certain amounts of time.

      Each subscriber should individually agree to how much bandwidth they get to use on a continuous basis, and how much, and how long they will be allowed to burst, before either being billed or capped.

      It shouldn't cost you, unless you stay bursted (I.E. max out your connection all the time during peak hours)

      And to be consumer friendly, they should provide better terms for off-peak hour time, to actually reduce the number of even normal downloaders.

    8. Re:bill, don't throttle by astarf · · Score: 5, Informative

      Oh and to justify it to the boss, I'd cite the recent court case which states ISPs may not discriminate against P2P traffic. i.e. It's effectively illegal to filter traffic, but not illegal to implement metered usage such that customers reduce usage voluntarily.

      Minor point, but it was an FCC hearing against Comcast not a court case. Part of the problem was that Comcast ran around terminating connections behind your back -- and without notifying customers via TOS or any other method.

      When it comes to throttling, seanadams had it exactly right: you have to provide the auto-throttle option so that people don't get slammed with a huge bill at the end of the month. Very few people want to sit around adding up their monthly bandwidth usage, so it's a good idea to start warning users as they approach the limit. Unless, of course, slamming people with a huge overage bill is part of your revenue-maximizing business model.

    9. Re:bill, don't throttle by MrEricSir · · Score: 5, Insightful

      If my ISP called, that's what I'd tell them too.

      "Yeah, my 'kids' must be 'downloading' a lot of stuff. Don't worry I'll go spank them until they stop."

      --
      There's no -1 for "I don't get it."
  2. You're stuck. by numbski · · Score: 5, Insightful

    Here's the thing - you have no choice. Do the shaping.

    That said - form a compelling argument for doing the right thing, and present that to your boss. Don't defy him, but give him a reason to reconsider. In the meantime, do as you're told. You can always undo shaping. Don't screw your employment in the interim.

    --

    Karma: Chameleon (mostly due to the fact that you come and go).

    1. Re:You're stuck. by ssj152 · · Score: 5, Insightful

      Better read the current terms of service first - yanking the rug before changing the terms of service frequently leads to lawsuits. Be nice to the pointy-haired one, but point out the likelihood of legal problems here. Also, I liked the first responder 'seanadams' suggestion as an actual solution - if there is no way to actually get the bandwidth upped.

      --
      Be Obscure Clearly
      There are visual errors in time as well as in space.
  3. Add a free period by grahamsz · · Score: 5, Insightful

    I had a situation once where my bandwidth was metering during regular hours but free from midnight - 7am. Any smart heavy user will set up their downloads to happen during the free period and take the load off the network during peak hours. I've never understood why more ISPs don't do that.

    If you just tell people they have a 40G cap then they'll feel entitled to use it whenever they want, and you really can't argue with that.

  4. Screw morality. Get pragmatic: prioritize traffic. by hessian · · Score: 5, Insightful

    Morality is a tool for the herd to feel more important than their leaders. Instead, get pragmatic: how can you make this business work for most people?

    You probably want heavy downloaders to use another service, anyway. You might even consider setting up two plans, one for ueber-users and one for normal users.

    However, I would prioritize traffic. Email, web, SSH, et al come first; after that, all p2p protocols in order of usefulness.

    You need to define your business audience. If it's people who are going to check the mail and web surf, and 5% of your customers are p2p users, cut out the p2p users and focus on the people you want to serve.

  5. shape and/or prioritize that traffic by itzdandy · · Score: 5, Insightful

    Im wondering what you have for backbone that you are 70:1 oversubscribed. If you deploy 768/256 connections with 400 customers sounds like a whopping 3 T1 lines (~4.5Mb/s). if you do a more standard 1.5MB thats 6 T1 lines(~9Mb/s).

    Maybe you should look at your upstream provider and see if you can get a fractional T3 to replace the T1s if my math is anywhere near correct. You will likely have a longer contract to sign but you may be able to pull in 10Mb/s for less than you currently pay. Then you could try to match the current expense.

    There are other ways to trim back your backbone usage. Consider a cluster of transparent proxy servers. You can get pretty aggressive with the cacheing mechanise in squid and you can easily balance the cluster with DNS and not have to worry about session awareness as clients also cache DNS temorarily so each client will use the same proxy for their browsing session.

    Certainly some sort of QoS will work for you and lessen the need to directly throttle.

    If you just throw some proxying in there and give http and https higher priority and do some packet inspection to sniff out the P2P traffic and drop it down a level you will put off the inevitable need to grow your bandwidth for a while.

    if my math is correct on 1.5Mb/s cable, you look like you have a per users upstream cost of just $7.50 each. That is pretty low. Too low.

  6. Re:Striking a balance..... by z0idberg · · Score: 5, Insightful

    due to the abuse of a minority of users,

    If they signed for and are paying for unlimited internet access then where exactly does the abuse part come into it?

  7. Re:Striking a balance..... by meerling · · Score: 5, Insightful

    As they don't know what the P2P traffic is, you can't say it's illegal. Statistically, it probably is violating a copyright, but that isn't sufficient justification for singling out the P2P traffic alone. That would be like sending everyone in your city with a drivers license a traffic ticket, because you just know that virtually all of them will speed, roll through a stop sign, or commit some other traffic violation this year.
    Besides, he didn't even mention what kind of traffic was going on during peak hours, just that the company is (my interpretation) screwing customers by oversubscribing them 70:1 (his statement).
    It's possible that their biggest traffic spike is youtubers. Until someone does an analysis, you just won't know.

  8. Do it by usage, not by protocol. by subreality · · Score: 5, Interesting

    In my opinion, the best solution is to strongly throttle large bandwidth usages (P2P, FTP and NNTP streams, etc) during the periods of near-capacity, and automatically relax the filtering during off hours.

    That's one way... Here's another:

    Instead of trying to choose which protocols are heaviest usage, traffic shape people based on what the actual criteria that you care about is: Too much overall usage over long periods.

    In Linux terms, set up a HTB with a queue for every customer. Set the base rate to whatever your backbone speed is (1/70th of the customer's line rate), the ceil rate to their line rate, and give them a nice big bucket - say, 120 seconds times their line rate.

    Then, people who are normal users - web surfing, downloading an occasional email attachment, etc - will go full bore, any time they want it. People who are bittorrenting will go full speed for a couple minutes, and then decrease down to whatever bandwidth is available. At night, if there's a lot of backbone free, it'll go fast. At 7 PM, they get best effort on whatever is available.

    This is a very simplified example. You could additionally shape them so that their web and email will take priority over bittorrent when they're at the bottom of their token bucket, or other fine tuning...

    The basic message I'd like to get across is: you don't have to shape based on protocol, because you care about the usage, not the protocol. Just shape based on usage, and let them work out which protocols they want to use.

    1. Re:Do it by usage, not by protocol. by subreality · · Score: 5, Informative

      HTB is Hierarchical Token Bucket, a CBQ (Class Based Queueing) discipline for Linux. It lets you create a hierarchy of queues for a network link. The "Token Bucket" part means each leaf and node in the tree has a "bucket" that constantly, slowly fills with tokens. Sending a byte removes a token. So, on average, you're only guaranteed the fill rate, but if you haven't used it for a bit, you can send a burst until your bucket is empty. Extra tokens can be borrowed between nodes if they're not used by the others, up to the max rate. Thus you get minimum guarantees, max limits, and bursts, such as being able to quickly fetch a web page even if the link is full from others' usage, if you haven't used up your tokens.

      For instance, you could have Customer A, Customer B, and Customer C at the top level, and then they each have a second level of HTTP, BitTorrent, and SSH. Customer A and B get a rate of 128k, and C gets 512k since he pays extra as a business customer. They all have a max rate of 6M, since that's the speed of their DSL lines, and a burst size of 1MB. Then, they have SSH (with a small rate and a small burst), HTTP (with a high rate and a large burst), and BitTorrent (with a 1k rate, and a small burst).

      As long as Customer C isn't using any bandwidth, A and B can use it all. As soon as C wants to use some, he first gets his guaranteed 512k - no matter what - and then they all split any leftovers in proportion to their committed rates (So A gets a share, B gets a share, C gets four shares). If C only wants 512k, A and B each get to split all the leftovers evenly.

      If A is using BT like mad, but then opens an HTTP connection, it'll be allowed most of his net connection (it has a high rate, but still lower than the full line speed). BT will automatically (and instantly) be throttled until HTTP is done. When he types on the SSH connection, it'll use little bits of its burst speed to refresh the window instantly, but its small rate won't let it consume the whole net if he accidentally cats /dev/urandom.

      Sounds great, right? There are a few gotchas: You can only queue packets like this when *sending*. What're you going to do, receive a packet from the slow link and then delay it before sending it over the fast one that's not saturated? (Well, yes, you can, and it makes a limited amount of sense to fine tune TCP's flow control, in addition to selectively dropping packets to make it back off, and other tricks.) It's good, but it doesn't necessarily make optimal tradeoffs between latency and bandwidth - HFSC is an attempt to address this. Also, this is a moderately heavyweight way to do things. It has to spend some CPU classifying packets, and memory to track the buckets' state, so other queueing disciplines and schedulers exist that work on other methods (such as statistical, instead of discrete tracking), that are more appropriate for very large ISPs. Also, as a large ISP, you're going to be using Cisco, not Linux, for routing. :) But Cisco has sophisticated QOS as well.

      Despite how complex this sounds, even using the simplest case on your home router will make a huge improvement in the weak side of your DSL line, the uplink. Several of the open source WIFI router firmwares support it out of the box for this reason. I have survived having my web site on my DSL linked to the front page of a popular site known to bring servers to their knees, without any lag in SSH or games, or interruption of mail or other services. We only noticed because our bulk transfers slowed to a crawl, as intended.

      Learn more:

      HTB: http://luxik.cdi.cz/~devik/qos/htb/ (the user guide has a good overview and pretty graphs)

      HFSC: http://linux-ip.net/articles/hfsc.en/ (More pretty graphs and good explanation)

      Linux Advanced Routing and Traffic Control list: http://lartc.org/ (The howto is out of date, but very enlightening)

  9. Is oversubscription really "evil"? by Illusion · · Score: 5, Insightful

    Your details are a bit vague, but let's pretend "your pipe" is a single DS3 (45 megabits) out in the boonies somewhere and you are offering a mix of plans that average out to 7.8 megabits per customer (400 * 7.8 / 70 = 44.5).

    Assuming you are in the US, 45 megabits of transit is unlikely to cost you more than ~$2k/month ($50/megabit transit is easy to come by, you can do way better if you shop and have access to many carriers), but due to the amazing power of phone company pricing, the DS3 to carry it could easily run $10k-40k/month depending on how far out of a major city you are. (Within a major city, DS3s are closer to $3k/month.) Let's use the low end of that range and call it $10000/mo for the DS3 and $2000/mo for the bandwidth, or $12000/mo total for 45 megabits or your total cost of ~$267/megabit.

    If your customers were to demand no oversubscription (as most Slashdotters seem to), delivering a 10 meg cable connection would therefore cost you $2670/month to deliver to your customers. At standard retail markup (including maintaining the cable lines, buying routers, paying rent, paying salaries, etc) of ~2x, let's call it $5k/month per customer. This poses a problem, since no residential customer will pay $5k/month.

    If you work it from the other angle, starting from what your customers will pay, let's pretend they are comfortable paying $80/month for their 10 meg cable connection. (This is high if they were in a city, but if this is their only option vs dialup, they'll buy it anyway.) Assuming you have some overhead and only half that can pay for bandwidth, you have $40/month for 10 megabits or $4/megabit.

    How do you reconcile that your customers will only pay $4/megabit when your costs are $267/megabit? The magic of oversubscription.

    These customers need to be willing to live with the idea that they are expected, on average, to use only 143Kbit/sec on their 10 meg pipe. If on average they want more than that, they have to be willing to pay for it, otherwise the ISP is just going to fold, and they can go back to dialup.

    For some reason, Slashdotters see this as evil. Is it? How else can you make the numbers work? (Most of these numbers are ballpark since the posters details were so vague, but they real-ish.)

    --

    Aaron