CBT was the earliest center-based tree protocol, and is the simplest.
When a receiver joins a multicast group, its local CBT router looks up the multicast address and obtains the address of the Core router for the group. It then sends a Join message for the group towards the Core. At each router on the way to the core, forwarding state is instantiated for the group, and an acknowledgment is sent back to the previous router. In this way, a multicast tree is built, as shown in figure 3.1.
If a sender (that is a group member) sends data to the group, the packets reach its local router, which forwards them to any of its neighbours that are on the multicast tree. Each router that receives a packet forwards it out of all it its interfaces that are on the tree except the one the packet came from. The style of tree CBT builds is called a "bidirectional shared tree", because the routing state is "bidirectional" - packets can flow both up the tree towards the core and down the tree away from the core depending on the location of the source, and "shared" by all sources to the group. This is in contrast to "unidirectional shared trees" built be SM-PIM as we shall see later.
IP Multicast does not require senders to a group to be members of the group, so it is possible that a sender's local router is not on the tree. In this case, the packet is forwarded to the next hop towards the Core. Eventually the packet will either reach a router that is on the tree, or it will reach the core, and it is then distributed along the multicast tree.
CBT also allows multiple Core routers to be specified which adds a little redundancy in case the core becomes unreachable. CBT never properly solved the problem of how to map a group address to the address of a core. In addition, good core placement is a hard problem. Without good core placement, CBT trees can be quite inefficient, and so CBT is unlikely to be used as a global multicast routing protocol.
However, within a limited domain, CBT is very efficient in terms of the amount of state that routers need to keep. Only routers on the distribution tree for a group keep forwarding state for that group, and no router needs to keep information about any source, and thus CBT scales much better than flood-and-prune protocols, especially for sparse groups where only a small proportion of subnetworks have members.