Geographical Routing Using Partial Information for Wireless Ad Hoc Networks
Rahul Jain, Anuj Puri, and Raja SenguptaDepartment of EECSUniversity of California, BerkeleyIEEE Personal Communications,
February, 2001
Problem Statement
Goal: Solve the routing problem in wireless ad hoc network using the position information.
How: When S want to send a packet to a node D, it takes the pos(D) and find one of its neighbors which geographically is closet to D; then it forwards the packet to D.
Problem: What if S is the closer to D than its neighbors?
Solution: Use Route Discovery Protocol
Assumptions
Each node has fixed power for trans-receivers, i.e. the neighbors of each node is fixed. We model the network with a graph
is a undirected connected graph. Initially each nodes knows the geographical positions of
itself and its neighbors. When Sending (forwarding) a message, we know the
geographical position of the destination.
),( ENG
G
Definitions
Let be the set of nodes whose locations are known to node S at time t. Call these nodes centers.
Voronoi cell: Let be any set of points in A Voronoi cell with center is defined as follows:
Voronoi view: The Voronoi view at node S at time t is:Voronoi view: The Voronoi view at node S at time t is:
},...,,{ 21 ks SSSC
},...,,{ 21 kSSS
iS
}|,)(|min|)(:|{)( SjjiiS CSSposzSposzzSV kj1
}:)({ siisS CSSVV
iS
Routing Table Structure
Node Node Position Neighbor Node (Next)
Time stamp
S pos(S) S TS
N pos(N) N TN
... … … …
S’ pos(S’) N’ TS’
… … … …
Each entry is a 4-tuple (Si, , pos(Si), NextS(Si), TSi)
The Algorithm
//let for some
If (S == D)
// packet reached its destination
else if (Si != S)
next_node = NextS(Si);
else
//packet is stuck
Initiate route_discovery(S, D);
next_node = Nexts(D);
)()( SiVsDpos CsSi
Route Discovery Protocol
route_discovery(S,D) finds an acyclic path Path(S,D) = <k0, k1, …, kl> from S to D, and it updates the routing table of node ki with an entry (D, pD, ki+1).
Example1
Example1 (Initial Routing Table)
Node Routing Table
A {(A, (1.5, 1.5), --), (B, (2,2), B)}
B {(B, (2,2), --), (A, (1.5, 1.5), A), (C, (3,1), C)}
C {(C, (3,1), --), (B, (2,2), B), (D, (2.5, 0), D), (E, (4,0), E)}
D {(D, (2.5, 0), --), (C, (3,1), C)}
E {(E, (4,0), --), (C, (3,1), C)}
A sends a packet to C: ABCA sends a packet to D: stuck
Example1 (Updated Routing Table)
Node Routing Table
A {(A, (1.5, 1.5), --), (B, (2,2), B), (D, (2.5), B)}
B {(B, (2,2), --), (A, (1.5, 1.5), A), (C, (3,1), C), (D, (2.5, 0), C)}
C {(C, (3,1), --), (B, (2,2), B), (D, (2.5, 0), D), (E, (4,0), E)}
D {(D, (2.5, 0), --), (C, (3,1), C)}
E {(E, (4,0), --), (C, (3,1), C)}
Assume: route-discovery(A, D)= <A, B, C, D>
Path-Finding Phase
The route can be discovered right up to destination node D (Full route discovery), or it can be discovered up to a node Y which has node D as a cell center (partial route discovery).
The following algorithm can be used to find an acyclic
path to the destination:
Breath First Search
Depth First Search
Convergence of Routing Tables
Definition: The Voronoi view of node S is complete if VS(S) contains only node S
If the routing table has enough information s.t.
no packet becomes stuck, then the Voronoi
views are complete.
Size of Routing Table
Claim: The average routing table size in a n-node network G when all the nodes have complete Voronoi views is , where
L is the mean route discovery path length.
))log(( nL
Multiple Route Discoveries Issue
Example
• S1 sends RD1 for the destination D at t1
• S2 send RD2 for the destination D at t2
RD1: s1x1x2y2 D
RD2: s2x2x1y1 D
ACK1 reaches x2, then ACK2
x2 puts (D, --,y2,--) first, then (D, --, x1, --)
And x1 puts, (D, --, y1, --), then (D, --, x2, --)
Cycle in the routing tables
Mobility in Ad Hoc Networks
The routing table might be inconsistent .
Improved Version of the Protocol
1. If S receives a “hello” message n i, it puts an entry (ni, pos(ni), ni) in its routing table
2. If S does not hear from a neighbor n i for a while, it removes all entries of the form (di, pi, ni) from its routing table
3. If Table(S) contains the entry (di, pi, ni) and S receives Table(ni) which contains the entry (di, pj, -), then S updates its entry to (d i, pj, ni ,-)
4. If Table(S) contains the entry (di, pi, ni ) and S receives Table(ni) which does not contain an entry (d i,--, --), then S removes the entry (di, pi, ni )
5. After any change to its routing table, S broadcasts the new Table(S)
Average Number of Neighbors
Mean Routing Table Size
GRA protocol packets per node
Time to Converge (in seconds)