Preview:
DESCRIPTION
Third lesson of the computer networks course given at UCL on the basis of the 'Computer Networking : Principles and Practice' ebook
Citation preview
- 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
- 31. Two way connectivity check C Links A-B, B-A : 1 B-E, E-B :
1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-0
[D:1];[B:1];[C:1] A-0 [D:1];[B:1] B-0 [A:1] [C:1] [E:1] C-0 [B:1]
[E:1] D-0 [A:1] [E:1] Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1
E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 A B C D E D E Links A-B, B-A
: 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A :
1 LSPs E-0 [D:1];[B:1];[C:1] A-0 [D:1];[B:1] B-0 [A:1] [C:1] [E:1]
C-0 [B:1] [E:1] D-0 [A:1] [E:1] LSPs E-0 [D:1];[B:1];[C:1] A-0
[D:1];[B:1] B-0 [A:1] [C:1] [E:1] C-0 [B:1] [E:1] D-0 [A:1] [E:1]
Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E
: 1 A-D, D-A : 1 Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D,
D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-1 [D:1];[C:1] A-0
[D:1];[B:1] B-0 [A:1] [C:1] [E:1] C-0 [B:1] [E:1] D-0 [A:1] [E:1]
LSPs E-0 [D:1];[B:1];[C:1] A-0 [D:1];[B:1] B-0 [A:1] [C:1] [E:1]
C-0 [B:1] [E:1] D-0 [A:1] [E:1] LSP : E-1 [D:1];[C:1] LSP : E-1
[D:1];[C:1] A link is only considered useable only if both
directions have been advertised
- 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")
- 46. Graceful release Source Provider Destination Connection
opened Connection opened DISCONNECT.req(graceful) DATA.request("C")
DISCONNECT.ind(graceful) DATA.request("A") DATA.request("B")
DATA.indication("A") DATA.indication("B") Source->Destination
connection closed DATA.indication("C") DATA.request("D")
DATA.indication("D") DISCONNECT.req(graceful)
DISCONNECT.ind(graceful) Connection closed Connection closed
- 47. Transport services useable on Internet TCP : Connection
oriented, bytestream UDP : Connectionless
- 48. Agenda Building a network Supporting applications Transport
services Reliable transport protocols
- 49. Multiplexing How to multiplex data coming from multiple
applications ?
- 50. Reliable transport How to establish a connection ?
- 51. Reliable transport protocols How to reliably transport data
?
- 52. Reliable transport How to terminate a transport connection
?