Hello Madhu
As you mention, each cluster ID is discrete, so you won’t have one client sending an update to an RR that it is not a neighbor with. In this case, you will not have an issue with loops. However, it is possible to set up two route reflectors with the same cluster ID. This allows for redundancy of RRs within a single cluster. This is the case where an RR will see its own cluster ID and will ignore the update.
For example, let’s say R1 and R2 are RRs in cluster 1.1.1.1. Both R1 and R2 receive routes from R3 and R4 which are clients in this cluster. (Note that clients don’t make use of cluster IDs, but it is only the RRs that do so.) R1 as an RR will share its info with R2 and R2 will share its info with R1. Both will share these routes and will append the cluster ID. In this case, the cluster ID of both routers is the same, so in order to avoid a loop, they will ignore the updates.
I hope this has been helpful!
Laz