1 of 52

### 3 network-transport

1. Week 3 Building a network Supporting applications
2. Agenda • Building a network • Network basics • Distance Vector routing • Link State routing • Supporting applications
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 D’s 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 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=¥
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 ?

### Editor's Notes

1. 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&amp;lt;&amp;gt;l) { Vector=Vector+Pair(d,R[d].cost); } } Send(Vector); }
2. 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.