Rethinking multicast protocols