Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Sep 2002 15:57:38 -0400
From:      mgoward@eviloverlord.org
To:        freebsd-isp@freebsd.org
Subject:   Aggregate Bandwidth Control
Message-ID:  <20020926155737.A28587@staff.msen.com>

next in thread | raw e-mail | index | archive | help
Last night a friend and I where kicking around the idea for a way               
to dynamically control the aggregate bandwidth of a customer.  After            
talking about this for some time, and playing with some code ideas              
when i got home, i decided to see what i can put together.  I was               
hoping for some ideas from this group, as you would be the target               
audience.                                                                       
                                                                                
The basic idea was:                                                             
                                                                                
Use ipfw to let me watch the byte count for a given rule, allowing              
us to monitor and compute how much bandwidth a user should have any             
given moment.  Using ipfw will allow us control over protocols,                 
IPs, ports, ETc.  Using this information and user configured options            
to be discussed later, adjust a dummynet pipe to control how much               
bandwidth the customer can use.                                                 
                                                                                
For example, if you have a customer who your sales team have sold               
the ability to move 50g of data a month, how do you enforce this?               
Do you just set up a dummynet pipe that allow for X K/sec over the              
month?  I suspect that would annoy the customer.  Do you keep track             
of how much data they move and just turn them off when they hit                 
that limit?  That does piss them off.  A better answer would be to              
take hourly, daily, monthly, etc averages of their traffic and                  
adjust their max throughput dynamically to try and let them have                
their connection at the max possible speed at any given moment while            
still keeping them under their limit for the month as a whole.  As              
best i can tell there is just no good way to do this out there right            
now.                                                                            
                                                                                
I was thinking that as the user of this you would want to be able               
to control how the traffic is limited,  via packet loss or delays.              
You would obviously want control over what the monthly/daily/whatever           
traffic maxes where.  I suspect you would want to set an absolute               
max and min bandwidth.  It could be set to zero if you want the                 
customer off when they hit their limit, or you can allow them to                
always get a little bit.  I may try and create some time stamped                
logs of some sort for billing uses.                                             
                                                                                
So, do any of you know anything out there that already does this?               
I dont want to duplicate work, as interested as i am in writing                 
this.  As an ISP what other features would you want to have?  What              
problems can you see that this might cause?  Would you use such a               
program?                                                                        
                                                                
-- 
Matthew Goward

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020926155737.A28587>