Prezentare generală

În cadrul temei vom implementa dataplane-ul unui router. Un router are două părți:

  • Dataplane - partea care implementează procesul de dirijare, propriu-zis, acesta se întâmplă local, pe fiecare router. Tema constă în implementarea acestei componente. În cele ce urmează, în lipsa altor precizări, toate referințele la router din textul temei se referă la data plane.

  • Control plane - componenta care implementează algoritmii de rutare (e.g. RIP, OSPF, BGP); acești algoritmi distribuiți calculează rutele pentru fiecare rețea destinație și le inserează în dataplane. NU va fi nevoie să implementați acești algoritmi pentru temă. Routerul va funcționa cu o tabelă de rutare statică, primită într-un fișier de intrare, și care nu se va schimba pe parcursul rulării.

Un router are mai multe interfețe și poate recepționa pachete pe oricare dintre acestea. Routerul trebuie să transmită pachetul mai departe, către un calculator sau către alt router direct conectat, în funcție de regulile din tabela de rutare. Tema poate fi implementată în C sau C++.

Lectură tema

Deadline

Deadline-ul temei este specificat pe moodle.

Vă reamintim părțile relevante din regulamentul cursului de PCom:

  • După expirarea acestui termen limită se mai pot trimite teme un interval de maxim 3 zile, cu următoarele depunctări: 10p în prima zi, 20p în a două zi și 30p în a treia zi.

  • După cele 3 zile tema nu se mai poate trimite.

  • Oferim posibilitatea fiecărui student de a avea un număr de maxim 5 zile numite "sleep days".

  • Aceste zile pot fi folosite pentru a amâna termenul de predare al temei de casă (fără penalizări).

  • Nu se pot folosi mai mult de două sleep days pentru o temă de casă.

  • Pentru a utiliza aceste zile completați formularul de pe Moodle

  • Temele de casă sunt individuale.

Setup

Pentru a simula o retea virtuala vom folosi Mininet. Mininet este un simulator de retele ce foloseste in simulare implementari reale de kernel, switch si cod de aplicatii.

sudo apt update
sudo apt install mininet openvswitch-testcontroller tshark python3-click python3-scapy xterm
sudo pip3 install mininet

Dupa ce am instalat Mininet, vom folosi urmatoarea comanda pentru a creste dimensiunea fontului in terminalele pe care le vom deschide.

echo "xterm*font: *-fixed-*-*-*-18-*" >> ~/.Xresources 
xrdb -merge ~/.Xresources