Нови статии
bash scripts
CPU-frequency scalin...
Oбновявания на ОС W...
install zoneminder 1...
Installing mysql Mar...
Теми във форума
Нови теми
Малък лек и удобен д...
Клавишни комбинации ...
Инсталация на Arch L...
Защитна стена за мик...
Linux
Най-активни теми
Color console linux [4]
Клавишни комбинац... [1]
Защитна стена за ... [1]
Linux [1]
Малък лек и удобе... [0]
Приятели
Сега
Времето
Йерархия на статиите
Статии » Линукс и UNIX » IPFW Shaping
IPFW Shaping
PFW поддържа DUMMYNET – компонент на BSD системите, поддържащ лимитиране и ограничаване на скоростта.
По принцип IPFW+DUMMYNET не поддържат т.нар. динамично ограничаване, а само следните 2 вида:
Твърдо ограничаване – ограничаване по определена скорост:

Пример: Задаване на 64 Kbit канал
> Конфигуриране:
ipfw pipe 100 config bw 64 K

> Задаване какво да минава през него:
ipfw add 1000 pipe 100 ip from any to 192.168.0.1

Споделяне на канал – във всеки pipe могат да се правят опашки (queues), които да имат
различен приоритет.
Пример 1: 64 Kbit канал, поделен между 2 клиента.
Когато и двамата теглят, си го разделят по равно:
> Конфигуриране (полето weight представлява проценти):
ipfw pipe 100 config bw 64K
ipfw queue 1 config pipe 100 weight 50
ipfw queue 2 config pipe 100 weight 50

> Задаване какво да минава:
ipfw add 1000 queue 1 ip from any to 192.168.0.1
ipfw add 1001 queue 2 ip from any to 192.168.0.2

Пример 2: 64 Kbit канал, поделен между 3 клиента.
Когато и тримата теглят, първия получава 32 Кbit,
другите 2-ма – по 16 Kbit:
> Конфигуриране (полето weight представлява проценти):
ipfw pipe 100 config bw 64K
ipfw queue 1 config pipe 100 weight 50
ipfw queue 2 config pipe 100 weight 25
ipfw queue 3 config pipe 100 weight 25

> Задаване какво да минава:
ipfw add 1000 queue 1 ip from any to 192.168.0.1
ipfw add 1001 queue 2 ip from any to 192.168.0.2
ipfw add 1002 queue 3 ip from any to 192.168.0.3
> Важно е да се отбележи, че при използване на този метод – споделяне на канал – ВСЯКА ЕДНА ОПАШКА може да достигне
> МАКСИМАЛНАТА СКОРОСТ на САМИЯ PIPE, при положение че другите опашки не се използват (не минава трафик през тях).

Гарантиране
на минимална и задаване на максимална скорост – за да постигнем това,
първо лимитираме максималната скорост, след което споделяме наличния ни
интернет канал:

Пример: 256 Kbit канал до нас, клиент 1 използва 64 Kbit @ 100 %, клиент 2 – 64 Kbit @ 50%, клиент 3 – 128 Kbit @ 50%, клиент 4 – използва каквото остане.
> Задаване на максимална скорост (само за клиент от 1 до 3, за клиент 4 тя не е ограничена)
ipfw pipe 101 config bw 64K
ipfw pipe 102 config bw 64K
ipfw pipe 103 config bw 128K
ipfw add 1001 pipe 101 ip from any to 192.168.0.1
ipfw add 1002 pipe 102 ip from any to 192.168.0.2
ipfw add 1003 pipe 103 ip from any to 192.168.0.3

> Споделяне на съществуващия канал – за weight задаваме съответния процент от канала ни (задължително цяло число):
ipfw pipe 200 config bw 256K
ipfw queue 1 config pipe 200 weight 25
ipfw queue 2 config pipe 200 weight 13
ipfw queue 3 config pipe 200 weight 25
ipfw queue 4 config pipe 200 weight 37
ipfw add 1011 queue 1 ip from any to 192.168.0.1
ipfw add 1012 queue 2 ip from any to 192.168.0.2
ipfw add 1013 queue 3 ip from any to 192.168.0.3
ipfw add 1014 queue 4 ip from any to 192.168.0.4

> Разрешаване на трафика до клиентите – тъй като сме задали net.inet.ip.fw.one_pass = 0, пакетите все още са във firewall-а
> и трябва изрично да ги пуснем:
ipfw add 1021 allow ip from any to 192.168.0.1
ipfw add 1022 allow ip from any to 192.168.0.2
ipfw add 1023 allow ip from any to 192.168.0.3
ipfw add 1024 allow ip from any to 192.168.0.4

Както се вижда от примерите, за да се гарантират скорости с определен
процент, е нужно по някакъв начин да се комбинират два варианта, така
че чрез (Твърдо Ограничаване) да се задава максималната скорост, а чрез
(Споделяне на канал) да се гарантира минимума й. Лошото обаче е, че
когато един пакет мине веднъж през един pipe или queue, след това той
се изпраща, а не остава във firewall-а. Очевидно, решението е да се
направи така, че след това пакета да се връща във firewall-а. Това
става чрез следнoто sysctl правило:

net.inet.ip.fw.one_pass = 0

Този параметър може да се промени директно от shell-а с командата:

sysctl net.inet.ip.fw.one_pass = 0

Както и да се зададе при стартиране чрез добавяне на този ред:

net.inet.ip.fw.one_pass = 0

във файлът /etc/sysctl.conf (създайте го, ако не съществува).

По този начин вече можем да постигнем гарантиране на скорост, така че
да не е възможно един абонат да достига максимума (ако примерно си е
платил 64 Kbit, а ние споделяме между всички 512 Кbit).

ВАЖНИ ОСОБЕНОСТИ:
Забележете реда на командите на firewall-а – първо се
конфигурират съответните pipe/queue, а след това се задават правилата,
които пускат

трафик през тях
Във вариант (Гарантиране на минимална и задаване на максимална скорост), забележете реда на правилата – първо се ограничава
max скороста, след това се споделя канала, след това се разрешава трафика



Статията е представена с любезното съдействие на : http://slavov.maxds.eu

Публикувана от admin на March 04 2010
Коментари
Няма написани коментари
Напишете коментар
Трябва да сте регистриран за да напишете коментар
Оценки
Оценяването е достъпно единствено за потребителите.

Влезте в акаунта си или се регистрирайте за да можете да давате оценки.

Няма оценки
Вход
Потребител

Парола



Не сте потребител?
Натиснете тук за да се регистрирате.

Забравихте паролата си?
Поискате си нова тук.
Downloads

New Downloads

NAVIGON-Europe ...
NAVIGON Europe ...
NAVIGON Europe ...
NAVIGON Europe ...
µTorrent 3.4.1 ...
BitTorrent 7.9....
ProgDVB 7.04.2 ...
ProgDVB 7.04.2 ...
Wine 1.7.17
sakis3g
Wise Disk Clean...
DAEMON Tools Li...
opam
TurboFTP 6.30 B...
Skype 6.3.73.10...
FileZilla 3.7.0...
ChrisTV 5.75
BSPlayer Pro 2....
Rotativki
SquirrelMail + ...

Top 10 Downloads

n-Track Studio ... [7446]
Super MP3 Downl... [7298]
Registry Mechan... [7268]
Microsoft Secur... [7228]
Hiren`s v10.0.9 [6890]
K-Lite Mega Cod... [6424]
Rotativki [6335]
BitComet 1.21 F... [6332]
Slax + Hiren's ... [4416]
WinSetup From USB [4061]
Ново от Калдата