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