What techniques can be used to speed up reliable multicasting? For example, say a sender is delivering an object reliably to 10 known and fixed receivers over WAN. What can be done to decrease average completion times?
a Multicast Distribution Tree (MDT) as a distributor of MultiCast (MC) can help: A node in the network acts as a Designated Router (DR). This DR represents the root in the MDT. All end nodes as MC recipients are the leaves of the MDT. The paths from the root to the individual leaves in MDT
are the shortest routes (number of hops).
All packets (as multicast data) are first delivered to the DR for sending. All intermediate nodes in the MDT therefore send the MC data to the leaves via all branches (paths). The multicast protocols are based on this principle, such as: PIM-SM (Protocol Independent Multicast - Sparse Mode), RFC 4601.
Since you specify "reliable" multicast, as opposed to just plain jane multicast, I have to assume you are asking about retransmissions in case of a receiver receiving corrupted packets? That is a problem with reliable multicast. A better way than individual receivers requesting retransmissions, which will then interrupt the flow of multicast packets, is to use forward error correction techniques in the multicast payload. This does increase the size of each packet, but one can choose a level of FEC that is "good enough," and then avoid retransmissions altogether. For streaming media, where interrupting the flow is not really an option, FEC is used.
Efficient multicast routing trees apply to any multicast, and protocols like PIM-SM work to achieve such efficient trees (RFC 7761, see in particular introductory Sections 3.1-3.3). You begin with a rendezvous point which a receiver can access, and which relays all of the multicast packets from a source. But then the protocol looks for more efficient routes, going from each destination to the multicast source(s), to form more efficient trees. But I don't believe this is what you were asking?
Thank you Anatol and Albert for your valuable comments. This is actually a research question that I am asking and I didn't have any specific multicasting standard or protocol in mind. I was thinking more about the abstract problem, like given a graph with link capacity specified on edges, how should we select trees to connect receivers to the sender to minimize average completion times.