對于IP網(wǎng)絡(luò)來說,多播是一種強大的工具,它允許一個信源同時向多個目的地分發(fā)節(jié)目。使用此技術(shù)時,產(chǎn)生信號多個副本的大量工作是在網(wǎng)絡(luò)內(nèi)部完成的,而不是在發(fā)送或接收裝置中。總的來說它還比較節(jié)約帶寬。多播是許多IPTV系統(tǒng)用來分配廣播電視節(jié)目的其中一種關(guān)鍵技術(shù)。
“多個單播”
為理解多播,將它與單播處理相比較是有幫助的。在單播中,視頻流作為一系列帶一個IP目的地地址的包被發(fā)送給一個接受者。碼流內(nèi)的每個包在從信源到IP網(wǎng)絡(luò)上的目的地的整個路徑上流動,如圖1所示。
在多播中,如果多個接受者想要同一視頻,信源必須為每個接受者產(chǎn)生一個單獨的單播碼流。這有時被稱為“多個單播”,并往往被用于如因特網(wǎng)這樣的公共網(wǎng)絡(luò)。為容納將被分發(fā)碼流的所有副本,從信源起的網(wǎng)絡(luò)連接必須有足夠的帶寬。
在多播中,從信源發(fā)出的一個視頻流被同時分發(fā)到如圖2所示的多個目的地。為每個用戶產(chǎn)生碼流的負擔(dān)從視頻源轉(zhuǎn)移到了網(wǎng)絡(luò)。在網(wǎng)絡(luò)內(nèi)部,一個稱為IGMP(因特網(wǎng)組管理協(xié)議)的專門協(xié)議允許網(wǎng)絡(luò)識別正被多播的包,并將它們發(fā)送到多個目的地。這是通過給予多播包為多播而保留的專門IP地址而實現(xiàn)的。還有一個稱為SAP(會話通告協(xié)議)的專門協(xié)議,它通知用戶應(yīng)用程序有關(guān)某一網(wǎng)絡(luò)上當(dāng)前可用的多播。
值得一提的是,就像開路廣播一樣,IP多播僅僅單向運行。沒有集中節(jié)目要求或其它來自終點并發(fā)回信源的其它信息的內(nèi)部機制(雖然有一個收集如丟包數(shù)等的網(wǎng)絡(luò)性能統(tǒng)計數(shù)據(jù)的簡單機制)。這意味著終點和視頻源之間任何形式的用戶交互必須被其它某種機制處理。
多播一個優(yōu)點是它為用戶應(yīng)用提供它們何時加入和離開多播的控制能力。此控制在網(wǎng)絡(luò)內(nèi)部實現(xiàn);用戶添加或從多播離開時,多播源無須采取特別的動作。相比之下,距離用戶最近的路由器參與此過程很深。下面我們考察它的工作方式。
加入和離開多播
在開始討論用戶加入和離開一個多播的方式前,首先談?wù)勊麄冃枰@樣做的原因。在多播中,所有用戶都同時接收相同的視頻流(記住只有一個碼流從多播源發(fā)出),因此,當(dāng)用戶想看一個多播節(jié)目時,他們必須在節(jié)目剛好在里面的無論哪個點加入。這完全與電視廣播相似,在給定的任何時間用戶只能收看從電視臺天線發(fā)射出來的節(jié)目。同樣,如果某多播節(jié)目已在一個網(wǎng)絡(luò)上流動,用戶有加入或離開該多播的選擇權(quán),但他們不能啟動它或停止它。在某些情況中,多播節(jié)目以連續(xù)的循環(huán)發(fā)送,因此漏過節(jié)目開始的那些用戶可以只觀看他們錯過的內(nèi)容。
當(dāng)某路由器收到來自一個用戶應(yīng)用的加入多播的請求,它必須做若干工作。首先,此路由器必須決定它是否已在為另一個用戶處理多播。如果是的話,該路由器只需做此多播碼流的一個副本且將它發(fā)送到請求的裝置。如果不是,該路由器必須從一個較靠近多播源的裝置請求碼流。它一開始接收此碼流,就能向用戶發(fā)送它。值得一提的是,在此方案中,請求是從路由器到路由器作出的;此技術(shù)可以按需要重復(fù)多次,以便找到一個從用戶位置到多播源的完整路徑。
在此過程中需注意的關(guān)鍵點是每個路由器必須知道在它請求一個來自網(wǎng)絡(luò)其它地方的副本前,是否已在接收多播碼流。如果它正在接收此碼流,它必須為新用戶產(chǎn)生一個副本。只有不在接收此碼流時它才獲允許請求來自靠近源的另一路由器的副本。這是多播的優(yōu)點—多播碼流只有一個副本需要被發(fā)送到網(wǎng)絡(luò)上的每個路由器,而且然后僅發(fā)送給確使用此碼流的用戶的路由器(或其它下游路由器)。這意味著路由器之間的帶寬得到高效使用。在圖2中,碼流復(fù)制發(fā)生于路由器2和路由器4中。將是容納數(shù)百個用戶的復(fù)雜網(wǎng)絡(luò)的一個網(wǎng)關(guān)的路由器需接收多播碼流僅一個副本。將此與單播環(huán)境中可能發(fā)生的情況相比較:一個支持數(shù)百個用戶的網(wǎng)關(guān)路由器將需要足夠容量以便為每個想觀看的用戶處理一個全視頻流。
到現(xiàn)在為止,我們僅僅討論了加入一個多播的有關(guān)問題,但為保持總系統(tǒng)效率不變,離開多播的過程也非常重要。當(dāng)某個用戶應(yīng)用不再想從一個多播接收數(shù)據(jù)時,它必須發(fā)送一個離開信息到網(wǎng)絡(luò)。路由器必須停止向用戶裝置發(fā)送碼流,該裝置的帶寬因而可以為其它用戶釋放。同樣地,當(dāng)一個路由器不再有正在要求碼流的用戶(或其它路由器)時,它必須通知網(wǎng)絡(luò)停止發(fā)送此碼流。圖2中,如果用戶2停止接收碼流,路由器5將不再需要傳輸此碼流,而路由器4會不再需要復(fù)制此碼流到兩個輸出端。此離開過程很重要:若用戶沒有離開多播并斷開網(wǎng)絡(luò)連接的能力,那么一個支持多播的網(wǎng)絡(luò)可能輕易被無人在觀看的碼流阻塞。
收聽通知
多播源負責(zé)周期性地向網(wǎng)絡(luò)用戶群宣布其數(shù)據(jù)流的可用性,這是靠來自源的被分配的SAP包實現(xiàn)的。SAP包包含關(guān)于網(wǎng)絡(luò)上可用的多播碼流的信息,以及為了連接到此多播用戶應(yīng)用所需的信息。
用于接收多播的用戶裝置收聽這些通知,并收集此多播節(jié)目的有關(guān)信息供用戶選擇。概念上,SAP類似于許多有線電視系統(tǒng)上廣播的電視指南服務(wù)。當(dāng)前正在播放的每個節(jié)目及該節(jié)目的頻道號碼都被列出。往往在交互節(jié)目指南或媒體播放器內(nèi)執(zhí)行的此軟件的設(shè)計對多播系統(tǒng)的全面成功可能非常重要。一旦用戶作出了選擇,應(yīng)用程序就能發(fā)出一個加入多播的請求。
值得一提的是公共因特網(wǎng)并不支持多播,因此本文描述的技術(shù)主要用在像IPTV分發(fā)系統(tǒng)這樣的專用網(wǎng)上。令人感興趣的是,下一代互聯(lián)網(wǎng)(Internet2)項目支持多播。