Transcript routing

CSS432 Routing
Textbook Ch4.2
Professor: Munehiro Fukuda
Augmented By Rob Nash
CSS 432: Routing
1
IP on Scale

Addresses are hierarchical
 Reduces
total information storage required to
forward packets

Forward packets towards a single network

Then deliver to the host on that network
CSS 432: Routing
2
IP on Heterogeneity

A under-demanding model: “best-effort”
 Due
to this, IP has been shown to be
interoperable with any type of network
Even ones invented after IP
 Carrier Pigeons?!

Zebra’s are so much cooler…
 http://portal.acm.org/citation.cfm?id=1147620


Don’t like IP? Aren’t compatible? Try tunneling.
CSS 432: Routing
3
Terms
IGPs – Interior Gateway Protocols
 BGPs – Border Gateway Protocols
 RIP - Route Information Protocol
 OSPF – Open Shortest Path First Protocol


ARP – Address Resolution Protocol
 Maps
IP addrs to physical adapters (MAC addrs)
CSS 432: Routing
4
ARP

The mechanism that translates from IP
GuIDs to underlying physical adapter
addressing
 From
IP to MAC, for example
CSS 432: Routing
5
What Is Routing?

Forwarding vs Routing
 forwarding:




To map a network # to an outgoing interface and some MAC
information in a forwarding table.
To send a packet to an interface as consulting a local and static
forwarding table
OSI Layer 2: data link level
Implemented in specialized hardware (switch)
 routing:




To build a dynamic routing table
To update table contents in a dynamic and distributed fashion
OSI Layer 3: network level (internet)
Using complex distributed algorithms
CSS 432: Routing
6
Overview
At Node A

Network as a Graph
A
6
1
3
4
C

9
E
1
Next Hop
B
2
E
C
6
E
D
2
E
E
1
E
F
3
E
D
Find lowest cost path between two nodes
Static approach has shortcomings:




B
F
Cost
Goal


2
1
Destination
Hardware failures
Static network topology
Static band width
Distributed, dynamic routing algorithms


Distance vector routing (RIP)
Link state routing (OSPF)
CSS 432: Routing
7
Distance Vector

Each node maintains a set of triples
 (Destination, Cost, NextHop)
B
An initial distance vector at node A
Destination
Cost
Next hop
B
1
B
C
1
C
D
∞
-
E
1
E
F
1
F
G
∞
-
C
A
D
E
F
CSS 432: Routing
G
8
Distance Vector


Exchange updates directly connected neighbors
 periodically (on the order of several seconds)
 whenever table changes (called triggered update)
Each update is a list of pairs:
 (Destination, Cost)







(C, 1, C) < (C, 2, B)
(D, ∞, - ) > (D, 2, C)
From F: (G, 1)

D
G
F
From C: (D, 1)

C
A
E
Update local table if receive a “better” route
 From B: (C,1)


From B: (A, 1), (C, 1)
From C: (A, 1), (B, 1), (D, 1)
From E: (A, 1)
From F: (A, 1), (G, 1)
B
(G, ∞, - ) > (G, 2, F)
Refresh existing routes; delete if they are expired
CSS 432: Routing
Destination
Cost
Next hop
B
1
B
C
1
C
D
2
C
E
1
E
F
1
F
G
2
F
9
Routing Loop


Failure-recovering scenario
 F detects the link to G has failed
B
C To G in 2
 F sets distance to G to ∞ and sends an update to A
To G in 3
A
D
 A sets distance to G to ∞
 A receives periodic update from C with a 2-hop path To G in 4
E
To G in 1
to G
G
F
∞
 A sets distance to G to 3 and sends update to F
 F sets distance to G in 4 hops via A
B
Count-to-infinity problem
(5) To E in 4
 The link from A to E fails
(3) To E in 3
(2) To E in ∞
 A advertises distance of infinity to E
 C advertise a distance of 2 to E
(4) To E in ∞ (1) To E in 2
A
C
 B decides it can reach E in 3 hops
(6) To E in 5
 B advertises this to A
∞
 A decides it can read E in 4 hops
 A advertises this to C
E
 C decides that it can reach E in 5 hops…
CSS 432: Routing
10
Loop-Breaking Heuristics


Set infinity to 16

Scheme: Stop an infinity loop in 16.

Problem: No more 16 hops
Split horizon

Scheme: Don’t send a neighbor the routing information learned from
this neighbor.


Ex. B includes (E, 2, A) and thus doesn’t send (E, 3).
Split horizon with poison reverse

Scheme: Send the routing information learned from this neighbor as
setting hop count to ∞.


Ex. B includes (E, 2, A) and thus sends (E, ∞, A)
Problem: Its slow convergence speed
CSS 432: Routing
11
Routing Information Protocol (RIP)
frame header




1: request
2: reply
Used by routed
Advertisement: 30secs
Table entry timeout: 3 mins.


Routing domain
Addr family (net addr)
Route tag
Address of net 1
Cmd
Port: 520

RIP Message
UDP header
Cmd: 1-6


datagram heaader
Deleted in 60secs
Subnet mask
Next hop address (1-16)
Distance to net 1
Addr family (net addr)
Route tag
Address of net 2
Unix commands



Ripquery (BSD)
Tcpdump (available in Linux, too)
Snoop (Solaris)
25 entries
CSS 432: Routing
Ver
Subnet mask
Next hop address
Distance to net 2 (1-16)
12
Link State

Strategy
 Reliable dissemination of link-state information to
all nodes over a system.
 Calculation of routes from the sum of all the
accumulated link-state knowledge.

Link State Packet (LSP)
 ID of the node that created the LSP
 A cost of link to each directly connected neighbor
 A sequence number (SEQNO)
 A time-to-live (TTL) for this packet
CSS 432: Routing
13
Link State (cont)

Reliable flooding
 Store most recent LSP from
each node
 Forward LSP to all nodes but
one that sent it
 Generate new LSP
periodically

Increment SEQNO
 Start SEQNO at 0 when
reboot
 Decrement TTL of each
stored LSP

Discard when TTL=0
CSS 432: Routing
X
C
A
B
D
14
Dijkstra’s Shortest-Path Algorithm*




put (myself, 0, -) in the confirmed list
Next = myself;
while( true ) {
 for each edge (X, distance, Next) where X is N’s neighbor
 if neither confirmed or tentative list has (X, distance, Y) where
Y != Next, put (X, distance, Next) in the confirmed list
 if the tentative list has (X, distance, Y) where Y != Next, and (X,
distance, Y) > (X, distance, Next)
 Replace (X, distance, Y) with (X, distance, Next)
 If the tentative list is empty,
 exit
 else
 move the shortest edge (A, distance, B) from the tentative to the
confirmed list.
 Next = A
}
 //O((|E|+|V|) log |V|) time (which is dominated by O(|E| log |V|),
CSS 432: Routing
15
Forward Search From the Text
M = {me}
 For each node n in N - {me}

 C(n)

= l(me, n) //cost function init
While ( N != M )
M
= M U {w} s.t. C(w) is the min w for all (N-M)
 for each n in (N-M)

C(n) = MIN( C(n), C(w) + l(w+n))
CSS 432: Routing
16
Another OSPF Algorithm
Initialize costs, and start with {me}
 While set M is not empty (tentative list)

 Pick
a node from the tentative list with the
lowest cost = m

Move this to the confirmed list
 List

m’s neigbors, add each to tentative list
If I have a neighbor route already in my tentative
list with a higher cost, replace that route
CSS 432: Routing
17
Graph Theory Visually….
http://en.wikipedia.org/wiki/Dijkstra's_algorithm
CSS 432: Routing
18
Dijkstra’s Shortest-Path Algorithm
(A, 0, -)
(A, 0, -)
(B, 5, B)
(C, 10, C)
(E, 2, E)
(F, 4, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(C, 10, C)
(F, 4, F)
(A, 0, -)
(E, 2, E)
(F, 4, F)
(C, 10, C)
(B, 5, B)
(A, 0, -)
(E, 2, E)
(F, 4, F)
(C, 10, C)
(B, 5, B)
(G, 15, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(G, 18, B)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(G, 15, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(G, 15, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(D, 14, C)
(G, 15, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(D, 14, C)
(G, 15, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(D, 14, C)
(G, 15, F)
(A, 0, -)
(E, 2, E)
(B, 5, B)
(F, 4, F)
(C, 8, B)
(D, 14, C)
(G, 15, F)
5
A
3
B
10
D
2
4
F
CSS 432: Routing
6
C
13
E
11
2
G
19
Open Shortest Path First Protocol (OSPF)
frame header
Version
Type(=4)
datagram heaader
OSPF header
Message Length
SourceAddr
AreaId
Checksum
Authentication type
Authentication 0-3
Authentication 4-7


OSPF Message
# of link status advertisements
Options
LS Age
Type=1
Link-state ID
Advertising router
LS sequence number
Link Checksum
Length
Header
0 Flag
0
# of links
1.
Hello (reachability)
2.
Database description (topology)
Link ID
3.
Link status request
Link data
4.
Link status update
5.
Link status acknowledgment
Metric
Link type Num TOS
Advertisement (header type=4)

LS Age: = TTL
Optional TOS information

Type=1: link cost b/w routers

Link-State ID = Advertising Router

Seq # from the same router

Link ID = the other end route ID of link

Link data = used if there are two or more links to the same router

Metric = link cost

Link type = P2P, ethernet, etc

TOS = delay-sensitive, etc
CSS 432: Routing
20
OSPF Con’td


Gated daemon: directly uses IP datagram.
Header Type2: Database description (topology)
message
 Used when the current
 Sent from an initialized
topology has changed.
router to another router which
has a topology information

LS Sequence number
 Used
to determine which message is the latest
 Send a message with a new sequence number and
metric= ∞ when a router or a link fails.
CSS 432: Routing
21
Link State V.S. OSPF

Historically, OSPF has demonstrated more
desirable properties
 Less

bandwidth usage on large networks
After init, OSPF LPSs are deltas
 Convergence

speed
Rip can take 10, 30, even 60 seconds
 OSPF
supports CIDR & netmasks
CSS 432: Routing
22
Practically Speaking…

RIP tells each direct neighbor about
everyone
 So,

neighbor-to-neighbor dissemination
OSPF (P) tells everyone about my direct
neighbors
 “Reliable”
Flooding to all
CSS 432: Routing
23
Metrics

Original ARPANET metric



New ARPANET metric






measures number of packets enqueued on each link
took neither latency or bandwidth into consideration
stamp each incoming packet with its arrival time (AT)
record departure time (DT)
when link-level ACK arrives, compute
Delay = (DT - AT) + Transmit + Latency
if timeout, reset DT to departure time for retransmission
link cost = average delay over some time period
Fine Tuning


compressed dynamic range
replaced Delay with link utilization
CSS 432: Routing
24
Virtual Private Networks and Tunnels
Application
Level
A
10.0.0.1
20.0.0.1
Router
Dest router
Source router
Router
Level
A
10.0.0.1
20.0.0.1
To: 20.0.0.1
To: 215.0.0.1
To: 10.0.0.2
215.0.0.1
Company
Branch
Company
Branch
To: 20.0.0.1
A
10.0.0.1
B
To: 20.0.0.1
C
Physical
Network Level
B
To: 215.0.0.1
To: 215.0.0.1
Internet
To: 215.0.0.1
CSS 432: Routing
To: 20.0.0.1
B
20.0.0.1
25
Why VPN?
1.
Security

2.
Routers

3.
Routers with special features such as multicasting
can form a virtual network.
No-IP packets

4.
The final destination/contents of packet cannot be
easily intercepted.
Packets may be non-IP compatible packets.
Mobile IPs

The final destination may be a mobile computer.
CSS 432: Routing
26
Mobile IP


Sending host
Invariant: Sending hosts want to use the same IP address
mapped to a mobile host regardless of its location.
Questions
 How does the home agent intercept a packet that is
destined for the mobile agent? --- Use ARP
 How does the home agent then deliver the packet to the
mobile host? – Use DHCP and VPN
10.0.0.3
Home
agent
Internet
DHCP
server
12.0.0.6
Mobile Host
10.0.0.9
(12.0.0.7)
Mobile Host
CSS 432: Routing
27
Mobile IP (Cont’d)
Sending host
1. ARP request: What’s the physical addr
corresponding to 10.0.0.9?
3. Packet request: sends a packet destined for 10.0.0.9
to the home agent’s MAC address
2. ARP response: sends back MAC of
10.0.0.3 instead of 10.0.0.9
1. DHCP: receives a new IP
in the foreign network.
10.0.0.3
Home
agent
Internet
DHCP
server
12.0.0.6
IP tunneling: wraps the packet inside an IP
header destined for the mobile host (12.0.0.7).
Mobile Host
10.0.0.9
(12.0.0.7)
Mobile Host
2. Care-of-address: a mobile host informs its
Home agent of its original and new IPs.
CSS 432: Routing
28

Reviews
 RIP:
distance vector, routing loop and breaking heurictics
 OSPF: link state, Dijkstra’s shortest path algorithm
 VPN and mobile IP

Exercises in Chapter 4
 Ex.
15 (RIP)
 Ex. 18 (RIP)
 Ex. 28 (OSPF)
 Ex. 30 (OSPF)
CSS 432: Routing
29
FTP
File Transfer Protocol
FTP
FTP
user
client
interface
TCP port 21 for control (persistent)
TCP port 20 for data transfer
(not persistent)
local
file
system



FTP
server
remote
file
system
Transfer file to/from remote host
Client/server model
 Client: initiates a control TCP connection to a server on port 21.
 Client: sends a user ID and password as part of FTP commands.
 Server: authorizes the client
 Client: opens a data TCP connection to a server on port 20.
 Server: maintains state: current directory, earlier authentication.
A ftp client is allowed to initiate a transfer between two ftp servers.
CSS432: Applications
30
FTP
FTP Commands


<CRLF> delimits each command (and reply).
Commands consist of four uppercase ASCII characters, some with
optional arguments:







USER username : sends a user identification to server.
PASS password : sends the user password to the server.
PASV: requests the server to send back its IP and port on which it listens
to a data TCP connection from the user.
LIST : ask the server to send back its current directory contents through
the data connection.
RETR filename : gets a file from the current remote directory.
STOR filename : stores a file into the current remote directory.
Each command is followed by a reply:

331 Username OK, password required
 125 Data connection already open; transfer starting
 425 Can't open data connection
 452 Error writing file
CSS432: Applications
31
FTP
FTP Example
[mfukuda@uw1-320-20]$ telnet ftp.tripod.com 21
Trying 209.202.240.80…
Connected to ftp.tripod.com (209.202.240.80).
Escape character is ‘^]’.
220 Welcome to Tripod FTP.
USER css432
331 Username set to css432. Now enter your password.
PASS ********
230 User ‘css432’ logged on.
LIST
425 Can’t open data connection for LIST.
PASV
227 Entering Passiv Mode (209,202,240,80,195,210)
// Open another xterm and telnet 209.202.240.80 50130 (=195*256+210)
// Trying 209.202.240.80…
// Connected to ftp.tripod.com (209.202.240.80).
// Escape character is ‘^]’.
// drwxr-xr-x
1 css432
Tripod
0 Sep 15 21:22 cgi-bin
// -rw-r--r-1 css432
Tripod
26169 Sep 16 18:28 ttcp.c
// -rw-r--r-1 css432
Tripod
8236 Sep 15 21:22 index.htm
// drwxr-xr-x
1 css432
Tripod
0 Sep 16 18:33 project
// Connection closed by foreign host.
LIST
150 Opening ASCII mode data connection for LIST.
226 Transfer complete.
QUIT
221 Goodbye
Connection closed by foreign host.
[mfukuda@uw1-320-20]$ _
CSS432: Applications
32
FTP passive mode
TCP port 21 for control (persistent)
Client request: connect( ), USER, PASS, LIST
FTP
client
Server Reply: 220 server ready, 331 send password, 230 login ok,
425 connection timeout
FTP
server
TCP port 20 for data transfer (one time)
TCP port 21 for control (persistent)
Client request: connect( ), USER, PASS, PASV, LIST
FTP
client
Server Reply: 220 server ready, 331 send password, 230 login ok,
227 Entering Passive Mode (140,142,12,173,195,54), 226 complete
FTP
server
TCP port 195*256 + 54 = 49974 for data transfer (one time)
data
CSS432: Applications
33
FTP proxy command
(3’) 227 Entering Passive Mode
(140,142,12,173,195,54)
FTP
client
(1) USER, PASS, SYST
(2) USER, PASS, SYST
(3) TYPE I, PASV
(4) TYPE I, PORT (140,142,12,173,195,54),
STOR file
(5) RETR file
ftp> open server1
ftp> proxy open server2
ftp> proxy get file
FTP
Server
1
…(1)
…(2)
…(3)~(5)
TCP port 195*256 + 54 = 49974 for data transfer (one time)
FTP
Server
2
data
CSS432: Applications
34
Final Project Introduction

FTP project is live on the site
 We’ll
worry with the last few steps during
lecture

Signing our archives, etc.
CSS 432: Routing
35
FTP is Fun Transfer Protocol!
(If you tend to think bytes are fun)
 We’re making a client to interface with an
existing server (a class of servers)

CSS 432: Routing
36
Remote Tips

You can always remote into the lab

You could install Ubuntu on a USB stick
 Has

a good ftp server to play with
https://help.ubuntu.com/6.06/ubuntu/serverguide/C
/ftp-server.html
 You
write the client to interact with this server
CSS 432: Routing
37
General Tips

Observe Dr. Fukuda’s output
 It
gives away hints left and right

RFC 959 – light reading

Telnet to port 21
 Act

as the client!
For example, what does the server return when
you issue a “USER” or “PASV” request?
CSS 432: Routing
38
Telnet Line Terminators

Carridge-Return, Line Feed

Find this out
CSS 432: Routing
39
How Many Lines Of Code?

Decompose the project
A

A


network component
Resue code here from previous projects
filesystem component
Reuse code here if you have it!
From Pseudocode to C, or
 Pseudocode->intermediary
CSS 432: Routing
language -> C
40
Overarching Strategy
(0) Introduce yourself to the server
 (1) Relay a request to the server
 (2) Get a socket for data transmission

 See
PASV
(3) Exchange data in ASCII or Binary
 (4) Loop to (1) or QUIT

CSS 432: Routing
41