160 likes | 282 Views
MoonShape – Hovedprosjekt vår 2005, HiST/AITeL. Oppdragsgiver: DataKompaniet AS v/Tor Rune Skoglund. Veileder: Helge Hafting. Oppdragstakere: Knut Imar Hagen & Knut Magne Solem. Oppdragsgiver. Firmanavn: DataKompaniet AS Oppgavestiller og daglig leder: Tor Rune Skoglund
E N D
MoonShape – Hovedprosjekt vår 2005, HiST/AITeL Oppdragsgiver: DataKompaniet AS v/Tor Rune Skoglund Veileder: Helge Hafting Oppdragstakere: Knut Imar Hagen & Knut Magne Solem
Oppdragsgiver Firmanavn: DataKompaniet AS Oppgavestiller og daglig leder: Tor Rune Skoglund Grunnlagt som ANS i 1992, omorganisert som AS i 1995, samme året som innflyttingen til Teknostallen. Slagord: ”Kunnskap og kvalitet siden 1992” Totalleverandør av dataprodukter og datatjenester til små og mellomstore bedrifter, samt større privatkunder. Tilbyr feilsøk, test og reparasjoner av nettverksoppsett og enkeltstående PC-er med tilbehør. Registrert forhandler for en rekke utenlandske firmaer. Sunn og god økonomi med en jevn omsetningsvekst hvert år.
Problemstilling DataKompaniet administrerer en serverpark og en trådløs wifi-sone. Kunder har servere i denne serverparken, og kunder kan kjøpe trådløs internettaksess på Teknostallen. Her flyter datatrafikken ukontrollert med tanke på hastighet og datavolum. Problemstillingen er å måle og begrense datatrafikken, både hastighet og datavolum, og lage et administrasjonssystem. Systemet skal basere begrensningen på IP-adresser. Brukergrensesnittet skal være en Linux-frontend som bruker forretningslogikk med støtte for iptables og modulen TC.
Hvorfor denne oppgaven? Vi som er oppdragstakere liker utfordringer Denne oppgaven så mest spennende ut av de oppgavene skolen hadde fått tilsendt fra alle oppdragsgivere Vi måtte velge en oppgave som passet for to personer Dette er en oppgave som appellerer til vår studieretning på grunn av at den omhandler nettverk og linux Det var en motivasjonsfaktor å lære noe nytt; iptables med modulen TC og hvordan lage en linux-frontend Spennende å lære seg å programmere for en unix-plattform
Løsning av problemet Vi startet med å lese veldig mye informasjon om TC Deretter delte vi opp utviklingen av systemet i flere deler, så hver av oss fikk ansvaret for delområder Begge var enige om å følge en Open Source-tankegang Vi fikk låne to datamaskiner med to nettverkskort hver I systemutviklingsfasen programmerte vi direkte på den ene maskinen og brukte den andre som filtjener i testingen Underveis hadde vi kontinuerlig kommunikasjon og samarbeidet dermed så godt at det ikke oppstod problemer med selve samhandlingen i utviklingen Problemene eksisterte derimot med TC og PHP, men vi fant på mange løsninger for alle problemene TC er dårlig dokumentert, og det førte til at vi måtte finne ut av enkelte ting selv, men systemet fungerer nå tilfredsstillende
Skisse av systemet Serverpark/wifi-sone: INTERNETT Linux-ruter med moonshape installert. Moonshape installeres på ruteren, og vil bare berøre IP-adresser som er lagt inn i systemet. De andre vil flyte igjennom som normalt. Systemet administreres på ruteren via ssh.
Brukerprogrammer Hva skjer ”under lokket” - før Linux kernel,eth0 IP-Stack Forwarding Pakker ut Pakker inn Hvis /proc/sys/net/ipv4/ip_forward = 1 Ingresskø Egresskø Denne figuren viser hva som skjer i Linuxkjernen ved trafikk inn og ut av et nettverkskort.
Brukerprogrammer kø1 kø2 kø3 Hva skjer ”under lokket” - etter Linux kernel,eth0 IP-Stack Forwarding Pakker inn Pakker ut Hvis /proc/sys/net/ipv4/ip_forward = 1 Ingresskø filter1 filter2 filter3 Egresskø Her gjør moonshape endringer vha tc-modulen. Moonshape berører kun eth0.
Hva skjer ”under lokket” - nedlasting Får ny avsender- adresse her. moonshape Serverpark: Lokal IP (10.0.1.2) A Reduserer hastighet INTERNETT Nedlasting av fil fra A (10.0.1.2) til B: Pakkene blir sendt i full hastighet til eth0, men ingress-køa slipper bare inn pakker med en gitt hastighet. Grunnet egenskapene til TCP, så vil avsenderhastigheten etter hvert matche mottakerhastigheten. Siden pakkene ikke er adressert til eth0, så sendes de videre (forwarding) til eth1. Der foregår POSTROUTING NAT, så der endres avsender-adressen til den offisielle IP-adressen ut mot Internett. B mottar til slutt pakkene med avsenderadresse til eth1. B
Hva skjer ”under lokket” - opplasting Får ny mottaker- adresse her. moonshape Serverpark: Lokal IP (10.0.1.2) A Reduserer hastighet INTERNETT Opplasting av fil via FTP til A (10.0.1.2) fra B: Pakkene blir sendt i full hastighet fra B til den offisielle IP-adressen til eth1. Der foregår det PREROUTING port-forwarding, og pakkene får ny mottakeradresse. Pakkene blir så videresendt til eth0, og egresskøa vil redusere hastigheten ved å kaste overflødige pakker. Egenskapene til TCP gjør at B etter hvert vil sende i samme hastighet som A tillates mottatt. B
Resultater Resultatet er systemet MoonShape Oppgavekravet var kun å måle datatrafikken, mens vårt system også utfører den ønskede utvidelsen å begrense den MoonShape er oppdelt i tre deler Hastighet- og datavolumbegrensning pr. tidsenhet Utføring av handlingsskript dersom volumbegrensninger overskrides Statistikk over brukt båndbredde og datavolum MoonShape har innslag med IP-adresse og nettverksmaske som identifikator, så man kan kontrollere et subnett, eller bare en enkelt IP-adresse MoonShape består av en linux-frontend med flere tekstbaserte kommandoer og et web-basert administrasjonsgrensesnitt for statistikken
Resultater Systemet er satt sammen av mange små programmer som hver utfører sin bestemte oppgave Brukermanualen er laget som ”linux man pages” Alle kodekommentarer og programdokumentasjon er skrevet på engelsk for å følge Open Source-tankegangen Kort og godt et system som vi utviklere er fornøyde med!
Resultater Denne visuali-seringen viser hvordan shaperen oppfører seg på forskjellige hastigheter.
Resultater 8 mbit 4 mbit 2 mbit 1 mbit 0,5 mbit Denne visualiseringen viser hvordan shaperen oppfører seg når man skifter båndbredde under nedlasting.
Videre arbeid Vi har implementert den funksjonaliteten som trengs for at systemet skal fungere tilfredsstillende En utvidelse som er ønsket, men som krever en fullstendig omgjøring av systemet er å kunne skille pakketrafikken på forskjellige portnummer/protokoller. En løsning på dette er beskrevet i sluttrapporten til dette prosjektet.