李博,王勁林,朱小勇,胡琳琳
(1.中國科學(xué)院聲學(xué)研究所國家網(wǎng)絡(luò)新媒體工程技術(shù)研究中心,北京 100190;2.中國科學(xué)院大學(xué),北京 100049)
大量以信息為中心的新型應(yīng)用受到歡迎,如視頻會議和在線直播等。由于需要從一個信息生產(chǎn)者到許多信息消費(fèi)者的高效通信,這些應(yīng)用更適合使用組播[1]。雖然基于共享樹的組播方法(如PIM-SM[2])相較于基于源樹的組播方法(如SSM[3])能夠有效地減少組播轉(zhuǎn)發(fā)狀態(tài)[4],但是仍存在一些問題[5-6],如Rendezvous Point(RP)的管理和選擇復(fù)雜、RP 負(fù)載較大、傳輸時延較高和流量匯聚等。Multi-Core Tree(MCT)[7]使用多個獨(dú)立的RP 來構(gòu)建多個共享樹,以提高容錯性并避免流量匯聚。但是MCT 中RP 的負(fù)載依然較大,而且需要源向所有RP 發(fā)送數(shù)據(jù)或者接受者加入所有RP對應(yīng)的組播樹,這會造成資源浪費(fèi)。
信息中心網(wǎng)絡(luò)(Information-Centric Networking,ICN)[8]通過解耦標(biāo)識和位置以解決現(xiàn)有IP 網(wǎng)絡(luò)存在的問題。相較于NDN[9]等,以MobilityFirst[10]為代表的ICN 方案通過將名字映射到定位符,從而可以兼容現(xiàn)有IP 網(wǎng)絡(luò)以實(shí)現(xiàn)增量部署。
基于此,文中提出了一種基于名字映射和解析系統(tǒng)(Name Mapping and Resolution System,NMRS)[12-14]的多RP 組播方法。NMRS 的使用不僅簡化了RP 的管理并實(shí)現(xiàn)負(fù)載均衡,而且維護(hù)了局部組播源信息。該方法為位于不同位置的局部組播源分別選擇較近的RP,并建立以該RP 為根的組播樹。相較于PIM-SM,文中所提的多RP 組播方法雖然增加了轉(zhuǎn)發(fā)狀態(tài),但減少了RP 負(fù)載、傳輸時延和流量匯聚。
圖1 展示了一個基于NMRS 的簡單組播系統(tǒng)。
圖1 一個基于NMRS的簡單組播系統(tǒng)
網(wǎng)絡(luò)中的所有元素都被視為實(shí)體,包括設(shè)備、內(nèi)容、服務(wù)等。為了解決IP 語義過載問題,每個實(shí)體被分配一個固定長度的、全局唯一的Entity ID(EID),以分離標(biāo)識符與定位符。該方法使用EID 作為標(biāo)識符,使用網(wǎng)絡(luò)地址(Network Address,NA)作為定位符。相較于分層名字,扁平化的名字在靈活性、分配和隱私性等方面具有一定的優(yōu)勢[11]??梢允褂肐P 地址作為NA 以兼容現(xiàn)有的IP 網(wǎng)絡(luò)。
該方法使用NMRS[12-14]維護(hù)EID 和NA 之間的映射并提供名字解析服務(wù)。NMRS 包括全局名字映射和解析系統(tǒng)(Global NMRS,GNMRS)與現(xiàn)場名字映射和解析系統(tǒng)(Local NMRS,LNMRS)。GNMRS 維護(hù)全球名字-位置對,保障內(nèi)容的可達(dá)性。LNMRS 維護(hù)本地名字-位置對,并為用戶提供現(xiàn)場服務(wù)。LNMRS可以根據(jù)時延等約束條件將網(wǎng)絡(luò)劃分為層次化的管理域(Administration Domain,AD),并在每個管理域中部署一個名字映射和解析節(jié)點(diǎn)(Name Mapping and Resolution Node,NMRN)。LNMRS 為由NMRN構(gòu)成的單層或多層結(jié)構(gòu),文中所提的多RP 組播系統(tǒng)使用單層LNMRS。用戶可通過交互接口訪問這兩個子系統(tǒng),從而獲得不同性能需求的名字注冊和解析服務(wù)。
該方法為每個組播組分配一個組EID,即GEID(Group EID)。GEID 能夠在整個網(wǎng)絡(luò)中唯一標(biāo)識該組播組。與組播IP 地址相比,全局唯一的GEID 具有更大的命名空間,可以支持更多的組播組,同時也省去了復(fù)雜的組播IP 地址管理和分配機(jī)制。由于網(wǎng)絡(luò)被劃分為不同的管理域,每個組播組中的源可能分布在不同的管理域中。該方法使用LNMRS 維護(hù)每個管理域中的局部組播源列表。對于每個組播組,該方法為不同管理域中的組播源分別分配一個RP并建立一個以該RP 為根的共享樹。GNMRS 維護(hù)每個組播組的GEID 和RP 列表之間的映射,接收者可以通過GNMRS 解析得到對應(yīng)的RP 列表,并分別加入每個共享樹。
RP 需要匯聚組播流、封裝-解封裝報文、響應(yīng)接收者的加入和離開請求等。但現(xiàn)有基于共享樹的組播方法通常僅選擇一臺或者有限的幾臺路由器作為RP。當(dāng)存在大量組播源和組播組時,RP 會面臨巨大的負(fù)載壓力而限制組播的擴(kuò)展性。
在所提組播方法中,網(wǎng)絡(luò)中的每個路由器都可以承擔(dān)匯聚功能并向用戶提供信息。因此該方法將網(wǎng)絡(luò)中的所有路由器都視為候選RP,并使用NMRS來管理候選RP 以實(shí)現(xiàn)候選RP 之間的動態(tài)負(fù)載均衡。該方法使用GNMRS 管理全局候選RP,使用LNMRS 管理局部候選RP。所有候選RP 的集合被分配一個EID,叫做組播服務(wù)EID,即MSEID(Multicast Service EID)。當(dāng)路由器啟動時,分別向GNMRS 和其所在管理域中的NMRN 注冊MSEID 和其NA 的映射。GNMRS 維護(hù)MSEID 和全局網(wǎng)絡(luò)中所有可用候選RP 之間的映射,每個NMRN 維護(hù)MSEID 和其所在管理域中的本地候選RP 之間的映射。
每個候選RP 被設(shè)置一個負(fù)載閾值,負(fù)載可以是路由器的CPU 負(fù)載、內(nèi)存負(fù)載、端口帶寬負(fù)載等。當(dāng)其負(fù)載小于負(fù)載閾值時,RP 可以正常工作,而不會影響其他業(yè)務(wù)和流量。當(dāng)某個RP 的負(fù)載達(dá)到閾值時,它向NMRN 和GNMRS注銷MSEID和其NA之間的映射,從而無需為新的組播組提供服務(wù)。當(dāng)路由器負(fù)載低于閾值時,可以向NMRS 和GNMRS注冊MSEID 和其NA 之間的映射關(guān)系,以重新成為候選RP。
該方法使用LNMRS 維護(hù)局部組播源信息。每個組播組被分配一個源EID,即SEID(Sources EID),組播源需要向其所在管理域的NMRN 注冊SEID 和其NA 之間的映射。每個NMRN 都維護(hù)SEID 和其所在管理域中的局部組播源列表之間的映射。當(dāng)組播源想要獲取RP 時,執(zhí)行以下步驟:
1)向NMRN 查詢GEID 對應(yīng)的RP;
2)若NMRN 沒有GEID 的相關(guān)信息,則向NMRN查詢其所在管理域的局部組播源列表和局部候選RP 列表;
3)若NMRN 返回的局部候選RP 列表為空,則向GNMRS 查詢?nèi)趾蜻xRP 列表;
4)計算每個候選RP 到其所在管理域中的所有組播源的距離之和;
5)選擇距離之和最小的候選RP 作為目的RP;
6)向NMRN 和GNMRS注冊GEID 和目的RP 之間的映射。
圖2 為RP 選擇機(jī)制示意圖。在GEID 標(biāo)識的組播組中,MS1、MS2、MS3 和MS4 是組播源。MS1 向名字映射和解析節(jié)點(diǎn)NMRN11 查詢GEID 對應(yīng)的RP。由于NMRN11 中沒有GEID 相關(guān)的信息,則MS1 向NMRN11 查詢得到局部組播源列表<MS1,MS2>和局部候選RP 列表<R1,…>,并選擇距離MS1 和MS2最近的節(jié)點(diǎn)R1 作為RP。然后MS1 向NMRN11 和GNMRS 注冊GEID 和R1(RP)之間的映射。隨后,MS2 可以直接通過NMRN11 查詢得到GEID 對應(yīng)的RP 為R1。
圖2 RP選擇機(jī)制示意圖
MS3向名字映射和解析節(jié)點(diǎn)NMRN12查詢GEID對應(yīng)的RP。由于NMRN12中沒有GEID 相關(guān)的信息,MS3 向NMRN12 查詢得到局部組播源列表<MS3,MS4>和局部候選RP 列表<>。由于管理域AD12 中的候選RP 列表為空,MS3 向GNMRS 查詢得到全局候選RP 列表<R1,R2,R3,…>。然后MS3 選擇距離本地組播源MS3 和MS4 最近的節(jié)點(diǎn)R2 作為RP,并向NMRN12 和GNMRS注冊GEID 和R2之間的映射。MS4 隨后可以直接通過NMRN12 查詢得到GEID 對應(yīng)的RP 為R2。
當(dāng)想要加入組播組時,接收者向GNMRS 解析查詢GEID 對應(yīng)的RP 列表,然后分別向每個RP 發(fā)送一條加入消息,加入消息被路由器轉(zhuǎn)發(fā)到RP 或者已經(jīng)存在對應(yīng)組播轉(zhuǎn)發(fā)表項的路由器為止。加入消息經(jīng)過的路由器添加或更新相應(yīng)的組播轉(zhuǎn)發(fā)表項。組播轉(zhuǎn)發(fā)表的結(jié)構(gòu)為<入接口,RP-EID,GEID,出接口列表>。
以圖3 所示的場景為例,接收者M(jìn)R1 向GNMRS解析查詢得到GEID 對應(yīng)的RP 為R1 和R2。然后MR1 向R1 和R2 分別發(fā)送一條加入消息。加入消息路徑上的路由器R4、R3 添加組播轉(zhuǎn)發(fā)表項,R1 和R2將收到加入消息的入接口添加到GEID 對應(yīng)的組播轉(zhuǎn)發(fā)表項的出接口列表中。其中,R3 上的組播轉(zhuǎn)發(fā)表項為<1,R1,GEID,3>和<2,R2,GEID,3>。
圖3 組播樹維護(hù)示意圖
接收者M(jìn)R2 也通過GNMRS 解析查詢得到GEID對應(yīng)的RP 為R1 和R2。然后MR2 同樣向R1 和R2分別發(fā)送一條加入消息。加入路徑上的路由器R5添加組播轉(zhuǎn)發(fā)表項,R3 將收到加入消息的入接口添加到GEID 對應(yīng)的組播轉(zhuǎn)發(fā)表項的出接口列表中,R3上的組播轉(zhuǎn)發(fā)表項更新為<1,R1,GEID,3,4>和<2,R2,GEID,3,4>。
組播源以單播方式將數(shù)據(jù)發(fā)送給RP,然后RP以組播方式根據(jù)組播轉(zhuǎn)發(fā)表將數(shù)據(jù)發(fā)送給接收者。當(dāng)離開組播組時,接收者向每個RP 發(fā)送一個離開消息。路由器將收到離開消息的接口從GEID 對應(yīng)的組播轉(zhuǎn)發(fā)表項的出接口列表中刪除。若出接口列表為空,則從入接口轉(zhuǎn)發(fā)該離開消息并刪除對應(yīng)組播轉(zhuǎn)發(fā)表項。
為了評估所提多RP 組播方法的性能,進(jìn)行了一系列仿真實(shí)驗,并與PIM-SM、PIM-SSM 和MCT 進(jìn)行了比較。實(shí)驗使用BRITE[15]拓?fù)渖善麟S機(jī)生成一個200 節(jié)點(diǎn)的拓?fù)?。然后,隨機(jī)部署組播組,每個組包含20 個源和20 個接收者,其中源被隨機(jī)地部署在幾個不同的管理域中。實(shí)驗使用IIT-DOWN 算法[16]根據(jù)時延限制將網(wǎng)絡(luò)劃分成不同的管理域,并在每個管理域中設(shè)置一個NMRN 來提供名字解析服務(wù)。在PIM-SM 和MCT 實(shí)驗中,隨機(jī)選擇10 個路由器作為RP。且MCT 使用Member-To-ALL 機(jī)制。評估的性能指標(biāo)包括RP 負(fù)載、傳輸時延、轉(zhuǎn)發(fā)狀態(tài)和鏈路負(fù)載。各性能指標(biāo)實(shí)驗重復(fù)100 次,取平均值作為實(shí)驗結(jié)果。
首先通過測試所有RP 中服務(wù)的最大源數(shù)量來評估不同組播方法中的RP 負(fù)載。從圖4 所示的實(shí)驗結(jié)果可以發(fā)現(xiàn)所提方法中的RP 負(fù)載遠(yuǎn)少于其他方法。這是因為所提方法將網(wǎng)絡(luò)中所有負(fù)載未達(dá)到閾值的路由器都作為候選RP,然后為每個組播組中位于不同管理域的源各自分配一個RP。而PIM-SM和MCT 都只是簡單地選擇有限個路由器作為RP。因此,所提方法能夠更有效地在所有候選RP 之間實(shí)現(xiàn)負(fù)載均衡,從而減少RP 負(fù)載。
圖4 RP負(fù)載對比
然后測試了平均每個源到每個接收者的端到端傳輸時延。從圖5 所示的實(shí)驗結(jié)果可以發(fā)現(xiàn)所提方法中的時延略高于PIM-SSM 但小于其他方法。這是因為PIM-SSM 為每個源建立一個到所有接收者的最短路徑樹,組播數(shù)據(jù)沿最短路徑從源傳輸?shù)浇邮照撸虼藭r延最小。而在PIM-SM、MCT和所提的多RP組播方法中,組播數(shù)據(jù)都是先從源發(fā)送到RP,然后再由RP 發(fā)送到接收者,這導(dǎo)致了時延的增大。但是由于所提方法根據(jù)時延約束條件將網(wǎng)絡(luò)劃分成不同的管理域,然后為每個管理域中的局部源選擇一個距離最近的RP,因此減少了RP 帶來的時延開銷。
圖5 傳輸時延對比
接著又測試了所有路由器中的最大組播轉(zhuǎn)發(fā)狀態(tài)數(shù)量。圖6所示的實(shí)驗結(jié)果表明所提方法中的組播轉(zhuǎn)發(fā)狀態(tài)數(shù)量大于PIM-SM 但小于PIM-SSM 和MCT。PIM-SSM 由于需要為每個源建立一個組播樹,路由器需要為每個源維護(hù)一個轉(zhuǎn)發(fā)狀態(tài),因此PIM-SSM 中的組播轉(zhuǎn)發(fā)狀態(tài)數(shù)量最大。在PIM-SM中,每個組播組中的所有源共用一個共享樹,路由器只需要為每個組播組維護(hù)一個轉(zhuǎn)發(fā)狀態(tài),因此PIMSM 中的組播轉(zhuǎn)發(fā)狀態(tài)數(shù)量最小。在MCT 中,每個組播組都需要為每個RP 分別建立一個到所有接收者的共享樹,路由器為每個組播組維護(hù)的轉(zhuǎn)發(fā)狀態(tài)數(shù)量等于RP 的數(shù)量。在所提方法中,每個組播組建立的組播樹的個數(shù)等于存在源的管理域的個數(shù),因此,當(dāng)源的分布較為密集時,所提方法能夠更為有效地減少組播轉(zhuǎn)發(fā)狀態(tài)。
圖6 組播轉(zhuǎn)發(fā)狀態(tài)對比
最后測試了所有鏈路中的最大鏈路負(fù)載,文中鏈路負(fù)載使用鏈路中流經(jīng)的流數(shù)量來表示,每個源發(fā)送的數(shù)據(jù)流作為一個單獨(dú)的流。從圖7 所示的實(shí)驗結(jié)果可以發(fā)現(xiàn)所提方法中的鏈路負(fù)載小于PIMSM 和MCT,且接近于PIM-SSM。由于PIM-SM 和MCT 需要先將數(shù)據(jù)發(fā)送到RP,這會導(dǎo)致RP 附近的鏈路流量匯聚,鏈路負(fù)載較大。而PIM-SSM 直接從每個源發(fā)送到接收者,流量分布更為均衡,因此鏈路負(fù)載較小。所提方法將網(wǎng)絡(luò)中所有負(fù)載未達(dá)到閾值的路由器都作為候選RP,并為每個組播組中位于不同管理域的源都分配一個RP。雖然在所提方法中源也需要將數(shù)據(jù)先發(fā)送到RP,但是所使用的RP數(shù)量更多且更為分散,因此流量匯聚情況較輕,鏈路負(fù)載較小。
圖7 鏈路負(fù)載對比
文中所提的基于NMRS 的多RP 組播方法將組播源劃分到不同的集合中,并為不同的組播源集合分別建立一棵組播樹,從而能夠有效地平衡RP 負(fù)載、傳輸時延、轉(zhuǎn)發(fā)狀態(tài)和流量匯聚。但是該方法需要組播源預(yù)先向其所在管理域中的NMRN 注冊SEID 和其NA 之間的映射,更適用于組播源數(shù)量和位置相對固定的場景,如IPTV 和在線課堂等。在后續(xù)的研究中,可以設(shè)計動態(tài)的RP 選擇機(jī)制以擴(kuò)展該組播方法的適用范圍。