A network provides fault tolerant network routing by identifying root nodes that provide cover against a particular type of fault. Nodes then route copies of packets through these root nodes such that an occurrence of the particular type of fault will not disrupt delivery of the packets.