Bug 36642

Summary: 4.5 man page on ipfw new option limit is way to vague.
Product: Documentation Reporter: Joseph Barbish <barbish>
Component: Books & ArticlesAssignee: freebsd-doc (Nobody) <doc>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Joseph Barbish 2002-04-02 05:40:02 UTC
In FBSD version 4.5 there is a new ipfw rule option called limit.
Below is the man page on this option.

*******************************************************************
limit {src-addr | src-port | dst-addr | dst-port} N
    The firewall will only allow N connections with the same
    set of parameters as specified in the rule.  One or more
    of source and destination addresses and ports can be
    specified.


To limit the number of connections a user can open you can use the
following type of rules:


  ipfw add allow tcp from my-net/24 to any setup limit src-addr 10
  ipfw add allow tcp from any to me setup limit src-addr 4

The former (assuming it runs on a gateway) will allow each host 
on a /24 network to open at most 10 TCP connections.  
The latter can be placed on a server to make sure that a single client
 does not use more than 4 simultaneous connections.
*******************************************************************

I find this verbiage hard to comprehend what the author is trying to
 say.
using this example


ipfw add allow tcp from any to me setup limit src-addr 4

Is it saying that for each unique ip address in the src ip
address field it will allow up to 4 simultaneous connections.
So I would see

src_ip_addr 122.33.45.11  accept
src_ip_addr 122.33.45.12  accept
src_ip_addr 122.33.45.12  accept
src_ip_addr 122.33.45.11  accept
src_ip_addr 122.33.45.11  accept
src_ip_addr 122.33.45.12  accept
src_ip_addr 122.33.45.12  accept
src_ip_addr 122.33.45.11  accept
src_ip_addr 122.33.45.11  rejected

or would I see

src_ip_addr 122.33.45.11  accept
src_ip_addr 122.33.45.12  accept
src_ip_addr 122.33.45.12  accept
src_ip_addr 122.33.45.11  accept
src_ip_addr 122.33.45.11  rejected
src_ip_addr 122.33.45.12  rejected
src_ip_addr 122.33.45.12  rejected
src_ip_addr 122.33.45.11  rejected
src_ip_addr 122.33.45.11  rejected

How does Limit know when a packet has completed so as the remove it
from the count?

The real question is what is the limit option really doing and
how does he do it?

Fix: 

Send me a detailed explanation that I can use to suggest some verbiage
to add to clarify how the limit option functions.
Comment 1 Josh Paetzel 2002-08-17 15:58:43 UTC
<I find this verbiage hard to comprehend what the author is trying to
 <say.
<using this example

<ipfw add allow tcp from any to me setup limit src-addr 4

<Is it saying that for each unique ip address in the src ip
<address field it will allow up to 4 simultaneous connections.


Look at the example in the man page: 
The latter can be placed on a server to make sure that a single client
does not use more than 4 simultaneous connections.

>So I would see

>src_ip_addr 122.33.45.11  accept
>src_ip_addr 122.33.45.12  accept
>src_ip_addr 122.33.45.12  accept
>src_ip_addr 122.33.45.11  accept
>src_ip_addr 122.33.45.11  accept
>src_ip_addr 122.33.45.12  accept
>src_ip_addr 122.33.45.12  accept
>src_ip_addr 122.33.45.11  accept
>src_ip_addr 122.33.45.11  rejected

>or would I see 

>src_ip_addr 122.33.45.11  accept
>src_ip_addr 122.33.45.12  accept
>src_ip_addr 122.33.45.12  accept
>src_ip_addr 122.33.45.11  accept
>src_ip_addr 122.33.45.11  rejected
>src_ip_addr 122.33.45.12  rejected
>src_ip_addr 122.33.45.12  rejected
>src_ip_addr 122.33.45.11  rejected
>src_ip_addr 122.33.45.11  rejected

Well, according to the example in the man page, you would see what's
behind door number 1.

    
>How does Limit know when a packet has completed so as the remove it
>from the count?

One would assume that it uses a process similar or identical to natd. 
It keeps a table of active connections.

>The real question is what is the limit option really doing and
>how does he do it?

Limit is allowing ipfw a new way to tune their networks reaction under
load, and/or allowing administrators more granularity in their
filtering, (e.g. We only want 4 of our techs using irc at any one time.)

I don't agree that a man page should explain every little detail about
it's inner workings.  There are plenty of binaries that have been around
for years with less documentation than this.  


I recommend we close this pr out.

Josh
Comment 2 Ceri Davies freebsd_committer freebsd_triage 2002-08-20 21:03:06 UTC
State Changed
From-To: open->closed

This is really a question. 
Please ask on questions@FreeBSD.org if you are still having problems 
understanding the syntax.