Date: Tue, 6 Jan 2004 17:51:29 +0200 From: "Artis Caune" <ac-lists@latnet.lv> To: "'Luigi Rizzo'" <rizzo@icir.org> Cc: freebsd-ipfw@freebsd.org Subject: RE: loading lot of rules takes very long time Message-ID: <20040106155246.EF5E743D41@mx1.FreeBSD.org> In-Reply-To: <20031106033919.A65661@xorpc.icir.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Happy new year! Back to old topic... I found solution to my problem ! we really need 10000++ rules. ;) I wrote my own traffic shaper: kld module. It attach to ip filter 'fr_checkp' function pointer. It use binary tree to match IP packets, and it always match in 32 steps. It then use CISCO CAR (token bucket) algorithm to shape (rate limit) traffic. It can use CISCO 'compounded debt' algorithm to simulate RED ;) It don't use queues, it don't add delays. It shape very close to configured rate. Grr, and it works in bridge mode. I can load 30000 rules on PII 300 box in 1-2 seconds. Yeh, that's seconds, not hours ;) config file is very simple: > interface em0 in dst-ip > pipe test 64KB > 10.0.0.0/24 pipe test > 192.168.0.1/32 pipe test All works great!!! Totaly about 1500 lines of kernel/userland code. cheers Artis -----Original Message----- From: owner-freebsd-ipfw@freebsd.org [mailto:owner-freebsd-ipfw@freebsd.org] On Behalf Of Luigi Rizzo Sent: ceturtdiena, 2003. gada 6. novembri 13:39 To: Artis Caune Cc: freebsd-ipfw@freebsd.org Subject: Re: loading lot of rules takes very long time most likely, because you are not using "-n", the printing code will use the nameserver to try and resolve addresses, and if halfway through you are limiting/blocking access to the nameserver you incur in timeouts. To tell the truth i suspect you have a quite poorly designed ruleset if you are adding individual rules and pipes for each client. Almost surely you should make use of masks in pipes, and address sets in rules, to reduce the size of your ruleset to something manageable and efficient. cheers luigi On Thu, Nov 06, 2003 at 01:04:31PM +0200, Artis Caune wrote: > Hello, > > We have about 10000-20000 pipes for > different subnets, and it takes very long > time to load them - about 10-15min. > > 92.8% interrupt, 0.0% idle > > strange that things slow down when count > reaches 2000-2500 rules. > > is there something we can do to speed things up? > > rules are added like: > ipfw -q add 1 pipe 1 src-ip 1.1.1.1 out via em0 > ipfw pipe 1 config bw 30Kbytes/s queue 10 > ... > soo 'ipfw' is invoked '2 x client_count' !!! > > maybe ipfw need feature like: > ipfw -f /etc/rc.firewall > > > > # FreeBSD-4.9, IPFW2, > # HZ=2000, DEVICE_POLLING, > # 1G RAM, 2.4xeon on Intel server board > > > > > > ..... > Artis > > > _______________________________________________ > freebsd-ipfw@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw > To unsubscribe, send any mail to "freebsd-ipfw-unsubscribe@freebsd.org" _______________________________________________ freebsd-ipfw@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw To unsubscribe, send any mail to "freebsd-ipfw-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040106155246.EF5E743D41>