Multicast Theory and Design Best Practices