3 network-transport

52
Week 3 Building a network Supporting applications

Upload: olivier-bonaventure

Post on 28-Nov-2014

152 views

Category:

Engineering


0 download

DESCRIPTION

Third lesson of the computer networks course given at UCL on the basis of the 'Computer Networking : Principles and Practice' ebook

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
  • 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 ?