1: if marking tag exist then
2: exit
3: end if
4: create marking tag
5: create route-to-user tag point to previous node
6: for each neighbor in the target region do
7:  create child Discovery SM with given predicate
8: if this SM is the created child Discovery SM then
9: migrate to the neighbor node
10:   call Flood Migration
11:  exit
12:end if
13: end for
14: if this node matches the predicate then
15: migrate back to user node
(also create route-to-id and route
to previous node along the way)
16: add this node in a set of bound node
17: end if
Algorithm 2: Flood migration.