1 of 44

Network layer

Network Layer

4-1

2 of 44

Dove siamo?

Network Layer

4-2

application

transport

network

link

physical

P1

application

transport

network

link

physical

application

transport

network

link

physical

P3

P4

host 1

Router

host 2

= process

= socket

= TCP <-> IP interface

3 of 44

Lo strato di rete

  • trasporta datagrammi da mittente a destinatario
  • i segmenti TCP vengono spezzettati (se necessario) in datagrammi IP alla partenza
  • dall’altro lato avviene la ricomposizione e la consegna allo strato superiore
  • Ogni nodo intermedio interviene solo a livello di rete
  • I router guardano dentro le intestazioni dei datagrammi e decidono cosa farne
  • Primitive fornite: send() e receive()

Network Layer

4-3

network

data link

physical

network

data link

physical

network

data link

physical

network

data link

physical

network

data link

physical

network

data link

physical

network

data link

physical

network

data link

physical

application

transport

network

data link

physical

application

transport

network

data link

physical

4 of 44

Modello di servizio

Network Layer

4-4

Q: Che caratteristiche fornisce questo strato al livello superiore (Trasporto)?

Architettura

IP

Modello

di servizio

best effort

Banda

no

Perdita

no

Ordine

no

Timing

no

Controllo�congestione

no

Garanzie ?

5 of 44

Funzionalità di questo strato

  • forwarding: inoltro dei pacchetti non direttamente destinati all’host in cui ci si trova
  • routing: determinazione del percorso completo da sorgente a destinazione
    • Esempio di forwarding�Forwarding
    • Algoritmi di routing

Network Layer

4-5

analogia:

  • routing: processo di pianificare un viaggio completo da sorgente a destinazione
  • forwarding: atto di prendere una singola coincidenza aerea

6 of 44

Panoramica del Layer 3

Host, router network layer functions:

Network Layer

4-6

forwarding

table

Protocolli di routing

  • path selection
  • RIP, OSPF, BGP

IP protocol

  • indirizzi
  • formato datagrammi
  • sottoreti e maschere

ICMP protocol

  • segnala errori
  • dialogo routers

Livello trasporto: TCP, UDP

Livello Data Link

Livello Fisico

Network

layer

Control plane

Data plane🡪

7 of 44

Funzioni di un router

  • Fa girare algoritmi di routing (RIP, OSPF, BGP)
  • Inoltra i datagrammi in base alla sua tabella di routing corrente

Network Layer

4-7

8 of 44

Network Layer

4-8

9 of 44

Code di input

Routing decentrato:

  • dalla tabella, il router deduce dove inoltrare il pacchetto
  • obiettivo: non compromettere la banda
  • accodamento: nel caso in cui i datagrammi arrivino più velocemente rispetto a quanti se ne possono processare

Network Layer

4-9

Livello fisico:

ricezione di bit

Livello data-line:

es. Ethernet,

collegamento

diretto PPP

10 of 44

Code di output

  • Buffering richiesto se arrivano più datagrammi di quanti ne possano partire
  • Scheduling: è possibile in teoria dare priorità a determinati pacchetti.

Network Layer

4-10

11 of 44

Perchè le perdite di pacchetti?

  • Le code sono necessarie per regolare i flussi
  • I buffer hanno dimensione limitata
  • Head-of-the-Line (HOL) blocking: le code possono congestionarsi a vicenda
  • Le perdite sono dovute a code che si riempiono totalmente! Perdite

Network Layer

4-11

12 of 44

Formato di un datagramma

Network Layer

4-12

ver

length

32 bits

DATI

(lunghezza variab.,

tipicamente un

pacchetto TCP

o UDP)

16-bit identifier

Internet

checksum

time to

live

32 bit source IP address

Numero di versione

lunghezza intestazione

(bytes)

numero massimo

di hops attraversabili

(diminuito di 1 a� ogni salto)

per

gestire la

frammentazione

Lung. totale

datagramma

(bytes)

codice del protocollo�di liv. superiore veicolato

head.

len

type of

service

“tipo” dei dati

flgs

fragment

offset

upper

layer

32 bit destination IP address

Options (if any)

Es. lista dei

Possibili

routers ecc.

ecc.

Quanto overhead con TCP/IP?

  • 20 bytes di TCP
  • 20 bytes di IP
  • = 40 bytes + overhead appl.

13 of 44

Frammentazione

  • Ogni link ha una sua MTU (max.transfer unit) .
    • tipi di link differenti, hanno differenti MTU
  • I datagrammi vengono spezzettati da un link a un altro
    • 1 datagramma diviso in più datagrammi
    • riassemblato solo a destinazione
    • I bit di controllo dell’intestazione ci dicono come riassemblare un datagramma

Network Layer

4-13

frammentazione:

in: 1 datagramma grande

out: 3 datagrammi piccoli

reassembly

14 of 44

Riassemblaggio

Network Layer

4-14

ID

=x

offset

=0

fragflag

=0

length

=4000

ID

=x

offset

=0

fragflag

=1

length

=1500

ID

=x

offset

=185

fragflag

=1

length

=1500

ID

=x

offset

=370

fragflag

=0

length

=1060

Spezzettato!

Esempio

  • datagramma da 4000 byte
  • MTU = 1500 bytes

1480 bytes in �data field

offset =

1480/8

15 of 44

Indirizzamento

  • IP address: un indirizzo a 32 bit per ogni interfaccia
  • interfaccia: connessione verso un altro host, router. DIRETTA.
    • I router hanno di solito più interfacce
    • gli host ne hanno di solito una attiva, ma spesso anche di più

Network Layer

4-15

223.1.1.1

223.1.1.2

223.1.1.3

223.1.1.4

223.1.2.9

223.1.2.2

223.1.2.1

223.1.3.2

223.1.3.1

223.1.3.27

223.1.1.1 = 11011111 00000001 00000001 00000001

223

1

1

1

16 of 44

Sottoreti

  • Indirizzo IP
    • Parte sottorete (high order bits)
    • Parte numero di host (low order bits)
  • Cos’è una sottorete ?
    • un insieme di host/interfacce che hanno lo stesso identificativo di subnet
    • Le sottoreti di livello più basso normalmente possono interfacciarsi tra di loro senza fare uso di un router (usando il link diretto, o il protocollo di livello 2)

Network Layer

4-16

223.1.1.1

223.1.1.2

223.1.1.3

223.1.1.4

223.1.2.9

223.1.2.2

223.1.2.1

223.1.3.2

223.1.3.1

223.1.3.27

network consisting of 3 subnets

subnet

17 of 44

Sottoreti

Ricetta

  • Per determinare le sottoreti di livello più basso, ogni interfaccia viene distaccata dal router.
  • Si creano poi delle “bolle” di sottoreti isolate. Ogni sottorete di livello più basso è detta “dominio di collisione”.

Network Layer

4-17

223.1.1.0/24

223.1.2.0/24

223.1.3.0/24

Maschera di

sottorete: /24

18 of 44

Domini di col.

Quanti?

Network Layer

4-18

223.1.1.1

223.1.1.3

223.1.1.4

223.1.2.2

223.1.2.1

223.1.2.6

223.1.3.2

223.1.3.1

223.1.3.27

223.1.1.2

223.1.7.0

223.1.7.1

223.1.8.0

223.1.8.1

223.1.9.1

223.1.9.2

19 of 44

Modalità di assegnazione

CIDR: Classless InterDomain Routing

    • L’identificativo di sottorete può essere di lunghezza arbitraria (da 1 a 31 bit)
    • Formato indirizzo: a.b.c.d/x, dove x è il numero di bit che costituiscono l’identificativo di sottorete

Network Layer

4-19

11001000 00010111 00010000 00000000

ID di�subnet

numero�host

200.23.16.0/23

20 of 44

Allocazione degli indirizzi

  • A livello di organizzazione
    • Assegnazione per subnet 🡪 Registro Whois

  • A livello di singola utenza
    • DHCP esterno
    • DHCP interno

Network Layer

4-20

21 of 44

Assegnazione di subnet IP

Normalmente c’è un ISP (Internet Service Provider) che si occupa di distribuire i numeri alle sue sottoreti

Esempio:

Network Layer

4-21

UNICAL 10100000 01100001 00000000 00000000 160.97.0.0/16

DIMES 10100000 01100001 00011000 00000000 160.97.24.0/24

Matematica 1 10100000 01100001 00101111 00000000 160.97.47.0/24

Matematica 2 10100000 01100001 00111001 00000000 160.97.57.0/25

Labmat 10100000 01100001 00111001 10000000 160.97.57.128/25 …. ...

22 of 44

Indirizzamento gerarchico:�aggregazione per gruppi di indirizzi

Network Layer

4-22

Riceve tutto quello

che inizia per

200.23.16.0/20

200.23.16.0/23

200.23.18.0/23

200.23.30.0/23

Fly-By-Night-ISP

Organization 0

Organization 7

Internet

Organization 1

ISPs-R-Us

Riceve tutto

quello che inizia per

199.31.0.0/16

200.23.20.0/23

Organization 2

.

.

.

.

.

.

Le tabelle di forwarding non hanno un rigo per ogni IP, ma per ogni

sottorete: questo consente una più efficiente gestione delle tabelle

23 of 44

Indirizzamento

D: Ma come fa un ISP ad avere degli indirizzi?

R: ICANN: Internet Corporation for Assigned

Names and Numbers

    • Alloca gli indirizzi
    • Gestisce i DNS top level
    • Risolve le dispute e assegna i domini
    • Il servizio WHOIS consente di accedere al database delle subnet assegnate

Network Layer

4-23

24 of 44

DHCP

Network Layer

4-24

25 of 44

Come farsi assegnare un indirizzo IP?

  • Fissato staticamente
    • Windows: Connessioni di rete->Proprietà->TCP/IP -> Proprietà.
      • ipconfig
    • Linux: /etc/network... (dipende dalla distr.)
      • ifconfig
  • DHCP: Dynamic Host Configuration Protocol:
    • Ottiene un indirizzo “usa e getta” (validità limitata nel tempo) da un server.
    • Non avendo l’host ancora un indirizzo IP valido, DHCP usa indirizzi IP anonimi (0.0.0.0). Le stazioni vengono identificate con l’indirizzo L2 (il MAC address)

Network Layer

4-25

26 of 44

DHCP: Dynamic Host Configuration Protocol

Network Layer: 4-26

goal: host dynamically obtains IP address from network server when it “joins” network

    • can renew its lease on address in use
    • allows reuse of addresses (only hold address while connected/on)
    • support for mobile users who join/leave network

DHCP overview:

    • host broadcasts DHCP discover msg [optional]
    • DHCP server responds with DHCP offer msg [optional]
    • host requests IP address: DHCP request msg
    • DHCP server sends address: DHCP ack msg

27 of 44

DHCP client-server scenario

Network Layer: 4-27

223.1.1.1

223.1.1.2

223.1.1.3

223.1.1.4

223.1.2.9

223.1.2.2

223.1.2.1

223.1.3.2

223.1.3.1

223.1.3.27

DHCP server

223.1.2.5

arriving DHCP client needs

address in this network

Typically, DHCP server will be co-located in router, serving all subnets to which router is attached

28 of 44

DHCP client-server scenario

Network Layer: 4-28

DHCP server: 223.1.2.5

Arriving client

DHCP discover

src : 0.0.0.0, 68

dest.: 255.255.255.255,67

yiaddr: 0.0.0.0

transaction ID: 654

DHCP offer

src: 223.1.2.5, 67

dest: 255.255.255.255, 68

yiaddrr: 223.1.2.4

transaction ID: 654

lifetime: 3600 secs

DHCP request

src: 0.0.0.0, 68

dest:: 255.255.255.255, 67

yiaddrr: 223.1.2.4

transaction ID: 655

lifetime: 3600 secs

DHCP ACK

src: 223.1.2.5, 67

dest: 255.255.255.255, 68

yiaddrr: 223.1.2.4

transaction ID: 655

lifetime: 3600 secs

Broadcast: is there a DHCP server out there?

Broadcast: I’m a DHCP server! Here’s an IP address you can use

Broadcast: OK. I would like to use this IP address!

Broadcast: OK. You’ve got that IP address!

The two steps above can be skipped “if a client remembers and wishes to reuse a previously allocated network address” [RFC 2131]

29 of 44

ICMP

  • E’ un protocollo di servizio L3 senza numeri di porta
  • I suoi pacchetti vengono intercettati e processati prima di essere smistati a un socket
  • Ping fa uso di ICMP, per misurare il round trip time, ma anche, in teoria, per controllare altri parametri di TCP.
  • I pacchetti ICMP contengono un codice messaggio, una checksum ed eventuali dati.

Network Layer

4-29

30 of 44

NETWORK ADDRESS TRANSLATION - NAT

Network Layer

4-30

31 of 44

Alcuni fatti

  • Una stazione che voglia dialogare in rete deve possedere un indirizzo IP pubblico univoco
  • Tuttavia gli indirizzi IP privati non sono univoci e sono riutilizzati un po’ ovunque
  • Perchè?
  • Come è possibile che l’infrastruttura L3 sia in grado di raggiungere l’indirizzo 192.168.0.1 “giusto” tra le migliaia di host che lo utilizzano?

Network Layer

4-31

32 of 44

NAT: Network Address Translation

Network Layer

4-32

10.0.0.1

10.0.0.2

10.0.0.3

10.0.0.4

138.76.29.7

rete locale

(es., rete casalinga)

10.0.0.0/24

resto�di Internet

Internamente i datagrammi

vengono scambiati usando gli

indirizzi locali

del tipo 10.0.0.0/24

Il router RISCRIVE i pacchetti!

Tutti i datagrammi in uscita dalla

rete locale hanno lo stesso indirizzo sorgente NAT: 138.76.29.7,

ma possono avere numeri di

porta sorgente differenti

33 of 44

NAT: Network Address Translation

  • Vantaggi: la rete locale usa un solo IP per comunicare con l’esterno:
    • non è più necessario richiedere un IP per ogni host collegato
    • posso cambiare gli indirizzi interni senza che il mondo esterno ne risenta
    • posso cambiare ISP senza dover cambiare gli IP di tutte le macchine
    • è una prima forma di firewalling: i dispositivi interni non sono direttamente raggiungibili (192.168.0.1 oppure 10.0.0.1 non sono indirizzi validi all’esterno).

Network Layer

4-33

34 of 44

NAT: Network Address Translation

Network Layer

4-34

10.0.0.1

10.0.0.2

10.0.0.3

S: 10.0.0.1, 3345

D: 128.119.40.186, 80

1

10.0.0.4

138.76.29.7

1: l’host 10.0.0.1

manda datagramma a

128.119.40.186, 80

NAT translation table

WAN side addr LAN side addr

138.76.29.7, 5001 10.0.0.1, 3345

…… ……

S: 128.119.40.186, 80

D: 10.0.0.1, 3345

4

S: 138.76.29.7, 5001

D: 128.119.40.186, 80

2

2: Il router NAT

cambia i datagrammi

uscenti da

10.0.0.1, 3345 a

138.76.29.7, 5001,

e aggiorna la tabella

S: 128.119.40.186, 80

D: 138.76.29.7, 5001

3

3: Arriva risposta

destinata a:

138.76.29.7, 5001

4: Il router NAT cambia

l’indirizzo e porta di destinazione

138.76.29.7, 5001 to 10.0.0.1, 3345

35 of 44

NAT: Network Address Translation

Implementazione: Un router NAT deve:�

    • datagrammi uscenti: cambiare IP sorgente, numero di porta con (Indirizzo router NAT, nuovo num. di porta)

i client remoti rispondono credendo di avere a che fare con una connessione aperta su

(Indirizzo router NAT, nuovo num. di porta)

    • ricordare (in una tabella speciale detta NAT translation table)

ogni coppia (indirizzo interno, porta) <->(nuova porta) �

    • datagrammi entranti: cambiare

(Indirizzo router NAT, nuova porta) nei campi destinazione in base alla tabella di traduzione

Network Layer

4-35

36 of 44

NAT: Network Address Translation

  • NAT è un meccanismo ibrido:
    • I router dovrebbero solo veicolare i protocolli di livello 4 (trasporto)
    • Come mappare ICMP? Come mappare GRE?
    • I P2P soffrono. E in generale ci può essere un solo server su ogni porta (e.g. un solo server web su porta 80, ecc.)
    • Risolve temporaneamente il problema dei pochi indirizzi

Network Layer

4-36

37 of 44

Port Forwarding

Network Layer

4-37

10.0.0.1

10.0.0.2

10.0.0.3

S: 10.0.0.1, 80

D: 128.119.40.186,501

3

10.0.0.4

138.76.29.7

3: l’host 10.0.0.1

manda datagramma a

128.119.40.186, 501

NAT forwarding table

WAN side addr LAN side addr

138.76.29.7, 80 10.0.0.1, 80

…… ……

S: 128.119.40.186, 501

D: 10.0.0.1, 80

2

S: 138.76.29.7, 80

D: 128.119.40.186, 501

4

4: Il router NAT

cambia i datagrammi

uscenti da

10.0.0.1, 80 a

138.76.29.7, 80

S: 128.119.40.186, 501

D: 138.76.29.7, 80

1

1: Arriva richiesta

destinata a:

138.76.29.7, 80

2: Il router NAT cambia

l’INDIRIZZO di destinazione

138.76.29.7 a 10.0.0.1

Questa tabella è fissata manualmente. Il server interno deve avere IP FISSATO.

38 of 44

Port forwarding

Network Layer

4-38

Chain PREROUTING �target prot opt source destination

DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:192.168.0.10

39 of 44

NAT e connessioni P2P

  • Considerate due peer, Alice e Bob
  • Alice e Bob fuori NAT (con IP pubblico):
    • Possono aprire liberamente connessioni reciproche
  • Alice e Bob dentro NAT (senza IP pubblico o Port Forwarding):
    • I due non possono aprire una mutua connessione TCP, né dialogare direttamente via UDP
  • Alice dentro NAT, Bob fuori NAT
    • Alice può aprire connessioni verso Bob, non viceversa (ma Bob può usare il “callback” via server)
  • Possibilità di NAT traversal
    • (e.g. STUN+ICE)

Network Layer

4-39

40 of 44

Indirizzi Broadcast e altri indirizzi speciali

  • 192.168.0.0/16 – 172.16.0.0/12 - 10.0.0.0/8
    • Sono indirizzi riservati a reti locali. Impossibile usarli pubblicamente.
  • Indirizzi multicast: da 224.0.0.0/4
  • Tutti i bit riservati al numero host posti a 1:
    • Broadcast nella sottorete di appartenenza!
    • es. 160.97.47.0/24 ha indirizzo broadcast 160.97.47.255
    • «ping 160.97.47.255» è da intendersi come destinato a tutti i membri della subnet 160.97.47.0/24
  • Numero host = 0 🡪 Riservato
  • N. Host assegnabili in subnet di maschera N<32 => 232-N-2 �(tolti i due indirizzi riservati)
    • Maschera 31: non utilizzabile (232-31-2 = 0)
    • Maschera 32: fa eccezione alla regola e indica un unico host.

Network Layer

4-40

41 of 44

ICMP

  • E’ un protocollo senza numero di porta
  • I pacchetti ICMP in ingresso vengono intercettati e processati prima di essere smistati a un socket specifico
  • Ping fa uso di ICMP, per misurare il round trip time, ma anche, in teoria, per controllare altri parametri di funzionamento della rete.
  • I pacchetti ICMP contengono un codice messaggio, una checksum ed eventuali dati.
  • Esempi: echo-request, echo-reply, destination unreachable, ttl-exceeded…

41

42 of 44

ALCUNI PROBLEMI DI SICUREZZA

Network Layer

4-42

43 of 44

Alcune minacce

  • Attacchi broadcast smurf-like:
    • Fingere di avere l’IP della vittima (IP spoof)
    • Mandare dei ping broadcast a suo nome
    • Le risposte raggiungono la vittima e non l’aggressore
    • Necessità delle condizioni adatte (di solito l’aggressore sta fisicamente nella stessa sottorete della vittima)

Network Layer

4-43

Aggressore

IP falso: 192.168.0.1

Rete

Vittima

IP: 192.168.0.1

Ignari host della

sottorete

44 of 44

Alcune minacce

  • Man-in-the-middle
    • Interporsi tra la vittima e il resto del mondo
    • Funzionamento simile a un router NAT
    • Deve interporsi fra il mondo e la vittima: un router potrebbe farlo, ma ci sono altre condizioni in cui si può fare man-in-the-middle (ARP spoofing, DHCP spoofing, etc.)

Network Layer

4-44

Vittima

192.168.0.1

Aggressore

192.168.0.2

Dati per 192.168.0.1

Dati da 192.168.0.2

(ma apparentemente da 192.168.0.1)

Dati per 192.168.0.1

(modificati)

Dati da 192.168.0.2

(ma apparentemente da 192.168.0.1)