Prekodet MIP daemon

For kandidater som ønsker å teste sin rutingserver uavhengig av egen MIP-daemon tilbyr vi en prekompilert daemon.

Dersom man føler at MIP-daemonen fra den obligatoriske oppgaver har store mangler og ønsker å utvikle og teste sin rutingserverimplementasjon mot en kjent fungerende MIP-daemon, kan man laste ned vår prekompilerte daemon her.

 

NB: dersom du velger å kun teste mot denne utleverte koden og ikke leverer en utvidet utgave av egen MIP-daemon, vil du tape omtrent 20 av 100 poeng på hjemmeeksamen 1. Vi anbefaler å bruke prekoden som et hjelpemiddel for å ferdigstille rutingserveren, før man evt. forbedrer egen MIP-daemon.

 

Vår MIP-daemon følger alle krav som spesifisert i oppgavetekstene til den obligatoriske oppgaven og hjemmeeksamen 1. Ved feilformattert input fra enten nettverket eller over IPC vil det normalt gis en noenlunde beskrivende feilmelding.

 

Særegenheter:

  • Vi har implementert en kringkastingsfunksjon for rutinginformasjon. Rutingserveren kan adressere meldinger til adresse 255 for å benytte denne.
  • Siden addresse 255 er reservert som kringkastingsadresse, må denne ikke benyttes ellers. Ved ruteoppslag kan rutingserveren svare med 255 som neste hopp dersom det ikke finnes noen rute som svarer til oppslaget.
  • Det må eksistere ruter for alle direkte tilkoblede nabonoder. Dette fordi MIP ikke tilbyr noen à priori måte å avgjøre om en adresse er på samme lokale nettverk (kringkastingsdomene). Mao. hvis en node A er koblet direkte til B og C, må rutingserveren på A ha installert rutene (B via neste hopp B, C via neste hopp C). Rutingserveren kan oppdage direkte naboer vha. kringkastingsfunksjonen beskrevet over.

IPC-grensesnitt:

Mot applikasjon/øvre lag:

Som spesifisert i den obligatoriske oppgaven. Se også nedenfor. NB: det vil ikke fungere riktig å koble til mer enn én applikasjon ad gangen.

Mot rutingserveren, for ruteoppslag:

MIP-daemon sender meldinger ad 1 byte som inneholder en MIP-destinasjonsadresse som skal slås opp.

Rutingserveren svarer med en 1 byte lang melding som inneholder MIP-adressen til neste hopp. Verdien 255 betyr intet oppslag.

Ruteoppslag må betjenes i ankomstrekkefølge.

Mot rutingserveren, for utveksling av ruteinformasjon:

Rutingserveren kan ved behov sende en MIP-nyttelast (data) prefikset av 1 byte som angir destinasjonsadressen. Destinasjonsadresse 255 angir lokal kringkasting over Ethernet, som vil nå direkte tilkoblede naboer.

Ved gyldig innkommende rutingdata (R-bit satt i MIP-headeren) sender MIP-daemon nyttelasten prefikset med 1 byte som angir kildeadressen.

Legg merke til at grensesnittet samsvarer med det for applikasjonen, med tillegg av kringkastingsfunksjonen. De samme restriksjonene angående lengden på nyttelast gjelder her også.

Alle IPC-socketene er UNIX-domene sockets i SOCK_SEQPACKET modus.

 

Kommandolinjegrensesnitt:

Usage: ./mipdaemon [-d] <Socket_application> <Socket_Route> <Socket_forwarding> <Number of Interfaces> [MIP addresses ...]

Flagget -d angir at man ønsker ekstra debugutskrifter underveis. Ellers vil man hovedsaklig kun få evt. feilmeldinger.

<Socket_application> angir stien til UNIX-socketen som applikasjonsen kobler seg på.

<Socket_route> angir stien til UNIX-socketen som rutingserveren benytter for å utveklse ruteinformasjon med andre rutingservere i nettverket, formidlet av MIP-daemon.

<Socket_forwarding> angir stien til UNIX-socketen som benyttes til ruteoppslag.

<Number of interfaces> er antall nettverksgrensesnitt ("kort" evt. "porter") som skal kobles opp med MIP adressene som angis til slutt. NB: det kan forekomme at rekkefølgen på disse ikke samsvarer mellom kjøringer av MIP-daemon. Hvilken interface som er tilordnet hvilken adresse skrives ut når daemonen starter; hvis dette ikke gir ønsket topologi kan man prøve å starte daemonen på nytt.

MIP-daemon oppretter alle sockets som angis og vil normalt rydde opp etter seg. Ved evt. kræsj eller annen plutselig stopp kan MIP-daemon startes to ganger for å komme forbi feilmeldinger om eksisterende filer.

Eksempel:

$ ./mipdaemon -d /tmp/a_mip_ipc /tmp/a_mip_rti /tmp/a_mip_rtr 2 10 20

MIP-daemon startes her i debugmodus. Applikasjon kobles på /tmp/a_mip_ipc, ruteoppslag kobles på /tmp/a_mip_rtr og ruteutveksling kobles på /tmp/a_mip_rti. Noden får koblet opp to nettverksgrensesnitt som tilordnes adressene 10 og 20 hhv.

Defekter osv.

MIP-daemon skal normalt ikke kræsje, selv ved feil input, men meldinger kan bli "hengende fast" i køene ved feil ruting osv. Dette vil ikke hindre nye meldinger i å ekspederes. Rapporter evt. kræsj eller andre feil til in3230@ifi.uio.no.

Publisert 25. sep. 2019 01:02 - Sist endret 25. sep. 2019 01:02