V-Smart - Twój partner w biznesie internetowym

Linux Router – HTB, imq, esfq, layer7, priorytetyzacja ruchu, podział pasma

Dawno dawno temu, za górami za lasami w zamierzchłych czasach kiedy łącze 128kbps kosztowało 75zł / miesiąc... Kiedy słabą popularność miały dziś dobrze znane protokoły p2p, kiedy nie było youtube, redtube i innych wrzut.. Kiedy Ty (w sensie Internauta) odpalałeś przeglądarkę aby sprawdzić pocztę.. Wtedy do podziału pasma wystarczył router za 100zł, który nie miał podziału pasma :)

Co mamy dzisiaj? Bardzo niskie ceny łączy, bardzo "duże" prędkości dla klientów połączone z miłością do waszej-klaty.pl, wszelkiego rodzaju *tubów i torrentów, bez których nawet kobiety już nie mogą żyć (bo skąd tu filmy ściągać jak nie przez utorrent he he). Pojawia się dość trudne pytanie dla małych ISP pt. "Jak tu kurza twarz zarobić na biednych klientach, którzy chcą coraz więcej za coraz mniejsze pieniądze". Możliwości jest kilka:

  • zamknąć sieć w sensie sprzedać się dużemu ISP i otworzyć budę z kebabami na dworcu (większy zysk)
  • olać klientów i ich narzekanie, co jest dość często stosowane z powodu braku środków
  • POMYŚLEĆ, POSZUKAĆ, ZNALEŹĆ rozwiązanie, które będzie pokarmem dla "głodnych" klientów-pasożytów, którzy, co byśmy nie zrobili, i tak będą narzekać oraz dla nas, biednych małych ISP, którzy mając 10/10Mbps łącze chcemy zmieścić w tym 200 klientów ze średnią prędkością dla nich w okolicach 1Mbps.

Da się. Potrzebny komputer średniej mocy obliczeniowej, w miarę świeża dystrybucja linuxa oraz dużo kawy, fajek (dla tych co palą of koz) i święty spokój. Zatem adminie - przed przystąpieniem do "ataku" odstaw żonę do koleżanek z kilkoma stówkami w kieszeni na zakupy, dzieci oddaj teściom na weekend i do roboty haha!

A teraz poważnie. Napiszmy jak to wszystko powinno działać. Załóżmy, że mamy już skrzynkę z linuxem, dla uproszczenia debian lenny z paczkami [i386] lub [amd64], oraz dwoma interfejsami sieciowymi:

  • eth0 jako WAN (PUBLICZNE_IP)
  • eth1 jako LAN (LOKALNE_IP, LOKALNA_PODSIEC)

Kluczem do sukcesu jest znalezienie mechanizmu, który umie rozłożyć ruch od/do klientów sprawiedliwie. Sprawiedliwie nie oznacza standardowego HTB + sfq, gdyż takie połączenie dzieli po równo trafik per połączenie. Więc jeśli mamy dwóch klientów w sieci LAN i każdy ma otwarte jedno połączenie (np do redtube) to będzie sprawiedliwie - obaj będą cieszyć się multimediami. Inaczej wygląda sprawa, jeśli jeden z nich odpali klienta sieci torrent i rozkręci się do 2k połączeń. Wtedy drugi już nie zazna przyjemności z redtube - zostanie wycięty w pień przez ilość połączeń p2p konkurenta.

Sprawiedliwie oznacza podział per IP źródłowe / docelowe (upload / download). Taką możliwość oferuje mechanizm o nazwie ESFQ, który w połączeniu z HTB potrafi dzielić również w przypadku zastosowania NATa. Dodatkowo przypomnę po raz n!^2, że linuxowe HTB potrafi "ciąć" jedynie ruch WYCHODZĄCY z interfejsu. Zatem możemy zapomnieć, że bez wykorzystania IMQ (patrz google) zrobimy cokolwiek mądrego w kwestii podziału pasma. Tomek pewnie zaraz skrytykuje, że nie używa IMQ i się da ale my swoje wiemy bo przeprowadziliśmy dużo testów. Dokumentacja kernela oraz IMQ też mówią swoje.

Kilka słów w kwestii priorytetyzacji ruchu. Przedstawię jak to wygląda u mnie - oceńcie sami czy przyda się Wam czy nie. I tutaj przytoczę sławne już zdanie: "To że działa to u mnie wcale nie oznacza, że będzie działać to u Ciebie" 😉

PRZEPIS NA ROUTER

system: klikamy

iptables: klikamy

htb: klikamy

testowanie: klikamy

Opisy poszczególnych poleceń znajdują się w powyższych plikach. Plik htb.txt można spokojnie wkleić do skryptu shellowego i odpalić po uprzednim uzupełnieniu parametrów. Testujcie śmiało jeśli macie cierpliwość. Efektem spodziewanym jest uzyskanie priorytetu wyższego lub niższego dla usług zdefiniowanych w htb.txt oraz iptables.txt oraz sprawiedliwe rozłożenie ruchu per IP w sieci LAN.

Omówiony wyżej dynamiczny sposób podziału pasma zamierzamy zamontować do naszych routerów uruchomionych przy wykorzystaniu wirtualizacji Proxmox. Wcześniej został sprawdzony na kilkuset klientach i działa na 75% prawidłowo naszym zdaniem. BTW.. jak znajdziecie taki, który spełnia wasze oczekiwania w 99.9% to dajcie znać.

PS. Ponieważ często pytacie o pattern l7 do łapania rapidshare itp, poniżej podaje howto.

Tworzymy sobie pliczek:

/etc/l7-protocols/protocols/rapidshare.pat

i klepiemy w nim takie dwie linijki:

rapidshare

rapidshare.com

Wielkiej filozofii w tym nie ma. Po prostu łapie toto połączenia do wszystkiego (bo jest connmark w iptables), co chociaż w jednym pakiecie zawiera rapidshare.com a większość serwerów rapida siłą rzeczy ma to w swojej domenie :) U mnie dziala.

Be Sociable, Share!
Zakres tematyczny: Routery linuxowe   autor: yarzombo Dodaj komentarz