Simulaci protokolu RIP - zadání úlohy

Úkolem je v jazyce JAVA vytvořit virtuální router, který bude demonstrovat tvorbu směrovacích tabulek a výměnu směrovacích informací se sousedními routery pomocí protokolu RIP.
Pro komunikaci mezi routery (předávání směrovacích tabulek) budou použity UDP datagramy.

Virtuální router je proces (instance JVM), který bude simulovat chování reálného routeru. Každý virtuální router bude mít zadaný počet (virtuálních) rozhraní (označovaných I0 - In) kterými je připojen k jiným virtuálním routerům nebo k lokálním sítím.
Pro výměnu informací se sousedícími routery bude virtuální router znát adresy a porty, na nichž jednotlivá rozhraní sousedních routerů očekávají informace o směrování.
Router sám přijímá informace od ostatních routerů na portech, které jsou jednoznačně přiřazeny každému jeho rozhraní.

Konfigurace routeru

Router načítá svou konfiguraci ze souboru, ve kterém jsou určeny jeho rozhraní, názvy jimi připojených sítí spolu s IP adresou a portem protilehlého sousedního routeru a portu, na kterém očekává z daného rozhraní informace o směrování. Řádky konfiguračního souboru mají jeden ze dvou následujících formátů:

název_rozhraní číslo_lokálního_portu název_spojovací_sítě reálná_IP_adresa_sousedního_routeru č_portu_sousedního_routeru
název_rozhraní číslo_lokálního_portu název_sítě_LAN

Konfigurační soubor má tolik řádků, kolik rozhraní má virtuální router.

Poznámka: Název sítě se předpokládá max. 15-písmenný!

Příklad konfigurace

Příklad routerů

Příklad konfiguračního souboru routeru R1

I0 10000 A 10.0.0.2 10000
I1 10001 Y
I2 10002 C 10.0.0.3 10002

Funkce

Každý virtuální směrovač si po spuštění vytvoří svou prvotní směrovací tabulku na základě konfiguračního souboru. Ta bude obsahovat pouze přímo připojené sítě. Tuto směrovací tabulku bude periodicky zasílat všem přímo připojeným směrovačům. Perioda bude nastavitelná z příkazové řádky při spouštění procesu virtuálního směrovače. Při přijetí tabulky od sousedního směrovače virtuální směrovač doplní svou směrovací tabulku o cesty, které dosud nezná a přepíše cesty do sítí, k nimž se objevila cesta s menší metrikou. Pokud měl směrovač cestu do sítě X přes souseda S a tento soused mu začal cestu propagovat s horší metrikou, musí horší metriku přijmout.

Každý směrovač bude u každé položky své směrovací tabulky (s výjimkou přímo připojených sítí) evidovat čas, kdy byla položka naposled inzerována sousedním směrovačem. Pokud po dobu trojnásobku periody zasílání směrovací informace položka inzerována nebyla, ze směrovací tabulky se smaže.

Pro zabránění směrovacím smyčkám by měl směrovač implementovat techniku Split Horizon, tj. nezasílat informace o sítích, k nimž vede cesta přes některé rozhraní, na sousedy na tomto rozhraní.

Virtuální router bude vypisovat informace o veškerém svém dění, zejména

Specifikace formátu směrovacích informací posílaných mezi routery

Datagram bude obsahovat pole záznamů s informacemi o dostupných sítích.
Každý záznam se skládá z:
  1. název_sítě (byte[15])
  2. počet_hopů (byte)
Datagram bude obsahovat jako první byte počet záznamů a pak jednotlivé záznamy ve výše uvedeném formátu. Název sítě bude vždy doplněn zprava na 15 znaků mezerami.