moonshape – hovedprosjekt vår 2005, hist/aitel
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
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
Linux-ruter med moonshape installert.
Serverpark/wifi-sone:
INTERNETT
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.
Skisse av systemet
Brukerprogrammer
IP-Stack
Ingresskø
Forwarding
Egresskø
Linux kernel,eth0
Denne figuren viser hva som skjer i Linuxkjernen ved trafikk inn og ut av et nettverkskort.
Pakker innPakker ut
Hvis /proc/sys/net/ipv4/ip_forward = 1
Hva skjer ”under lokket” - før
Brukerprogrammer
IP-Stack
Ingresskø
Forwarding
Egresskøkø1kø2kø3
Linux kernel,eth0
filter1
filter2
filter3
Her gjør moonshape endringer vha tc-modulen.Moonshape berører kun eth0.
Pakker inn Pakker ut
Hva skjer ”under lokket” - etter
Hvis /proc/sys/net/ipv4/ip_forward = 1
Hva skjer ”under lokket” - nedlasting
Serverpark:
INTERNETT
Lokal IP(10.0.1.2)
Får ny avsender- adresse her.
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
Reduserer hastighet
A
moonshape
Hva skjer ”under lokket” - opplasting
Serverpark:
INTERNETT
A
Får ny mottaker- adresse her.
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
Reduserer hastighet
Lokal IP(10.0.1.2)
moonshape
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
Denne visualiseringen viser hvordan shaperen oppfører seg når man skifter båndbredde under nedlasting.
1 mbit
4 mbit
2 mbit
0,5 mbit
8 mbit
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.