TDTS04: Distansvektorroutning i java

Relevanta dokument
TDTS04: Ett chattsystem i java baserat på corba

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

DIG IN TO Administration av nätverk- och serverutrustning

g S tin u g A o ett tin u r R m llan o o e to R ec in m g? ain g S tin m tin ce-v u o u r ro r-d r ro istan ö te ö är ett A d a D - F In - F V

ETS052 Internet Routing. Jens A Andersson

Tentamen, Algoritmer och datastrukturer

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

TDDD36: Laboration i OMNet++

DIG IN TO Administration av nätverk- och serverutrustning

Routing Information Protocol

Föreläsning 13 Innehåll

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

ETS052 Internet Routing. Jens A Andersson

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Skriftlig tentamen i kursen TDTS04 Datornät och distribuerade system kl

Nätverksteknik A - Introduktion till Routing

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Övning 5 EITF25 & EITF Routing och Networking. October 29, 2016

DIG IN TO Administration av nätverk- och serverutrustning

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Övning 5 ETS052 Datorkommuniktion Routing och Networking

Classes och Interfaces, Objects och References, Initialization

Skriftlig tentamen i kursen TDTS0604 och TDTS43 Datornät och distribuerade system kl. 8 12

729G06 Föreläsning 1 Objektorienterad programmering

Nätverkslagret - Intro

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Projekt Routerprogrammering. Kravspecifikation. Redaktör: Johan Eliasson Version 1.0

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

DIG IN TO Administration av nätverk- och serverutrustning

Skriftlig tentamen i kursen TDTS04 Datornät och distribuerade system kl. 8 12

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Testtentamen i kursen TDTS04 Datornät och distribuerade system vt 2009

Tentamen TEN1 HI

Projekt Fake för Virtutech

Objektorienterad programmering Föreläsning 2

Datakommunikation. Nätskiktet. Routers & routing

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Statistik över heltal

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Objektorienterad programmering i Java I

Laboration 3, uppgift En klass för en räknare

Projektuppgift - Gymmet

Skriftlig tentamen i kursen TDTS04 Datornät och distribuerade system kl. 8 12

TDDC74 Lab 02 Listor, sammansatta strukturer

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 3-4 Innehåll

TDDI16: Datastrukturer och algoritmer

Ad-Hoc Nätverk. Christer Corneliusson Ett arbete i kursen Datakommunikation och Distribuerade System VT- 2005

Skriftlig tentamen i kursen TDTS04 och TDTS43 Datornät och distribuerade system kl

Inlämningsuppgift 12b Router med WiFi. Här ska du: Installera och konfigurera en trådlös router i nätverket.

NetBeans 5.5. Avsikt. Projektfönster

Tentamen i Objektorienterad modellering och design Helsingborg

Länkade listor och automatisk testning

Redovisning av inlämningsuppgifter

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Question 2. a) reliable delivery. 5 June

Tentamen TEN1 HI

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Föreläsning 5 Innehåll

Projektuppgift - Biblioteket

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

TDDD78 projekt: Tower Defence

Objektorienterad Programkonstruktion

Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen Arv och polymorfi

Tentamen Datastrukturer (DAT036)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Introduktion till xdigiflex-simulatorn

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Rättningstiden är i normalfall 15 arbetsdagar och resultat anslås sedan i Ladok inom en vecka (under förutsättning att inget oförutsett inträffar).

Detaljbeskrivning av Player

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Gissa det hemliga talet

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Objektorienterad Programmering (TDDC77)

TENTAMEN I DATAVETENSKAP

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Labb 3: Ekvationslösning med Matlab (v2)

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Objektorienterad Programmering (TDDC77)

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

TDTS04 Datornät och distribuerade system, 15 mars 2010 Svar sammanställda av Juha Takkinen, IDA,

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

"if"-satsen. Inledande programmering med C# (1DV402)

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Tentamen i datakommunikation EDA343/DIT420 Vt 2011

Grundläggande programmering med C# 7,5 högskolepoäng

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Transkript:

19 January 2010 TDTS04: Distansvektorroutning i java Juha Takkinen, Ph.D. IDA, Institutionen för datavetenskap 1.0 Översikt Labb 4 består av att utforma, implementera, testa och demonstrera ett program i java som implementerar den distribuerade och asynkrona distansvektorroutningsalgoritmen baserad på Bellman-Ford-ekvationen. Lösningen ska även inkludera giftig retur -algoritmen (poison reverse) som delvis löser problemet med loopar i routningstopologin. Du får som också en följdfråga att besvara om labben. 2.0 Vad du ska implementera Huvudutmaningen i den här labbuppgiften är att din kod måste vara asynkron. Du får i labben tillgång till en händelsedriven simulator som hanterar kommunikationen mellan routrar. Du ska implementera den del av algoritmen som exekveras i varje router. Även om routrarna är aktiva i ett och samma program (simulatorn) så kan de endast kommunicera med varandra genom att skicka meddelanden via simulatorn. Du får följande filer i labben: RouterNode.java RouterSimulator.java RouterPacket.java GuiTextArea.java F.java 1 av 6

Vad du ska implementera Makefile Det medföljer även en katalog kallad test där två versioner av simulatorn finns tillgängliga för att testa din kodning. RouterSimulator4.java å ena sidan är samma som RouterSimulator.java och hanterar ett nätverk med fyra noder enligt figur 1 nedan. RouterSimulator5.java å andra sidan simulerar ett nätverk med fem noder enligt figur 2. FIGUR 1. Nätverket med fyra noder i filen RouterSimulator4.java. FIGUR 2. Nätverket med fem noder i filen RouterSimulator5.java. 2 av 6 TDTS04: Distansvektorroutning i java

Exekvering av simulatorn Den enkla klassen F i filen F.java kan du använda för att utföra enkla textformaterade in- och utmatningar. All kod som du skapar ska du lägga i filen RouterNode.java. Du ska alltså endast ändra denna fil för att lösa labbuppgiften. Däremot kan du få behöva modifiera RouterSimulator.java och RouterPacket.java när du testar din kod, men vid demonstration av den slutliga lösningen ska all ny kod enbart finnas i RouterNode.java. I filen RouterNode.java ska du lägga till kod för konstruktorer och metoder i klasserna som finns där. Du får endast kommunicera med andra routrar via metoden sendupdate(). Du får inte lägga till några static medlemmar i en klass eller på annat sätt komma runt kravet att all information måste gå via sendupdate(). Övriga metoder i filen är: recvupdate(), som anropas av simulatorn när en nod får en updpatering från en av sina grannar. updatelinkcost() exekveras när en kostnad på en länk som noden finns på förändras. printdistancetable() används för avlusning och testning av koden och även för demonstration av lösningen. Denna metod ska skriva ut distansvektortabellen (routningstabellen) i ett format som du (och labbassistenten) kan läsa och förstå (OBS! Viktigt!). När du sedan demonstrerar din kod för labbassistenten så ska du kunna förklara exakt vad dina tabeller innehåller; listningen av tabellerna ska helst vara självförklarande. Koden som du skapar ska dessutom implementera giftig retur -algoritmen (poison reverse). 3.0 Exekvering av simulatorn Du startar simulatorn genom att skriva % java -DTrace=3 RouterSimulator Simulatorn börjar med att initialisera varje router. Ett antal fönster öppnas på skärmen, en för simulatorns utdata och en för varje routernod som initialiseras. 1 Se figur 3 på nästa sida. Titeln på fönstret beskriver vad som finns i det. 1. Det grafiska gränssnittet finns implementerat i filen GuiTextArea.java. TDTS04: Distansvektorroutning i java 3 av 6

Exekvering av simulatorn FIGUR 3. Innehållet på skärmen när simulatorn startas. Från detta startläge ska din kod alltså se till att uppdateringar sker i nätverket, d.v.s routrarna i de olika fönstren. Simulatorn kommer att exekvera tills routningstabellerna har konvergerat, d.v.s när det inte längre finns några meddelanden eller händelser kvar i systemet. I konstruktorn för simulatorn kan man via kommandoraden sätta spårningsnivån (trace level) med flaggan -DTrace=3 som du gjorde när du startade simulatorn ovan. Ett spårningsvärde på 1 eller 2 gör att simulatorn kommer att skriva ut detaljer om vad som händer inuti simulatorn, t.ex. vad som sker med paket och timerfunktioner. Värde 0 stänger av spårningen helt. Ett värde över 2 gör att simulatorn kommer att visa all möjlig information, som kan vara bra för avlusning av din kod. 1 1. I verklighetens nätverk finns inte en sådan här fin spårningsfunktion att tillgå. 4 av 6 TDTS04: Distansvektorroutning i java

Övrigt Du kan även förändra startvärdet pseudoslumptalen i simulatorn, t.ex. till värdet 123, med flaggan -DSeed=123: % java -DSeed=123 RouterSimulator Ett annat startvärde på pseudoslumptalen ger en annan händelsekedja för meddelandena i ditt nätverk. 4.0 Övrigt Du behöver inte ändra kopplingarna mellan noderna i topologin, d.v.s noder som ej är uppkopplade mot varandra i början av simuleringen ska inte bli uppkopplade senare via uppdateringar. När din labbassistent eventuellt testar din kod så kommer han/hon att använda andra värden på länkkostnaderna i topologin. Du kan själv ändra på värdena och därmed testa din kod mera genom att initialisera datastrukturen connectcosts[][] i RouterSimulator(). Se dock till att sätta samma länkkostnader åt båda hållen på varje länk; vi använder endast symmetriska länkkostnader i kursen. Det är även här som olika topologier kan kodas. Simulatorn skickar aldrig RouterPacket-meddelanden själv. Din kod måste se till att det utbyts information mellan routrarna i nätverket. Filen RouterNode.java har en variabel kallad costs som initialiseras av konstruktorn. Simulatorn sätter länkkostnaderna som hör till en nod via costs. Till exempel, i nätverket i figur 1, så sätts länkkostnaderna i nod 1 via en vektor bestående av {1, 0, 1, Router- Simulator.INFINITY} som innebär att kostnaden är 1 till nod 0, 0 till noden själv, 1 till nod 2 och oändlig till nod 3. Förändringar i länkkostnaderna sker genom anrop av updatelinkcost(), som du ska implementera. Kostnaderna för alla länkarna sätts i konstruktorn för RouterSimulator. Längre ned i koden läggs två händelser (events) till som gör att länkkostnaderna kommer att ändras vid specifika tillfällen under simuleringstiden. Länken mellan eventity och dest ändras till cost vid tiden evtime. Observera att länkkostnaderna inte kommer att ändras om du inte ändrar värdet på konstanten LINKCHANGES till sant som finns i början på filen. Ändra gärna länkkostnaderna och händelserna här för att testa din kod. TDTS04: Distansvektorroutning i java 5 av 6

Följdfråga om labben Mer information om implementation av distansvektorroutning kan du läsa om i nedanstående källa: C. Hedrick, C. (1988), RFC 1058 Routing information protocol. IETF, June 1988. 5.0 Följdfråga om labben 1. Giftig retur -algoritmen löser problemet med loopar i de nätverkstopologier som du testar i labben. Ge ett exempel på en topologi, t.ex. en utökning av ett av nätverken i labben, där algoritmen inte skulle fungera och förklara även varför. Ge en lösning på detta nya problem. 6.0 Redovisning För att slutföra labben måste du demonstrera din lösning för labbassistenten. Vid demonstrationen kan det ske att en annan topologi än de två givna i uppgiften används av labbasistenten för att testa din kod. Var beredd på att förklara vad printdistancetable() visar på skärmen och hur du har implementerat giftig retur -algoritmen. Kontrollera att du har svarat utförligt på frågan som ställs i labbuppgiften och använd vederhäftiga källor som referenser. Innan du demonstrerar din lösning, ge din labbassistent en papperskopia av din kod (allt ska finnas i RouterNode.java enbart) samt Makefile-filen. Lämna sedan in din laborationslösning på papper i ett korrekt ifyllt och underskrivet IDA-labbomslag till laborationsassistenten. 6 av 6 TDTS04: Distansvektorroutning i java