Weekend Prosjekt: Konfigurering QoS for Linux rutere, Gateways



Båndbredde er en begrenset ressurs, selv om du er på en high-end, state-of-the-art fiberoptisk nettverk. På grunn av måten TCP fungerer, kan enkelte typer applikasjons raskt fylles opp selv de største røret, som har den uheldige bivirkning av skade andre, mindre båndbreddekrevende applikasjoner. Seeding en Bittorrent for nettopp utgitt Opensuse oppdatering er en edel bruk av nettverket ditt, men hvis det gjør VoIP-samtaler umulig å høre eller boder ut en SSH-økt, det er neppe verdt det. Heldigvis, hvis ruteren eller gatewayen kjører Linux, kan du enkelt sette opp kvalitet-of-Service (QoS) trafikkskapende regler for å sikre at alle dine pakker spiller fint sammen.

Theory først med Linux, du utfører trafikkforming gjennom manipulering av " kø disiplin " (eller qdisc) av et nettverkskort. Fra en ledeteksten skriver ip lenke Liste - dette vil vise gjeldende konfigurasjon av dine kjente adaptere. Du vil se qdisc parameter tredje, etter MTU. Som standard bruker nettverkskortet (eth0) sannsynligvis den pfifo_fast qdisc. Dette er en av flere " klasseløse " qdiscs tilgjengelig, og som navnet antyder, er det en relativt enkel First-In, First-Out køen. Det faktisk svarer til IP-pakker '" type tjeneste " flagg, som gir en bare-bones prioritering, men det er ikke konfigurerbar. For virkelig å forme din trafikk, fester du " classful " qdiscs stedet. Linux har flere qdiscs å velge mellom, som kan lenket sammen i et hierarki for å sortere utgående pakker ved å filtrere dem på deres protokoll, port, kilde eller destinasjon. Den mest anbefalte valg i disse dager kalles hierarkisk Token Bucket eller HTB qdisc, som lar deg sette opp klasser av trafikk, og tildele båndbredde minimumskrav og tak til hver. En nyere qdisc kalt Hierarkiske Fair Service Curve eller HFSC er også populært for QoS implementeringer, fordi det gjør det også kontroll over ventetid garantier og lar deg tildele utgående båndbredde på en forholdsmessig basis. Du fester qdiscs til en adapter med tc plakater (for " trafikkontroll ") kommando. Syntaksen for å tilføre et qdisc, som definerer en trafikk klasse, og skape et filter for å skille ut hvilke pakker som skal klassifiseres der er meget lik. For eksempel, tc qdisc legge dev eth0 root håndtak 1: htb standard 12 skaper en HTB qdisc til eth0, og tildeler det " håndtere " nummer 1. klasse definisjon tc klasse legge dev eth0 foreldre 1: classid 1: 1 HTB rente 100Kbps himling 128kbps definerer klasse 1: 1, festet til qdisc en nettopp opprettet, og setter en garantert minimumsbåndbredde på 100 kilobyte per sekund og tak av 128 kilobyte per sekund. Endelig et filter regel som tc filter legge dev eth0 forelder 1: protokollen ip kamp ip sport 22 0xfff classid 1: 1 sier at trafikken på port 22 (SSH) tilhører den 1: 1 klasse. Det blir derfor behandlet til 100Kbps garantert røret, uavhengig av ytterligere belastning på systemet. Legg merke til bruken av ordet " utgående " i beskrivelsene ovenfor, men - det er viktig å forstå at QoS teknikker bare lar deg manipulere kø av utgående
trafikk. Du kan ikke kontrollere hva ankommer inngående på WAN-grensesnittet. Linux har en mekanisme for å feste trafikk-forme filtre på innkommende side av et grensesnitt (kalt inngå qdiscs), men dette styrer ikke hvor mye båndbredde brukes - det forteller bare grensesnittet hva de skal gjøre med de pakkene som kommer. Likevel er utgående kø styring nok til å styre reelle trafikken, fordi veloppdragen TCP og UDP applikasjoner som bruker båndbredde reagere på endrede nettverksforhold; Bittorrent bremser ned, VoIP-telefoner forhandle frem en tilkobling, og så videre. For reelle QoS, da, for eksempel over et DSL- eller kabelmodem linje som er mange ganger mindre enn LAN hastighet, må du innføre trafikkforming kontroller ved grensen, enten på ruteren, eller på boksen som fungerer som din Internett-gateway. Heldigvis er QoS ikke en ny disiplin i Linux, og det finnes en rekke brukervennlige grensesnitt produsert av åpen kildekode-miljøet for å sette opp selve qdisc definisjoner, klasser, og filtre for deg (og på en helg, som kan være alt du har tid til å studere). Vi skal se på ruteren eksempel først, siden QoS er et svært populært alternativ på Linux-baserte hjemmerutere, deretter utforske mulighetene for å opprettholde en generell gateway maskin. The Simple Router Alle de store Linux ruteren distribusjoner - DD-WRT, OpenWRT og Tomato - inkluderer QoS konfigurasjonsverktøy. I DD-WRT kan QoS bli funnet under " NAT /QoS " kategorien i webgrensesnittet. OpenWRTs bruker scripts som standard, selv om X-WRT webgrensesnitt add-on pakken presenterer det som en mye bedre side under " Nettverk " tab. Tomato gir et toppnivå QoS menyen. De fleste kommersielle rutere 'standard firmware inkluderer også en QoS komponent, selv om det åpenbart ikke kan tilby så mye kontroll. Linksys, for eksempel plasserer QoS i henhold til " Programmer & Gaming " i sin web-grensesnitt. DD-WRT kan du implementere QoS enten på WAN-porten (som sannsynligvis er hva du vil) eller på LAN side. Du kan velge mellom HTB eller HFSC som qdisc, og angi en uplink tak for qdisc som helhet. Du kan definere prioriteringsregler basert på protokollen (" tjenester " konfigurasjon blokk), IP-adressen til den lokale maskinen (" nettmaske " blokk), eller MAC-adressen til nettverkskortet (" MAC " blokk) . Du trenger ikke en mekanisme for å re-arrangere prioriteringer av disse filtrene, men - de er vurdert i den rekkefølgen: MAC først, IP-adresse andre, port vare. DD-WRT har fem forhåndsdefinerte satsings klasser: fritatt, premium, uttrykke, standard, og bulk. Fritatt trafikken aldri strupes; Premium er reservert for ICMP kontroll- og ACK-pakker; Express anbefales for sanntidsapplikasjoner, og Bulk er degradert til laveste prioritet. X-WRT kan du angi en opplasting taket, men gir ikke et grafisk verktøy for å velge qdisc brukt - du er begrenset til HFSC. Det tilbyr en mer fleksibel regel definisjon system enn DD-WRT-tallet, men - du kan lage regler basert på kilde eller destinasjon IP, port, TCP flagg, pakkestørrelse, eller andre støttede kriterier, og legge dem til i listen filter på noen bestille. Inkludert i listen over filteralternativer er Layer 7 filtrering, som er designet for å filtrere basert på søknad-lags innholdet i hver pakke. En ekstra hyggelig av X-WRT grensesnitt er at det gir en " avanserte regler " grensesnitt som du kan bruke til å vise eller skjule de mer særegne filteralternativer. Tomato er QoS setup tar en markant annerledes tilnærming enn de to andre. Det skiller grunnleggende konfigurasjon og filterreglene i to forskjellige sider. De grunnleggende innstillinger lar deg angi en utgående båndbredde taket, for å aktivere ICMP og ACK-spesifikke regler, og å sette lavere bundet priser og tak for ti forhåndsdefinerte klasser: Høyeste, Høy, Middels, Lav, Laveste, klasse A, klasse B , Klasse C, Klasse D, og ​​klasse E. Som X-WRT kan du definere filterreglene i hvilken som helst rekkefølge, basert på IP-adresse, port, protokoll, Layer 7, eller overføring størrelse. Tomat kan du også opprette inngå qdisc reglene, men som nevnt tidligere er dette ikke en vesentlig faktor for generell trafikktilpasning i forhold til utgående regler. Til slutt gir Tomato meget pent formatert trafikk grafer, fargekodet etter klasse, som kan hjelpe deg når du finpusse dine klasser og filtre. Ingen annen firmware distro gir dette som for øyeblikket. Som du kan se, de ulike ruter distribusjonene varierer i hva de gir. X-WRT kan være den mest konfigurerbare av de tre, men tomat er grafene er en konfigurasjon hjelpemiddel matches av de andre, og bare DD-WRT gir deg den faktiske valget mellom HTB og HFSC for din qdisc. Valget er egentlig opp til deg. The Gateway For en fullverdig internettportal som kjører på standard PC eller server hardware, har du enda flere alternativer å vurdere. Flere gateway-orientert Linux-distribusjoner er tilgjengelig som inkluderer QoS forvaltning sammen med VPN, NAT, brannmur og andre pakker. Hvis du har en dedikert maskin, ville de være et godt valg, fordi de tilbyr web-baserte kontrollpaneler, slik at du kan kjøre tjenester hodeløs og administrere dem fra en stasjonær. Eksempler på dette rommet inkluderer Astaro Security Gateway, Zeroshell, Linux LiveCD Router, og Vyattas. Hvilken er den beste for dine spesielle behov er sannsynligvis mer avhengig av dine proficiencies og resten av nettverket ditt enn noe annet. Astaro, for eksempel, er et derivat av Opensuse, mens Vyattas er basert på Debian, Linux LiveCD Router på Slackware, og Zeroshell er utviklet fra bunnen av. Hvis du er mer kjent med en av de oppstrøms distribusjoner, er det sannsynligvis et bedre valg hvis du bare er interessert i ytelse - men du foretrekker å bruke noe annet bare for pedagogisk verdi. På den annen side, Linux LiveCD Router, Zeroshell, og Vyattas er tilgjengelig som live-CD-medier, som kan være viktig, og Vyattas og Zeroshell er tilgjengelig som virtuell maskin bilder. Endelig Vyattas og Astaro er tilgjengelig i kommersielle, betalt-støtte varianter, som kan være den avgjørende faktoren for et lite kontormiljø. I hvert tilfelle, får du tilgang til hele Linux kernel QoS konfigurasjon stabelen. Generelt nettbaserte administrasjonsverktøy for alle disse distribusjoner er mer komplett enn hva som tilbys av de innebygde ruteren distroer som er nevnt ovenfor, pluss det er alltid mulig å slippe inn i en terminal og legge til eller redigere qdisc konfigurasjons, klasser, og filtre direkte. Hvis du ikke har en dedikert maskin - kanskje hvis du bruker en dual-Ethernet desktop Linux boks som gateway mellom WAN og LAN - men du likevel ønsker et høyt nivå verktøy for konfigurering av QoS, er det minst to ekstra alternativer. i.NET er en pre-pakket sett QoS og sikkerhets skript som du kan installere på en standard Linux-distribusjon. Pakkene målrette Debian-lignende systemer, så hvis du kjører en RPM-baserte distribusjonen du kan finne inkompatibilitet. MasterShaper, derimot, er en grafisk nettverk styringsverktøy som støtter QoS og Netfilter brannmur. Det inkluderer et web-grensesnitt, bygget med PHP og MySQL. Det kan være det enkleste alternativet for de som ikke kan finne en matchende verktøyet blant andre verktøy og utdelinger. Extra Credit: Bli en qdisc Expert Naturligvis, jo mer du jobber med Linux-kjernen er qdisc system, jo ​​mer vil du føle deg komfortabel å skrive og oppdatere reglene selv. Faktisk er det nesten en garanti for at når du begynner å overvåke QoS på WAN-grensesnittet, vil du bli beslaglagt av ønsket om å finpusse hver lille bit av ytelse ut av det som du kan. Et godt sted å begynne å jobbe på denne endeløs kampanje er med manual-sidene for tc og ulike qdiscs, som du finner i mennesket som tc-HTB, tc-pfifo_fast, og så videre. Det er langt mer tilgjengelig " classful " qdiscs enn de som er nevnt her, og det er flere interessante " klasseløse " qdiscs også. Slå opp RED og CBQ hvis du ønsker å utfordre hva du vet. En utmerket ressurs for alle disse temaene er Linux Advanced Routing Og Traffic Control området, som omfatter dokumentasjon og fremgangsmåter ikke bare på QoS, men på ruting, pakkefiltrering, deling tilkobling, og andre relaterte emner. Når du beveger deg utover det grunnleggende, alle disse nettverks emner begynner å samhandle, så vær forberedt på å revurdere dine antagelser på andre områder også. Tross alt, generelt, hvis det er en pakke, det er en Linux verktøy for å manipulere den ...