Beacon Vector Routing: Scalable Point-to-Point Routing in Wireless Sensornets R. Fonseca, Berkeley; S. Ratnasamy, Intel Research; J. Zhao, ICI; C. T. Ee, D. Culler, S. Shenker, and I. Stoica, Berkeley NSDI 2005 The BVR Algorithm • Algorithm in three distinct parts: – Greedy forwarding – Fallback Mode – Scoped Flooding The BVR Algorithm • Define location based on number of hops to the routing beacons • Each node stores its location as a vector of hop counts. • P(q) = <q1,q2,q3,…qr> • e.g. <5,1,6,4,3,5,7,9,3> • Packets are routed based on these vectors The BVR Algorithm • Nodes retain the position of their neighboring nodes. • A nodes neighborhood is the collection of nodes one hop away, for most nodes. The BVR Algorithm • The algorithm compares the difference between the packet’s destination and the current node’s neighbors. Distance function Main Rule: Minimize the sum of the differences for the beacons that are closer to the destination d than to the current routing node p Ties in the Above are broken by this rule: Minimize the sum of the distances to the farther beacons BVR Algorithm Algorithm in operation 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 1: - only one decision 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 2: 1:<0,2,6> = 8 3:<0,0,4> = 4 9 3 Choose node b2 10 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 3: 2:<0,1,5> = 6 4:<0,1,4> = 5 7:<0,1,3> 9= 4 b2 node 7 Choose 10 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 4: 3:<0,0,4> = 4 5:<0,0,2> = 2 8:<0,0,2> 9= 2 -> tie! b2 10 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 Reverse metrics: 5:<3,0,0> = 3 8:<3,2,0> = 5 <4,1,2> 10 Choose 5 Hop 4: 3:<0,0,4> = 4 5:<0,0,2> = 2 8:<0,0,2> 9= 2 -> tie! b2 <5,3,2> <5,2,1> 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 5: 4:<0,1,4> = 5 6:<0,1,2> = 3 7:<0,1,3> 9= 4 b2 node 6 Choose 10 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 6: 5: <0,0,2> = 2 15: <0,1,1> = 2 -> tie! 9 b2 10 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 <3,4,4> 5 <2,3,4> 6 3 <0,3,6> 2 <1,4,7> <1,2,5> 7 15 <4,4,3> <1,3,3> 8 Reverse metrics: 5: <3,0,0> = 3 15: <1,0,0> = 1 <4,1,2> Choose 15 Hop 6: 5: <0,0,2> = 2 15: <0,1,1> = 2 -> tie! 9 b2 10 14 <5,3,2> <5,2,1> 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> Hop 7: 14: <0,0,0> = 0 Found node! 9 b2 10 12 13 b3 11 <5,2,3> Beacon Source Destination 4 <2,5,8> <1,4,6> 1 b1 2 <1,4,7> <3,4,4> 5 <2,3,4> 6 3 <0,3,6> <1,2,5> 7 15 <4,4,3> <1,3,3> 14 8 <5,3,2> <5,2,1> <4,1,2> 10 9 12 13 b2 b3 11 <5,2,3> Beacon Source Destination BVR: Fallback Mode • It is possible for greedy forwarding to fail. • This happens when no neighbor would improve the minimum distance metric • When this happens the protocol uses fallback mode BVR: Fallback Mode • Forward packet towards the beacon closest to the destination • Parent goes back to forwarding normally: first with greedy forwarding and then fallback mode BVR: Scoped Flooding • When fallback mode fails the algorithm resorts to scoped flooding • In scoped flooding the node knows the number of hops away the destination is, but not the direction • Floods only the number of hops needed Example: non-ideal case • Example where algorithm resorts to flooding b2 <3,0> <2,1> <0,3> <3,1> <2,2> <1,3> b1 <1,2> <3,4> <2,3> Beacon Source Destination b2 <3,0> <2,1> <0,3> <3,1> <2,2> <1,3> b1 <1,2> Calculate forward: <1-3,3-4> = <0,0> <1-3,2-4> = <0,0> Calculate reverse: <3-1,4-3> = <2,1> <3-1,4-2> = <2,2> <3,4> <2,3> Beacon Source Destination b2 <3,0> <2,1> <0,3> <3,1> <2,2> <1,3> b1 <1,2> Calculate forward: <1-3,3-4> = <0,0> <1-3,2-4> = <0,0> Calculate reverse: <3-1,4-3> = <2,1> <3-1,4-2> = <2,2> <3,4> <2,3> Would forward to <1,3>, but not closer then where we’ve already been. Initiate scoped flooding for 3 units away. For such a small network, touches every node. Beacon Source Destination b2 <3,0> <2,1> <0,3> <3,1> <2,2> <1,3> b1 <1,2> Calculate forward: <1-3,3-4> = <0,0> <1-3,2-4> = <0,0> Calculate reverse: <3-1,4-3> = <2,1> <3-1,4-2> = <2,2> <3,4> <2,3> Would forward to <1,3>, but not closer then where we’ve already been. Initiate scoped flooding for 3 units away. For such a small network, touches every node. Beacon Source Destination Adding another beacon fixes problem b2 <3,0,3> <2,1,2> <0,3,2> <3,1,4> <2,2,4> <1,3,3> b3 b1 <2,3,0> <1,2,1> Calculate forward: <3-3,1-4,4-1> = <0,0,3> <1-3,3-4,3-1> = <0,0,2> <3,4,1> <2,3,2> Beacon Source Destination Adding another beacon fixes problem b2 <3,0,3> <2,1,2> <0,3,2> <3,1,4> <2,2,4> <1,3,3> b3 b1 <2,3,0> <1,2,1> Calculate forward: <2-3,2-4,4-1> = <0,0,3> <0-3,3-4,2-1> = <0,0,1> <3,4,1> <2,3,2> Beacon Source Destination Adding another beacon fixes problem b2 <3,0,3> <2,1,2> <0,3,2> <3,1,4> <2,2,4> <1,3,3> b3 b1 <2,3,0> <1,2,1> Calculate forward: <1-3,3-4,3-1> = <0,0,2> <1-3,2-4,1-1> = <0,0,0> <3,4,1> <2,3,2> Beacon Source Destination Adding another beacon fixes problem b2 <3,0,3> <2,1,2> <0,3,2> <3,1,4> <2,2,4> <1,3,3> b3 b1 <2,3,0> <1,2,1> Calculate forward: <0-3,3-4,2-1> = <0,0,1> <2-3,3-4,2-1> = <0,0,1> <2-3,3-4,0-1> = <0,0,0> <3,4,1> <2,3,2> Beacon Source Destination Adding another beacon fixes problem b2 <3,0,3> <2,1,2> <0,3,2> <3,1,4> <2,2,4> <1,3,3> b3 b1 <2,3,0> <1,2,1> Calculate forward: <1-3,2-4,1-1> = <0,0,0> <3-3,4-4,1-1> = <0,0,0> Tie! Calculate reverse: <3-1,4-2,1-1> = <2,2,0> <3-3,4-4,1-1> = <0,0,0> -> forward to destination <3,4,1> <2,3,2> Beacon Source Destination Location Directory • How does the sender get the coordinates of the destination? • Like a DNS service. – Submits node ID – Responds with location • Hash function correlates nodes with certain beacons • Beacons must store all the state data of the nodes associated with it