Nätverkslagret (2) Host, router network layer functions: Network layer

Download Report

Transcript Nätverkslagret (2) Host, router network layer functions: Network layer

Nätverkslagret (2)
Host, router network layer functions:
Transport layer: TCP, UDP
Network
layer
IP protocol
•addressing conventions
•datagram format
•packet handling conventions
Routing protocols
•path selection
•RIP, OSPF, BGP
routing
table
ICMP protocol
•error reporting
•router “signaling”
Link layer
physical layer
25 May 2016
1
IP-datagrammets format
IP protocol version
number
header length
(32-bit words)
“type” of data
max number
remaining hops
(decremented at
each router)
upper layer protocol
to deliver payload to
32 bits
ver head. type of
len service
16-bit identifier
upper
time to
layer
live
length
fragment
flgs
offset
Internet
checksum
for
fragmentation/
reassembly
32 bit source IP address
32 bit destination IP address
Options (if any)
data
(variable length,
typically a TCP
or UDP segment)
25 May 2016
total datagram
length (bytes)
E.g. timestamp,
record route
taken, specify
list of routers
to visit.
2
Fragmentering och hopsättning
Ident
Flags
Offset
 MTU varierar i olika nät, två val
Alla paket tillräckligt små
Fragmentering och hopsättning
 Alla fragment har samma Ident
 Tappas ett fragment slängs alla
 Varje fragment fullständigt IP-datagram
 Hopsättning hos mottagaren
 Designat för ytterligare fragmentering
25 May 2016
3
IP Fragmentation and Reassembly
length ID fragflag
=4000 =x
=0
offset
=0
Ett stort datagram blir
flera små
25 May 2016
length ID fragflag
=1500 =x
=1
offset
=0
length ID fragflag
=1500 =x
=1
offset
=1480
length ID fragflag
=1040 =x
=0
offset
=2960
4
ICMP: Internet Control Message Protocol
 used by hosts, routers,
gateways to communicate
network-level information
 error reporting: unreachable
host, network, port, protocol
 echo request/reply (used by
ping)
 network-layer “above” IP:
 ICMP msgs carried in IP
datagrams
 ICMP message: type, code plus
first 8 bytes of IP datagram
causing error
25 May 2016
Type
0
3
3
3
3
3
3
4
Code
0
0
1
2
3
6
7
0
8
9
10
11
12
0
0
0
0
0
description
echo reply (ping)
dest. network unreachable
dest host unreachable
dest protocol unreachable
dest port unreachable
dest network unknown
dest host unknown
source quench (congestion
control - not used)
echo request (ping)
route advertisement
router discovery
TTL expired
bad IP header
5
Skalbarhet
 27 + 214 + 221 olika nätverksadresser i IP
 Det blir stora tabeller om varje router ska hitta alla
nätverk
 Hur får man routing att skala?
25 May 2016
6
Forwarding algortim
 Om direkt kopplad till destinationens nätverk skicka direkt till destination
 annars om destinationen finns i forwarding
tabellen - skicka till NextHop routern
 annars -skicka till default routern
Network 1 (Ethernet)
H7
Forwarding tabell R2
NetworkNum
NextHop
1
R3
2
R1
3
interface 1
4
interface 0
H2
H1
H8
H3
Network 4
(point-to-point)
Network 2 (Ethernet)
R1
R2
H4
Network 3 (FDDI)
H5
25 May 2016
R3
H6
7
DHCP
En ny nod behöver en IP-adress:
 Systemadministratören skriver in den i en fil, eller:
 DHCP: Dynamic Host Configuration Protocol:
delar ut adresser ’dynamiskt’
värden frågar (mha broadcast) “DHCP discover”
DHCP-servern svarar med “DHCP offer”
värden begär IP adress: “DHCP request”
DHCP-servern sänder adress: “DHCP ack”
 Ett exempel på skalning av nätverksadministration
25 May 2016
8
Routing i Internet
 Internet består av Autonoma Systems (AS)
förbundna med varandra:
Stub AS: litet företag
Multihomed AS: stort företag (no transit)
Transit AS: provider
 Routing på två nivåer:
Intra-AS: administratörer ansvariga för val av algoritm
Inter-AS: unik standard
25 May 2016
9
Intra-AS Routing (inom ett AS)
 Annat namn: Interior Gateway Protocols (IGP)
 Vanligaste IGPs:
RIP: Routing Information Protocol
OSPF: Open Shortest Path First
IGRP: Interior Gateway Routing Protocol (Cisco
propr.)
25 May 2016
10
RIP ( Routing Information Protocol)
 Distance-vector algoritm
 Fanns med i BSD-UNIX 1982
 Distance metric: antal hopp (max = 15 hopp)
 Distance vectors utbyts var 30:e sekund via Response
Message (advertisement)
 Varje advertisement: rutt till max 25 destinationer
(nät)
 RIP v1 RFC 1058
 RIP v2 RFC 1723
25 May 2016
11
RIP: Link Failure and Recovery
 Om inget hörts på 180 sek --> granne/länk betraktas
som ”död”
rutter via grannen oanvändbara
nya advertisements till fungerande grannar
grannarna skickar meddelandet vidare (om deras
tabeller ändrades)
länkfel sprider sig snabbt genom hela nätet
poison reverse förhindrar ping-pong loops (oändligt
avstånd = 16 hops)
25 May 2016
12
RIP Table processing
 Routingtabellerna i RIP uppdateras av en process på
applikationsnivå: route-d (daemon)
 advertisements använder UDP-paket, skickas ut
periodiskt
25 May 2016
13
RIP Table example
Router: giroflee.eurocom.fr
Destination
-------------------127.0.0.1
192.168.2.
193.55.114.
192.168.3.
224.0.0.0
default





Gateway
Flags Ref
Use
Interface
-------------------- ----- ----- ------ --------127.0.0.1
UH
0 26492 lo0
192.168.2.5
U
2
13 fa0
193.55.114.6
U
3 58503 le0
192.168.3.5
U
2
25 qaa0
193.55.114.6
U
3
0 le0
193.55.114.129
UG
0 143454
Three attached class C networks (LANs)
Router only knows routes to attached LANs
Default router used to “go up”
Route multicast address: 224.0.0.0
Loopback interface (for debugging)
25 May 2016
14
OSPF (Open Shortest Path First)
 “open”: tillgängligt, v2 RFC 2178
 Använder Link State algorithm
LS packet dissemination
Topologisk karta i varje nod
Dijkstra’s algorithm
 OSPF advertisement innehåller en post per grannrouter
 Advertisements sänds till hela AS (via flooding)
25 May 2016
15
OSPF “advanced” features (not in RIP)
 Säkerhet: autentisering av alla OSPF-meddelanden;
TCP används
 Multiple same-cost paths allowed (bara en väg i RIP)
 varje länk kan ha olika kostnadsmått (cost metrics)
för olika TOS (eg, satellite link cost set “low” for
best effort; high for real time)
 Integrerat stöd för uni- och multicast:
Multicast OSPF (MOSPF) använder samma topologi-datbas
som OSPF
 Hierarkisk OSPF i stora domäner.
25 May 2016
16
Hierarkisk OSPF
 Two-level hierarchy:
lokalt område, backbone
Link-state
advertisements bara
lokalt
varje nod har
detaljerad kunskap
om det lokala
området; vet bara
riktning (kortaste
vägen) till nät i andra
områden.
25 May 2016
 Area border routers: “summarize”
distances to nets in own area,
advertise to other Area Border
routers.
 Backbone routers: run OSPF routing
limited to backbone.
 Boundary routers: connect to other
ASs.
17
IGRP (Interior Gateway Routing Protocol)
 CISCO proprietary; efterföljare till RIP (mitten av
80-talet)
 Distance Vector, som RIP
 flera kostandsmått (fördröjning, bandbredd,
tillförlitlighet, belastning etc)
 använder TCP för utbyte av routing-information
 Loop-free routing via Distributed Updating Alg.
(DUAL) based on diffused computation
25 May 2016
18
Internet AS Hierarchy
Intra-AS border (exterior gateway) routers
Inter-AS interior (gateway) routers
25 May 2016
19
Internet inter-AS routing: BGP
 BGP (Border Gateway Protocol): the de facto
standard
 Path Vector protocol:
liknar Distance Vector protocol
varje Border Gateway sänder ut hela vägen till
destinationen
Ex: Gateway X sänder sin väg till Z:
Path (X,Z) = X,Y1,Y2,Y3,…,Z
25 May 2016
20
Internet inter-AS routing: BGP
Antag: X sänder ut sin ruttinformation till W
 W kan tacka nej till rutten som X erbjuder:
 kostnad, policy (inga rutter via konkurrenters AS),
’loop prevention’.
 Om W accepterar rutten som X sänt ut:
Path (W,Z) = w, Path (X,Z)
 Obs: X kan styra inkommande trafik genom att
begränsa den information den sänder ut:
Ex: vill inte vidarebefordra trafik till Z -> sänd
inte ut några rutter dit Z
25 May 2016
21
Varför olika routing på olika nivåer?
Policy:
 Intra-AS: en admin, inga policybeslut
 Inter-AS: kontroll över hur trafiken skickas, vem som
använder nätet
Skala:
 hierarkisk routing kräver mindre tabeller, ger
minskad uppdateringstrafik
Prestanda:
 Intra-AS: kan fokusera på prestanda
 Inter-AS: policies kan dominera prestandamål
25 May 2016
22
Hur får man routing att skala bättre?
 Adressanvändning
Adresser får inte ta slut
Klass C med 2 hosts (2/255 = 0.78%)
Klass B med 256 hosts (256/65535 = 0.39%)
 Skalabilitet för routing
Routingtabeller skalar ej
IGP skalar ej
25 May 2016
23
Subnetting
 Subnät ny nivå till adress/routing hierarkin
 Subnätmasken definierar variabel del av hostdelen
=> subnätnummer
 Subnät syns bara i aktuellt nätverk
Network number
Host number
Class B address
111111111111111111111111
00000000
Subnet mask (255.255.255.0)
Network number
Subnet ID
Host ID
Subnetted address
25 May 2016
24
Subnät exempel
Subnet mask: 255.255.255.128
Subnet number: 128.96.34.0
128.96.34.15
128.96.34.1
H1
R1
Subnet mask: 255.255.255.128
Subnet number: 128.96.34.128
128.96.34.130
128.96.34.139
128.96.34.129
H2
R2
H3
128.96.33.14
128.96.33.1
Subnet mask: 255.255.255.0
Subnet number: 128.96.33.0
25 May 2016
Forwarding table at router R1
Subnet Number Subnet Mask
128.96.34.0
255.255.255.128
128.96.34.128 255.255.255.128
128.96.33.0
255.255.255.0
Next Hop
interface 0
interface 1
R2
25
Forwarding algoritm
D = destination IP address
for each entry (SubnetNum, SubnetMask, NextHop)
D1 = SubnetMask & D
if D1 = SubnetNum
if NextHop is an interface
deliver datagram directly to D
else
deliver datagram to NextHop
 Använd default router om inget matchar
 Inte nödvändigt med sammanhängande 1’or
 Möjligt att ha flera subnät på ett fysiskt nätverk
 Subnät syns ej ifrån resten av Internet
25 May 2016
26
Supernetting
 Om alla som vill ha klass B adresser får det blir det
dåligt utnyttjande
 Om alla istället får klass C adresser ökar
routingtabellernas storlek
 Lösning: Supernetting - CIDR
Classless InterDomain Routing
25 May 2016
27
Classless InterDomain Routing
 Dela ut block av kontinuerliga nätverksnummer till
närliggande nätverk
 Representera block med
(first_network_address, count), 130.239.40/21
 Begränsa storlekar till potens av 2
 Alla routrar måste förstå CIDR
 Möjligt att slå ihop adresser rekursivt
 Längsta möjliga match i router
25 May 2016
28
Hierarchical addressing: more specific routes
ISPs-R-Us has a more specific route to Organization 1
Organization 0
200.23.16.0/23
Organization 2
200.23.20.0/23
Organization 7
.
.
.
.
.
.
Fly-By-Night-ISP
“Send me anything
with addresses
beginning
200.23.16.0/20”
Internet
200.23.30.0/23
ISPs-R-Us
Organization 1
200.23.18.0/23
25 May 2016
“Send me anything
with addresses
beginning 199.31.0.0/16
or 200.23.18.0/23”
29
Subnetting och CIDR: skalabiliteten
 Subnetting
Hjälper till att lösa skalabilitetsproblemet
Nya fysiska nätverk kan läggas till utan att använda nya Klass B
eller C nätverksadresser
Samlar ihop information
 CIDR
Kortare routingtabeller
Slår ihop routinginformation
Spar adresser
Dela ut block av kontinuerliga nätverksnummer istället för adresser
för större nätverksklass
25 May 2016
30
Skalbara nätverk
 Interdomän-routing för att hitta rätt AS
Färre AS än nätverk
 Intradomän-routing för att hitta rätt nätverk i AS
Färre nätverk i en domän än i hela Internet
 CIDR
Slår ihop routinginformation
 Subnetting
Subnät syns ej utåt
 ARP (nästa lager)
Hitta rätt host i ett nätverk (subnät)
 Skalabilitet viktigare än optimal väg
25 May 2016
31
Router Architecture Overview
Två nykelfunktioner hos routrar:
 kör routing-algoritmer/protokoll (RIP, OSPF, BGP)
 datagram kopplas om från inkommande till utgående port länk
(switching )
25 May 2016
32
Input Port Functions
Physical layer:
bit-level reception
Data link layer:
e.g., Ethernet
see chapter 5
25 May 2016
Decentraliserad switchning:
 givet datagrammets dest., finn ut-porten i
routing-tabellen i in-portens minne
 mål: processa alla paket med ‘line speed’
 Köbildning: om datagram anländer snabbare
än switchnätverket kan ta emot
33
Input Port Queuing
 Switchnätverket långsammare än in-portarnas kombinerade
hastighet -> köbildning kan uppstå vid ingångarna
 Head-of-the-Line (HOL) blocking: köat datagram längst fram i
en kö hindrar andra i kön (fast dom skall till en annan port)
 fördröjning och paketförlust pga input buffer overflow!
25 May 2016
34
Tre typer av switchnätverk
Via minnet
1:a generationens
routers:
paket kopieras av
systemets (enda)
CPU
 hastigheten
begränsas av
minnets
bandbredd (2
Via ett nätverk (crossbar)
accesser per
datagram)
 undviker bandbreddsbegränsningar
Moderna routers:
processor i in Advancerad design:
porten utför
fragmentera datagram till
lookup, kopiering
celler med fix längd,
till minne
switcha dem genom nätet
25 May 2016
Via buss
 datagram
från
inportens
buffer till
utportens
buffer via en
delad buss
 bus
contention:
hastigheten
begränsas av
bussens
bandbredd
35
Output Ports
 Buffring behövs när datagram anländer fortare än
sändhastigheten ut på länken
 Scheduling discipline väljer bland köade datagram
25 May 2016
36
Output port queueing
 Buffring sker när data anländer från switchnätverket
fortare än det kan vidarebefordras ut på länken
 Fördröjning och dataförlust kan uppstå pga output
port buffer overflow
25 May 2016
37
IPv6
 Grundläggande motivation: Ipv4:s 32-bits adresser
tar helt slut 2008 eller 2018 eller …
 Ytterligare skäl:
header-formatet underlättar bearbetning/vidarebefordran
headern ändras för att möjliggöra QoS
ny “anycast” adress: rutt till “den bästa” av flera replikerade
servrar
 IPv6 datagramformat:
fix header-längd: 40 byte
ingen fragmentering
25 May 2016
38
Övergång från IPv4 till IPv6
 Alla routrar kan inte uppgraderas samtidigt
no “flag days”
Hur kan nätverket fungera med blandade IPv4 och IPv6
routers?
 Två föreslagna metoder:
Dual Stack: vissa routrar med två protokollstackar kan
översätta mellan formaten
Tunneling: IPv4-datagram bär IPv6-datagram som data
mellan IPv4-routrar
25 May 2016
39
Dual Stack Approach
25 May 2016
40
Tunneling
IPv6 inside IPv4 where needed
25 May 2016
41
Multicast routing
 Unicast
Enkelt, men
bandbreddskrävande
25 May 2016
 Multicast
 Mindre antal paket, men
kräver stöd från
nätverkslagret
42
Multicast routing (forts)
 Problem
Hur identifieras mottagarna av multicast-meddelanden?
Hur adresseras ett datagram till dem?
 Lösning
”address indirection”, en identifierare för hel multicast
grupp
Class D multicast-adresser
25 May 2016
43
Multicast routing - frågor
 Hur startar och slutar en grupp?
 Hur väljs gruppadress?
 Hur ansluter man till befintlig grupp?
 Kan vem som helst ansluta sig?
 Känner man till vilka övriga som är anslutna?
 Hur samarbetar routrarna?
 Involverar IGMP
25 May 2016
44
IGMP
 Internet Group Management Protocol
 Mellan host och första router
 Kan ej identifiera andra i gruppen
 Tre typer av meddelanden
Membership query, membership report, leave group
 Körs över IP
 Receiver-driven
25 May 2016
45
Multicast routing - generellt
 Mål: Hitta ett träd med alla routrar
 Ibland måste andra routrar involveras
 Två varianter:
Group-shared tree, endast ett träd
Source-based trees, ett träd för varje sändare
25 May 2016
46
Multicast routing – i Internet
 DVMRP
Distance Vector Multicast Routing Protocol
Source-based
 MOSPF – Multicast OSPF
Source-based
 CBT – Core Based Trees
Group-shared
 PIM – Protocol Independent Multicast
Dense mode – liknar DVMRP
Sparse mode – group-shared
 Mellan AS – DVMRP
Men inte helt lyckat
25 May 2016
47