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, pe baza intrărilor din tabela de routare.
-
Control plane - partea care implementează algoritmii de rutare (e.g. RIP, OSPF, BGP); acești algoritmi distribuiți calculează intrările din tabela de rutare.
Tema constă în implementarea componentei de dataplane. În cele ce urmează, în lipsa altor precizări, toate referințele la router din textul temei se referă la dataplane.
NU va fi nevoie să implementați acești algoritmi în cadrul temei; vom lucra strict din perspectiva dataplane-ului, pentru care tabelele de rutare sunt deja populate. Routerul nostru 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
Tema presupune cunoștințele dobândite la curs. Vă recomandăm parcurgerea următoarei bibliografii înainte de a vă apuca de temă.
- The Internet Protocol (9 min)
- ARP: Mapping between IP and Ethernet (10 min)
- Looking at ARP and ping packets (8 min)
- Hop-by-hop routing (13 min)
- Capitolul 4.3 (What's Inside a Router) din Computer Networking: A Top-Down Approach (6th Edition)
- Capitolul 4.4.3 (Internet Control Message Protocol (ICMP)) din Computer Networking: A Top-Down Approach (6th Edition).
- Capitolul 5.4.1 (Link-Layer Addressing and ARP) din Computer Networking: A Top-Down Approach (6th Edition)
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 rețea virtuală vom folosi Mininet. Mininet este un simulator de rețele ce folosește în simulare implementari reale de kernel, switch și cod de aplicații.
sudo apt update
sudo apt install mininet openvswitch-testcontroller tshark python3-click python3-scapy xterm
sudo pip3 install mininet
Verificați să aveți instalat
tshark
.
După ce am instalat Mininet, vom folosi următoarea comandă pentru a crește dimensiunea fontului în terminalele pe care le vom deschide.
echo "xterm*font: *-fixed-*-*-*-18-*" >> ~/.Xresources
xrdb -merge ~/.Xresources