Successfully reported this slideshow.

Part 3 : building a network and supporting applications

0

Share

Upcoming SlideShare
3 network-transport
3 network-transport
Loading in …3
×
1 of 63
1 of 63

Part 3 : building a network and supporting applications

0

Share

Download to read offline

Slides supporting the "Computer Networking: Principles, Protocols and Practice" ebook. The slides can be freely reused to teach an undergraduate computer networking class using the open-source ebook.

Slides supporting the "Computer Networking: Principles, Protocols and Practice" ebook. The slides can be freely reused to teach an undergraduate computer networking class using the open-source ebook.

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Part 3 : building a network and supporting applications

  1. 1. Week 3 Building a network Supporting applications
  2. 2. Agenda • Building a network • Network basics • Distance Vector routing • Link State routing • Supporting applications
  3. 3. Addressing • What are the advantages/drawbacks of using flat addresses ?
  4. 4. Addressing • What are the advantages/drawbacks of using hierarchical addresses ?
  5. 5. 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
  6. 6. Agenda • Building a network • Network basics • Distance Vector routing • Link State routing • Supporting applications
  7. 7. What is the distance vector sent by R5 after convergence ? R1 R2 R3 R4 R5 R6 4 4 1 0 9 Default link weight is 1
  8. 8. Question • How does a router using distance vectors detect the failure of a link ?
  9. 9. DV sent by R4 when link fails ? R1 R2 R3 R4 R5 R6 3 4 1 0 9 Default link weight is 1
  10. 10. How to react ? All routes that use a failed link are advertised with an infinite cost C 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= Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South]
  11. 11. Student question • What is the difference between a routing table and a forwarding table ?
  12. 12. Question • A distance vector router accepts a route towards destination d on link l if any of three conditions is met. What are these three conditions ? • d is not already in the routing table • d is already in the routing table, but with a shorter path • d is already in the routing table, but with a longer path • the sequence number of the distance vector is larger than the previous one • d is already in the routing table, but the route was learned from another link than l • d is already in the routing table, and the route was learned on link l
  13. 13. 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; } }
  14. 14. Example D must remove all the routes learned from North that are announced with an ∞ cost 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= Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South]
  15. 15. Example C 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 Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South]
  16. 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 : 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
  17. 17. 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
  18. 18. 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 ?
  19. 19. 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=
  20. 20. Another failure But A could also send its distance vector before D 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 : C : B : Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] A=0;D=1;B=3;C=3;E=2
  21. 21. 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
  22. 22. 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
  23. 23. 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 ?
  24. 24. Another failure • Split horizon • Split horizon with poisoning
  25. 25. DV sent by R3 to R1 with split horizon? R1 R2 R3 R4 R5 R6 3 4 1 0 9 Default link weight is 1
  26. 26. Limitations of split horizon with poisoning 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= E=1
  27. 27. Limitations 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 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 after B’s vector E : 0 [Local] A : C : 1 [North-East] B : 1 [North] Routing table after C’s 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=
  28. 28. Operational issue Operation At each expiration of its 30-sec timer, each router sends its own distance vector and restarts its timer Problem After a power failure, all routers might restart at same time and have synchronized timers Each router will need to process bursts of DV messages
  29. 29. Loop-free routing • What guarantees the fact that packets sent to destination d will eventually reach destination d ?
  30. 30. Agenda • Building a network • Network basics • Distance Vector routing • Link State routing • Supporting applications
  31. 31. How to set link costs ? • By manual configuration • Based on link bandwidth • By measurements • Only strictly positive link weights
  32. 32. Question • Which of the following informations are contained in a link state packet ? • sequence number • list of paths to reach known destinations • list of pairs (known dest, cost) • age of the link state packet • clock time • list of pairs (neighbor, cost to this neighbor) • CRC
  33. 33. Link state packet sent by R4 ? R1 R2 R3 R4 R5 R6 3 4 1 0 9 Default link weight is 1
  34. 34. Two way connectivity check C D E A B C 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] 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 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 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] 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] 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
  35. 35. Transient problems when a link fails A B C D 100 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
  36. 36. A detects the failure A B C D 100 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
  37. 37. A recomputes Dijkstra and sends its LSP A B C D 100 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 A:1 C=1
  38. 38. B detects the failure A B C D 100 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 A:1 C=1
  39. 39. B recomputes Dijkstra and sends its LSP A B C D 100 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 B:1 D=1
  40. 40. C recomputes Dijkstra A B C D 100 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
  41. 41. D recomputes Dijkstra A B C D 100 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
  42. 42. Router failures • Planned failures • Router reboot to upgrade OS • Sudden failure • due to power outage, software or hardware crash
  43. 43. Comparing routing protocols • Neighbour detection • Detecting link failures • Detecting router failures • Link weights • What information is distributed ? • How often ? • How are forwarding tables built ?
  44. 44. Agenda • Building a network • Supporting applications • Transport services • Reliable transport protocols
  45. 45. Question • What are the characeristics of the network service in the Internet ? • packets can get lost • packets can get duplicated • transmission errors can affect packet payload • packets can be reordered
  46. 46. Connectionless Source Provider Destination DATA.request(S,D,"M") DATA.indication(S,D,"M") Time
  47. 47. Connection oriented Source Network provider Destination CONNECT.request CONNECT.indication CONNECT.confirm Source considers connection open CONNECT.response Destination considers connection open
  48. 48. 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")
  49. 49. Data transfer Stream mode Source Provider Destination CONNECT.request CONNECT.indication CONNECT.confirm CONNECT.response DATA.ind("B") DATA.ind("A") DATA.request("AB") DATA.request("CD") DATA.ind("C") DATA.request("EF") DATA.ind("DEF")
  50. 50. Abrupt release Source Provider Destination DISCONNECT.req(abrupt) DISCONNECT.indication DATA.request("A") DATA.request("B") DATA.indication("A") DATA.request("C") Connection opened Connection opened
  51. 51. Graceful release Source Provider Destination DISCONNECT.req(graceful) DISCONNECT.ind(graceful) Connection opened Connection opened DATA.request("A") DATA.request("B") DATA.indication("A") DATA.indication("B") DATA.request("C") DATA.indication("C") Source->Destination connection closed DATA.request("D") DATA.indication("D") DISCONNECT.req(graceful) Connection closed DISCONNECT.ind(graceful) Connection closed
  52. 52. Transport services useable on Internet • TCP : Connection oriented, bytestream • UDP : Connectionless
  53. 53. Agenda • Building a network • Supporting applications • Transport services • Reliable transport protocols
  54. 54. Reference model
  55. 55. Multiplexing • How to multiplex data coming from multiple applications ?
  56. 56. Multiplexing Server Client Source port : 1234 Destination port: 5678 Request Response Source port : 5678 Destination port: 1234
  57. 57. Connection establishment • How to reliably open a connection ? Connect.req Connect.ind CR CA Connection established Connect.resp Connect.conf Connection established Connections A<->B : ... Connections A<->B : ...
  58. 58. Segment loss Connect.req() Connect.ind() Connect.conf() CA Connection established Connection established CR CR Retransmission timer expires Connect.resp()
  59. 59. Segments delayed Connect.ind() CR Connect.conf() CA CR Old previous CR First connection established How to detect duplicates ? Connect.req() D CA Connect.resp First connection established First connection stopped First connection stopped
  60. 60. Delayed segments • How to deal with delayed segments ? • Network level guarantee • No packet will survive more than MSL seconds inside the network • Transport entities use on a local clock to detect duplicated connection establishment requests
  61. 61. Three way handshake CR (seq=x) CA (seq=y, ack=x) CA (seq=x, ack=y) Sequence number x read from local transport clock Local state : Connection to B : - Wait for ack for CR (x) - Start retransmission timer Sequence number y read from local transport clock CA sent to ack CR Local state : Connection to A : - Wait for ack for CA(y) Received CA acknowledges CR Send CA to ack received CA Local state : Connection to B : - established - current_seq = x The sequence numbers used for the data segments will start from x The sequence numbers used for the data segments will start from y D(x) D(y) Local state : Connection to A : - established - current_seq=y Connection established Connection established Host A Host B
  62. 62. Reliable transfert • How to reliably transport data ? • Selective repeat is a good starting point • variable delays cause reordering • be careful with duplications • variable delays will influence timers
  63. 63. Closing a connection • Two different approaches • abrupt release • send a segment that immediately closes the connection –> may lead to losses • graceful release • send a marker that indicates the end of the date, once the marker is acked, all data has been received and connection is closed • independent release of the two directions

Editor's Notes

  • Pseudocode
    Every N seconds:
    for each link=l
    { /* one different vector for each link */
    Vector=null;
    for each destination=d in R[]
    {
    if (R[d].link<>l)
    {
    Vector=Vector+Pair(d,R[d].cost);
    }
    }
    Send(Vector);
    }

  • The Synchronization of Periodic Routing Messages , Floyd, S., and Jacobson, V. IEEE/ACM Transactions on Networking, V.2 N.2, p. 122-136, April 1994.
  • In this example, the duplicate CR is likely to be a previous retransmission of the CR that was delayed in the network.
  • ×