30/06/2022
I en verden, hvor trådløs kommunikation er allestedsnærværende, opstår der ofte behov for fleksible og selvorganiserende netværksløsninger. Dette er især relevant i situationer, hvor traditionel infrastruktur enten er utilgængelig eller upraktisk. Her kommer Dynamic Source Routing (DSR) protokollen ind i billedet som en elegant og effektiv løsning for mobile ad hoc netværk (MANETs). DSR er designet specifikt til at håndtere de dynamiske og uforudsigelige udfordringer, der opstår, når mobile enheder skal kommunikere direkte med hinanden over flere hop, uden central styring.

Hvad er Dynamic Source Routing (DSR)?
Dynamic Source Routing (DSR) er en routingprotokol, der er skræddersyet til brug i multi-hop trådløse ad hoc netværk, bestående af mobile knuder. Det, der gør DSR særligt bemærkelsesværdigt, er dets evne til at lade netværket være fuldstændig selvorganiserende og selvkonfigurerende. Dette betyder, at der ikke er behov for nogen eksisterende netværksinfrastruktur eller administrativ indgriben for at netværket kan fungere.
DSR er en reaktiv protokol, hvilket indebærer, at alle aspekter af protokollen opererer udelukkende efter behov – eller on-demand. I modsætning til proaktive protokoller, der konstant udsender ruteopdateringer, reagerer DSR kun, når der er et behov for at sende data til en destination, hvor en rute ikke allerede er kendt. Kernen i DSR bygger på konceptet om kilderouting, hvor afsenderen af en pakke bestemmer den komplette sekvens af knuder, som pakken skal videresendes igennem. Denne tilgang adskiller sig markant fra traditionel routing, hvor hver mellemliggende knude træffer sin egen routingbeslutning.
Fordelen ved kilderouting er, at mellemliggende knuder ikke behøver at opretholde opdateret routinginformation for at videresende de pakker, de modtager. Al den nødvendige ruteinformation er indkapslet direkte i pakkens header, hvilket forenkler mellemliggende knuders rolle og reducerer behovet for at vedligeholde store routingtabeller. Dette gør DSR særligt robust over for netværkstopologiske ændringer, som er hyppige i mobile ad hoc netværk.
Kernen i DSR: Kilderouting og Dens Betydning
Som nævnt er kilderouting den grundlæggende byggesten i DSR-protokollen. Men hvad betyder det egentlig i praksis, og hvorfor er det en fordel i ad hoc netværk? I et kilderouting-system specificerer den afsendende knude den fulde sti, som en datapakke skal følge for at nå sin destination. Denne sti er en ordnet liste af adresser på de mellemliggende knuder, som pakken skal passere. Denne liste indlejres direkte i pakkens header.
Forestil dig et bud, der får en pakke med en detaljeret vejbeskrivelse, der præcist angiver, hvilke gader pakken skal igennem, og hvilke huse den skal passere for at nå frem. Buddet behøver ikke at kende bykortet udenad; det skal blot følge instruktionerne. På samme måde behøver en mellemliggende knude i et DSR-netværk ikke at have en omfattende viden om hele netværkets topologi. Den skal blot læse den næste hopadresse i pakkens header og videresende pakken til den pågældende knude. Dette design minimerer den routinginformation, som individuelle knuder skal gemme og vedligeholde, hvilket er en stor fordel i dynamiske og ressourcebegrænsede miljøer som MANETs.
En anden vigtig konsekvens af kilderouting er, at det reducerer den overhead, der er forbundet med periodiske ruteopdateringer. Da mellemliggende knuder ikke er afhængige af at opdatere deres routingtabeller, undgås den konstante udveksling af kontrolpakker, som er typisk for mange proaktive routingprotokoller. Dette sparer båndbredde og strøm, hvilket er afgørende for batteridrevne, mobile enheder.
DSR's To Hovedmekanismer: Rutefinding og Rutevedligeholdelse
DSR-protokollen er opdelt i to primære mekanismer, der arbejder sammen for at muliggøre effektiv kommunikation i et dynamisk netværk:
- Rutefinding (Route Discovery)
- Rutevedligeholdelse (Route Maintenance)
Disse to faser sikrer, at ruter kan etableres, når de er nødvendige, og at de kan tilpasses, hvis netværkstopologien ændrer sig.
Rutefinding (Route Discovery) i Detaljer
Hver knude i et DSR-netværk vedligeholder en rutecache, som indeholder alle kendte ruter fra sig selv til forskellige destinationer. Når en knude har en pakke at sende, forsøger den først at bruge denne cache til at levere pakken. Hvis destinationen ikke findes i cachen, eller hvis den eksisterende rute er forældet, initieres rutefindingsfasen for at opdage en rute til destinationen.

Processen for rutefinding starter med, at kildeknuden sender en ruteanmodning (Route Request - RREQ). Denne anmodning indeholder destinationens adresse, kildeadressen og et unikt identifikationsnummer. RREQ-pakken udsendes (broadcastes) til kildeknudens naboer, som derefter videresender den til deres naboer, og så videre, indtil pakken enten når destinationen eller en mellemliggende knude, der allerede kender en rute til destinationen.
Hver gang en knude modtager en RREQ-pakke, tilføjer den sin egen adresse til den sti, der er indlejret i pakken. Dette skaber en "rutehistorik", som gradvist bygges op, mens pakken bevæger sig gennem netværket. En knude behandler kun en RREQ-pakke, hvis den ikke tidligere har behandlet den (identificeret via det unikke ID og kildeadresse) og dens egen adresse ikke allerede er til stede i rutecachen som en del af en rute til destinationen (for at undgå loops).
Når destinationen modtager en RREQ-pakke, genererer den et rutesvar (Route Reply - RREP). RREP'en sendes tilbage til kildeknuden ved at bruge den omvendte sti, som er registreret i RREQ-pakken. Hvis en mellemliggende knude modtager en RREQ og allerede har en gyldig rute til destinationen i sin rutecache, kan den også generere en RREP ved at kombinere sin kendte rute med den del af stien, der allerede er akkumuleret i RREQ'en. Dette optimerer rutefindingsprocessen, da destinationen ikke altid behøver at blive nået for at en rute kan etableres.
Eksempel på Rutefinding
Lad os betragte et eksempel, hvor knude S1 ønsker at sende data til knude S7. S1 har ingen kendt rute til S7 i sin rutecache:
- S1 initierer RREQ: S1 udsender en RREQ for S7. Pakken indeholder stien [S1].
- S2 modtager RREQ: S2 modtager RREQ fra S1, tilføjer sin egen adresse og videresender den. Stien er nu [S1-S2].
- S3 og S4 modtager RREQ: S3 modtager fra S2 ([S1-S2-S3]), og S4 modtager fra S2 ([S1-S2-S4]). De videresender begge.
- S5 modtager RREQ: S5 modtager RREQ fra S4 ([S1-S2-S4-S5]).
- S7 modtager RREQ: S7, destinationen, modtager RREQ fra S5 ([S1-S2-S4-S5-S7]).
S7, destinationen, modtager anmodningen via potentielt flere stier. Den vælger én sti (ofte den første modtagne, eller den korteste baseret på hop-antal) og sender et RREP tilbage til kildeknuden (S1) ved hjælp af den omvendte sti. I dette eksempel er den valgte rute S1-S2-S4-S5-S7. Ved hvert hop på returvejen lagres den bedste rute med minimum antal hop i knudernes rutecache.
Rutevedligeholdelse (Route Maintenance) Forklaret
I mobile ad hoc netværk er knudernes mobilitet en konstant faktor, der kan føre til hyppige ændringer i netværkstopologien. Dette betyder, at ruter, der engang var gyldige, kan blive brudt. DSR's rutevedligeholdelsesmekanisme er designet til at håndtere disse ændringer ved at identificere og reagere på brudte forbindelser.
Hvis en rute, der findes i rutecachen, viser sig ikke længere at være gyldig – f.eks. fordi en mellemliggende knude har flyttet sig uden for rækkevidde – initieres en rutevedligeholdelsesprocedure. Denne procedure udføres typisk ved, at en knude, der forsøger at videresende en pakke og opdager, at det næste hop på den specificerede sti er utilgængeligt, genererer en rute-fejlpakke (Route Error - RERR).
RERR-pakken sendes tilbage mod kildeknuden og informerer om, hvilken forbindelse der er brudt. Når en knude modtager en RERR-pakke, fjerner den den fejlbehæftede hop fra sin rutecache, og alle ruter, der indeholder den pågældende hop, afkortes på det punkt. Dette sikrer, at forældede eller ugyldige ruter fjernes fra netværket.
Efter at en rute er blevet brudt og den relevante information er spredt via RERR-pakker, skal kildeknuden, hvis den stadig ønsker at sende data til destinationen, genstarte rutefindingsfasen for at finde en ny, gyldig rute. Det er vigtigt at bemærke, at DSR's rutevedligeholdelse ikke lokalt reparerer en brudt forbindelse; den informerer blot kildeknuden om bruddet, hvorefter en ny rutefinding skal iværksættes.

Fordele og Ulemper ved DSR
Som med enhver protokol har DSR sine styrker og svagheder, der gør den mere eller mindre egnet til forskellige scenarier:
Fordele:
- Reaktiv Tilgang: DSR's reaktive natur eliminerer behovet for periodisk at oversvømme netværket med tabelopdateringsbeskeder, som er påkrævet i tabeldrevne (proaktive) protokoller. Dette sparer båndbredde og strøm.
- Effektiv Brug af Rutecache: Mellemliggende knuder udnytter rutecache-informationen effektivt til at reducere kontrol-overhead. En knude kan besvare en RREQ, hvis den har en rute i sin cache, hvilket minimerer den tid og de ressourcer, der bruges på rutefinding.
- Ingen Periodiske "Hello"-Pakker: DSR er "beacon-less", hvilket betyder, at den ikke kræver periodiske "hello"-pakker for at informere naboer om en knudes tilstedeværelse. Dette reducerer kontroltrafikken yderligere.
- Selvkonfigurerende: Netværket er fuldstændig selvorganiserende og selvkonfigurerende uden behov for eksisterende infrastruktur.
Ulemper:
- Ingen Lokal Rute-Reparation: Rutevedligeholdelsesmekanismen reparerer ikke lokalt en brudt forbindelse. Dette betyder, at en ny rutefinding skal initieres, selv ved små brud.
- Højere Forbindelsesopsætningsforsinkelse: Forbindelsesopsætningsforsinkelsen er højere end i tabeldrevne protokoller, især når en rute skal findes for første gang eller efter et brud.
- Degradering med Høj Mobilitet: Selvom protokollen fungerer godt i statiske og lav-mobilitetsmiljøer, forringes ydeevnen hurtigt med stigende mobilitet. Hyppige topologiændringer fører til flere rutefindingsprocesser.
- Betydelig Routing-Overhead: Den kilderouting-mekanisme, der anvendes i DSR, medfører en betydelig routing-overhead, især for lange stier eller store adresser (f.eks. IPv6), da hele stien skal indkapsles i hver pakkes header. Denne overhead er direkte proportional med stiets længde.
- Cache-Inkonsistens: Hvis en knudes rutecache indeholder forældede ruter, kan det føre til, at pakker sendes ud på ugyldige stier, hvilket forårsager yderligere forsinkelser og ressourceforbrug.
DSR i Sammenligning med Andre Ad Hoc Routing Protokoller
For bedre at forstå DSR's plads i landskabet af ad hoc routingprotokoller, er det nyttigt at sammenligne den med andre prominente protokoller. En af de mest almindelige sammenligninger er med AODV (Ad hoc On-demand Distance Vector), som også er en on-demand protokol, men med en fundamentalt anderledes tilgang til routing.
| Egenskab | Dynamic Source Routing (DSR) | Ad hoc On-demand Distance Vector (AODV) |
|---|---|---|
| Routing Type | Kilderouting (hele stien i pakkeheader) | Hop-for-hop routing (kun næste hop i pakkeheader) |
| Ruteopdagelse | Ruteanmodning (RREQ) samler stien i headeren. Rutesvar (RREP) sendes tilbage via omvendt sti eller kendt rute. | RREQ udsendes med destinationssekvensnummer. RREP sendes tilbage via midlertidige ruter, opdaterer routingtabeller. |
| Routingtabeller | Hver knude vedligeholder en rutecache med fulde stier. | Hver knude vedligeholder en routingtabel med næste hop og afstand til destinationer. |
| Rutevedligeholdelse | Rute-fejlpakker (RERR) informerer om brud. Kræver ny rutefinding. | RERR-pakker informerer om brud, og routingtabeller opdateres/slettes. Kan initiere ny rutefinding. |
| Overhead | Højere overhead for lange stier pga. sti i pakkeheader. | Lavere overhead i pakkeheader, men højere kontroltrafik for at vedligeholde routingtabeller. |
| Skalerbarhed | Kan have skalerbarhedsproblemer i meget store netværk med lange stier. | Bedre skalerbarhed i store netværk, men kan lide under mere kontroltrafik. |
| Lokal Reparation | Ingen lokal reparation af brudte ruter. | Kan udføre lokal reparation i visse tilfælde. |
Mens DSR og AODV begge er on-demand, er deres grundlæggende arkitektur for routinginformation markant forskellig. DSR's kilderouting giver en direkte og uafhængig rute, men med potentielt større pakkeheaders. AODV's hop-for-hop-tilgang er mere traditionel, men kræver, at knuder opretholder mere routinginformation lokalt. Valget mellem dem afhænger ofte af netværkets størrelse, mobilitetsmønstre og ressourcebegrænsninger.
Ofte Stillede Spørgsmål om DSR
Hvorfor kaldes DSR en "reaktiv" protokol?
DSR er reaktiv, fordi den kun initierer rutefinding, når en kildeknude har data at sende til en destination, og den ikke allerede har en gyldig rute i sin rutecache. Den vedligeholder ikke proaktivt ruter eller udveksler periodiske kontrolpakker for at holde routingtabeller opdaterede, som proaktive protokoller gør. Dette minimerer unødvendig netværkstrafik, når der ikke er behov for at sende data.
Hvad er den største fordel ved kilderouting?
Den største fordel ved kilderouting er, at mellemliggende knuder ikke behøver at opretholde detaljerede routingtabeller eller konstant udveksle ruteopdateringer. Al den nødvendige information for at videresende en pakke er indlejret i pakkens header. Dette forenkler mellemliggende knuders design, reducerer deres behandlingsbyrde og gør protokollen mere robust over for hurtige topologiændringer.
Hvad sker der, hvis en rute brister under en aktiv session?
Hvis en rute brister under en aktiv session, vil den knude, der opdager bruddet (f.eks. ved mislykket videresendelse), generere en Rute-Fejlpakke (RERR). Denne RERR sendes tilbage til kildeknuden, og alle knuder, der modtager den, vil fjerne den brudte forbindelse fra deres rutecaches. Kildeknuden skal derefter initiere en ny rutefindingsproces for at etablere en ny sti til destinationen, hvis den fortsat ønsker at sende data.
Er DSR egnet til alle typer ad hoc netværk?
DSR er bedst egnet til ad hoc netværk med lav til moderat mobilitet og et relativt lille til mellemstort antal knuder. I miljøer med høj mobilitet kan den hyppige rutefinding og den manglende lokale rute-reparation føre til højere forsinkelser og øget kontrol-overhead. For meget store netværk kan størrelsen af pakkeheaders, der indeholder hele ruten, også blive et problem.
Hvordan forhindrer DSR routing-loops?
DSR forhindrer routing-loops ved at inkludere den komplette sti i RREQ-pakken. Når en knude modtager en RREQ, tilføjer den sin egen adresse til stien. Hvis en knude modtager en RREQ, der allerede indeholder dens egen adresse i stien, kasseres pakken, da dette indikerer en loop. Derudover anvendes et unikt identifikationsnummer sammen med kildeadressen i RREQ for at forhindre duplikerede anmodninger og sikre, at kun den første instans af en RREQ behandles.
Samlet set er Dynamic Source Routing en kraftfuld og fleksibel protokol, der har spillet en vigtig rolle i udviklingen af mobile ad hoc netværk. Dens on-demand natur og kilderouting-tilgang tilbyder betydelige fordele i visse miljøer, selvom den, som alle teknologier, har sine begrænsninger. Forståelsen af DSR's mekanismer er essentiel for enhver, der arbejder med trådløs netværksteknologi og mobile kommunikationssystemer.
Hvis du vil læse andre artikler, der ligner Dybdegående Guide til Dynamic Source Routing (DSR), kan du besøge kategorien Teknologi.
