Limit Session Bandwidth

2013-01-02 Thread Sami Halabi
Hi,
I wan t to configure bandwidth limits in the folowing scenario:
limit a specific IP to ,say 10MB, but also limit each Session to, say 1MB.

so max concurrent sessions of that same IP can with full bandwidth would be
10, each 1MB, this however doesn't limit the whole number of sessions, so
there can be 20 sessions of 0.5MB.

I didn't see option like that in the man pages, any ideas?

Thanks in advance,

-- 
Sami Halabi
Information Systems Engineer
NMS Projects Expert
FreeBSD SysAdmin Expert
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-03 Thread Luigi Rizzo
On Thu, Jan 03, 2013 at 09:19:05AM +0200, Sami Halabi wrote:
> Hi,
> I wan t to configure bandwidth limits in the folowing scenario:
> limit a specific IP to ,say 10MB, but also limit each Session to, say 1MB.
> 
> so max concurrent sessions of that same IP can with full bandwidth would be
> 10, each 1MB, this however doesn't limit the whole number of sessions, so
> there can be 20 sessions of 0.5MB.
> 
> I didn't see option like that in the man pages, any ideas?

you can do this with a first per-flow pipe that limits
the individual bandwidth, and then passing the traffic
to a scheduler (or another pipe) with an aggregate
limit of 10Mbit/s

Something like this

# reinject packets into firewall after they come out from a pipe
sysctl net.inet.ip.fw.one_pass=0

# configure the pipe that applies the 1 Mbit/s cap to each flow
ipfw pipe 123 config bw 1Mbit/s mask all

# configure the second pipe with the global cap
ipfw pipe 456 config bw 10Mbit/s

# configure a scheduler that drives the second pipe
ipfw sched 789 config mask all pipe 123

# pass outgoing packets to the first pipe
ipfw add 100 pipe 123 out

# and then to the scheduler
ipfw add 110 queue 789 out

# and then accept
ipfw add 120 allow ip from any to any

#
#  pipe 123  scheduler
# +-++---+
# --->| +--->|   |
# +-+|   |  pipe 456
#  one per flow  |   |+-+
#. .  .  |   || |+->
#|   |+-+
# +-+|   |
# --->| +--->|   |
# +-++---+

cheers
luigi
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-03 Thread Özkan KIRIK
I think there is a mistake at the sched config line. it should be as
 ipfw sched 789 config mask all pipe 456

On Thu, Jan 3, 2013 at 10:29 AM, Luigi Rizzo  wrote:

> ipfw sched 789 config mask all pipe 123
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-05 Thread Sami Halabi
Hi Luigi & Ozkan,

Thanks for the response.

Luigi i saw you said in some list never trust italians :), so i went step
by step.
first i put:
me out from a pipe

sysctl net.inet.ip.fw.one_pass=0
ipfw pipe 123 config bw 1Mbit/s mask all
ipfw add 100 pipe 123 out

ipfw add 120 allow ip from any to any

Works like a charm.

Next Step wil be:
ipfw pipe 456 config bw 10Mbit/s

  ipfw sched 789 config mask all pipe 123
 or it should be:
  ipfw sched 789 config mask all pipe 456
  ??
ipfw add 110 queue 789 out


whats is the correct configuration ?

the mask options isn't well documented, in the handbook its not even
mentiond.
same goes for scheduler...
I got the feeling that only few here know the options very welll... maybe
I'm wrong?

Sami



On Thu, Jan 3, 2013 at 12:46 PM, Özkan KIRIK  wrote:

> I think there is a mistake at the sched config line. it should be as
>  ipfw sched 789 config mask all pipe 456
>
>
> On Thu, Jan 3, 2013 at 10:29 AM, Luigi Rizzo  wrote:
>
>> ipfw sched 789 config mask all pipe 123
>
>
>


-- 
Sami Halabi
Information Systems Engineer
NMS Projects Expert
FreeBSD SysAdmin Expert
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-05 Thread Luigi Rizzo
On Sat, Jan 05, 2013 at 02:51:07PM +0200, Sami Halabi wrote:
> Hi Luigi & Ozkan,
> 
> Thanks for the response.
> 
> Luigi i saw you said in some list never trust italians :), so i went step
> by step.
> first i put:
> me out from a pipe
> 
> sysctl net.inet.ip.fw.one_pass=0
> ipfw pipe 123 config bw 1Mbit/s mask all
> ipfw add 100 pipe 123 out
> 
> ipfw add 120 allow ip from any to any
> 
> Works like a charm.
> 
> Next Step wil be:
> ipfw pipe 456 config bw 10Mbit/s
> 
>   ipfw sched 789 config mask all pipe 123
>  or it should be:
>   ipfw sched 789 config mask all pipe 456

the latter.

> ipfw add 110 queue 789 out
> 
> 
> whats is the correct configuration ?
> 
> the mask options isn't well documented, in the handbook its not even
> mentiond.

the manpage is slightly more up to date.
The handbook is probably years behind.

cheers
luigi

> same goes for scheduler...
> I got the feeling that only few here know the options very welll... maybe
> I'm wrong?
> 
> Sami
> 
> 
> 
> On Thu, Jan 3, 2013 at 12:46 PM, ?zkan KIRIK  wrote:
> 
> > I think there is a mistake at the sched config line. it should be as
> >  ipfw sched 789 config mask all pipe 456
> >
> >
> > On Thu, Jan 3, 2013 at 10:29 AM, Luigi Rizzo  wrote:
> >
> >> ipfw sched 789 config mask all pipe 123
> >
> >
> >
> 
> 
> -- 
> Sami Halabi
> Information Systems Engineer
> NMS Projects Expert
> FreeBSD SysAdmin Expert
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-06 Thread Sami Halabi
Hi,
Thank you for the help.

sysctl net.inet.ip.fw.one_pass=0
introduces some issues to my configuration limits in my current
configuration, because limits aren't applied correctly since we continue
after the pipe, eg:
i had:
1900 pipe 1000 all from x.y.z.1 to any
2000 pipe 1001 all from any to x.y.z.1
2100 pipe 2000 all from x.y.z.0/24 to any
2100 pipe 2001 all from any to x.y.z.0/24
.
.
more pipes
.
..
6500 allow all from any to any

so the I had special limit(large) for x.y.z.1 IP but another limit in the
whole /24 that i didn't want it to affect.
any ideas how to solve it? i thought about skipto but I'm not sure how to
use.
Sami


On Sun, Jan 6, 2013 at 1:37 AM, Luigi Rizzo  wrote:

> On Sat, Jan 05, 2013 at 02:51:07PM +0200, Sami Halabi wrote:
> > Hi Luigi & Ozkan,
> >
> > Thanks for the response.
> >
> > Luigi i saw you said in some list never trust italians :), so i went step
> > by step.
> > first i put:
> > me out from a pipe
> >
> > sysctl net.inet.ip.fw.one_pass=0
> > ipfw pipe 123 config bw 1Mbit/s mask all
> > ipfw add 100 pipe 123 out
> >
> > ipfw add 120 allow ip from any to any
> >
> > Works like a charm.
> >
> > Next Step wil be:
> > ipfw pipe 456 config bw 10Mbit/s
> >
> >   ipfw sched 789 config mask all pipe 123
> >  or it should be:
> >   ipfw sched 789 config mask all pipe 456
>
> the latter.
>
> > ipfw add 110 queue 789 out
> >
> >
> > whats is the correct configuration ?
> >
> > the mask options isn't well documented, in the handbook its not even
> > mentiond.
>
> the manpage is slightly more up to date.
> The handbook is probably years behind.
>
> cheers
> luigi
>
> > same goes for scheduler...
> > I got the feeling that only few here know the options very welll... maybe
> > I'm wrong?
> >
> > Sami
> >
> >
> >
> > On Thu, Jan 3, 2013 at 12:46 PM, ?zkan KIRIK 
> wrote:
> >
> > > I think there is a mistake at the sched config line. it should be as
> > >  ipfw sched 789 config mask all pipe 456
> > >
> > >
> > > On Thu, Jan 3, 2013 at 10:29 AM, Luigi Rizzo 
> wrote:
> > >
> > >> ipfw sched 789 config mask all pipe 123
> > >
> > >
> > >
> >
> >
> > --
> > Sami Halabi
> > Information Systems Engineer
> > NMS Projects Expert
> > FreeBSD SysAdmin Expert
>



-- 
Sami Halabi
Information Systems Engineer
NMS Projects Expert
FreeBSD SysAdmin Expert
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-07 Thread Luigi Rizzo
On Mon, Jan 07, 2013 at 08:59:46AM +0200, Sami Halabi wrote:
> Hi,
> Thank you for the help.
> 
> sysctl net.inet.ip.fw.one_pass=0
> introduces some issues to my configuration limits in my current
> configuration, because limits aren't applied correctly since we continue
> after the pipe, eg:
> i had:
> 1900 pipe 1000 all from x.y.z.1 to any
> 2000 pipe 1001 all from any to x.y.z.1
> 2100 pipe 2000 all from x.y.z.0/24 to any
> 2100 pipe 2001 all from any to x.y.z.0/24
> .
> .
> more pipes
> .
> ..
> 6500 allow all from any to any
> 
> so the I had special limit(large) for x.y.z.1 IP but another limit in the
> whole /24 that i didn't want it to affect.
> any ideas how to solve it? i thought about skipto but I'm not sure how to
> use.
> Sami

one_pass = 0 essentially requires an accept rule after each pipe
to behave similarly to the other case.
How to do it depends on the configuration.
Probably it would be good to make "one_pass" a per-pipe option.

cheers
luigi

> On Sun, Jan 6, 2013 at 1:37 AM, Luigi Rizzo  wrote:
> 
> > On Sat, Jan 05, 2013 at 02:51:07PM +0200, Sami Halabi wrote:
> > > Hi Luigi & Ozkan,
> > >
> > > Thanks for the response.
> > >
> > > Luigi i saw you said in some list never trust italians :), so i went step
> > > by step.
> > > first i put:
> > > me out from a pipe
> > >
> > > sysctl net.inet.ip.fw.one_pass=0
> > > ipfw pipe 123 config bw 1Mbit/s mask all
> > > ipfw add 100 pipe 123 out
> > >
> > > ipfw add 120 allow ip from any to any
> > >
> > > Works like a charm.
> > >
> > > Next Step wil be:
> > > ipfw pipe 456 config bw 10Mbit/s
> > >
> > >   ipfw sched 789 config mask all pipe 123
> > >  or it should be:
> > >   ipfw sched 789 config mask all pipe 456
> >
> > the latter.
> >
> > > ipfw add 110 queue 789 out
> > >
> > >
> > > whats is the correct configuration ?
> > >
> > > the mask options isn't well documented, in the handbook its not even
> > > mentiond.
> >
> > the manpage is slightly more up to date.
> > The handbook is probably years behind.
> >
> > cheers
> > luigi
> >
> > > same goes for scheduler...
> > > I got the feeling that only few here know the options very welll... maybe
> > > I'm wrong?
> > >
> > > Sami
> > >
> > >
> > >
> > > On Thu, Jan 3, 2013 at 12:46 PM, ?zkan KIRIK 
> > wrote:
> > >
> > > > I think there is a mistake at the sched config line. it should be as
> > > >  ipfw sched 789 config mask all pipe 456
> > > >
> > > >
> > > > On Thu, Jan 3, 2013 at 10:29 AM, Luigi Rizzo 
> > wrote:
> > > >
> > > >> ipfw sched 789 config mask all pipe 123
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Sami Halabi
> > > Information Systems Engineer
> > > NMS Projects Expert
> > > FreeBSD SysAdmin Expert
> >
> 
> 
> 
> -- 
> Sami Halabi
> Information Systems Engineer
> NMS Projects Expert
> FreeBSD SysAdmin Expert
___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"


Re: Limit Session Bandwidth

2013-01-07 Thread Julian Elischer

On 1/6/13 10:59 PM, Sami Halabi wrote:

Hi,
Thank you for the help.

sysctl net.inet.ip.fw.one_pass=0
introduces some issues to my configuration limits in my current
configuration, because limits aren't applied correctly since we continue
after the pipe, eg:
i had:
1900 pipe 1000 all from x.y.z.1 to any
2000 pipe 1001 all from any to x.y.z.1
2100 pipe 2000 all from x.y.z.0/24 to any
2100 pipe 2001 all from any to x.y.z.0/24


look at using the tablearg option with the pipe command.

1900 pipe tablearg all from table(1) to any
1902 pipe tablearg all from any to table(2)

should allow you to do it all in 2 rules if you set up the table 
correctly.


Tablearg in not mentioned in the 'pipe' command help entry but pipe IS 
mentioned in the tablearg section.

let me know if it works!

Julian



.
.
more pipes
.
..
6500 allow all from any to any

so the I had special limit(large) for x.y.z.1 IP but another limit in the
whole /24 that i didn't want it to affect.
any ideas how to solve it? i thought about skipto but I'm not sure how to
use.
Sami


On Sun, Jan 6, 2013 at 1:37 AM, Luigi Rizzo  wrote:


On Sat, Jan 05, 2013 at 02:51:07PM +0200, Sami Halabi wrote:

Hi Luigi & Ozkan,

Thanks for the response.

Luigi i saw you said in some list never trust italians :), so i went step
by step.
first i put:
me out from a pipe

sysctl net.inet.ip.fw.one_pass=0
ipfw pipe 123 config bw 1Mbit/s mask all
ipfw add 100 pipe 123 out

ipfw add 120 allow ip from any to any

Works like a charm.

Next Step wil be:
ipfw pipe 456 config bw 10Mbit/s

   ipfw sched 789 config mask all pipe 123
  or it should be:
   ipfw sched 789 config mask all pipe 456

the latter.


ipfw add 110 queue 789 out


whats is the correct configuration ?

the mask options isn't well documented, in the handbook its not even
mentiond.

the manpage is slightly more up to date.
The handbook is probably years behind.

cheers
luigi


same goes for scheduler...
I got the feeling that only few here know the options very welll... maybe
I'm wrong?

Sami



On Thu, Jan 3, 2013 at 12:46 PM, ?zkan KIRIK 

wrote:

I think there is a mistake at the sched config line. it should be as
  ipfw sched 789 config mask all pipe 456


On Thu, Jan 3, 2013 at 10:29 AM, Luigi Rizzo 

wrote:

ipfw sched 789 config mask all pipe 123





--
Sami Halabi
Information Systems Engineer
NMS Projects Expert
FreeBSD SysAdmin Expert





___
freebsd-ipfw@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"