<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="review-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Comms. Net</journal-id>
<journal-title>Frontiers in Communications and Networks</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Comms. Net</abbrev-journal-title>
<issn pub-type="epub">2673-530X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">731992</article-id>
<article-id pub-id-type="doi">10.3389/frcmn.2021.731992</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Communications and Networks</subject>
<subj-group>
<subject>Methods</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A Two-Layered Shared Tree Multicast Routing Algorithm for Software Defined Hybrid Satellite-Terrestrial Communication Networks</article-title>
<alt-title alt-title-type="left-running-head">Xiong et&#x20;al.</alt-title>
<alt-title alt-title-type="right-running-head">Multicast in Satellite-Terrestrial Networks</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Xiong</surname>
<given-names>Jiayan</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/1193089/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Xu</surname>
<given-names>Zhen</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Dai</surname>
<given-names>Zhiqi</given-names>
</name>
</contrib>
</contrib-group>
<aff>School of Electronic and Information Engineering, Beihang University, <addr-line>Beijing</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1006211/overview">Rune Hylsberg Jacobsen</ext-link>, Aarhus University, Denmark</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/977994/overview">Lidong Zhu</ext-link>, University of Electronic Science and Technology of China, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/989575/overview">Yunchong Guan</ext-link>, Shenyang Aerospace University, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Zhen Xu, <email>xuzhen@buaa.edu.cn</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Aerial and Space Networks, a section of the journal Frontiers in Communications and Networks</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>07</day>
<month>10</month>
<year>2021</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>2</volume>
<elocation-id>731992</elocation-id>
<history>
<date date-type="received">
<day>28</day>
<month>06</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>22</day>
<month>09</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2021 Xiong, Xu and Dai.</copyright-statement>
<copyright-year>2021</copyright-year>
<copyright-holder>Xiong, Xu and Dai</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these&#x20;terms.</p>
</license>
</permissions>
<abstract>
<p>Dynamic routing and congestion control are two major problems in software-defined hybrid satellite-terrestrial multicast networks research. Due to terrestrial users being allowed to join or leave the multicast group at any time and the differences between the satellite and the terrestrial networks, many multicast routing algorithms reroute rapidly and thus increase the rerouting overheads. Meanwhile, the congestion ratio is increased by some hot nodes of satellite-terrestrial link transmission paths. This paper focuses on rerouting overheads and congestion problems in satellite-terrestrial multicast networks. We present a satellite-terrestrial network architecture with the Software-Defined Networking (SDN) features to offer dynamic multicast services for terrestrial users. A Two-Layered Shared Tree Multicast (TSTM) routing algorithm is proposed to achieve efficient dynamic multicast group management, address the trade-off between bandwidth consumption and rerouting overheads. The algorithm also implements congestion control by using a load factor to reflect on the global network bandwidth usage in routing calculations. This algorithm balances the rerouting frequencies of satellite and terrestrial networks to decrease the rerouting overheads and also reduces the network congestion ratio. The simulation shows TSTM decreases rerouting cost, user time delay, and node congestion ratio compared with the locality-aware multicast approach (LAMA).</p>
</abstract>
<kwd-group>
<kwd>multicast</kwd>
<kwd>satellite-terrestrial hybrid networks</kwd>
<kwd>routing algorithm</kwd>
<kwd>congestion control</kwd>
<kwd>SDN</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>Introduction</title>
<p>Compared with terrestrial communication systems, satellite communication systems have a wider coverage area. Mobile satellite networks can achieve a larger or even a global range of high-speed data transmission. Meanwhile, the number of remote sensing satellites have exploded in recent years. With the continuous improvement of the observation accuracy, more and more observing data are generated. These remote sensing satellites can provide real-time observation data to terrestrial users through mobile satellite networks, expanding the application services of meteorology, hydrology, geological monitoring, transportation, and etc. However, since the amount of remote sensing data to be transmitted has increased greatly, and the communication satellite uplink and downlink are wireless channels with limited power and bandwidth, the remote sensing data cannot all be broadcast directly to individuals, therefore, the terrestrial macro base stations are required to receive satellite information and then transmit them to ground users through terrestrial networks. In addition, compared with unicast, multicast technology effectively reduces the overall bandwidth consumption and is widely used in communication systems, so the integration of satellite networks and terrestrial networks with multicast technology can achieve efficient transmission of satellite information to user terminals in terrestrial networks. However, there are many challenges in designing the hybrid multicast networks because of the differences between satellite and terrestrial networks, such as high dynamic topology changes and time delays in satellite networks as well as large amount nodes and complex transmission paths in terrestrial networks. Consequently, designing efficient multicast protocols from satellites to user terminals in the satellite-terrestrial networks has become an important and hot research&#x20;topic.</p>
<p>Multicast routing protocols are usually designed for terrestrial networks, such as DVMPR (<xref ref-type="bibr" rid="B19">Waitzman et&#x20;al., 1988</xref>), PIM-SM (<xref ref-type="bibr" rid="B6">Fenner et&#x20;al., 2016</xref>), PIM-DM (<xref ref-type="bibr" rid="B3">Deering et&#x20;al., 1999</xref>), and MOSPF (<xref ref-type="bibr" rid="B15">Moy, 1994</xref>). As they are responsible for determining the dissemination paths for multicast packets to avoid loops and prevent information redundancy, routers keep a lot of duplicated states and update routing tables frequently in these protocols. Due to the high dynamic of satellite network topology, the long delay of satellite link transmission, and the shortage of onboard resources, there are many challenges for the design of satellite multicast protocols.</p>
<p>Therefore, some satellite multicast routing algorithms are proposed, such as DRA (<xref ref-type="bibr" rid="B4">Ekici et&#x20;al., 2001</xref>), MRA (<xref ref-type="bibr" rid="B5">Ekici et&#x20;al., 2002</xref>), MCST (<xref ref-type="bibr" rid="B12">Lianzhen Cheng et&#x20;al., 2005</xref>), and DMRBA (<xref ref-type="bibr" rid="B20">Xu Hui et&#x20;al., 2007</xref>). They are suitable for saving satellite channel bandwidth. But they are designed based on the structure of satellites, and the logical address is proposed to calculate routing. Therefore, the satellite multicast routing protocols cannot be directly applied to satellite-terrestrial hybrid networks because of the heterogeneous nature.</p>
<p>In a multicast system, when the ground user requests joining or leaving a multicast group, the routers need to process the IGMP membership reports. In order to create new dissemination paths or delete existing distribution paths for ground users, the satellite-terrestrial network reroutes rapidly and generates a large scale of multicast traffic, and thus increasing the rerouting overheads and congestion ratio for hot nodes. Software-Defined Networking (SDN) is proposed to enable flexible network resource allocations by separating the control plane and data plane (<xref ref-type="bibr" rid="B14">McKeown et&#x20;al., 2008</xref>), which can provide a global platform for better multicast traffic control. There are many studies in multicast networks based on SDN, such as LAMA (<xref ref-type="bibr" rid="B13">Lin et&#x20;al., 2017</xref>), BAERA (<xref ref-type="bibr" rid="B10">Huang et&#x20;al., 2014</xref>), and PVHS (<xref ref-type="bibr" rid="B22">Zhou et&#x20;al., 2015</xref>). This paper focuses on rerouting overheads and congestion problems for software-defined hybrid satellite-terrestrial multicast networks.</p>
<p>In this paper, we establish metrics to evaluate the states and capabilities of hybrid satellite-terrestrial multicast networks. Based on the stability of the network topology, multicast content demands, efficiency of the multicast distribution system and network capability, we jointly optimize the satellite multicast distribution trees and routing paths of the whole network. First, we design a dynamic multicast system with low latency for software-defined hybrid satellite-terrestrial networks. Then a Two-Layered Shared Tree Multicast (TSTM) routing algorithm is proposed. Since the users joining or leaving multicast groups and the handover of satellite links lead to frequent rerouting, which may consume many network resources if the satellite network part and terrestrial network part reroute simultaneously. To address the trade-off between the bandwidth consumption and rerouting overheads, TSTM balances the rerouting frequencies of satellite and terrestrial networks to reduce the rerouting overheads. Considering the congestions caused by some hot nodes of satellite-terrestrial link transmission paths, a load factor for each node is introduced in TSTM to reflect on the bandwidth usage in routing calculations to decrease the congestion ratio. In the dynamic multicast system, the satellite network is integrated with the terrestrial network through macro base stations, and the satellite connected to the terrestrial network at moment is selected according to the longest visible time criterion. When the users request the multicast data streams, they are divided into different multicast groups according to the requesting content. The TSTM includes three phases. First, since PIM-SM is efficient applicable for large satellite-terrestrial hybrid networks, we build dynamic shared multicast trees based on PIM-SM protocol with Tabu search for Rendezvous Point (RP) selection to decrease the average delay of multicast users. Then, when new terrestrial users request joining or leaving the multicast group, considering the long delay of satellite link transmission and the frequent topology changes in terrestrial networks, a cost-aware rerouting algorithm is proposed to determine the topological scope and timing of rerouting to decrease the rerouting overheads. Finally, the bandwidth occupancy-based congestion control algorithm is used to reduce the network congestion ratio. With the feedback of bandwidth usage in routing calculations, the average delay and the congestion ratio are co-optimized. Meanwhile, the one-dimensional search algorithm is used to calculate the optimal value of the load factor. The simulation shows TSTM decreases rerouting cost, user time delay, and node congestion ratio compared with the locality-aware multicast approach (LAMA).</p>
<p>The rest of this paper is organized as follows. <italic>Related Work</italic> reviews the related work. <italic>System Model</italic> gives an overview of the system model and problem formulation. <italic>Two-Layered Shared Tree Multicast Routing Algorithm</italic> presents the TSTM algorithm. The simulation results are demonstrated in <italic>Performance Evaluation</italic>. Finally, <italic>Conclusion</italic> concludes this&#x20;paper.</p>
</sec>
<sec id="s2">
<title>Related Work</title>
<p>In this section, we describe the related studies concentrated on satellite-terrestrial multicast algorithms and multicast structures based on SDN. The traditional satellite Multicast Routing Algorithm (MRA) (<xref ref-type="bibr" rid="B5">Ekici et&#x20;al., 2002</xref>) is based on the Datagram Routing Algorithm (DRA) (<xref ref-type="bibr" rid="B4">Ekici et&#x20;al., 2001</xref>) to determine the routing direction of the next hop for each node and merge the paths with the same direction, which can effectively reduce the end-to-end delay. This algorithm is designed for LEO satellite multicast networks, but the link utilization is low, and a large amount of satellite resources is occupied. Considering the satellite-terrestrial hybrid networks, the article (<xref ref-type="bibr" rid="B7">Filali et&#x20;al., 2001</xref>) presented a satellite-terrestrial network architecture model suitable for multicast applications. It applied PIM-SM to minimize multicast tree branching for unreliable multicast and multicast packet delay for reliable multicast. But the update cost and congestion ratio will increase rapidly when users join and leave multicast groups dynamically. There is some risk of disruption due to the long delay of satellite links. Therefore, the multicast system in satellite-terrestrial networks requires to consider the routing differences between satellite and terrestrial nodes and applying SDN to multicast systems can facilitate unified control.</p>
<p>To implement the hybrid satellite-terrestrial multicast network in SDN effectively, the article (<xref ref-type="bibr" rid="B21">Yang et&#x20;al., 2018</xref>) proposed a hybrid satellite-terrestrial network architecture based on SDN, providing low-rate multicast for users with low latency requirements. In the structure, three GEO satellites are set to achieve full coverage of the terrestrial network, and each satellite has interfaces for inter-satellite and satellite-terrestrial links. Acting as SDN controllers, the GEO satellites first calculate at the gateway and then send results to the internal network. But controllers as the core of SDN require extensive calculations and large bandwidth. A traffic engineering quality of experience (QoE) feedback application is proposed (<xref ref-type="bibr" rid="B17">Robinson et&#x20;al., 2017</xref>) to improve QoE. The structure has been tested with multicast video, where SDN directly controls multicast groups as well as multicast path computation. SDN can intelligently analyze the network and adjust multicast paths by integrating IGMP group states, QoE, and link utilization, which highlights the advantages of the SDN applied in large-scale network.</p>
<p>The traffic engineering is an important research topic of SDN. In order to decrease the flow entries and bandwidth cost, different solutions in structure and algorithm have been proposed (<xref ref-type="bibr" rid="B13">Lin et&#x20;al., 2017</xref>; <xref ref-type="bibr" rid="B8">Gao et&#x20;al., 2017</xref>; <xref ref-type="bibr" rid="B11">Kuo et&#x20;al., 2019</xref>). The article (<xref ref-type="bibr" rid="B13">Lin et&#x20;al., 2017</xref>) proposes the LAMA algorithm to reduce the computation time of the multicast distribution tree and the number of distribution flows and increase the scalability of controllers and switches. The algorithm is first used to gather several multicast groups nearby into a single multicast group, then a suitable RP is selected according to a locating RP algorithm so that the RP is closest to other multicast sources within the multicast group, and finally, the shortest path from the source to multicast receiving hosts is established. However, the LAMA algorithm has not considered dynamic multicast user management. To satisfy the Qos requirements of dynamic application scenarios simultaneously, the article (<xref ref-type="bibr" rid="B8">Gao et&#x20;al., 2017</xref>) proposed a delay-constrained multicast routing algorithm based on any cast to actively avoid traffic congestion in multicast trees. When a new multicast user tries to join a multicast group, it accesses any of the SDN switches in the multicast tree via the optimal path. And the MRUSA algorithm is designed to provide incremental tree updating and multi-tree update scheduling so that frequent rerouting due to tiny changes of multicast users can be effectively avoided (<xref ref-type="bibr" rid="B11">Kuo et&#x20;al., 2019</xref>). However, the effectiveness of these routing algorithms in the satellite-terrestrial network needs further verification. Consequently, how to reduce traffic cost and apply routing algorithms are important in SDN, which will bring more challenges in software defined hybrid satellite-terrestrial networks.</p>
<p>Therefore, considering the differences between satellite and terrestrial links, as well as avoiding the large cost caused by frequent routing updates in the dynamic hybrid networks, we proposed a two-layered shared tree multicast routing algorithm for satellite-terrestrial networks based on SDN, in order to create a reliable satellite-terrestrial multicast transmission network where a large number of users join and leave the multicast group dynamically. The structure of the two-layered tree can integrate the satellite and ground network as well as serving their characteristics, which have greater flexibility in routing calculations. In the hybrid network structure, the SDN controller collects the global topology information and then performs routing calculations to achieve effective routing and congestion control.</p>
</sec>
<sec id="s3">
<title>System Model</title>
<sec id="s3-1">
<title>Satellite-Terrestrial Networks</title>
<p>The multicast communication system consists of satellite part and terrestrial part as <xref ref-type="fig" rid="F1">Figure&#x20;1</xref>. The satellite network is composed of hundreds of LEO satellites. Each satellite establishes communication links with the nearest satellites in adjacent orbits and adjoining satellites in the same orbit, thus a mesh satellite communication network is built in which each satellite can communicate directly with four satellites in its neighborhood. The terrestrial network consists of ground stations and user terminals. In the multicast communication system proposed in this paper, the communication paths can be divided into three parts: satellite routing paths, terrestrial routing paths and satellite-terrestrial communication links. The satellites connected to the terrestrial network are selected according to the longest visual time criterion. When the terrestrial users request the multicast data streams, the satellites send multicast data and routing topology status information to the terrestrial macro base stations, then the terrestrial macro base stations send multicast data to mobile users of the multicast group through terrestrial routing&#x20;paths.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>The satellite-terrestrial networks.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g001.tif"/>
</fig>
<p>The structure of terrestrial networks is similar to the small cell networks (SCNs) (<xref ref-type="bibr" rid="B2">Andrews et&#x20;al., 2014</xref>). SCNs deploy short-range, low-power, and low-cost small cell base stations (SBSs) operating in conjunction with macro base stations. The SBSs encompass microcell base stations, picocell base stations, and femtocell base stations. They are designed to reduce the distance between users and base stations, enhance network coverage and improve spectral and energy efficiency. The terrestrial network proposed in the paper consists of macro base stations, microcell base stations, and mobile users. The transmitting power of macro base stations is generally more than 10&#xa0;W and their coverage range is more than 200&#xa0;m. While for microcell base stations, the transmitting power is 500&#xa0;mW-10&#xa0;W and the coverage range is between 50 and 200&#xa0;m. Connected with satellites, macro base stations receive the multicast data streams and forward them to microcell base stations. After receiving the multicast data streams, microcell base stations forward them to the users. Mobile users are low-speed pedestrians requesting different multicast contents. In this paper, the stochastic model of terrestrial nodes&#x2019; location distribution is based on the Poisson point process (PPP) (<xref ref-type="bibr" rid="B18">Saha and Dhillon, 2020</xref>). The integrated satellite-terrestrial network has the characteristics of large scale, complex, high dynamic and heterogeneousness. Adopting traditional routing methods in the integrated satellite-terrestrial network will cause problems of poor scalability and large routing overhead.</p>
</sec>
<sec id="s3-2">
<title>Software Defined Networks</title>
<p>A Software-Defined Network decouples the control plane of switches and routers from their data plane, enabling the control and orchestration of satellites and terrestrial devices from a central entity. The controller is the core of the SDN, which manages a wide range of data plane resources. Based on the SDSN model proposed by the scholars (<xref ref-type="bibr" rid="B23">Zhu Tang et&#x20;al., 2014</xref>), our SDN deployment model of the satellite-terrestrial hybrid network is proposed as <xref ref-type="fig" rid="F2">Figure&#x20;2</xref>. The SDN controller is set as the controller layer located at the ground station, and a Network Operations and Control Center (NOCC) is set as the application layer. The infrastructure layer consists of satellites and terrestrial devices, which perform the basic forwarding functions of multicast communications. The SDN controller can abstract the topology and resources of the network and provide them through the Northbound interface to applications, thus the NOCC can use the network resources more efficiently.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>The SDN architecture.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g002.tif"/>
</fig>
</sec>
<sec id="s3-3">
<title>Problem Formulation</title>
<p>The network is modeled as a graph <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi mathvariant="bold-italic">G</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf2">
<mml:math id="m2">
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:math>
</inline-formula> and <inline-formula id="inf3">
<mml:math id="m3">
<mml:mi mathvariant="bold-italic">E</mml:mi>
</mml:math>
</inline-formula> denote the set of nodes and links, respectively. There are three kinds of nodes: satellite <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> , ground station <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, mobile user terminals <inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Let some random satellites be the multicast sources. Each user can join or leave the multicast group <italic>i</italic> according to the multicast content at the beginning of each time slot <italic>t</italic>. Let <inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>denote the distance cost of the link <inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="normal">&#x3f5;</mml:mi>
<mml:mi mathvariant="bold-italic">E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
<italic>.</italic> The capacities of node <inline-formula id="inf9">
<mml:math id="m9">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> and link <inline-formula id="inf10">
<mml:math id="m10">
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:math>
</inline-formula> is <inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, which denote the number of forwarding entries that can be stored in node <inline-formula id="inf13">
<mml:math id="m13">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> and the maximum data rate allowed for link&#x20;<inline-formula id="inf14">
<mml:math id="m14">
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:math>
</inline-formula>.</p>
<p>To address the trade-off between the bandwidth consumption and rerouting overheads, the formulation is based on the Scalable Multicast Traffic Engineering (SMTE) problem (<xref ref-type="bibr" rid="B9">Huang et&#x20;al., 2016</xref>). In time slot <inline-formula id="inf15">
<mml:math id="m15">
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:math>
</inline-formula>, let <inline-formula id="inf16">
<mml:math id="m16">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> denote the multicast tree for multicast group <italic>i</italic>, and let <inline-formula id="inf17">
<mml:math id="m17">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> be the set of outgoing downstream paths from node <inline-formula id="inf18">
<mml:math id="m18">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> on the tree <inline-formula id="inf19">
<mml:math id="m19">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. Let <inline-formula id="inf20">
<mml:math id="m20">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3a5;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> denote whether node <inline-formula id="inf21">
<mml:math id="m21">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> is the node of the multicast group <inline-formula id="inf22">
<mml:math id="m22">
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:math>
</inline-formula>, and <inline-formula id="inf23">
<mml:math id="m23">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> denote whether node <inline-formula id="inf24">
<mml:math id="m24">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> has the same outgoing downstream paths on the tree <inline-formula id="inf25">
<mml:math id="m25">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf26">
<mml:math id="m26">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> in two adjacent time slots as follows.<disp-formula id="e1">
<mml:math id="m27">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2209;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mi mathvariant="bold-italic">&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</mml:mi>
<mml:mo>&#x2200;</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
<disp-formula id="e2">
<mml:math id="m28">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">&#xa0;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">&#xa0;</mml:mi>
<mml:mi mathvariant="bold">and</mml:mi>
<mml:mi mathvariant="bold-italic">&#xa0;</mml:mi>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2260;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold">&#xa0;and</mml:mi>
<mml:mi mathvariant="bold-italic">&#xa0;</mml:mi>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mi mathvariant="bold-italic">&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</mml:mi>
<mml:mo>&#x2200;</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>In multicast group <italic>i</italic>, let <inline-formula id="inf27">
<mml:math id="m29">
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> be the data rate of the multicast source <inline-formula id="inf28">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf29">
<mml:math id="m31">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b5;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold">,</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> denote the cost of packet duplication on link <inline-formula id="inf30">
<mml:math id="m32">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> in time slot <italic>t</italic>, which is the number of copies of the packet. The constraints of the nodes and links in the whole network can be described as follows.<disp-formula id="e3">
<mml:math id="m33">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">1</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">1</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b5;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mi mathvariant="bold-italic">&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</mml:mi>
<mml:mo>&#x2200;</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">V&#xa0;</mml:mi>
<mml:mi mathvariant="bold">and&#xa0;</mml:mi>
<mml:mo>&#x2200;</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;e</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">E&#xa0;</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>To examine the advantages of the proposed algorithm, let the multicast cost, the average delay of users and the congestion ratio be the simulation objects.</p>
<p>For each multicast tree <inline-formula id="inf31">
<mml:math id="m34">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> in time slot <italic>t</italic>, the multicast cost includes the tree link cost <inline-formula id="inf32">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the update cost <inline-formula id="inf33">
<mml:math id="m36">
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and the transition cost <inline-formula id="inf34">
<mml:math id="m37">
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, which are defined below.<disp-formula id="e4">
<mml:math id="m38">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:munder>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b5;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
<disp-formula id="e5">
<mml:math id="m39">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:munder>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
<disp-formula id="e6">
<mml:math id="m40">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:munder>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mi mathvariant="bold-italic">&#xa0;</mml:mi>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>The tree link cost <inline-formula id="inf35">
<mml:math id="m41">
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#xa0;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>denotes the whole size of multicast trees that combines their link lengths and packet duplications. The update cost <inline-formula id="inf36">
<mml:math id="m42">
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the cost of rerouting when some existing nodes and new nodes need to add new rules. The transition cost <inline-formula id="inf37">
<mml:math id="m43">
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the cost of storing the old and new rules in some existing nodes of multicast trees when the outgoing downstream paths of these nodes change. Then the total multicast cost is defined below.<disp-formula id="e7">
<mml:math id="m44">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:munder>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>where <inline-formula id="inf38">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf39">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the parameters to differentiate the importance of tree link cost, update cost and transition cost. The values of <inline-formula id="inf40">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf41">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be any number greater than or equal to 0 and they depend on the weight of the three costs according to the actual network. <inline-formula id="inf42">
<mml:math id="m49">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is the average of link lengths in the whole multicast systems.</p>
<p>Example 1. <xref ref-type="fig" rid="F3">Figure&#x20;3</xref> represents an example to explain the multicast cost in this paper with one source A and four destinations H1, H2, H3, and H4, where <inline-formula id="inf43">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and link lengths are specified beside each link. <xref ref-type="fig" rid="F3">Figure&#x20;3A</xref> shows that in time slot t, only H2 is there in the multicast group <italic>i</italic>, thus <inline-formula id="inf44">
<mml:math id="m51">
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="fig" rid="F3">Figure&#x20;3B</xref> shows that in time slot t&#x2b;1, H1, H3, and H4 join the multicast group. The node D is a new switch in the multicast tree. Since the outgoing downstream paths of node B, C have changed, they need to update the restoring rules. Therefore, <inline-formula id="inf45">
<mml:math id="m52">
<mml:mrow>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>6</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>7</mml:mn>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>28</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> (containing B, C, D), <inline-formula id="inf46">
<mml:math id="m53">
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> (containing B, C). The average of link distances in the multicast tree is 4, then the total multicast cost in time slot t&#x2b;1 is <inline-formula id="inf47">
<mml:math id="m54">
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>28</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>48</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Example of a multicast tree in two adjacent time slots. <bold>(A)</bold> the multicast tree in time slot t. <bold>(B)</bold> the multicast tree in time slot t&#x2b;1.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g003.tif"/>
</fig>
<p>The events of the members joining and leaving the multicast group are Poisson processes. Let <inline-formula id="inf48">
<mml:math id="m55">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf49">
<mml:math id="m56">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denote the number of users who send reports to join or leave the multicast group in the interval <inline-formula id="inf50">
<mml:math id="m57">
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. Since the delay in content acquisition has an impact on the routing path selection and congestion ratio calculation, the queuing theory is used to evaluate the average waiting time of users. The input and output node processes traffic in one direction and according to the Markov model, their previous statuses are not dependent. The service process of base stations is abstracted as an M/M/1 queuing system (<xref ref-type="bibr" rid="B1">Leila et&#x20;al., 2011</xref>). According to the queuing system model, the average arrival rate in the interval <inline-formula id="inf51">
<mml:math id="m58">
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is calculated as follows.<disp-formula id="e8">
<mml:math id="m59">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>The service time of the RP switch follows an exponential distribution and let the average service time be <inline-formula id="inf52">
<mml:math id="m60">
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>. Since the arrival rate <inline-formula id="inf53">
<mml:math id="m61">
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
</mml:math>
</inline-formula> and the service rate <inline-formula id="inf54">
<mml:math id="m62">
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
</mml:math>
</inline-formula> are constants at any moment in the queuing system, they are defined as follows.<disp-formula id="e9">
<mml:math id="m63">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
<disp-formula id="e10">
<mml:math id="m64">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Then the average queue waiting time for users is<disp-formula id="e11">
<mml:math id="m65">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>Finally, the average delay of users in the whole multicast system is<disp-formula id="e12">
<mml:math id="m66">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>where <inline-formula id="inf55">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the average propagation delay in the whole network.</p>
<p>The bandwidth occupancy ratio <inline-formula id="inf56">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of node <inline-formula id="inf57">
<mml:math id="m69">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> is defined as the ratio of current bandwidth usage to the bandwidth capacity of the node <inline-formula id="inf58">
<mml:math id="m70">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula>.<disp-formula id="e13">
<mml:math id="m71">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>where <italic>n</italic> denotes the number of multicast trees containing node <inline-formula id="inf59">
<mml:math id="m72">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula>. Then the congestion ratio <inline-formula id="inf60">
<mml:math id="m73">
<mml:mi mathvariant="bold-italic">&#x3b7;</mml:mi>
</mml:math>
</inline-formula> is defined as the percentage of nodes with a bandwidth occupancy ratio above <inline-formula id="inf61">
<mml:math id="m74">
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:math>
</inline-formula> among all nodes. <inline-formula id="inf62">
<mml:math id="m75">
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:math>
</inline-formula> is the parameter to determine the congestion state of node <inline-formula id="inf63">
<mml:math id="m76">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> according to <inline-formula id="inf64">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The definition is as below, where <inline-formula id="inf65">
<mml:math id="m78">
<mml:mrow>
<mml:mi mathvariant="bold-italic">num</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the number of all nodes in the whole system.<disp-formula id="e14">
<mml:math id="m79">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b7;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">num</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
<disp-formula id="e15">
<mml:math id="m80">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;&#xa0;&#xa0;&#xa0;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">&#xa0;&#xa0;&#xa0;&#xa0;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>Given a network topology <inline-formula id="inf66">
<mml:math id="m81">
<mml:mrow>
<mml:mi mathvariant="bold-italic">G</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the node constraint <inline-formula id="inf67">
<mml:math id="m82">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and the link constraint <inline-formula id="inf68">
<mml:math id="m83">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the streaming rate <inline-formula id="inf69">
<mml:math id="m84">
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> of multicast source <inline-formula id="inf70">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the parameters <inline-formula id="inf71">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf72">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the time interval <inline-formula id="inf73">
<mml:math id="m88">
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, the number of users joining multicast groups <inline-formula id="inf74">
<mml:math id="m89">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and the number of users leaving multicast groups <inline-formula id="inf75">
<mml:math id="m90">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the average service time of switches <inline-formula id="inf76">
<mml:math id="m91">
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>, we aim to 1) build a dynamic multicast system with low latency for satellite-terrestrial hybrid networks, 2) minimize the multicast cost by balancing the rerouting frequency of satellite and terrestrial networks, and 3) decrease the congestion ratio by using bandwidth sensitive adaptive routing calculations.</p>
</sec>
</sec>
<sec id="s4">
<title>Two-Layered Shared Tree Multicast Routing Algorithm</title>
<p>To solve the problem, we propose a two-layered shared tree multicast (TSTM) routing algorithm, which includes three parts: dynamic shared tree building, cost-aware rerouting, and bandwidth occupancy-based congestion control. First, in each time slot, we build the whole dynamic shared trees according to the multicast groups. Then when the handover of the satellites connected to the terrestrial network occurs, the cost-aware rerouting algorithm is adopted to determine the routing method. Finally, the bandwidth occupancy-based congestion control algorithm is used to reduce the network congestion&#x20;ratio.</p>
<sec id="s4-1">
<title>Dynamic Shared Tree Building</title>
<p>Since PIM-SM protocol can effectively reduce the routing states and has stronger scalability, the multicast trees are initially constructed based on PIM-SM protocol. Constructing a multicast tree first requires to determine the location of the Rendezvous Point (RP), and the RP selection problem is an NPC problem that requires a heuristic algorithm. The previously proposed methods are broadly classified into two directions: one is to make a selection in a given finite set of candidates, such as LAMA, and the other is to search the optimal solution using the greedy algorithm. In order to optimize the multicast delay, our algorithm uses the idea of the Tabu search (<xref ref-type="bibr" rid="B16">Prajapati et&#x20;al., 2020</xref>) for selection of RPs, and the simulation is compared with the LAMA algorithm&#x2019;s. The steps to calculate the RP are as follows.<list list-type="simple">
<list-item>
<p>1) Set a forbidden table <italic>
<bold>H</bold>
</italic> to store the local optimal RP-selected solutions. Randomly select an initial node as <inline-formula id="inf77">
<mml:math id="m92">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and let <inline-formula id="inf78">
<mml:math id="m93">
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denote the evaluation value of the node, which is the sum of the distance from multicast source <inline-formula id="inf79">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf80">
<mml:math id="m95">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and the distance from <inline-formula id="inf81">
<mml:math id="m96">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to each other user node <inline-formula id="inf82">
<mml:math id="m97">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> in multicast group <inline-formula id="inf83">
<mml:math id="m98">
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:math>
</inline-formula>. <inline-formula id="inf84">
<mml:math id="m99">
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is defined as <inline-formula id="inf85">
<mml:math id="m100">
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:munder>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#xa0;&#xa0;</mml:mi>
<mml:mo>&#x2200;</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Set the maximum number of iterations&#x20;<italic>
<bold>N</bold>
</italic>.</p>
</list-item>
<list-item>
<p>2) The neighbouring nodes that <inline-formula id="inf86">
<mml:math id="m101">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> can communicate directly with are taken as the initial candidate set <inline-formula id="inf87">
<mml:math id="m102">
<mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. The final candidate set <inline-formula id="inf88">
<mml:math id="m103">
<mml:mrow>
<mml:mi mathvariant="bold-italic">Can</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi mathvariant="bold-italic">N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is <inline-formula id="inf89">
<mml:math id="m104">
<mml:mrow>
<mml:mi mathvariant="bold-italic">N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> after removing the solutions in the Tabu table <italic>
<bold>H</bold>
</italic>. And let <inline-formula id="inf90">
<mml:math id="m105">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnext</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>denote the optimal solution which has the smallest value in <inline-formula id="inf91">
<mml:math id="m106">
<mml:mrow>
<mml:mi mathvariant="bold-italic">Can</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi mathvariant="bold-italic">N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>3) Let <inline-formula id="inf92">
<mml:math id="m107">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">xnext</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. If <inline-formula id="inf93">
<mml:math id="m108">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>satisfies the limitation formulations, add both <inline-formula id="inf94">
<mml:math id="m109">
<mml:mrow>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>and <inline-formula id="inf95">
<mml:math id="m110">
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">xnow</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> into the forbidden table <italic>
<bold>H</bold>
</italic> with increasing the number of iterations by&#x20;one.</p>
</list-item>
<list-item>
<p>4) If <italic>
<bold>N</bold>
</italic> reaches the maximum number of iterations, go to step 5, otherwise go to step&#x20;2.</p>
</list-item>
<list-item>
<p>5) The solution with the lowest evaluation value in the forbidden table <italic>
<bold>H</bold>
</italic> is selected as the final RP selection solution.</p>
</list-item>
</list>
</p>
<p>In order to optimize the rerouting strategies suitable for both satellite and terrestrial networks, a two-layered shared tree structure is used to determine RPs and construct shared trees in both satellite and terrestrial networks. Firstly, at the beginning of each time slot, we set the connection status of the whole network links and choose the satellite connected to the terrestrial networks through the longest visual time criterion based on terrestrial macro base stations. In the remainder of this paper, we use the terminology Feed to denote the satellite connected to the terrestrial network. Then we set that feed as the multicast destination node of the satellite network to calculate the satellite RP. And Dijkstra&#x2019;s algorithm is used to establish the shortest paths from the satellite multicast sources to the RP node, as well as the shortest path from the RP to that feed, thus the multicast tree of the satellite network is constructed. In the terrestrial network, the feed is used as the source node to determine the RP node of the terrestrial network. Similar as the satellite network, the Dijkstra algorithm is used to construct the multicast tree from the source node to all multicast group&#x20;users.</p>
<p>With multicast users joining or leaving multicast groups dynamically, in order to improve the multicast quality and relieve the centralized pressure of RP nodes, when the RP of a multicast group reaches the node capacity limit, the new users will become a new multicast group. In other words, when a new user requests the multicast content, the multicast group is chosen based on its request content in the first. Then at the time slot of joining, determine whether the terrestrial RP of the multicast group has reached the capacity limit, if not, the user communicates with the terrestrial RP and establishes shortest paths to it, and if it has reached the node capacity limit, the multicast group recalculates the multicast tree to ensure the smallest total delay of the multicast group, and the multicast group will not accept the new user. The user will become a new multicast group, then a new terrestrial RP node is calculated based on the new multicast group to build a new multicast&#x20;tree.</p>
</sec>
<sec id="s4-2">
<title>Cost-Aware Rerouting</title>
<p>In the previous research, the routing path of the new user joining or leaving a multicast group has two solutions: one is to recalculate routes based on the new topology, which is defined as full-rerouting, and the other is to directly add branches, pruning or local reconfiguration of the multicast tree, which is defined as partial-rerouting. Compared to the complexity and high dynamics of terrestrial networks, the downlink of satellite networks is more fixed. However, the satellites have higher link latency and fewer onboard resources, which can lead to a great waste of resources if the satellite network and terrestrial network are always allowed to reroute at the same time when a large number of users join or leave multicast dynamically.</p>
<p>Therefore, we propose a cost-aware rerouting algorithm. After constructing the multicast tree according to the previous algorithm, when the handover of the Feed occurs, the total multicast cost <inline-formula id="inf96">
<mml:math id="m111">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of full-rerouting system and the total multicast cost <inline-formula id="inf97">
<mml:math id="m112">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of partial-rerouting system are calculated according to the formulations in 3.3. Full-rerouting refers to reconstructing multicast trees of the satellite network with the new Feed as the destination node, while partial-rerouting refers to the new Feed directly establishing a link with the previous Feed without changing the basic structure of the original multicast trees. If <inline-formula id="inf98">
<mml:math id="m113">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, partial-rerouting is selected, and vice versa, full-rerouting is selected.</p>
</sec>
<sec id="s4-3">
<title>Bandwidth Occupancy-Based Congestion Control</title>
<p>In the satellite-terrestrial hybrid system, due to the wide coverage of satellites, the uplinks and downlinks connecting satellite networks and terrestrial networks are more fixed for a period of time. Meanwhile, some nodes connected to these fixed links are usually at the central part of multicast transmission paths, thus many multicast paths contain these nodes, which we call hot nodes. Due to the long delay and high packet loss ratio of satellite links, when congestion occurs in these hot nodes, it will reduce the transmission quality of the multicast system much more seriously than other nodes. Therefore, in this paper, a load factor is introduced to weight the real-time bandwidth occupancy of the network topology links to achieve joint optimization of delay and congestion ratio during routing calculation. Bandwidth occupancy ratio is the ratio of the node&#x2019;s occupied bandwidth to the bandwidth capacity. The load factor is <inline-formula id="inf99">
<mml:math id="m114">
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
</mml:math>
</inline-formula>. For each network node <inline-formula id="inf100">
<mml:math id="m115">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula>, the weight of its neighbor node <italic>i</italic> as the next-hop in route paths is defined as<disp-formula id="e16">
<mml:math id="m116">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">2</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">2</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">2</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">2</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
<disp-formula id="e17">
<mml:math id="m117">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mi mathvariant="normal">&#x3f5;</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mi mathvariant="normal">&#x3f5;</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>where <inline-formula id="inf101">
<mml:math id="m118">
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes the set of neighboring nodes of node <inline-formula id="inf102">
<mml:math id="m119">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula>, <inline-formula id="inf103">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the bandwidth occupancy ratio of the neighboring node <italic>
<bold>i</bold>
</italic>, and <inline-formula id="inf104">
<mml:math id="m121">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the distance from node <inline-formula id="inf105">
<mml:math id="m122">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> to its neighbor node <italic>
<bold>i</bold>
</italic>. The factor <italic>
<bold>&#x3b2;</bold>
</italic> is 0 means only considering the node bandwidth occupancy effect, and <italic>
<bold>&#x3b2;</bold>
</italic> is 1 means only considering the link distance effect.</p>
<p>Then in order to find the optimal solution for the load factor <italic>
<bold>&#x3b2;</bold>
</italic>, the objective function in time slot <italic>t</italic> is set as<disp-formula id="e18">
<mml:math id="m123">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="normal">&#x3f5;</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b7;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>where <inline-formula id="inf106">
<mml:math id="m124">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b7;</mml:mi>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the congestion ratio of node <inline-formula id="inf107">
<mml:math id="m125">
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:math>
</inline-formula> and <inline-formula id="inf108">
<mml:math id="m126">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="true">&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is the average delay of users in time slot <italic>
<bold>t</bold>
</italic>. The optimization problem turns to find the value of <italic>
<bold>&#x3b2;</bold>
</italic> that makes the objective function minimum. Since it is a one-dimensional problem, the one-dimensional search algorithm based on golden partition method is proposed in this paper. The steps are as follows.<list list-type="simple">
<list-item>
<p>1) Given the initial interval <inline-formula id="inf109">
<mml:math id="m127">
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, the accuracy requirement is <inline-formula id="inf110">
<mml:math id="m128">
<mml:mrow>
<mml:mi mathvariant="bold-italic">tol&#xa0;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">tol</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the golden mean coefficient <inline-formula id="inf111">
<mml:math id="m129">
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:math>
</inline-formula>, and the number of iterations <italic>k</italic>. (<inline-formula id="inf112">
<mml:math id="m130">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the value of <inline-formula id="inf113">
<mml:math id="m131">
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:math>
</inline-formula> at the <inline-formula id="inf114">
<mml:math id="m132">
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:math>
</inline-formula>th iteration)</p>
</list-item>
<list-item>
<p>2) Set the initial parameters&#x20;as</p>
</list-item>
</list>
<disp-formula id="e19">
<mml:math id="m133">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">Wc</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>which denote the objective function values obtained from the simulation when <italic>
<bold>&#x3b2;</bold>
</italic> is <inline-formula id="inf115">
<mml:math id="m134">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf116">
<mml:math id="m135">
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, respectively.<list list-type="simple">
<list-item>
<p>3) If <inline-formula id="inf117">
<mml:math id="m136">
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mi mathvariant="bold-italic">tol</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, go to step (4), otherwise stop searching and the final solution is <inline-formula id="inf118">
<mml:math id="m137">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>4) If <inline-formula id="inf119">
<mml:math id="m138">
<mml:mrow>
<mml:mi mathvariant="bold-italic">Wc</mml:mi>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">Wd</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, go to step (5), otherwise go to step&#x20;(6).</p>
</list-item>
<list-item>
<p>5) Calculate as follows, then go to step&#x20;(7).</p>
</list-item>
</list>
<disp-formula id="e20">
<mml:math id="m139">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>W</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
<list list-type="simple">
<list-item>
<p>6) Calculate as follows, then go to step&#x20;(7).</p>
</list-item>
</list>
<disp-formula id="e21">
<mml:math id="m140">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
<list list-type="simple">
<list-item>
<p>7) Let <inline-formula id="inf120">
<mml:math id="m141">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, return to step&#x20;(3).</p>
</list-item>
</list>
</p>
</sec>
</sec>
<sec id="s5">
<title>Performance Evaluation</title>
<sec id="s5-1">
<title>Emulation Environment</title>
<p>The stochastic model of terrestrial nodes&#x2019; location distribution is based on the Poisson point process (PPP). In this paper, the terrestrial network contains 2 macro base stations, and the coverage radius of macro base stations is 1000&#xa0;m. Each macro base station has Poisson distribution (the mean value is 150) of microcell base stations within its coverage area, and the coverage area of a microcell base station is 100&#xa0;m. The distance between the two macro base stations is 1500&#xa0;m. The events of the members joining and leaving the multicast group in time interval <inline-formula id="inf121">
<mml:math id="m142">
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are Poisson processes with the mean value of 40 and 5, respectively. Set the node constraints <inline-formula id="inf122">
<mml:math id="m143">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf123">
<mml:math id="m144">
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> , the streaming rate <inline-formula id="inf124">
<mml:math id="m145">
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mi>M</mml:mi>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> for all multicast source, the parameters <inline-formula id="inf125">
<mml:math id="m146">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf126">
<mml:math id="m147">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, the time interval <inline-formula id="inf127">
<mml:math id="m148">
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf128">
<mml:math id="m149">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>40</mml:mn>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. the number of users joining multicast groups <inline-formula id="inf129">
<mml:math id="m150">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>44</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and the number of users leaving multicast groups <inline-formula id="inf130">
<mml:math id="m151">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, the average service time of switches <inline-formula id="inf131">
<mml:math id="m152">
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mi>m</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. For the newly joined multicast group members, their geographic locations are randomly generated. The terrestrial environment diagrams are as <xref ref-type="fig" rid="F4">Figure&#x20;4</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>The terrestrial environment diagrams.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g004.tif"/>
</fig>
<p>Consider three connectable states for terrestrial base stations and users: 1) if the mobile user is not in the coverage area of any microcell base station, the mobile user can be directly connected to the nearest macro base station, 2) the macro base station can be connected to micro base stations within 100&#xa0;m from it. 3) Each microcell base station is connected to its nearest 8 microcell base stations to form a mesh network.</p>
<p>The users are grouped according to the multicast content they request, and the probability of requesting the <inline-formula id="inf132">
<mml:math id="m153">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">th</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> popular content among <inline-formula id="inf133">
<mml:math id="m154">
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:math>
</inline-formula> contents is defined as <inline-formula id="inf134">
<mml:math id="m155">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:msubsup>
<mml:msup>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> according to the Zipf distribution, where <inline-formula id="inf135">
<mml:math id="m156">
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
</mml:math>
</inline-formula> is the bias parameter. In this paper, set the bias parameter to 0.8 and the number of multicast content types to 4, which are listed as A, B, C, D in order of popularity from high to low. Then their probabilities of being requested are 0.431, 0.248, 0.179, and 0.142, respectively.</p>
<p>In the bandwidth occupancy-based congestion control algorithm, considering the value of <inline-formula id="inf136">
<mml:math id="m157">
<mml:mi>&#x3b2;</mml:mi>
</mml:math>
</inline-formula> is between 0 and 1, set the initial simulation value <inline-formula id="inf137">
<mml:math id="m158">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf138">
<mml:math id="m159">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.01</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.618</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>In our experiments, we compare our approach based on LAMA (LAMA-TSTM), our approach based on Tabu search (Tabu-TSTM), LAMA, and the original PIM-SM based on Tabu search. The multicast cost (containing the tree link cost, the update cost and the transition cost), the average delay, the total length of multicast trees, and the congestion ratio are adopted as performance metrics.</p>
</sec>
</sec>
<sec sec-type="results|discussion" id="s6">
<title>Results and Discussion</title>
<p>Firstly, we investigate the multicast cost generated by several different algorithms. As the simulation time increases, different multicast users joining or leaving dynamically. <xref ref-type="fig" rid="F5">Figure&#x20;5</xref> shows the results of the link cost generated by the multicast system with the number of multicast users. It can be seen that LAMA-TSTM can effectively reduce the link cost, while since the Tabu search algorithm simply finds the distance optimal solution, the link cost of Tabu-TSTM increases slightly than Tabu. The results indicate that the proposed algorithm TSTM can reduce the resource consumption of tree building and the link cost generated by link distance. <xref ref-type="fig" rid="F6">Figure&#x20;6</xref> shows the results of the transition cost generated by the multicast system with the number of multicast users. It can be seen that both LAMA-TSTM and Tabu-TSTM can reduce the transition cost than the original algorithms, which indicates that the transition cost of storing old and new rules in switches during the multicast tree topology changes can be reduced. <xref ref-type="fig" rid="F7">Figure&#x20;7</xref> shows the results of the update cost generated by the multicast system with the number of multicast users, and it can be seen that the update cost of adding new rules in switches generated by rerouting can be reduced after improving both LAMA and Tabu with the proposed algorithm&#x20;TSTM.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>The link cost of multicast trees on different algorithms.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g005.tif"/>
</fig>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>The transition cost of multicast trees on different algorithms.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>The update cost of multicast trees on different algorithms.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g007.tif"/>
</fig>
<p>In addition, we also compare the average delay of users from requesting the multicast information to accepting the multicast information and the total length of the multicast tree under several algorithms, where multicast tree length refers to the sum of the number of individual multicast tree nodes in the multicast system, and the simulation results are shown in <xref ref-type="fig" rid="F8">Figures 8</xref>, <xref ref-type="fig" rid="F9">9</xref>. <xref ref-type="fig" rid="F8">Figure&#x20;8</xref> presents the same pattern with <xref ref-type="fig" rid="F6">Figure&#x20;6</xref>, which shows that TSTM has lower user delay than the original LAMA algorithm, but the shortest paths calculated by direct Tabu search get the smallest delay. However, using the Tabu search algorithm directly will bring the increase of multicast costs, which can be referred to in <xref ref-type="fig" rid="F5">Figures 5</xref>, <xref ref-type="fig" rid="F7">7</xref>, <xref ref-type="fig" rid="F9">9</xref> shows that the total length of multicast trees in TSTM is longer than the original LAMA and Tabu search algorithm, which indicates that TSTM reduces the rerouting overheads of multicast tree at the cost of increasing the size of multicast&#x20;trees.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>The average delay of multicast trees on different algorithms.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g008.tif"/>
</fig>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>The total length of multicast trees on different algorithms.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g009.tif"/>
</fig>
<p>In the third phase of the TSTM, the bandwidth occupancy-based congestion control algorithm based on load factor has been implemented. The <xref ref-type="fig" rid="F10">Figure&#x20;10</xref> shows the probability distribution of the load factor &#x3b2;. It can be seen that due to the randomness of the simulation system, the values of &#x3b2; are distributed between 0 and 1, but the probability of taking values between 0.37 and 0.38 is obviously higher than other values. In addition, since &#x3b2; taking 0 and &#x3b2; taking 1 represent considering only bandwidth occupancy or only path distance, which are not of great practical significance, these two extreme values are removed from the simulation. Thus, in the system proposed in this paper, using 0.37&#x2013;0.38 as the &#x3b2; value can achieve the best congestion control. The <xref ref-type="fig" rid="F11">Figure&#x20;11</xref> shows the results of the system congestion ratio with different load factor &#x3b2;. It can be seen that when &#x3b2; takes 0.3869 or 0.6220 for congestion control, the overall congestion rate of the system is lower than when &#x3b2; takes 0 (i.e.,&#x20;no congestion control), and the congestion rate reduction is more prominent when the number of multicast users increases as the simulation time increases. The results also indicate that since &#x3b2; taking 0.3869 is the better coefficient with higher probability, a more comprehensive congestion rate reduction can be obtained than when &#x3b2; takes 0.6220.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>The probability distribution of the load factor &#x3b2;.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g010.tif"/>
</fig>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>The congestion ratio of the system with different load factor &#x3b2;.</p>
</caption>
<graphic xlink:href="frcmn-02-731992-g011.tif"/>
</fig>
</sec>
<sec sec-type="conclusion" id="s7">
<title>Conclusion</title>
<p>In this paper, we proposed a two-layered shared tree multicast (TSTM) routing algorithm to achieve efficient dynamic multicast group management, address the trade-off between the bandwidth consumption and rerouting overheads, and alleviate the hot node congestion problem. In the proposed approach, there are three phases: dynamic shared tree building, cost-aware rerouting, and bandwidth occupancy-based congestion control. Firstly, the dynamic satellite-terrestrial multicast system is constructed by the dynamic shared tree building algorithm. Then the cost-aware rerouting algorithm is used to implement rerouting balance control. Finally, in the bandwidth occupancy-based congestion control algorithm, a load factor is introduced to reflect on the global network topology bandwidth utilization in routing calculations to reduce the congestion ratio. The emulation results show TSTM can reduce the multicast cost, the average delay, and the congestion ratio to some extent compared with LAMA and Tabu search algorithm.</p>
</sec>
</body>
<back>
<sec id="s8">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s9">
<title>Author Contributions</title>
<p>There are categories that the authors contributed to respectively. They are as follows: Guarantor of integrity of entire study: JX and ZX. Study concepts: ZX. Study design: JX and ZX. Literature research and experimental studies: JX. Data analysis: JX and ZX. Manuscript preparation and editing: JX. Manuscript revision and review: JX, ZX, and ZD.</p>
</sec>
<sec id="s10">
<title>Funding</title>
<p>This work is fully supported by The National Natural Science Foundation of China (91638301, 91738301).</p>
</sec>
<sec sec-type="COI-statement" id="s11">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s12">
<title>Publisher&#x2019;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Leila</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Mohammad</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Keshavarzi</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Measurements and Comparative of M/M/1 and M/D/1 Queuing Models of Resource Management in Satellite Systems</article-title>. <source>Jcit</source> <volume>6</volume> (<issue>5</issue>), <fpage>99</fpage>&#x2013;<lpage>107</lpage>. <comment>May 2011</comment>. <pub-id pub-id-type="doi">10.4156/jcit.vol6.issue5.11</pub-id> </citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Andrews</surname>
<given-names>J.&#x20;G.</given-names>
</name>
<name>
<surname>Buzzi</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Choi</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Hanly</surname>
<given-names>S. V.</given-names>
</name>
<name>
<surname>Lozano</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Soong</surname>
<given-names>A. C. K.</given-names>
</name>
<etal/>
</person-group> (<year>2014</year>). <article-title>What Will 5G Be</article-title>. <source>IEEE J.&#x20;Select. Areas Commun.</source> <volume>32</volume> (<issue>6</issue>), <fpage>1065</fpage>&#x2013;<lpage>1082</lpage>. <pub-id pub-id-type="doi">10.1109/JSAC.2014.2328098</pub-id> </citation>
</ref>
<ref id="B3">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Deering</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Waitsman</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Partridge</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Estrin</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Farinacci</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Jacobson</surname>
<given-names>V.</given-names>
</name>
<etal/>
</person-group> (<year>1999</year>). <source>Protocol Independent Multicast Version 2 Dense Mode Specification</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://www.ietf.org/archive/id/draft-ietf-pim-v2-dm-03.txt">https://www.ietf.org/archive/id/draft-ietf-pim-v2-dm-03.txt</ext-link>
</comment> </citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ekici</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Akyildiz</surname>
<given-names>I. F.</given-names>
</name>
<name>
<surname>Bender</surname>
<given-names>M. D.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>A Distributed Routing Algorithm for Datagram Traffic in LEO Satellite Networks</article-title>. <source>Ieee/acm Trans. Networking</source> <volume>9</volume> (<issue>2</issue>), <fpage>137</fpage>&#x2013;<lpage>147</lpage>. <pub-id pub-id-type="doi">10.1109/90.917071</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ekici</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Akyildiz</surname>
<given-names>I. F.</given-names>
</name>
<name>
<surname>Bender</surname>
<given-names>M. D.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>A Multicast Routing Algorithm for LEO Satellite IP Networks</article-title>. <source>Ieee/acm Trans. Networking</source> <volume>10</volume> (<issue>2</issue>), <fpage>183</fpage>&#x2013;<lpage>192</lpage>. <pub-id pub-id-type="doi">10.1109/90.993300</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Fenner</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Handley</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Holbrook</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kouvelas</surname>
<given-names>I.</given-names>
</name>
</person-group> (<year>2016</year>). <source>Protocol Independent Multicast&#x2014;Sparse Mode (PIM-SM): Protocol Specification (Revised)</source>. <publisher-loc>Fremont, CA, USA</publisher-loc>: <publisher-name>Internet Eng. Task Force</publisher-name>. <comment>RFC 7761Mar. 2016</comment>. </citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Filali</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Dabbous</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Kamoun</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2001</year>). &#x201c;<article-title>Efficient Planning of Satellite-Terrestrial Hybrid Networks for Multicast Applications</article-title>,&#x201d; in <conf-name>IEEE International Conference on Communications</conf-name>, <volume>1</volume>, <fpage>216</fpage>&#x2013;<lpage>223</lpage>. <pub-id pub-id-type="doi">10.1109/ICC.2001.936306</pub-id> </citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Tong</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Kausar</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Shen</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Congestion-Aware Multicast Plug-In for an SDN Network Operating System</article-title>. <source>Computer Networks</source> <volume>125</volume>, <fpage>53</fpage>&#x2013;<lpage>63</lpage>. <pub-id pub-id-type="doi">10.1016/j.comnet.2017.04.050</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>L.-H.</given-names>
</name>
<name>
<surname>Hsu</surname>
<given-names>H.-C.</given-names>
</name>
<name>
<surname>Shen</surname>
<given-names>S.-H.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>D.-N.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>W.-T.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Multicast Traffic Engineering for Software-Defined Networks</article-title>,&#x201d; in <conf-name>IEEE INFOCOM 2016 - The 35th Annual IEEE International Conference on Computer Communications</conf-name>. <pub-id pub-id-type="doi">10.1109/INFOCOM.2016.7524383</pub-id> </citation>
</ref>
<ref id="B10">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>L.-H.</given-names>
</name>
<name>
<surname>Hung</surname>
<given-names>H.-J.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>C.-C.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>D.-N.</given-names>
</name>
</person-group> (<year>2014</year>). <source>Scalable and Bandwidth-Efficient Multicast for Software-Defined Networks.</source>in <conf-name>Proc. IEEE Glob. Commun. Conf</conf-name>, <conf-loc>Austin, TX, USA</conf-loc> (<publisher-loc>Austin, TX</publisher-loc>: <publisher-name>GLOBECOM</publisher-name>), <fpage>1890</fpage>&#x2013;<lpage>1896</lpage>. <comment>Dec. 2014</comment>. <pub-id pub-id-type="doi">10.1109/GLOCOM.2014.7037084</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kuo</surname>
<given-names>J.-J.</given-names>
</name>
<name>
<surname>Chiang</surname>
<given-names>S.-H.</given-names>
</name>
<name>
<surname>Shen</surname>
<given-names>S.-H.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>D.-N.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>W.-T.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Dynamic Multicast Traffic Engineering with Efficient Rerouting for Software-Defined Networks</article-title>,&#x201d; in <conf-name>IEEE INFOCOM 2019 - IEEE Conference on Computer Communications</conf-name>. <pub-id pub-id-type="doi">10.1109/INFOCOM.2019.8737563</pub-id> </citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lianzhen Cheng</surname>
<given-names>Lianzhen.</given-names>
</name>
<name>
<surname>Jun Zhang</surname>
<given-names>Jun.</given-names>
</name>
<name>
<surname>Kai Liu</surname>
<given-names>Kai.</given-names>
</name>
<name>
<surname>Xuegui Song</surname>
<given-names>Xugui.</given-names>
</name>
</person-group> (<year>2005</year>). &#x201c;<article-title>A Multiple-Cores Shared-Tree Multicast Routing Algorithm for LEO Satellite IP Networks</article-title>,&#x201d; in <conf-name>2005 IEEE International Symposium on Microwave, Antenna, Propagation and EMC Technologies for Wireless Communications</conf-name>. <pub-id pub-id-type="doi">10.1109/MAPE.2005.1618166</pub-id> </citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>Y.-D.</given-names>
</name>
<name>
<surname>Lai</surname>
<given-names>Y.-C.</given-names>
</name>
<name>
<surname>Teng</surname>
<given-names>H.-Y.</given-names>
</name>
<name>
<surname>Liao</surname>
<given-names>C.-C.</given-names>
</name>
<name>
<surname>Kao</surname>
<given-names>Y.-C.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Scalable Multicasting with Multiple Shared Trees in Software Defined Networking</article-title>. <source>J.&#x20;Netw. Comp. Appl.</source> <volume>78</volume>, <fpage>125</fpage>&#x2013;<lpage>133</lpage>. <comment>Jan. 2017</comment>. <pub-id pub-id-type="doi">10.1016/j.jnca.2016.11.014</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>McKeown</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Anderson</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Balakrishnan</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Parulkar</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Peterson</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Rexford</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2008</year>). <article-title>OpenFlow</article-title>. <source>SIGCOMM Comput. Commun. Rev.</source> <volume>38</volume>, <fpage>69</fpage>&#x2013;<lpage>74</lpage>. <pub-id pub-id-type="doi">10.1145/1355734.1355746</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Moy</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>1994</year>). <source>Multicast Extensions to OSPF. Internet Eng. Task Force</source>, <volume>1584</volume>. <publisher-loc>Fremont, CA, USA</publisher-loc>: <publisher-name>RFC</publisher-name>. <pub-id pub-id-type="doi">10.1063/1.4822548</pub-id>
<comment>Mar. 1994</comment> </citation>
</ref>
<ref id="B16">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Prajapati</surname>
<given-names>V. K.</given-names>
</name>
<name>
<surname>Jain</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chouhan</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Tabu Search Algorithm (TSA): A Comprehensive Survey</article-title>,&#x201d; in <conf-name>2020 3rd International Conference on Emerging Technologies in Computer Engineering: Machine Learning and Internet of Things</conf-name> (<publisher-loc>Jaipur, India</publisher-loc>: <publisher-name>ICETCE</publisher-name>). <pub-id pub-id-type="doi">10.1109/ICETCE48199.2020.9091743</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Robinson</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Milosavljevic</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Kourtessis</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Fisher</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Stafford</surname>
<given-names>G. P.</given-names>
</name>
<name>
<surname>Treiber</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Burrell</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Senior</surname>
<given-names>J.&#x20;M.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>QoE Based Holistic Traffic Engineering in SDN Enabled Heterogeneous Transport Networks</article-title>,&#x201d; in <conf-name>International Conference on Transparent Optical Networks</conf-name>, <fpage>1</fpage>&#x2013;<lpage>4</lpage>. <pub-id pub-id-type="doi">10.1109/ICTON.2017.8024878</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Saha</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Dhillon</surname>
<given-names>H. S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Load on the Typical Poisson Voronoi Cell with Clustered User Distribution</article-title>. <source>IEEE Wireless Commun. Lett.</source> <volume>9</volume> (<issue>9</issue>), <fpage>1361</fpage>&#x2013;<lpage>1365</lpage>. <comment>Sept. 2020</comment>. <pub-id pub-id-type="doi">10.1109/LWC.2020.2990424</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Waitzman</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Partridge</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Deering</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>1988</year>). <source>Distance Vector Multicast Routing Protocol</source>. <publisher-loc>Fremont, CA, USA</publisher-loc>: <publisher-name>Internet Eng. Task Force</publisher-name>, <fpage>1075</fpage>. <comment>Nov. 1988</comment>. <pub-id pub-id-type="doi">10.1007/978-3-540-92673-3_4</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xu Hui</surname>
<given-names>Hui.</given-names>
</name>
<name>
<surname>Huang Fei</surname>
<given-names>Fei.</given-names>
</name>
<name>
<surname>Wu Shi-Qi</surname>
<given-names>Wu.</given-names>
</name>
</person-group> (<year>2007</year>). &#x201c;<article-title>A Distributed QoS Multicast Routing Algorithm Based on Ant Algorithm for LEO Satellite Networks</article-title>,&#x201d; in <conf-name>nternational Conference on Communications, Circuits and Systems</conf-name>. <pub-id pub-id-type="doi">10.1109/ICCCAS.2007.6250716</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Cao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yi</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Resource Allocation in Software Defined Hybrid Satellite-Terrestrial Communication Networks toward 5G</article-title>,&#x201d; in <conf-name>Proceedings of 2018&#x20;6th IEEE International Conference on Network Infrastructure and Digital Content</conf-name> (<publisher-name>IC-NIDC 2018</publisher-name>), Guiyang, China <fpage>300</fpage>&#x2013;<lpage>303</lpage>. <pub-id pub-id-type="doi">10.1109/ICNIDC.2018.8525746</pub-id> </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Yi</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>Cost-Efficient and Scalable Multicast Tree in Software Defined Networking</article-title>,&#x201d; in <conf-name>Proc. Int. Conf. Algorithms Archit. Parallel Process.</conf-name>, <conf-loc>Zhangjiajie, China</conf-loc>, <fpage>592</fpage>&#x2013;<lpage>605</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-319-27122-4_41</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhu Tang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Baokang Zhao</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Wanrong Yu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zhenqian Feng</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Chunqing Wu</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Software Defined Satellite Networks: Benefits and Challenges</article-title>,&#x201d; in <conf-name>Proceedings - 2014 IEEE Computers, Communications and IT Applications Conference</conf-name>, <fpage>127</fpage>&#x2013;<lpage>132</lpage>. <pub-id pub-id-type="doi">10.1109/ComComAp.2014.7017183</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>