In CBT, the tree formed is the shared tree [10, 8, 9, 7, 6]. A set of routers are designated to act as cores, where one is the Primary Core and the others Secondary Cores. The Primary cores can be different for different groups.
The tree building process starts when a group member appears on any network . The network's Designated Router (DR) on receiving the group-membership reports (or a join request from the host) sends a JOIN REQUEST packet towards the target core (primary or secondary). The information about the target core is statically configured. This join request travels hop-by-hop towards the target core. The core confirms it by sending a JOIN ACK message. The Ack message travels the same route downstream (or towards the network's DR) as the request message travels upstream (i.e. towards the core). The request message creates a temporary state in all routers along its path. This state or entry is made permanent by the ack message traveling the same path in the reverse direction. A typical entry contains the group identifier, the parent address (the address of the router towards the core), the interface on which it is connected to the parent, number of children and the address and interface associated with each child (downstream router). The target core, if it is not primary, then joins the primary core. The request message need not travel all the way to the target core. If the state for this group is already present in any intermediate router, then the request message is terminated at this router and the corresponding Ack is sent back. This way the trees are formed rooted at the primary core. If no members belonging to a particular group are present downstream, the router sends a QUIT REQUEST message upstream which is acknowledged (QUIT ACK) by the upstream router. This is similar to pruning except for the fact that it requires explicit acknowledgement. Further, this is not soft state. After sending the QUIT REQUEST message upstream the router removes the parent information (or the fields in the entry which give the parent address) immediately.
If any router or a link goes down, the downstream router which used this router as the next hop towards the core will have to rejoin the tree on behalf of each group present on their outgoing interfaces individually. They can perform an aggregate join if the groups share a common core-list. Each core supports a certain number of multicast groups. In other words any member joining these multicast groups can use any one of these cores. The list of cores which support a single group is called core-list for that group.
Further, during re-configuration a situation can occur where a router finds that the next hop towards its target core is the router which is downstream to it. Such a situation is depicted in Figure 2.11. Here router R1 finds that in order to join its target core it has to send a join request towards R2 which is downstream to it. R1 sends a FLUSH-TREE message downstream to teardown the tree i.e. to break the branch from R1 to R2. The downstream routers then perform explicit Rejoin if they have members present on them.
Figure 2.11: Flush tree message
The trees once built cannot be changed even if the underlying unicast topology undergoes a change i.e. the state is hard and does not reflects the underlying changes.
There are two modes of data forwarding, the native mode and the CBT mode. These modes are shown in Figure 2.13. A data packet originating inside a network is IP multicasted to all local members. When the network 's DR receives this packet, it multicasts one copy to all other CBT routers present on this network called CBT multicasting. It also forwards one copy of datagram on all directly attached networks for which it acts as a DR called Native mode forwarding. Further, it forwards an encapsulated packet on all outgoing links. The encapsulation is as shown in Figure 2.12.
Figure 2.12: Encapsulation by CBT routers
Figure 2.13: Data forwarding in core based trees (CBT)
The downstream routers check the liveness of their parent by periodically sending ECHO REQUEST message towards the parent, which is confirmed by the parent through ECHO REPLY message. Only one such message is exchanged by routers per link. These messages help in tree maintenance.