PPP [33] er en protokoll for å overføre pakker mellom to endepunkter (peers) over full-dupleks linjer. Det er mulig å multiplekse flere protokoller (f.eks. IP og AppleTalk) over den samme PPP-linken.
PPP består av tre hovedkomponenter:
Oppbyggingen av pakkene i PPP er (vist grafisk i figur
):
Det er verdt å merke seg at ``the peer'' alltid er `den andre enden''. Dette er helt uavhengig av hvem som koblet opp den fysiske betegnelsen, f.eks. kan begge endepunktene kreve at peeren autentiserer seg. På grunn av dette kan spesifikasjonene for PPP være litt vanskelige å forstå hvis man tenker på klient og server, slik det gjerne oppleves ved oppkobling til en internettleverandør.
Protokollstakken som det arbeides med i denne oppgaven er vist i figur
.
Over linjesvitsjede nett (eller dedikerte linjer) bruker PPP HDLC for
å ramme inn pakker [34]. Innpakking består av (vis grafisk i
figur
:
Flaggverdien 0x7E må escapes i pakken som overføres. 0x7D er valgt som escapeverdi. Bit-stuffing der 6. bit inverteres brukes for å overføre spesialtegn, dvs at 0x7D overføres som 0x7D, 0x5D og 0x7E overføres som 0x7D, 0x5E.
Alle data overføres med en startbit, 8 databiter og en stopbit.
Etter at hardwarelaget er satt opp, må hver ende av PPP linken sende LCP pakker for å konfigurere forbindelsen. LCP består av tre pakketyper:
Forhandlingen av parametre forgår ved at Configure-Request sendes til peer. En slik pakke kan inneholde ønske om flere parametre. Denne pakken kan besvares med Configure-Ack for parametre som godtas, Configure-Nak for parametre der verdien ikke kan godtas og Configure-Reject for parametre som ikke godtas (uansett verdi). Parametre forhandles frem ved at disse meldingene sendes mellom endepunktene inntil alle parametre som hver av endepunktene krever er forhandlet fram. Det kan skje at det ikke lykkes å forhandle fram alle parametre (f.eks. hvis et endepunkt krever mulitlink PPP mens det andre endepunktet ikke støtter det).
Blant parametrene som forhandles fram er MRU (maximum Receive Unit). Autentisering er også en del av LCP[33,27,15].
LCP er nærmere beskrevet i [33] ved hjelp av tilstandstabeller.
De NCPene som brukes for å forhandle fram IP parametre for PPP kalles
Internet Protocol Control Protocol (IPCP)[16]. Ved hjelp av
IPCP forhandles det fram IP-adresser og IP-komprimering (se
).
Denne protokollen er forholdsvis ny, den første spesifikasjonen er fra november 1994. Bakgrunnen for at den ble utviklet var et ønske om å kunne utnytte flere B-kanaler med ISDN forbindelser. Protokollen kan imidlertid brukes til å koble sammen et tilfeldig antall forbindelser med varierende båndbredde. Det er altså mulig å, for eksempel, bruke en GSM-kanal kontinuerlig og sette opp en høyhastighets satelittlink ved store dataoverføringer.
MP setter sammen flere uavhengige PPP forbindelser til en logisk forbindelse. Hver link som legges til den logiske (multi)linken er altså en uavhengig og fullverdig PPP-link. MP kan modeleres som et pseudolag som legges mellom linklaget og internettlaget og håndterer sammenkoblingen av flere fysiske kanaler. MP forhandles fram ved at et ønske om (Configure-Request) parameteren MRRU (Maximum-Receive-Reconstruct-Unit) sendes til peeren. Denne parameteren styrer hvor store pakker som tilsammen kan settes sammen hos det mottagende endepunktet. IP-datagram som sendes over MP settes sammen igjen i den nettverksutstryet som implementerer MP. Datagrammene sendes altså ikke fragmentert videre ut på nettet.
Det er opp til implementasjonen av MP om pakker skal deles opp, og hvor store hvert enkelt fragment skal være.
En PPP pakke som beskrevet i
, deles opp i et antall
fragmenter. Hver av disse fragmentene pakkes inn i en ny pakke, med
dette formatet (vist grafisk i figur
):
Flagget B er satt på det første fragmentet, og E på det siste. Om sekvensnummeret skal være 12 eller 24 bit avgjøres av en LCP parameter.
Van Jacobson komprimering av headere [14] er et system for å komprimere headerne i en TCP forbindelse. Et vanlig datagram med TCP har en header på 40 bytes (20 bytes IP og 20 bytes TCP). Disse pakkene overføres som egne protokoller i PPP.
Ved å utnytte flere egenskaper ved både TCP og IP oppnås det for de mest vanlige pakkene en 3 byte header. Alle forbindelser tildels et 8 bits nummer som brukes for å identifisere forbindelsen. Headere på 3 byte oppnås for TCP forbindelser for interaktiv bruk (små rammer) og bulk-data (store rammer). Denne komprimeringen oppnås bl.a. ved å kun overføre endring i vindusstørrelse og segmentnummer. Hvis flere TCP forbindelser benytter den samme linken overføres kun identifikatoren til forbindelsen hver gang en ny forbindelse benytter linjen. Dette gjør at headeren blir 3 eller 4 byte, der den 4. byten er identifikatoren ved bytte av forbindelse.
Alle pakker i forbindelse med oppsett og terminering av forbindelsen overføres i sin helhet (med 40 bytes header). Alle andre pakker komprimeres hvis de ikke er fragmentert.
Det er 5 forhold som bidrar til overhead med multilink PPP:
Samlet headerstørrelse vi kunne variere mellom 14 og 51 byte. Disse
beregningene forutsetter Van Jacobson komprimering med 3 bytes TCP/IP
header. I tillegg kommer escaping av tegn. Hvis man antar at alle tegn
oversendes like ofte og 2 tegn må escapes, vil
av alle tegn escapes.
Antall bytes overhead (o) pr. antall bytes overførte nyttedata (n)
er gitt i ligning
. I denne ligningen er s antall
bytes som overføres for å sette opp og terminere forbindelsen, e
andel av tegnene som må escapes, l antall linker, ol antall bytes
overhead for hver pakke overført på en link, ov størrelsen på Van
Jacobsen headeren, p pakkestørrelse og op antall bytes overhead
for hver pakke som overføres (PPP header).
| |
(1) |
Hvis man setter inn de vanligste verdiene for s = 205 + 10l (5 pakker
med 40 byte TCP/IP header samt 1 byte PPP header, i tillegg til l
linker med 6 byte MP/HDLC header), ol=10,
, op=3 og
p=1600 blir o en funksjon av n og l som i ligning
.
| |
(2) |
Denne funksjonen er plottet i figur
for l lik 1,
2, 3 og 4. Ved bulkoverføring av data bidrar økende antall linker lite
til den totale overhead. I tillegg til dette kommer start og stop bit.