Third lesson of the computer networks course given at UCL on the basis of the 'Computer Networking : Principles and Practice' ebook
52
Week 3 Building a network Supporting applications
Transcript
1. Week 3 Building a network Supporting applications
2. Agenda Building a network Network basics Distance Vector
routing Link State routing Supporting applications
3. Addresses What are the advantages/drawbacks of hierarchical
versus flat addresses ?
4. Port-station tables What are the advantages/drawbacks of
this approach ? How to deal with mobile devices ? What about
multihomed devices ?
5. Label switching What are the advantages/drawbacks of this
approach ? How to create the virtual circuits automatically ?
6. Source routing What are the advantages/drawbacks of this
approach ?
7. Datagram mode Early work on this concept that lead to the
current Internet was done in France Cyclades project lead by Louis
Pouzin http://goo.gl/lwdlwS
8. Agenda Building a network Network basics Distance Vector
routing Link State routing Supporting applications
9. Distance vectors l How to deal with link failures ? C A B C
D E D E
10. How to react ? All routes that use a failed link are
advertised with an infinite cost C Routing table B : 0 [Local] A :
C : 1 [East] E : 1 [South] D : 2 [South] D E Routing table A : 0 [
Local ] D : 1 [South] B : C : E : A B C D E Routing table C : 0
[Local] E : 1 [South-West] D : 2 [South-West] A : 2 [West] B : 1
[West] Routing table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1
[North-East] B : 1 [North] Routing table D : 0 [Local] A : 1
[North] E : 1 [East] C : 2 [East] B : 2 [North]
A=0;B=;C=;D=1;E=
11. Reception of DV Received(Vector V[],link l) { /* received
vector from link l */ for each destination=d in V[] { if (d isin
R[]) { if ( ((V[d].cost+l.cost) < R[d].cost) OR ( R[d].link ==
l) ) { /* better route or change to current route */
R[d].cost=V[d].cost+l.cost; R[d].link=l; } } else { /* new route */
R[d].cost=V[d].cost+l.cost; R[d].link=l; } } Why ?
12. Example Routing table A : 0 [ Local ] D : 1 [South] B : C :
E : Routing table C : 0 [Local] E : 1 [South-West] D : 2
[South-West] Routing table B : 0 [Local] A : C : 1 [East] E : 1
[South] D : 2 [South] A B C A=0;B=;C=;D=1;E= D E A : 2 [West] B : 1
[West] Routing table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1
[North-East] B : 1 [North] Routing table D : 0 [Local] A : 1
[North] E : 1 [East] C : 2 [East] B : 2 [North] D must removes all
the routes learned from North that are announced with an cost
13. Example C Routing table B : 0 [Local] A : C : 1 [East] E :
1 [South] D : 2 [South] D E Routing table A : 0 [ Local ] D : 1
[South] B : C : E : A B C D E Routing table C : 0 [Local] E : 1
[South-West] D : 2 [South-West] A : 2 [West] B : 1 [West] Routing
table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1 [North-East] B
: 1 [North] Routing table D : 0 [Local] A : 1 [North] E : 1 [East]
C : 2 [East] B : D=0;B= ;A=1;C=2;E=11
14. Example C D E Routing table A : 0 [ Local ] D : 1 [South] B
: C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local]
E : 1 [South-West] D : 2 [South-West] A : 2 [West] B : 1 [West]
Routing table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1
[North-East] B : 1 [North] Routing table D : 0 [Local] A : 1
[North] E : 1 [East] C : 2 [East] B : Routing table B : 0 [Local] A
: C : 1 [East] E : 1 [South] D : 2 [South] B=0;A=;C=1;E=1;D=2
B=0;A=;C=1;E=1;D=2
15. Example C D E Routing table A : 0 [ Local ] D : 1 [South] B
: C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local]
E : 1 [South-West] D : 2 [South-West] A : B : 1 [West] Routing
table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1 [North-East] B
: 1 [North] Routing table D : 0 [Local] A : 1 [North] E : 1 [East]
C : 2 [East] B : Routing table B : 0 [Local] A : C : 1 [East] E : 1
[South] D : 2 [South] E=0;A=2;D=1;C=1;B=1 E=0;A=2;D=1;C=1;B=1
E=0;A=2;D=1;C=1;B=1
16. Example C D E Routing table A : 0 [ Local ] D : 1 [South] B
: C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local]
E : 1 [South-West] D : 2 [South-West] A: 3 [South-West] B : 1
[West] Routing table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1
[North-East] B : 1 [North] Routing table D : 0 [Local] A : 1
[North] E : 1 [East] C : 2 [East] B : 2 [East] Routing table B : 0
[Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South]
A=1;B=2;C=2;D=1;E=1 Everything is ok ?
17. Another failure C D E Routing table A : 0 [ Local ] D : 1
[South] B : 3 [South] C : 3 [South] E : 2 [South] A B C D E Routing
table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3
[South-West] B : 1 [West] Routing table E : 0 [Local] D : 1 [West]
A : 2 [West] C : 1 [North-East] B : 1 [North] Routing table D : 0
[Local] A : 1 [North] E : 1 [East] C : 2 [East] B : 2 [East]
Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1
[South] D : 2 [South] A=1;B=;C=;D=1;E=
18. Another failure Routing table C : 0 [Local] E : 1
[South-West] D : 2 [South-West] A: 3 [South-West] B : 1 [West] C
Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1
[South] D : 2 [South] A B C A=0;D=1;B=3;C=3;E=2 D E Routing table A
: 0 [ Local ] D : 1 [South] B : 3 [South] C : 3 [South] E : 2
[South] D E Routing table E : 0 [Local] D : 1 [West] A : 2 [West] C
: 1 [North-East] B : 1 [North] Routing table D : 0 [Local] A : 1
[North] E : C : B : But A could also send its distance vector
before D
19. Another failure D updates its routing table C D E Routing
table A : 0 [ Local ] D : 1 [South] B : 3 [South] C : 3 [South] E :
2 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West]
D : 2 [South-West] A: 3 [South-West] B : 1 [West] Routing table E :
0 [Local] D : 1 [West] A : 2 [West] C : 1 [North-East] B : 1
[North] Routing table D : 0 [Local] A : 1 [North] E : 3 [North] C :
4 [North] B : 4 [North] Routing table B : 0 [Local] A : 3 [South] C
: 1 [East] E : 1 [South] D : 2 [South] D=0;A=1;E=3;C=4;B=4
20. Another failure C D E Routing table A : 0 [ Local ] D : 1
[South] B : 5 [South] C : 5 [South] E : 4 [South] A B C D E Routing
table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3
[South-West] B : 1 [West] Routing table E : 0 [Local] D : 1 [West]
A : 2 [West] C : 1 [North-East] B : 1 [North] Routing table D : 0
[Local] A : 1 [North] E : 3 [North] C : 4 [North] B : 4 [North]
Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1
[South] D : 2 [South] A=0;D=1;B=5;C=5;E=4
21. Another failure C D E Routing table A : 0 [ Local ] D : 1
[South] B : 5 [South] C : 5 [South] E : 4 [South] A B C D E Routing
table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3
[South-West] B : 1 [West] Routing table E : 0 [Local] D : 1 [West]
A : 2 [West] C : 1 [North-East] B : 1 [North] Routing table D : 0
[Local] A : 1 [North] E : 5[North] C : 6 [North] B : 6 [North]
Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1
[South] D : 2 [South] A=1;D=0;B=6;C=6;E=5 This problem is called
counting to infinity How can we prevent it ?
22. Another failure Split horizon Split horizon with
poisoning
23. Split horizon A B C E Routing table A : 0 [ Local ] D : 1
[South] B : 3 [South] C : 3 [South] E : 2 [South] D E A will not
pollute Ds routing table Routing table C : 0 [Local] E : 1
[South-West] D : 2 [South-West] A: 3 [South-West] B : 1 [West]
Routing table E : 0 [Local] D : 1 [West] A : 2 [West] C : 1
[North-East] B : 1 [North] Routing table D : 0 [Local] A : 1
[North] E : 1 [East] C : 2 [East] B : 2 [East] Routing table B : 0
[Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South]
A=0
24. Split horizon (2) D can also send its distance vector C D E
Routing table A : 0 [ Local ] D : 1 [South] E : C : B : A B C D E
Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West]
A: 3 [South-West] B : 1 [West] Routing table E : 0 [Local] D : 1
[West] A : 2 [West] C : 1 [North-East] B : 1 [North] Routing table
D : 0 [Local] A : 1 [North] E : C : B : Routing table B : 0 [Local]
A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] D=0;B=;C=;E=
Does split horizon allows to avoid all counting to infinity
problems ?
25. Limitations C E Routing table A : 0 [ Local ] B : C : E : A
B C E Routing table C : 0 [Local] E : 1 [South-West] A : 2 [West] B
: 1 [West] Routing table E : 0 [Local] A : 2 [North] C : 1
[North-East] B : 1 [North] Routing table B : 0 [Local] A : 1 [West]
C : 1 [East] E : 1 [South] A=2;B=1; C=0;E= A=;B=0; C=1;E= A=;B=0;
C=1;E=
26. Limitations C E E will send its own distance vector B will
discover a new route towards A via E and will advertise it to C New
count to infinity problem Routing table A : 0 [ Local ] B : C : E :
A B C E Routing table C : 0 [Local] E : 1 [South-West] A : 2 [West]
B : 1 [West] Routing table after Bs vector E : 0 [Local] A : C : 1
[North-East] B : 1 [North] Routing table after Cs vector E : 0
[local] A : 3 [North-East] C : 1 [North-East] B : 1 [North] Routing
table B : 0 [Local] A : 1 [West] C : 1 [East] E : 1 [South] A=;B=0;
C=1;E= A=2;B=1; C=0;E=
27. Operational issue Operation At each expiration of its
30-sec timer, each router sends its distance vector and restarts
its timer Problem After a power failure, all routers might restart
at same time and have synchronised timers Each router will need to
process bursts of DV messages
28. Agenda Building a network Network basics Distance Vector
routing Link State routing Supporting applications
29. How to set link costs ? By manual configuration Based on
link bandwidth By measurements
30. What is the role of Sequence number in link state packets
How to deal with wrap around ? Age field in link state packets CRC
in link state packets
32. Transient problems when a link fails A B C 100 D A's FIB B
: East C : South D : East D's FIB A : North B : North C : North C's
FIB A : North B : North D : North B's FIB A : West C : West D :
South A and B are not yet aware of failure Packets will be
lost
33. A detects the failure A B C 100 D A's FIB B : East C :
South D : East D's FIB A : North B : North C : North C's FIB A :
North B : North D : North B's FIB A : West C : West D : South B not
yet aware of failure A cannot reach B/D Packets continue to be
lost
34. A recomputes Dijkstra and sends LSP A B A:1 C=1 C 100 D A's
FIB B : South C : South D : South D's FIB A : North B : North C :
North C's FIB A : North B : North D : North B's FIB A : West C :
West D : South B not yet aware of failure A loops towards B/D
Packets continue to be lost
35. B detects the failure A B A:1 C=1 C 100 D A's FIB B : South
C : South D : South D's FIB A : North B : North C : North C's FIB A
: North B : North D : North B's FIB A : West C : West D : South B
cannot reach A/C A loops towards B/D Packets continue to be
lost
36. B recomputes Dijkstra and sends its LSP A B B:1 D=1 C 100 D
A's FIB B : South C : South D : South D's FIB A : North B : North C
: North C's FIB A : North B : North D : North B's FIB A : South C :
South D : South B cannot reach A/C A loops towards B/D Packets
continue to be lost
37. C recomputes Dijkstra A B C 100 D A's FIB B : South C :
South D : South D's FIB A : North B : North C : North C's FIB A :
North B : East D : East B's FIB A : South C : South D : South B
loops towards A/C A can reach everyone Packets continue to be
lost
38. D recomputes Dijkstra A B C 100 D A's FIB B : South C :
South D : South D's FIB A : West B : North C : West C's FIB A :
North B : East D : East B's FIB A : South C : South D : South B can
reach everyone A can reach everyone Network has been updated
39. Router failures Planned failures Router reboot to upgrade
OS Sudden failure due to power outage, software or hardware
crash
40. Agenda Building a network Supporting applications Transport
services Reliable transport protocols
41. Connectionless Source Provider Destination
DATA.request(S,D,"M") DATA.indication(S,D,"M") Time
42. Connection oriented Source Network provider Destination
CONNECT.request CONNECT.indication CONNECT.confirm Source considers
connection open CONNECT.response Destination considers connection
open
43. Data transfer Message mode Source Provider Destination
CONNECT.request CONNECT.indication CONNECT.confirm CONNECT.response
DATA.request("A") DATA.ind("A") DATA.request("BCD") DATA.ind("BCD")
DATA.request("EF") DATA.ind("EF")
44. Data transfer Stream mode Source Provider Destination
CONNECT.request CONNECT.indication CONNECT.confirm CONNECT.response
DATA.request("AB") DATA.ind("A") DATA.request("CD") DATA.ind("B")
DATA.request("EF") DATA.ind("C") DATA.ind("DEF")
45. Abrupt release Source Provider Destination Connection
opened Connection opened DISCONNECT.req(abrupt)
DISCONNECT.indication DATA.request("A") DATA.request("B")
DATA.indication("A") DATA.request("C")