Hierarchical codes : a flexible trade-off for erasure codes in peer-to-peer storage systems