IP Lookup and Range Searching
Haim Kaplan Tel Aviv University
Joint with: Lars Arge, Pankaj Agarwal, Moshik Hershcovitch, Eyal Molad, Bob Tarjan, Ke Yi
IP Lookup and Range Searching Haim Kaplan Tel Aviv University - - PowerPoint PPT Presentation
IP Lookup and Range Searching Haim Kaplan Tel Aviv University Joint with: Lars Arge, Pankaj Agarwal, Moshik Hershcovitch, Eyal Molad, Bob Tarjan, Ke Yi Longest Prefix Forwarding Packet has a destination address Router identifies the
Joint with: Lars Arge, Pankaj Agarwal, Moshik Hershcovitch, Eyal Molad, Bob Tarjan, Ke Yi
4.0.0.0/8 4.83.128.0/17 12.0.0.0/8 12.34.158.0/24 126.255.103.0/24 12.34.158.5 destination forwarding table
4.0.0.0/8 4.83.128.0/17 12.0.0.0/8 12.34.158.0/24 126.255.103.0/24 12.34.158.5 destination forwarding table
132.66.235.0/24 4.0.0.0/8
0.0.0.0 255.255.255.255
IP address
0.0.0.0 255.255.255.255
IP address
0.0.0.0 255.255.255.255
IP address
0.0.0.0 255.255.255.255
IP address
0.0.0.0 255.255.255.255
IP address
0.0.0.0 255.255.255.255
IP address
5 7 1 3 9
x
5 1 7 3 9
5 9 7
Construct a balanced binary tree over the basic intervals
4 6 2 9 1 A B C D E F G I J K H L M 7 E G L I K H M J F B A D C
Place segment s in every node v such that s “covers v” but does not “cover p(v)”
4 6 2 9 1 A B C D E F G I J K H L M 7 E G L K H M J F B A D C I
Place segment s in every node v such that s “covers v” but does not “cover p(v)”
4 6 2 9 1 A B C D E F G I J K H L M 7 E G L K H M J F B A D C I
4 6 2 9 1 A B C D E F G I J K H L M 7 E G L K H M J F B A D
Traverse the path to the leaf containg x – O(log(n)) nodes.
C I x
4 6 2 9 1 A B C D E F G I J K H L M 7 x
In each node choose the min segment. Find the minimum among those. O(log(n)) time
E G L K H M J F B A D C I
4 6 2 9 1 A B C D E F G I J K H L M 7 10
Insert two new leaves Add a segment in O(logn) nodes
E G L K H M J F B A D C I
4 6 2 9 1 A B C D E F G I J K H L M 7 10 E’ E’’
Insert two new leaves Add a segment in O(logn) nodes
G L K H M J F B A D C E’’ E’ I
4 6 2 9 1 A B C D E F G I J K H L M 7 10 E’ E’’
Insert two new leaves Add a segment in O(logn) nodes
G L K M J F B A D C E’’ E’ H’ H’’ I H’ H’’
4 6 2 9 1 A B C D E F G I J K H L M 7 10 E’ E’’ H’ H’’
Insert two new leaves Add a segment in O(logn) nodes delete in analogous need a secondary heap at each node O(log2n) per update
G L K M J F B A D C E’’ E’ H’ H’’ I
? ?
? ?
A B C D F j E G I K L H M G L K H M J F B A D C E I
A B C D F j E G I K L
Use a segment tree as before
H M G L K H M J F B A D C E I
A B C D F j E G I K L H M
We can maintain only the shortest among all segments mapped to a node
G L K H M J F B A D C E I
A B C D F j E G I K L H M
Observe (1) – any segment appears somewhere Observe (2) – Only
siblings has a segment
G L K H M J F B A D C E I
A B C D F j E G I K L H M
As before in O(log(n)) time
x G L K H M J F B A D C E I
A B C D F j E G I K L H M G L K H M J F B A D C E I
A B C D F j E G I K L H M C’ C’’ G L K H M J F B A D E C’ C’’ I
A B C D F j E G I K L H M C’ C’’ I’ I’’ G L K H M J F B A D E C’ C’’ I’ I’’
A B C D F j E G I K L H M C’ C’’ I’ I’’ G L K H M J F B A D E C’ C’’ I’ I’’
A B C D F j E G I K L H M C’ C’’ I’ I’’ G L K H M J F B A D E C’ C’’ I’ I’’
? ? ? ?
? ? ? ?
? ? ?
y x B C A x A y B C y x B C A x A y B C y x B C A x A y B C y x B C A x A y B C y x B C A Impossible
G L K H M J F B A D E C’ C’’ I’ I’’ A B D F j E G K L H M C’ C’’ I’ I’’
G L K H M J F B A D E C’ C’’ I’ I’’ A B D F j E G K L H M C’ C’’ I’ I’’
A B D F j E G K L H M C’ C’’ I’ I’’
G L K H M J F B A D E C’ C’’ I’ I’’
A B D F j E G K L H M C’ C’’ I’ I’’
G L K H M J F B A D E C’ C’’ I’ I’’
M N O A B C E G L F H I M N I O D J K L J K I G H F E D B A
C
Keep only the shortest at each node
A B C E G L F H I M N I O D J K M N O L J K I G H F E D B A C
Same as before. O(logB(n)) I/Os. A B C E G L F H I M N I O D J K
x M N O L J K I G H F E D B A C
A B C E G L F H I M N I O D J K
M N O L J K I G H F E D B A C
K A B C E G L F H I M N I O D J K C’ C’’ K’K’’ K’’ M N O L J I G H F E D C’ B A C’’
K A B C E G L F H I M N I O D J K C’ C’’ K’K’’ K’’ M N O L J I G H F E D C’ B A C’’
V
V1
V2
? ? ? ? ? ? ?
V
V1
V2
a b a a c a b c c c R
3 a b a a c a b c c c L a b a a c a b R a b b a c a b b a L a b b a c a b b a R a b R 5 8 11 a a c a c R R L 10 R L b R A4R A8R A9L A9R A7R A10L A10R A2R A1 - a A6 - abaaabbccc A2 - ab A3 - aba A4 - abaaabb A5 - abaaabbaa A8 - abaacabaaa A10 - abbacabba A9 - abaacabccc A7 - abaacab
R R
1 5 7 9 8
7 2 1 2 9 5 8
2 2
1 5 7 9 8
7 2 1 2 9 5 8
2
2
x
1 5 7 9 2 8
7 2 1 2 9 5 8
2
find min along path link cut
1 5 7 9 2 8
7 2 1 2 9 5 8
2
1 5 7 9 2 2 4
7 2 1 2 9 5 4 Leftmost child of v => Left child of v Any other child of v => right child of its left sibling
9 7 5
∞ ∞ ∞ Adjust costs: Left edge => priority of parent Right edge => ∞ Node v => node v
1 5 7 9 2 2 4 7 9
Use a balanced search tree on the endpoints
1
Min(Mincost( ), pri( ))
1 5 7 9 2 2 4 7 9 1
Mincost( )