Subject: ALTQ HFSC technology
To: None <tech-net@netbsd.org>
From: Rimantas Petrauskas <rimantas@remo.lt>
List: tech-net
Date: 04/08/2006 06:25:54
Hi,

we have a problem with network shaping. We have about 2000 clients and
30Mbps traffic. We need to make different classes of bandwidth.
There are about 10 classes, 3Mbps each (realtime). So lets 200 users per
class. But there is a problem. We need to make an upperlimit for /each/
user, so he could not use all 3Mbps of bandwith even if it is available.
I see just one solution - to generate a queues for every user IP. But this
is technicaly wrong, the pf.conf file is very large and the server IRQ
loads are very high and after 2 minutes of work the server freezes.
I'm using PF with Petter's new-ALTQ patch. Old ALTQ works even with 2000
queues but there is a limit interface root bandwidth 90G. Thats why i want
to switch to new-ALTQ, because in future it will not work with more than
2000 users.

The main question is if it is possible to set an upperlimit for each user
(IP) with NetBSD and ALTQ technology and what solution would be
technically OK.

If it is important, here is info about my server's harware:
NetBSD 3.0_STABLE (THUNDER - Revision: 1) #1: Sat Apr  8 05:07:23 EEST 2006
        unex@thunder:/usr/obj/sys/arch/i386/compile/THUNDER
total memory = 1023 MB
avail memory = 999 MB
BIOS32 rev. 0 found at 0xfd711
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: Intel (686-class), 3200.31 MHz, id 0xf43
cpu0: features bfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu0: features bfebfbff<PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX>
cpu0: features bfebfbff<FXSR,SSE,SSE2,SS,HTT,TM,SBF>
cpu0: features2 641d<SSE3,MONITOR,DS-CPL,CID,xTPR>
cpu0: features3 20000000<EM64T>
cpu0: "Intel(R) Xeon(TM) CPU 3.20GHz"
cpu0: I-cache 12K uOp cache 8-way
cpu0: L2 cache 2 MB 64B/line 8-way
cpu0: ITLB 4K/4M: 128 entries
cpu0: DTLB 4K/4M: 64 entries
cpu0: using thermal monitor 1
cpu0: 64 page colors
....
wm0 at pci4 dev 1 function 0: Intel i82544EI 1000BASE-T Ethernet, rev. 2
wm0: interrupting at irq 11
wm0: 64-bit 133MHz PCIX bus
wm0: 64 word (6 address bits) MicroWire EEPROM
wm0: Ethernet address 00:02:b3:d8:1b:f2
makphy0 at wm0 phy 1: Marvell 88E1000 Gigabit PHY, rev. 0
makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
1000baseT-FDX, auto
....
bge0 at pci5 dev 0 function 0: Broadcom BCM5721 Gigabit Ethernet
bge0: interrupting at irq 11
bge0: ASIC BCM5751 A1 (0x4101), Ethernet address 00:14:5e:31:8b:50
brgphy0 at bge0 phy 1: BCM5750 1000BASE-T media interface, rev. 0
brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
1000baseT-FDX, auto
....
bge1 at pci6 dev 0 function 0: Broadcom BCM5721 Gigabit Ethernet
bge1: interrupting at irq 11
bge1: ASIC BCM5751 A1 (0x4101), Ethernet address 00:14:5e:31:8b:51
brgphy1 at bge1 phy 1: BCM5750 1000BASE-T media interface, rev. 0
brgphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
1000baseT-FDX, auto

If you need more info please feel free to ask :)

Thanks


-- 
Rimantas Petrauskas,
UAB "Remo televizija"
E-mail: rimantas@remo.lt