摘? 要: 對RTCP的可擴(kuò)縮性問題進(jìn)行分析,探討了一種RTCP可擴(kuò)縮性的改進(jìn)策略,并將其應(yīng)用于大型的動態(tài)多播組中。
關(guān)鍵詞: RTCP? 可擴(kuò)縮性? 動態(tài)多播組
?
為了解決Internet上多媒體通信所面臨的問題,IETF提出了實(shí)時傳輸協(xié)議(RTP)標(biāo)準(zhǔn),為用戶提供端到端連續(xù)媒體數(shù)據(jù)的實(shí)時服務(wù),。實(shí)時控制協(xié)議(RTCP)是RTP的控制部分,主要用于發(fā)送者改變數(shù)據(jù)傳輸速率來適合網(wǎng)絡(luò)當(dāng)前狀態(tài),。RTP和RTCP能在中小型會話中工作得非常好。但隨著多媒體需求的持續(xù)增長,擁有上千個成員的MBone會話將成為平常事,并且成員數(shù)會動態(tài)漲落,。這時,RTCP可擴(kuò)縮性的問題將變得十分明顯,。
本文在詳細(xì)分析這些問題的基礎(chǔ)上,探討了一種應(yīng)用于大型動態(tài)多播組的RTCP可擴(kuò)縮性的改進(jìn)策略,。
1? RTCP協(xié)議介紹
RTCP協(xié)議和RTP一起提供流量控制和擁塞控制服務(wù)。在RTP會話期間,將控制包周期地發(fā)送給所有的連接者,應(yīng)用與數(shù)據(jù)包相同的分布機(jī)制,。RTCP執(zhí)行以下4種控制功能,。
(1)QoS監(jiān)控和擁塞控制。發(fā)送音頻(或視頻)數(shù)據(jù)的發(fā)送者會產(chǎn)生一個SR包,包中含有所發(fā)送的包數(shù)和字節(jié)數(shù)統(tǒng)計等信息,。接收者可據(jù)此估計出實(shí)際的數(shù)據(jù)率,。會話成員向所有參與會話活動的音頻和視頻源發(fā)送RR包,包中含有所接收的最高包序列號、丟失的包數(shù),、包間隔抖動測量值以及計算源端和目的端之間來回時間(Round-Trip-Time,RTT)所需的時間戳,。
(2)標(biāo)志媒體間的同步。RTCP的SR包中含有實(shí)際時間和相應(yīng)的RTP時間戳,可用于不同媒體間的同步,。
(3)提供標(biāo)志信息,。RTP數(shù)據(jù)包只能通過隨機(jī)產(chǎn)生的32位標(biāo)志符來標(biāo)識源,而RTCP的源描述SDES數(shù)據(jù)包為每個對話成員提供了全局惟一的標(biāo)志符信息,可以滿足復(fù)雜應(yīng)用的需要。
(4)會話規(guī)模估計和規(guī)劃,。參與會話的每個成員周期地發(fā)送RTCP包,各站點(diǎn)可據(jù)此估計或計算出參與會話的人數(shù),及時調(diào)節(jié)實(shí)時監(jiān)控的信息量,使得控制信息量和媒體業(yè)務(wù)量達(dá)到平衡,。
RTCP數(shù)據(jù)包有以下5種包類型:①SR源報告包,用于發(fā)送和接收活動源的統(tǒng)計信息。②RR接收者報告包,用于接收非活動站的統(tǒng)計信息,。③SDES源描述包,用于報告和用戶相關(guān)的信息,。④BYE用戶離開系統(tǒng)報告包。⑤APP特殊應(yīng)用包,。
2? RTCP可擴(kuò)縮性分析
RTCP應(yīng)用于大型的多播組特別是動態(tài)的多播組時,其可擴(kuò)縮性問題十分突出,。
(1)擁塞:通常期望多播會話在某個時間點(diǎn)能及時地容納組成員的快速增長。然而當(dāng)大量用戶幾乎在同一時間加入同一個會話時,每個用戶都認(rèn)為他是惟一的用戶,他們將在相當(dāng)短的時間內(nèi)發(fā)送一個初始的RTCP包,致使RTCP包溢出,發(fā)生擁塞,。對于那些以低帶寬連接的成員,這將直接導(dǎo)致部分成員的初始包丟失,影響對組大小的估計,。由于成員離開會話時會以多播方式發(fā)送一個BYE包給組內(nèi)的所有成員,所以大量用戶同時離開多播組也會發(fā)生擁塞。
(2)狀態(tài)存儲:為了估計組的大小,主機(jī)必須根據(jù)多播組的反饋報告來計數(shù)該多播組中的成員,。為了保證每個終端系統(tǒng)僅被計數(shù)一次,需要存儲其惟一的標(biāo)識符(SSRC),。一旦多播組急劇增大將需要巨大的存儲空間。這使得RTCP狀態(tài)存儲的可擴(kuò)縮性成為一個重要問題,。
(3)延遲:隨著組的增加,從某個特定用戶得到RTCP報告的時間將變得非常長(例如:在一個大約3 000成員的組中,相互發(fā)送一個RTCP包大約需要一個小時),。如此長的間隔意味著來自某個特定用戶的QoS問題的反饋報告將變得毫無意義。
(4)過早停機(jī):當(dāng)大量成員同時離開時可能產(chǎn)生的另一個問題就是在用戶還沒有全部離開應(yīng)用程序時程序就停止了,。這是由于在現(xiàn)行的標(biāo)準(zhǔn)中,一個用戶如果在持續(xù)的5個RTCP包的間隔內(nèi)不發(fā)送RTP或RTCP包,他就被停止了,。在一個動態(tài)組中,間隔本身就是動態(tài)的。當(dāng)大量用戶同時離開組時,他們的BYE包使得組的大小的估計值急劇降低,。這就導(dǎo)致了停機(jī)間隔的縮短,。如果用戶離開的人數(shù)足夠多,則該停機(jī)間隔將降低到使得殘留的用戶也將被停止。
除了以上提到的這些問題外,由于目前越來越多的實(shí)時的適應(yīng)性應(yīng)用程序使用基于接收者的速率適應(yīng)機(jī)制,而非基于發(fā)送者的速率適應(yīng)機(jī)制,這也使得RR中的一些域的功能也出現(xiàn)了問題,。
3?RTCP可擴(kuò)縮性的改進(jìn)策略
從RTCP的工作情況和RR的功能可以發(fā)現(xiàn)反饋(Feedback)在其中起到的重要作用,RTCP的許多擴(kuò)縮性問題都與它有關(guān)。以下提到的這種方法不需要每個成員都計算整個多播組的大小,也不需要廣播RR,從而有效地解決了RTCP中由大量包的多播帶來的種種不便于擴(kuò)縮的問題,更有效地利用了RR。
本文論述的這種策略要使用本地域及其成員的結(jié)構(gòu)樹圖如圖1所示,。這里所指的成員是在同一個RTP會話中所有的接收者或發(fā)送者,。該結(jié)構(gòu)將成員動態(tài)地組織到一個多層次的本地域(Local Region)中。
?
?
在每個本地域中都有一個Aggregator(AG),它的子節(jié)點(diǎn)可以是AG,、LAG或者普通的成員(用空心圈表示),。AG1是第一層的AG,AG2屬于第二層,是AG1的子節(jié)點(diǎn)。AG接收其子節(jié)點(diǎn)發(fā)送的RR,產(chǎn)生統(tǒng)計表,并發(fā)送給Manager,。由AG或LAG發(fā)給Manager的RR稱為AGR,。LAG是處在LAN中的AG,它與AG的功能相同。同一個LAN中只有一個LAG,。Manager是整個層次結(jié)構(gòu)的根,也可以看作是AG0,它接收來自既非AG也非LAG的直接子節(jié)點(diǎn)的RR,也接收AGR,。Manager是惟一沒有子節(jié)點(diǎn)數(shù)量限制的AG。如果某子節(jié)點(diǎn)不能被其雙親AG接收,則它會被Manager接收,。
4?應(yīng)用于大型動態(tài)多播組的工作過程
下面從一個RTP會話的建立開始,具體說明該策略在大型動態(tài)多播組中的應(yīng)用,。
4.1 初始工作
一個RTP會話開始后,首先通告2個多播地址:第一個地址傳輸RTP數(shù)據(jù)包,第二個傳輸RTCP控制包。然后,Manager加入多播的控制組,。
4.2 Manager的作用
Manager是整個層次結(jié)構(gòu)的根,僅存在于控制組中,不對數(shù)據(jù)組起任何作用,。它對加入或刪減成員及各種角色選舉結(jié)果的信息進(jìn)行管理。
Manager在每個間隔期間分析AGR中的數(shù)據(jù),將有用的統(tǒng)計表記入日志,據(jù)此診斷,、估計可能或已發(fā)生問題的區(qū)域,監(jiān)視數(shù)據(jù)在多播組中的分布,。收集和分析統(tǒng)計數(shù)據(jù),幫助估計每個區(qū)域的接收質(zhì)量,發(fā)現(xiàn)單個會話內(nèi)的熱點(diǎn)區(qū)域。所以,應(yīng)該被高速地連入網(wǎng)絡(luò),。
4.3 本地域的建立
本地域的建立在Manager加入以后進(jìn)行,主要包括新成員的加入和LAG,、AG的選舉。
4.3.1 普通成員的加入及AG的選舉
當(dāng)一個新成員加入會話時,首先執(zhí)行一個擴(kuò)展的環(huán)搜索,。新成員通過增加TTL的值來重復(fù)搜尋雙親AG直到它找到一個鄰近的雙親,。TTL是IP包中的一個域,發(fā)送者根據(jù)想要包到達(dá)距離的長短,對TTL域初始化。每經(jīng)過一個路由器TTL減1,當(dāng)TTL=0時,該包被丟棄,。TTL=1的廣播包僅用于對同一局域網(wǎng)內(nèi)成員的發(fā)送,。新節(jié)點(diǎn)尋找雙親的信息交換過程如圖2所示。首先,它廣播一個TTL值較小且大于1的“Search-for-Parent”的請求,如果一段時間內(nèi)沒有答復(fù),它將以一個大一點(diǎn)的TTL再做一次擴(kuò)展的環(huán)搜索,。依此類推,直到它在現(xiàn)有的AG中接收到一個“Potential-Child-Acceptance”回應(yīng),。
?
?
新成員(NM)接收到候選雙親的回復(fù)后,對每個候選雙親(CP)的AG進(jìn)行判定,以確定自己是可能的子節(jié)點(diǎn)(PC)還是侯選(CC)AG。新成員角色判斷的流程圖如圖3所示,。
?
?
每個雙親AG所能有的直接成員(包括非AG和AG)的最大數(shù)量分別用MAX1和MAX2表示,。這種信息通過以下方式傳遞:當(dāng)會話剛開始僅有Manager時,如果有成為AG的新節(jié)點(diǎn)加入,則Manager就將這些信息傳遞給AG,AG再將這些從Manager得到的初始信息傳給它們的子AG。初始的管理信息都是通過這種方式發(fā)送的,。
N和M是某個特定的值,N限制了結(jié)構(gòu)樹的高度,當(dāng)樹高≥N時,新成員不會成為AG,。M是對到新成員距離的限制,它保證了一個離雙親很近的成員,不能成為AG,。
新成員收到多個候選雙親的回復(fù)(實(shí)箭頭)時的選擇過程描述圖如圖4所示。此時,選擇帶有最大TTL值的那個候選雙親作為雙親,該雙親到新成員的距離最短,。然后向沒被選中的雙親發(fā)送“Reject-Parent”消息(虛箭頭),。如果新產(chǎn)生的AG沒有任何子節(jié)點(diǎn),則雙親就把該AG恢復(fù)為普通子成員。
?
?
被接收的成員向選定的雙親單播“Accept-Child”消息,存儲接收到的“Potential-Child-Acceptance”消息,。對選定的雙親要做些修改:增加子節(jié)點(diǎn)的數(shù)量;存儲原始TTL的剩余值,此剩余值即為選定雙親到新加入的子節(jié)點(diǎn)的距離,。如果接收的新成員是AG,則雙親還要增加它的AG數(shù)目。
4.3.2 LAG的選舉
當(dāng)一個新的LAN成員加入某個會話時,本地先多播(TTL=1)一個“搜索LAG”包,詢問所在的LAN是否存在LAG,。如果LAG存在,則所有的成員(包括LAG)本地多播一個“LAG存在”的回應(yīng)(包括LAG的IP地址),。為了避免回復(fù)報告的溢出,采用隨機(jī)的退出時鐘來控制報告的發(fā)送:每個成員附帶一個隨機(jī)的退出時鐘。延遲最小的成員最先終止它的時鐘,并立即發(fā)送回復(fù)消息,。一旦得到回復(fù)消息,其他成員就停止發(fā)送回復(fù),并取消這些成員的時鐘,。
如果一段時間內(nèi)沒收到回復(fù),則認(rèn)為該LAN中還沒有LAG,這時它被認(rèn)為是該LAN中參加這個會話的第一個成員,且被選為LAG。接著開始搜索自己的雙親AG,。一旦有一個LAG加入,不管它的雙親AG有多少個子節(jié)點(diǎn),都能立刻被接收,。LAG在它所在的局域網(wǎng)內(nèi)沒有成員數(shù)量的限制。
4.4 各成員的離開
4.4.1 AG的崩潰或離開
AG周期性地對本地多播更新消息給它所有的子節(jié)點(diǎn)(AG的TTL值=離它最遠(yuǎn)的子節(jié)點(diǎn)的TTL)來通知它還存在,。如果子節(jié)點(diǎn)在一段時間內(nèi)接收不到這樣的消息,就假設(shè)AG已經(jīng)崩潰,。如果AG離開組,就向其所有子節(jié)點(diǎn)本地多播一個RTCP BYE包。不管哪種情況,該AG的每個子節(jié)點(diǎn)都將重新開始一個擴(kuò)展的找尋雙親的過程,。
4.4.2 LAG的崩潰或離開
發(fā)現(xiàn)LAG崩潰或離開的過程與發(fā)現(xiàn)AG崩潰或離開的過程是類似的,。LAG也是通過一個信息包的周期性多播來證明自己的存在,如果離開就多播BYE包。一旦發(fā)現(xiàn)LAG不存在,則LAN中的成員開始選擇一個新的LAG,。每個成員都本地多播一個“要成為LAG”的請求,。這里同樣使用可以阻止多播請求溢出的隨機(jī)退出時鐘。當(dāng)某個成員的時鐘終止,就多播一個包括IP地址的“LAG存在”的消息,。一旦接收到這個消息,LAN中其他的成員就停止自己“要成為LAG”的請求,接收那個成員作為新的LAG,并存儲它的IP地址,。這就直接決定了一個新的LAG。確定了新的LAG后要通知祖先AG,并修改有關(guān)信息,。
4.4.3 一般成員的崩潰或離開
一個既非AG又非LAG的普通成員離開時,只需向它的雙親AG發(fā)送BYE包,。然后相關(guān)的AG作一些修改:更新相應(yīng)的記錄表,在它雙親AG的子節(jié)點(diǎn)數(shù)量中減掉1,并修改相應(yīng)祖先AG的信息。
4.5 Manager的離開
當(dāng)所有的成員都離開會話,或者會話結(jié)束時,Manager失去了存在的意義,會自動離開會話,。
5? 總? 結(jié)
這里描述的改進(jìn)機(jī)制并不能完全解決關(guān)于大型動態(tài)多播組中RTCP擴(kuò)縮性的問題,只能從某些方面減輕問題,。關(guān)于擴(kuò)展的RTCP一些更為細(xì)致的工作正在研究之中。在具體的模擬實(shí)踐中需要不斷地改進(jìn)該策略以期能更好地服務(wù)于不斷發(fā)展的網(wǎng)絡(luò)多媒體應(yīng)用,。
?
參考文獻(xiàn)
1?? Schulzrinne H,Casner S,Frederick R et al.RTP: A Transport Protocol for Real-time Applications.RFC?1889,1996
2?? Aboba B.Alternatives of Enhancing RTP Scalability.draft-aboba-rtpscale-02.txt,1996
3?? Rosenberg R,Schulzrinne H.Timer Reconsideration for Enhanced RTP Scalability. draft-ietfavt-reconsider-00.ps,1997
4?? Marakby R E,Hutchison D.Scalability Improvement of the RTCP Leading to Management Facilities in the?Internet.in:Proc of the third IEEE Symposium on?Computers and Communications(ISCC′98),Athens,Greece,1998
5?? Friedman T,Caceres R,Almeroth K et al.RTCP Reporting Extensions.Internet Engineering TaskForce,2002