Hi!
I would like to use Linux for egress shaping in an ISP environment. I just
want to make sure client X doesn't get more than Y bandwidth, i.e. I'm not
interested in dividing the bandwidth up into chunks (i.e. HTB, CBQ, etc),
but rather limit clients' bandwidth.
I would like to avoid using ingress policing because I don't want to drop
clients' packets, rather do egress shaping.
As far as I can see, the only way to do this in Linux is to attach tbf to an
interface which means I need 2 interfaces for each client and enqueuing
their traffic to these devices. I am using IMQ for that.
The problem is that network devices are currently limited to 100
(dev_alloc_name() in net/core/dev.c).
Now I don't mind waiting a bit to initialize these devices at boottime, so
increasing this is no problem for me (and tweaking the masks in
include/linux/imq.h), but several problems (that I know or can think about -
there's probably many more) arise when you go above a couple of hundred
devices, all related to kmalloc failures.
Does anyone know
(a) in which parts of the networking code I'm going to run into problems?
(b) what I would need to change/fix in order to work around those problems?
(c) of any better ways to do egress shaping for lots of clients in Linux
(i.e. some way to avoid having an interface(s) per client)?
--
Regards
Abraham
TODAY the Pond!
TOMORROW the World!
-- Frogs (1972)
___________________________________________________
Abraham vd Merwe - Frogfoot Networks CC
1st Floor, Albion Springs, 183 Main Road, Newlands
Phone: +27 21 689 3876 Cell: +27 82 565 4451
Http: http://www.frogfoot.net/ Email: [email protected]
From: Abraham van der Merwe <[email protected]>
Date: Mon, 12 Sep 2005 15:02:42 +0200
> The problem is that network devices are currently limited to 100
> (dev_alloc_name() in net/core/dev.c).
This limit has been increased to 8*PAGE_SIZE in current
2.6.x kernels.
In 2.4.x you can safely increase the hard-coded limit in
dev_alloc_name() but if you have a lot of programs causing
the kernel to lookup devices by string name, you may run
into some performance problems.