PF ALTQ - per user bandwith limit

Jan Dušátko jan at dusatko.org
Mon Nov 1 21:45:39 CET 2010


Ahoj
Mam konkretni problem, ktery se snazim vyresit pomoci PF ALTQ.
Server obsluhuje radove tisice spojeni přes http, kde standardne system
neomezuje sirku komunikacniho pasma. Protože nektere stroje maji problemy
s datovymi prenosy, obecne se jedna o retransmity (každý druhy - treti
paket), rad bych omezil odchozi komunikaci. Moje predstava je limit
například 5mbs/IP a zaroven 16 connections /IP. Cilem je zaroven nastavit
pocet spojeni na maximalni hranici (napr 5000).

Otazkou je, jak toto pravidlo nebo tato pravidla nastavit.

V konfiguracnich pravidlech kernelu jsem nasel nasledujici moznosti, kde
prvni cast mam povolenou:
options 	ALTQ
options 	ALTQ_CBQ		# Class Based Queueing
options 	ALTQ_RED		# Random Early Detection
options 	ALTQ_RIO		# RED In/Out
options 	ALTQ_HFSC		# Hierarchical Packet Scheduler
options 	ALTQ_CDNR		# Traffic conditioner
options 	ALTQ_PRIQ		# Priority Queueing
options 	ALTQ_DEBUG

A tento parametr ne:
options 	ALTQ_NOPCC		# Required if the TSC is unusable


Prvni moznost, která mne napadla je pouziti pravidel pro spojeni:

set timeout src.track	1

# allow http/https
pass in quick on $ext_if proto tcp to port { 80, 443 } modulate state
(source-track, max-src-conn 16, max-src-conn-rate 8/5, max-src-nodes 5000,
overload <potential_DOS> flush global)

Bohuzel, stale tapu nad druhou casti, ted jak definovat maximalni bandwith
per IP. Je tu moznost pouzit ad hoc vahy, typu fronty a limitu:

queue q1 bandwidth 40%
queue q2 bandwidth 30%
queue q3 bandwidth 20%
queue q4 bandwidth 10%

pass out on $ext_if queue q1 probability 10%
pass out on $ext_if queue q2 probability 20%
pass out on $ext_if queue q3 probability 30%
pass out on $ext_if queue q4 probability 40%

coz mi sice nezaruci 5mbs/ip, ale umozni mi to alespon minimalne rozvazit
odchozi datovy tok. V pripade 1gbs interface to ale znamena vytvorit 200
front (není problem s generovanim), nasledna pravidla ale zpomaluji
prochazeni filtru.

Napada nekoho reseni, kde se mohu vyhnout implementaci dummynet a zaroven
nastavit strop pro IP adresu nebo spojeni?

Diky

Honza




More information about the Users-l mailing list