## 3 System Design
### Dynamic Core Management and Selection
#### 3.2.3 Analysis of Core Load  
In this part, we give a theoretical analysis of the core load. In our multicast approach, all routers can register the mapping between the FMSEID and it with the NRS to become the candidate core. We dynamically selected a low-load candidate core for each multicast service to achieve load balancing among all candidate cores. To simplify the complexity of the analysis, we assumed that there are all routers in the network had registered with the NRS as candidate cores. We use the number of multicast flows aggregated by each core as its load and assumed that each candidate core had the same load threshold and that each multicast group had the same number of sources. We define the load threshold of the core as the number of multicast groups it serves. The meaning of the symbols used below is shown in Table 1.  
The number of used cores can be expressed as Equation (2).  
\[N_{C}=\begin{cases}\begin{array}{cc}1,&N_{C}\leq\ L_{th}\\ \lceil N_{G}/L_{th}\rceil,&L_{th}\ <\ N_{G}<\ L_{th}\times N_{R}\\ N_{R},&N_{G}\geq\ L_{th}\times N_{R}\end{array}\end{cases} \tag{2}\]  
\begin{table}
\begin{tabular}{l c c c} \hline \hline
**Symbol** & **Meaning** & **Symbol** & **Meaning** \\ \hline \(L_{th}\) & the load threshold of each router & \(N_{C}\) & the number of used cores \\ \(N_{R}\) & the number of routers & \(L_{i}\) & the load of the \(i\)-th core \\ \(N_{G}\) & the number of groups & \(L_{max}\) & the load of the core with the largest load \\ \(N_{S}\) & the number of sources per group & & \\ \hline \hline \end{tabular}
\end{table}
Table 1: The meaning of symbols in this part.  
Figure 2: The example of core discovery and selection process. (**a**) The core discovery and selection process of S1 and S2; (**b**) the core discovery and selection process of S3.  
when \(N_{G}\leq L_{th}\), the candidate core in the \"Enable\" state is assigned to each multicast service. The load of each candidate core can be expressed as Equation (3).  
\[L_{i}=\begin{cases}N_{G}\times N_{S},&i=0\\ 0,&0<i\leq N_{R}-1\end{cases} \tag{3}\]  
when \(L_{th}<N_{G}<N_{R}\times L_{th}\), the candidate cores whose load reach the threshold notify the NRS to update its state to \"Busy\". The NRS updates the state of the candidate core with the smallest SN among all the Ready-state candidate cores to \"Enable\". Therefore, the load of each candidate core expressed as Equation (4) does not exceed the threshold.  
\[L_{i}=\begin{cases}L_{th}\times N_{S},&0\leq i\leq\ [N_{G}/L_{th}]-1\\ (N_{G}\%L_{th})\times N_{S},&i=[N_{G}/L_{th}]\\ 0,&[N_{G}/L_{th}]<i\leq N_{R}-1\end{cases} \tag{4}\]  
when \(N_{G}\geq N_{R}\times L_{th}\), the load of all candidate cores reaches the threshold and the NRS evenly distributes the new multicast services to each candidate core. The load of each candidate core can be expressed as Equation (5).  
\[L_{i}=\begin{cases}([N_{G}/N_{R}]+1)\times N_{S},&0\leq i\leq N_{G}\%N_{R}-1 \\ [N_{G}/N_{R}]\times N_{S},&N_{G}\%N_{R}\leq i\leq N_{R}-1\end{cases} \tag{5}\]  
The load of the core with the largest load among all candidate cores can be expressed as Equation (6).  
\[L_{max}=\begin{cases}\begin{array}{ccc}N_{G}\times N_{S},&N_{G}\leq&L_{th}\\ L_{th}\times N_{S},&L_{th}\ <&N_{G}\leq&L_{th}\times N_{R}\\ ([N_{G}/N_{R}]+1)\times N_{S},&N_{G}>&L_{th}\times N_{R}\end{array}\end{cases} \tag{6}\]