The first generation of DHT designs offered a completely flat structure of the key space that is randomly partitioned among participating DHT nodes. That has certain advantages, for example, even distribution of workload among nodes. On the other hand, grouping keys under a single authority or achieving latency guarantees for queries is difficult. To address these shortcomings, various kinds of hierarchy have been proposed over recent years. The last generation is hierarchical DHTs (HDHTs) where nodes are organized onto layers; each next layer consists of supernodes for the previous layer. In this survey paper, we thoroughly go over the evolution of DHTs from pure flat to pre-hierarchical. Our focus is on hierarchical schemes in DHT routing. We argue that their application is not restricted within HDHT designs. We sequentially built a set of design principles; each pro-