Some snoop protocols rely on network ordering properties to ensure that all caches receive snoop broadcasts in the same order. This helps avoid starvation, dead-lock and live-lock problems. This approach works well for small multiprocessors that use bus or tree interconnects, but larger multiprocessors with arbitrary network topologies cannot rely on the network to order requests. Fortunately, a number of works have proposed solutions to allow snoop protocols to work on arbitrary networks.