Networking

Internet = conectarea mai multor rețele locale

-> există gateways/routers (au rol de a mișca pachetele dintr-o parte în alta)
-> oferă datagram services (posibilitatea de a trimite un pachet între sursă și destinație)

Când NU se poate trimite pachetul?

  • nu există legăturile necesare între routers
  • bit errors => pachet aruncat
  • router configurat greșit
  • trafic aglomerat pe acelși link => routerul folosește un buffer și încearcă să salveze stream-urile

alt text

BEST EFFORT DELIVERY (serviciu de bază) - încearcă să trimită pachetele, dar e posibil să eșueze din cauza pachetelor care se pierd.
Pachetele se pierd dacă:

  • nu există legătură la destinație
  • există buclă infinită
  • se schimbă biții și nu mai corespunde

ADRESA IP = identificator unic global

Configurația unui router:
alt text

Routerul așteaptă pachete de la cele 3 rețele:

if (MAC.DST != r1) DROP
else if (MAC.ETHER_TYPE == IP) => IP PROCESSING

Stiva IP:

alt text

if (IP.DST == R)    local_packet_process();
else FORWARD(PKT);

R = IP router

Routerul face longest prefix match.
Cu ajutorul tabelei de routare se alege portul de ieșire.

Tabelă de routare pentru R1:

alt text

Pentru a trimite informații la R2, avem nevoie de adresa MAC.

alt text

Prin protocolul ARP se face match între IP - MAC. Pentru a afla adresa lui R2 se trimite un pachet broadcast și se întoarce un UNICAST.

Ajungem la R2:

  • se uită la ETH.DST
  • se uită la ETH.TYPE (IP) => IP processing
  • se uită la IP.DST => e pentru mine?-> da, păstrez

-> nu, trimit la IP.DST prin lookup și forwarding

Adresele IP sunt globale (nu se schimbă) => avem nevoie de adrese locale (ETH) între rețele.

Costul/pachet nu depinde de mărimea pachetului, ci de capacitatea de pachete.

Planul de date = DATA PLANE se ocupă să trimită pachetele la destinația corectă.

Control plane controlează procesele de matching și forwarding. Are două tipuri de rute (statice și dinamice - adăugate folosind protocoale de routare: BGP, OSPF, ISIS, RIP).

Utilitare:

  • ping (ICMP)
  • traceroute -> calea completă până la destinație

192.168.240.0/24 => 11000000.10101000.11110000.00000000
Primii 24 de biți sunt adresa de NETWORK.
Dacă ultimii 8 biți sunt 0, atunci adresa nu e validă pentru host. Dacă ultimii 8 biți sunt 1 înseamnă că e broadcast.

Algoritmul de longest prefix match

P - prefix de lungime l (adresa la care trebuie să ajung)
V1: P >> (32 - l) ==? D >> (32 - l)
V2: Creez o mască NETMASK
/24 -> primii 24 biți 1, restul 0
/8 -> primii 8 biți 1, restul 0
D & M ==? P
Se alege adresa cu prefixul cel mai lung.

Headerul IP are un TTL (time to leave). La fiecare hop, TTL-ul scade și atunci când ajunge la 0, pachetul este aruncat pe jos. Se folosește pentru a evita ciclarea.