Today more and more attention is given to collective movement of dynamic nodes, called flocking. The main problem is how to control the nodes to behave as a group and make them move together to destinations (and moreover complete some tasks such as sensing, transporting, etc.). Currently there are many works, which attempt to solve the flocking problem, but very few of them are suitable for real world use. This is because most of the algorithms are overlooking crucial physical limitations or the used model is not detailed enough. In this paper we survey the existing flocking algorithms, including a review of the most important requirements for real application scenarios.