Week 3 
Building a network 
Supporting applications
Agenda 
• Building a network 
• Network basics 
• Distance Vector routing 
• Link State routing 
• Supporting applications
Addresses 
• What are the advantages/drawbacks of 
hierarchical versus flat addresses ?
Port-station tables 
• What are the advantages/drawbacks of this 
approach ? 
• How to deal with mobile devices ? 
• What about multihomed devices ?
Label switching 
• What are the advantages/drawbacks of this 
approach ? 
• How to create the virtual circuits 
automatically ?
Source routing 
• What are the advantages/drawbacks of this 
approach ?
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
Agenda 
• Building a network 
• Network basics 
• Distance Vector routing 
• Link State routing 
• Supporting applications
Distance vectors 
l How to deal with link failures ? 
C 
A B C 
D E 
D E
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=¥
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 ?
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
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
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
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
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 ?
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=¥
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
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
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
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 ?
Another failure 
Split horizon 
Split horizon with poisoning
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
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 ?
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=¥
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=¥
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
Agenda 
• Building a network 
• Network basics 
• Distance Vector routing 
• Link State routing 
• Supporting applications
How to set link costs ? 
• By manual configuration 
• Based on link bandwidth 
• By measurements
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
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
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
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
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
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
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
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
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
Router failures 
• Planned failures 
• Router reboot to upgrade OS 
• Sudden failure 
• due to power outage, software or 
hardware crash
Agenda 
• Building a network 
• Supporting applications 
• Transport services 
• Reliable transport protocols
Connectionless 
Source Provider Destination 
DATA.request(S,D,"M") 
DATA.indication(S,D,"M") 
Time
Connection oriented 
Source Network provider Destination 
CONNECT.request 
CONNECT.indication 
CONNECT.confirm 
Source considers 
connection open 
CONNECT.response 
Destination considers 
connection open
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")
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")
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")
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
Transport services 
useable on Internet 
• TCP : Connection oriented, bytestream 
• UDP : Connectionless
Agenda 
• Building a network 
• Supporting applications 
• Transport services 
• Reliable transport protocols
Multiplexing 
• How to multiplex data coming from 
multiple applications ?
Reliable transport 
• How to establish a connection ?
Reliable transport 
protocols 
• How to reliably transport data ?
Reliable transport 
• How to terminate a transport connection ?

3 network-transport

  • 1.
    Week 3 Buildinga network Supporting applications
  • 2.
    Agenda • Buildinga network • Network basics • Distance Vector routing • Link State routing • Supporting applications
  • 3.
    Addresses • Whatare 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 • Buildinga network • Network basics • Distance Vector routing • Link State routing • Supporting applications
  • 9.
    Distance vectors lHow 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 Routingtable 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 DE 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 DE 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 DE 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 Routingtable 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 Dupdates 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 Splithorizon Split horizon with poisoning
  • 23.
    Split horizon AB 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 • Buildinga network • Network basics • Distance Vector routing • Link State routing • Supporting applications
  • 29.
    How to setlink costs ? • By manual configuration • Based on link bandwidth • By measurements
  • 30.
    What is therole 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 whena 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 thefailure 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 thefailure 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 • Buildinga network • Supporting applications • Transport services • Reliable transport protocols
  • 41.
    Connectionless Source ProviderDestination DATA.request(S,D,"M") DATA.indication(S,D,"M") Time
  • 42.
    Connection oriented SourceNetwork provider Destination CONNECT.request CONNECT.indication CONNECT.confirm Source considers connection open CONNECT.response Destination considers connection open
  • 43.
    Data transfer Messagemode 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 Streammode 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 SourceProvider 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 SourceProvider 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 useableon Internet • TCP : Connection oriented, bytestream • UDP : Connectionless
  • 48.
    Agenda • Buildinga network • Supporting applications • Transport services • Reliable transport protocols
  • 49.
    Multiplexing • Howto 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

  • #23 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); }
  • #28 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.