# ograniczenie łącza

## piotr.pawlowski

Witam,

Posiadam w firmie router oparty o system linux (Gentoo). Niestety ilośc pracowników przybywa, a szerokośc pasma nadal jest ta sama. Chciałbym zastosowac taki myk, że przy obciążeniu karty sieciowej na danym poziomie połączenie byłoby ucinane. Albo jeszcze inaczej: aby mimo pasma 3mbit jeden user nie mógł przekroczyć np 2mbit (aby 1 mbit pozostał dla pozostałych).

Czytałem sporo na temat tc i htb ale to u mnie raczej odpada - gdybym sprawiedliwie podzielił łącze 3mbit na prawie 40 userów, to w momencie wykorzystywania łącza przez wszystkich transfer spadłby do niecałcyh 10kilobajtów per user.

Macie jakieś pomysły w tym temacie?

Dzięki z góry

Pozdrawiam

----------

## Belliash

QOS?

----------

## Jacekalex

Tu masz opis QOS z przykładami:

http://www.przybytek.net/download/2.4routing.pdf

Powinno wystarczyć imq + sfg.

----------

## piotr.pawlowski

QOS poprzez wykorzystanie dobrodziejstw 'tc' - też nad tym myślałem (ajk tez zasugerowałem w pierwszym poście). Już nawet zacząłem wprowadzać to w życie. Podczas pisania skryptu, który ustawiłby wszystkie reguły automatycznie natknąłem sie na jeden problem: w sieci mam około 40 komputerów, łącze niestety 3mbit. Jeśli podzielę dla wszystkich po równo, to w momencie, kiedy wszyscy będą korzystali z sieci (a licząc, że będą to normalne godziny pracy) to połączenie z netem per user wyjdzie raptem niewiele ponad 9kilobajtów na sekundę. Zdajecie więc sobie chyba sprawę co będzie się działo po wprowadzeniu czegoś takiego - będą leciały same k.. i ch... na admina (czytaj: na mnie) po czym zapewne wrócę do konfiguracji wyjściowej, czyli brak QOS.

Chyba, że źle zrozumiałem ideę 'tc' - jeśli tak to proszę poprawę toku rozumowania.

Dzięki z góry.

----------

## Raku

 *piotr.pawlowski wrote:*   

> Chyba, że źle zrozumiałem ideę 'tc' - jeśli tak to proszę poprawę toku rozumowania.

 

tu się nie mylisz  :Razz: 

ustawiasz rate = łącze /  liczba użytkowników

ustawiasz ceil = łącze

htb robi podział w sposób dynamiczny - korzysta dwóch użytkowników, mają ceil dzielony na 2. Korzysta 40, sa przycinani do tego co im gwarantujesz (rate). Korzysta oznacza - ściąga coś z sieci.

----------

## piotr.pawlowski

To chyba zaczyna mieć sens. Rozumiem więc, że jeśli user jest podłączony do sieci LAN ale działa lokalnie bez obciążania łącza (pomijam tutaj mały ruch sieciowy w postaci rozmów na skype, gg, etc) to jego ceil jest dynamicznie rozkładany na innych userów, którzy np słuchaja radia przez sieć, czyż nie jest tak?

Dla pewności oto, jak ja to rozumiem:

```

tc qdisc del root dev eth1

tc qdisc add dev eth1 root handle 1:0 htb

tc class add dev eth1 parent 1:0 classid 1:1 htb rate 99mbit ceil 99mbit

# LAN oraz WAN

tc class add dev eth1 parent 1:1 classid 1:2 htb rate 3mbit ceil 3mbit

tc class add dev eth1 parent 1:1 classid 1:3 htb rate 96mbit ceil 96mbit

tc class add dev eth1 parent 1:2 classid 1:4 htb rate 9kbit ceil 3mbit

# i tak dalej do stworzenia class dla wszystkich ipków w sieci

tc filter add dev eth1 protocol ip parent 1:0 u32 match ip src 10.0.0.24 flowid 1:3

tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 10.0.0.2 flowid 1:4

# 10.0.0.24 to router, dalej leci przypisanie filtrów dla wszystkich ipków i połączenie z utworzonymi wcześniej class'ami

```

Na koniec kodu mam jeszcze opcję z sfq, ale to jest chyba odrębny temat.

Oprócz weryfikacji mojego toku myślenia (za dotychczasowe wielkie dzięki) z powyższego listingu, mam jeszcze pytanie: czy da radę obejśc wpisywanie class i filtrów dla wszystkich IP z osobna? Na to chyba musi być jakis patent, bo w przeciwnym wypadku administrator z 200 ipkami w sieci już dawno by się pochlastał.

Dzięki z góry za przyszłą i dotychczasową pomoc!

Pozdrawiam

----------

## Raku

 *piotr.pawlowski wrote:*   

> bo w przeciwnym wypadku administrator z 200 ipkami w sieci już dawno by się pochlastał.

 

dlatego admini zwykle piszą skrypty  :Wink: 

----------

## piotr.pawlowski

No nie powiem, że nie, bo tak jest. Dzisiaj w autobusie rozkminiałem skąd miałbym wytrzasnąć listę ipków w sieci... jedyne co mi przyszło to wydłubanie jej z tablicy arp. Tylko, że tablica jest dynamiczna...

Wracając do głównego wątku - tok rozumowania przedstawiony w skróconym listingu tego co planuję zrobić jest w porządku?

----------

## Belliash

Nie prosciej priorytetyzowac dane dane przesylane na okreslonych portach/protokolach?

Zainteresuj sie SFQ lub PFIFO.... IPP2P i Layer 7....

----------

## piotr.pawlowski

Zastanawiałem się tez i nad takim rozwiązaniem, ale ostatecznie odpadło ze względu na różnorodność protokołów (i ich ilość) stosowanych w sieci LAN. Oczywiście SFQ zamierzam zastosować aby żadne IP nie zapchało sobie samemu łącza (co też napisałem pokrótce pod przedstawionym wcześniej listingiem).

----------

## Belliash

slyszal o czyms takim jak default?

Priorytetyzujesz cos Ci potrzeba, reszte wrzucasz w jakas niska klase (tzw bulk traffic).

----------

## piotr.pawlowski

Jop, słyszał, gdyż zainteresował się tematem podziału łącza na podstawie usług ponownie. Mam jednak jak zwykle pytanie: Jeśli podzielę istniejące łącze np 3/5 na www, 1/5 na pop3 i 1/5 na resztę, to jak te 3/5 przeznaczone na www będą dzielone poprzez 40 komputerów? Czy będzie istniała możliwość, że jeden user zapcha całe 3/5 łącza przeznaczone na www?

----------

## Raku

 *piotr.pawlowski wrote:*   

> Jeśli podzielę istniejące łącze np 3/5 na www, 1/5 na pop3 i 1/5 na resztę, to jak te 3/5 przeznaczone na www będą dzielone poprzez 40 komputerów? Czy będzie istniała możliwość, że jeden user zapcha całe 3/5 łącza przeznaczone na www?

 

to możliwe. Możesz ratować się zakładając na klasę WWW (E)SFQ, ale nie da to najlepszego efektu.

Dobre rozwiązanie to kolejkować globalnie po usługach i dodatkowo wg ilości użytkowników. Ale to już jest bardziej skomplikowane rozwiązanie. Ja do czegoś takiego używam IMQ.

----------

## Belliash

Ponownie ustawiasz zabki.... www 1-2mbps (min 1, max 2).

Poza tym mozesz rozrozniac www od www  :Razz:  tzn otwieranie strony od sciagania pliku (np do 500KB i powyzej 500KB). Jak sciagasz plik to idzie szybko a powyzej 500KB zwalnia.

Najlepiej sam poprobuj, chocby metoda prob i bledow i zobaczysz jak to dziala w praktyce.

----------

