Skip to content

biancapetrea16/Implementare-dataplane-router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

    Student: Petrea Bianca-Iulia
    Grupa: 322
    Seria: CC
    
    DATAPLANE ROUTER 

    Acest proiect implementeaza functionalitatea de baza a unui router in C, gestionand
    pachetele de tip IP și ARP. Routerul utilizeaza protocoalele ARP și ICMP pentru 
    gestionarea adreselor MAC si a erorilor.

    Cerinte implementate:

    1. Procesul de dirijare: Routerul primeste un pachet IP, iar apoi verific 
    daca pachetul IP primit de catre acesta este valid. Daca da, il redirectionez 
    catre adresa potrivita folosind tabela de rutare. Daca adresa MAC a hext_hop-ului 
    este cunoscuta, completez header-ul Ethernet si trimit pachetul. Daca nu, trimit 
    un ARP Request, iar pachetul este pus in coada de asteptare pana cand primesc un 
    ARP Reply.

    2. Longest Prefix Match: In locul unei cautari liniare prin tabela de rutare, am 
    implementat o versiune mai eficienta de cautare, folosind cautarea binara. Inainte 
    de a incepe cautarile, sortez tabela de rutare cu qsort() folosind o functie de 
    comparare route_table_comparator(route1, route2). Daca doua intrari au acelasi 
    prefix (dupa aplicarea mastii), se prefera cea cu masca mai mare. Functia 
    get_best_route() cauta ruta pentru un IP de destinatie, iar cand se gaseste o 
    potrivire, se salveaza ruta ca posibil next. Totusi cautarea continua pentru a 
    verifica daca exista o masca si mai specifica.
    
    3. Protocolul ARP: Pentru a trimite un pachet la nivel de retea, routerul are 
    nevoie de adresa MAC a destinatii. Dacă aceasta nu este cunoscuta, 
    trebuie obtinuta prin protocolul ARP. 
    -> Cautarea in tabela ARP: Folosesc o functie get_arp_entry() pentru a cauta intrarea 
    corespunzatoare unui IP dat in tabela ARP. Dacă IP-ul este gasit, returnez intrarea 
    cu adresa MAC. 
    Daca am de trimis un pachet si nu am adresa MAC a next_hop-ului, trimit un ARP Request, 
    iar pachetul este copiat si pus intr-o coada. Routerul va procesa mai tarziu pachetul 
    din coada cand primeste un ARP Reply.
    Daca adresa MAC este cunoscuta, se trimite pachetul.
    -> Trimitere ARP Request: Cand un pachet trebuie trimis, dar nu se cunoaste adresa 
    MAC a IP-ului de destinatie, se trimite un ARP Request, iar adresa MAC de broadcast 
    se steaza ca destinatie.
    -> Trimitere ARP Reply: Routerul trimite un ARP reply atunci cand primeste un ARP 
    request destinat uneia dintre interfetele sale. Functia send_arp_reply construieste 
    complet pachetul si il transmite.
    -> Procesare ARP Reply: Dupa ce routerul primeste un ARP Reply, actualizeaza tabela 
    ARP si verifica daca are pachete in asteptare in coada pentru adresa respectiva.

    4. Protocolul ICMP: implementeaza raspunsuri pentru urmatoarele situatii:
    -> ICMP Echo Reply: Daca routerul primeste un ICMP Echo Request (de genul ping) 
    pentru unul dintre IP-urile lui, raspunde cu un ICMP Echo Reply.
    -> ICMP Time Exceeded: Daca un pachet are TTL <= 1, routerul genereaza un mesaj 
    de eroare inapoi catre sursa.
    -> ICMP Destination Unreachable: Daca nu exista o ruta valida pentru adresa 
    destinatie, routerul trimite un mesaj de eroare de acest tip inapoi la sursa.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors