Rather than flooding the data everywhere, or flooding the membership information
everywhere, algorithms in the Core-Based Trees (CBT) map the multicast group
address to a particular unicast address of a router(Core Router), and they
build explicit distribution trees centered around this particular router.
CBT involves having a single Core Tree per group.
Advantages of Core Based Trees
1) Scalability : Instead of one tree per (source,group) pair as in source
based trees, there is one multicast tree per group. So the amount of state
that needs to be stored at each router on the tree is O(number of groups)
i.e. link information per tree. Moreover, all routers need not support or
implement this protocol for this protocol to work i.e. routers which have
no members wrt a particular group need not maintain any information as to
the existence of that group.
2) Tree Creation is receiver based. Only a router interested in becoming
a part of the group (or is on the path between a potential member and the
tree) is involved in becoming a part of the tree for that particular group.
So tree building overhead is restricted to these routers.
3) It is independent of underlying unicast routing algorithm, resulting
in a much simplified multicast tree formation across domain boundaries.
There is a core address and a group identifier associated with every group.
The core address is the normal unicast address of the core router. This address
is used to get packets to the tree. Once on the tree, the packet is multicast
based on a globally unique group identifier or group-id.
1) Identification of Core Router
The placement of a group's core should reflect that group's characteristics
since the core placement assists in optimizing the routes between any sender
and group members on the tree. A router could become a core when a host on
one of its attached subnets wishes to initiate a group. Or in case of a single
sender, the router nearest to it could become a core. The topic of core placement
is open for research.
2) Data Forwarding
Unicast routing is used to route multicast packets to a multicast tree,
allowing multicast groups and multicast packets to remain "invisible" to
routers not on the tree. This allows for CBT unaware routers in between and
is a good strategy for incremental deployment. This is achieved by using
the unicast address of the core in the destination field of multicast packets
originating off-tree. Data packets destined for a particular group tree carry
the group core address in the "destination field" and group-id in the "option"
field of IP packet's header.
Once on the corresponding tree (i.e. on arrival at an on-tree router),
multicast packets span the tree based on the packet's group-identifier, or
group-id.
Core-address in the "destination field" is discarded and group-id in the
"option" field is placed in the "destination field". This leads to faster
on-tree switching since it is faster to process fixed length header than
an extended header. CBT routers forward arriving packets based on the information
contained in their CBT Forwarding Information Base.
3) Tree Formation
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-Request message for the group towards the Core.
The Join-Request is forwarded to the next-hop router on the path to the
core as determined by the unicast forwarding table. The join continues its
journey until it either reaches the addressed core, or reaches a CBT capable
router that is already part of the tree. At this point, the join's
journey is terminated by the receiving router and a Join-Ack is sent. At
each CBT router traversed by the Join-Ack, forwarding state is instantiated.
In this way, a multicast tree is built.
When a receiver wants to quit a multicast group, same procedure is followed(Quit-Req
and Quit-Ack).
Path or Node Failure *
Link failure is recognizable as a result of "Keep-Alive" mechanism operating
between adjacent on-tree routers.
For any non-core router, if a parent or path to parent fails, there are
two options
a) it submits a new Join-Request message, hence keeping
the failure transparent to the downstream branch. OR
b) Tell downstream routers about the failure and allow
them to independently attempt to re-attach themselves to the tree.
Disdvantages of Core Based Trees
1) Core Placement : Core based trees may not provide the most optimal
paths between members of a group.
2) The Core as a Single Point of Failure
This problem can be solved by having multiple cores associated with each tree, at the cost of increased complexity
Two choices wrt multiple core nodes
a) Single Core CBT Trees : We have multiple "backup"
cores to increase the probability that every network node can reach at least
one of the cores of a CBT tree.
There are multiple cores, which join each other at group initiation time.
The primary core is considered the "central-hub" of a
tree, with additional nodes simply providing an
element of robustness to the design. If the primary core should fail, the
recovery scenario is same as that in case
of Path or Node Failure. * This has the dynamic Join Overhead.
b) Multiple Core CBT Trees : In this subsets of tree attached
to each of core routers. It may lead to optimization of routes between those
members. There must be an explicit protocol
operating amongst the "backup cores" to handle failure, unlike the earlier
case.