本發(fā)明涉及一種用于在服務(wù)器設(shè)備與客戶端設(shè)備之間以多播傳輸模式發(fā)送數(shù)據(jù)流的方法,以及實現(xiàn)所述方法的客戶端設(shè)備和服務(wù)器設(shè)備。該方法受益于將客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口的存在。
使用多播通信模式的數(shù)據(jù)傳輸應(yīng)用是已知的。多播通信模式主要用在服務(wù)器設(shè)備必須向多個客戶端設(shè)備發(fā)送相同的數(shù)據(jù)流時。多播通信模式尤其用于在網(wǎng)絡(luò)上廣播多媒體節(jié)目的應(yīng)用,諸如,例如,用于在因特網(wǎng)上廣播電視節(jié)目、因特網(wǎng)上的視頻點播或無線電節(jié)目的應(yīng)用。
多播傳輸模式的一個優(yōu)點是避免了在通信網(wǎng)絡(luò)的某些部分上重復數(shù)據(jù)。
圖1a示意性地示出了在服務(wù)器設(shè)備(或服務(wù)器)101與客戶端設(shè)備(或客戶端)103、104和105之間使用多播通信模式的第一示例。在圖1a的示例中,通信鏈路106將服務(wù)器101連接到路由器102。通信鏈路107、108和109分別將路由器102連接到客戶端103、104和105。通信鏈路107(又或者108和109)和106在服務(wù)器101與客戶端103(又或者客戶端104和客戶端105)之間形成通信路徑106/107(又或者106/108和106/109)。因此,通過使用路徑106/107(又或者路徑106/108和路徑106/109),客戶端103(又或者客戶端104和客戶端105)具有將其連接到服務(wù)器設(shè)備101的網(wǎng)絡(luò)接口。
每個客戶端103、104和105可以是能夠使用由服務(wù)器101發(fā)送的數(shù)據(jù)流的終端客戶端(諸如,多媒體設(shè)備)。多媒體設(shè)備可以例如是計算機、觸摸平板、智能電話、電視機或數(shù)字電視節(jié)目解碼器。每個客戶端103、104和105也可以是終端客戶端與服務(wù)器101之間的中間客戶端。中間客戶端可以例如是將局部網(wǎng)絡(luò)(局域網(wǎng)-lan)中的多媒體流中繼到終端客戶端設(shè)備的因特網(wǎng)網(wǎng)關(guān)。
多播通信模式需要希望接收在多播組上發(fā)送的數(shù)據(jù)流的客戶端訂閱多播組。管理多播組的訂閱需要在多播組中涉及的每個服務(wù)器、路由器和客戶端之間交換多播組管理請求。這種訂閱管理通常由rfc988(版本0)、1112(版本1)、2236(版本2)和3376(版本3))中相繼地描述的igmp(因特網(wǎng)組管理協(xié)議)來實現(xiàn)。
在圖1a的示例中,只有客戶端103是被稱為目標多播組的多播組的訂戶。為此,客戶端103已經(jīng)向路由器102發(fā)送了igmp訂閱請求,以便通知路由器102客戶端103希望訂閱目標多播組。如果沒有連接到路由器102的其它客戶端已經(jīng)訂閱了所述目標多播組,則路由器102向服務(wù)器101發(fā)送igmp訂閱請求,以便通知服務(wù)器客戶端希望接收與所述目標多播組對應(yīng)的數(shù)據(jù)流。以這種方式,激活與所述目標多播組對應(yīng)的數(shù)據(jù)流的傳輸。只要訂閱是無效的,在服務(wù)器101與客戶端103之間就沒有與數(shù)據(jù)流對應(yīng)的數(shù)據(jù)分組通過。一旦訂閱是有效的,數(shù)據(jù)分組p1、p2、p3、p4就通過路徑106/107。
圖1b示意性地示出了在服務(wù)器設(shè)備101與客戶端設(shè)備103、104和105之間使用多播通信模式的第二示例。在該示例中,客戶端104和105訂閱與客戶端103相同的多播組。為此,它們各自向路由器102發(fā)送igmp訂閱請求,以便向其指示他們希望訂閱所述目標多播組。因為在這種情況下,客戶端103已經(jīng)是目標多播組的訂戶,所以在接收到來自客戶端104和105的igmp訂閱請求之后,路由器102不必向服務(wù)器101發(fā)送igmp訂閱請求。圖1b中的示例示出了多播通信模式的優(yōu)點。雖然三個客戶端是訂戶,但分組p7和p8不在鏈路106上重復,所述鏈路106作為通信路徑106/107、106/108和106/109之間的共用鏈路。僅在路由器102之后,在通信路徑106/107、106/108和106/109之間不共用的鏈路107、108和109上重復分組,所述分組已被路由器102重復。以這種方式,所有路徑共用的每個通信路徑的部分不會被每個分組的多個副本過載。
在下文中,當我們談到訂閱請求和取消訂閱請求時,這些請求與如由igmp協(xié)議定義的igmp訂閱請求和igmp取消訂閱請求對應(yīng)。
圖1c示意性地示出了當客戶端設(shè)備具有將客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口時的多播通信模式的限制。在該示例中,每個客戶端103、104和105具有將其連接到服務(wù)器101的兩個網(wǎng)絡(luò)接口??蛻舳?03(又或者104和105)具有通過路徑106/107(又或者106/108和106/109)將該客戶端103連接到服務(wù)器101的第一接口和通過包括鏈路110和112(又或者鏈路110和113以及鏈路110和114)并且通過路由器111的路徑110/112(又或者110/113和110/114)將該客戶端103連接到服務(wù)器101的第二網(wǎng)絡(luò)接口。如當前定義的多播通信模式不能使客戶端從多個通信接口的存在受益。這是因為多播通信只能使用一個通信路徑來發(fā)送數(shù)據(jù)流。例如,在訂閱多播組的情況下,客戶端只在路徑106/107或路徑110/112上接收與多播組對應(yīng)的數(shù)據(jù)流。因為每個通信路徑與帶寬相關(guān)聯(lián),所以兩個路徑106/107和110/112的組合使用將允許增加客戶端103的接收帶寬。
期望克服現(xiàn)有技術(shù)的這些各種缺陷。
尤其期望使得訂閱多播組的客戶端能夠從服務(wù)器獲得數(shù)據(jù)流,以從將其連接到可用于所述客戶端的服務(wù)器的所有網(wǎng)絡(luò)接口受益。
尤其期望提供一種易于實現(xiàn)并且低成本的解決方案。
根據(jù)本發(fā)明的第一方面,本發(fā)明涉及一種在服務(wù)器設(shè)備與客戶端設(shè)備之間根據(jù)多播傳輸模式發(fā)送數(shù)據(jù)流的方法,該方法包括由客戶端設(shè)備實現(xiàn)的以下步驟:獲得用于訂閱多播組(稱為目標多播組)的第一請求,所述多播組允許獲得數(shù)據(jù)流;利用多個第二訂閱請求替換用于訂閱目標多播組的第一請求,每個第二訂閱請求與多播子組的集合中的多播子組相關(guān)聯(lián),每個多播子組允許獲得形成數(shù)據(jù)流的子部分的數(shù)據(jù)子流,所有多播子組允許通過組合數(shù)據(jù)子流來獲得所述數(shù)據(jù)流;將網(wǎng)絡(luò)接口與每個第二訂閱請求相關(guān)聯(lián),每個相關(guān)聯(lián)的網(wǎng)絡(luò)接口從將服務(wù)器設(shè)備連接到客戶端設(shè)備并在客戶端設(shè)備上可用的網(wǎng)絡(luò)接口的集合中獲?。煌ㄟ^與所述第二請求相關(guān)聯(lián)的網(wǎng)絡(luò)接口向服務(wù)器設(shè)備發(fā)送每個第二訂閱請求;接收與所發(fā)送的第二訂閱請求對應(yīng)的數(shù)據(jù)子流,所接收到的每個數(shù)據(jù)子流通過發(fā)送與所述數(shù)據(jù)子流相關(guān)聯(lián)的第二訂閱請求的網(wǎng)絡(luò)接口被接收到;使用所接收到的數(shù)據(jù)子流來重構(gòu)數(shù)據(jù)流,以便能夠使用所述數(shù)據(jù)流。
因此,本發(fā)明允許從客戶端上可用的所有網(wǎng)絡(luò)接口受益。與多播組對應(yīng)的數(shù)據(jù)流的數(shù)據(jù)被分配在數(shù)據(jù)子流的集合中,每個數(shù)據(jù)子流與多播子組對應(yīng)。然后,客戶端可以從各種網(wǎng)絡(luò)接口訂閱多播子組,并通過所述網(wǎng)絡(luò)接口接收數(shù)據(jù)子流。通過多個網(wǎng)絡(luò)接口對數(shù)據(jù)流的接收允許將各種網(wǎng)絡(luò)接口上可用的帶寬相加在一起。
根據(jù)一個實施方式,在獲得用于訂閱目標多播組的第一請求之后,客戶端設(shè)備在表示多播組的信息的集合中尋找表示所述目標多播組的信息,當在表示多播組的信息的集合中找到表示所述目標多播組的信息時,第一訂閱請求被第二訂閱請求替換。
根據(jù)一個實施方式,當在表示多播組的信息的集合中尋求表示所述目標多播組的信息時,客戶端設(shè)備實現(xiàn)以下步驟:向服務(wù)器設(shè)備發(fā)送被稱為getcaps請求的請求,請求表示可由所述服務(wù)器設(shè)備傳遞的每個數(shù)據(jù)流的信息;從所述服務(wù)器設(shè)備接收稱為sendcaps請求的至少一個請求,提供表示可由所述服務(wù)器設(shè)備傳遞的每個數(shù)據(jù)流的信息;從表示所接收到的數(shù)據(jù)流的信息構(gòu)建表示多播組的信息的集合;在表示如此構(gòu)建的多播組的信息的集合中尋找表示所述目標多播組的信息。
以這種方式,當客戶端設(shè)備沒有關(guān)于多播組上可用的數(shù)據(jù)流的信息時,該客戶端設(shè)備可以詢問服務(wù)器設(shè)備,以便獲得該信息。
根據(jù)一個實施方式,表示每個數(shù)據(jù)流的信息包括表示所述數(shù)據(jù)流的多播地址的信息和表示與所述數(shù)據(jù)流對應(yīng)的數(shù)據(jù)子流的集合的信息,以及(針對每個數(shù)據(jù)子流)表示所述數(shù)據(jù)子流的多播地址的信息。
根據(jù)一個實施方式,表示每個數(shù)據(jù)流的信息還包括表示每個數(shù)據(jù)流和每個數(shù)據(jù)子流的傳輸速率的信息。
根據(jù)一個實施方式,每個getcaps請求和每個sendcaps請求與因特網(wǎng)組管理協(xié)議(igmp)兼容。
根據(jù)一個實施方式,當接收到與所發(fā)送的第二訂閱請求對應(yīng)的數(shù)據(jù)子流時,客戶端設(shè)備檢查針對所發(fā)送的每個第二訂閱請求對應(yīng)于與所述第二訂閱請求相關(guān)聯(lián)的多播子組的數(shù)據(jù)子流是否被接收到,并且如果每個數(shù)據(jù)子流被接收到,則重構(gòu)所述數(shù)據(jù)流。
根據(jù)一個實施方式,當至少一個數(shù)據(jù)子流未被接收時,客戶端設(shè)備向服務(wù)器設(shè)備發(fā)送針對每個多播子組(針對該多播子組已經(jīng)發(fā)送了第二訂閱請求)的取消訂閱請求。
根據(jù)一個實施方式,當在表示多播組的信息的集合中未找到表示所述多播組的信息時,客戶端設(shè)備向服務(wù)器設(shè)備發(fā)送第一訂閱請求,以接收數(shù)據(jù)流。
根據(jù)一個實施方式,當在接收與所發(fā)送的第二訂閱請求對應(yīng)的數(shù)據(jù)子流期間客戶端設(shè)備檢測將客戶端設(shè)備連接到服務(wù)器設(shè)備的新的網(wǎng)絡(luò)接口的打開時,客戶端設(shè)備實現(xiàn)以下步驟:通過添加檢測到的新的網(wǎng)絡(luò)接口來增強所述網(wǎng)絡(luò)接口的集合;將所述新的網(wǎng)絡(luò)接口與至少一個第二請求相關(guān)聯(lián),所述至少一個第二請求用于訂閱與目標多播組對應(yīng)的多播子組的集合中的多播子組;通過使用新的網(wǎng)絡(luò)接口向服務(wù)器設(shè)備發(fā)送與所述新的網(wǎng)絡(luò)接口相關(guān)聯(lián)的每個第二訂閱請求;當通過包括所述新的網(wǎng)絡(luò)接口的多個網(wǎng)絡(luò)接口同時接收到和與通過所述新的網(wǎng)絡(luò)接口發(fā)送的第二訂閱請求相關(guān)聯(lián)的多播子組對應(yīng)的數(shù)據(jù)子流(稱為重復子流)時,發(fā)送對與通過除了新的網(wǎng)絡(luò)接口以外的網(wǎng)絡(luò)接口接收到的重復子流對應(yīng)的每個多播子組的取消訂閱請求。
根據(jù)一個實施方式,當通過新的網(wǎng)絡(luò)接口未接收到和與通過所述新的網(wǎng)絡(luò)接口發(fā)送的第二訂閱請求相關(guān)聯(lián)的多播子組對應(yīng)的數(shù)據(jù)子流時,客戶端設(shè)備向服務(wù)器設(shè)備發(fā)送對與未被接收的數(shù)據(jù)子流對應(yīng)的多播子組的取消訂閱請求。
根據(jù)一個實施方式,當在接收與所發(fā)送的第二訂閱請求對應(yīng)的數(shù)據(jù)子流期間客戶端設(shè)備檢測將客戶端設(shè)備連接到服務(wù)器設(shè)備的網(wǎng)絡(luò)接口的抑制時,客戶端設(shè)備實現(xiàn)以下步驟:通過移除被抑制的網(wǎng)絡(luò)接口來縮減所述網(wǎng)絡(luò)接口的集合;將先前與被抑制的網(wǎng)絡(luò)接口相關(guān)聯(lián)的每個第二訂閱請求與經(jīng)縮減的網(wǎng)絡(luò)接口的集合中的網(wǎng)絡(luò)接口相關(guān)聯(lián);使用經(jīng)縮減的網(wǎng)絡(luò)接口的集合中與每個第二訂閱請求相關(guān)聯(lián)的網(wǎng)絡(luò)接口向服務(wù)器設(shè)備發(fā)送所述每個第二訂閱請求,所述每個第二訂閱請求先前與被抑制的網(wǎng)絡(luò)接口相關(guān)聯(lián);如果在先前與被抑制的網(wǎng)絡(luò)接口相關(guān)聯(lián)的每個第二訂閱請求的傳輸之后,接收到與所發(fā)送的每個第二訂閱請求對應(yīng)的每個數(shù)據(jù)子流,則重構(gòu)所述多播流。
根據(jù)一個實施方式,如果在先前與被抑制的網(wǎng)絡(luò)接口相關(guān)聯(lián)的每個第二訂閱請求的傳輸之后,與所發(fā)送的第二訂閱請求對應(yīng)的至少一個數(shù)據(jù)子流未被接收到,則客戶端設(shè)備向服務(wù)器設(shè)備發(fā)送對每個多播子組的取消訂閱請求。
根據(jù)一個實施方式,所述方法包括由服務(wù)器設(shè)備實現(xiàn)的以下步驟:通過接收接口接收每個第二訂閱請求;在數(shù)據(jù)子流中分配數(shù)據(jù)流的數(shù)據(jù);通過對應(yīng)與接收和對應(yīng)于所述數(shù)據(jù)子流的多播子組相關(guān)聯(lián)的第二訂閱請求的接口的網(wǎng)絡(luò)接口發(fā)送每個數(shù)據(jù)子流。
根據(jù)一個實施方式,在將數(shù)據(jù)流的數(shù)據(jù)分配在數(shù)據(jù)子流中時,考慮表示每個數(shù)據(jù)流和/或每個子流的傳輸速率的信息。
根據(jù)本發(fā)明的第二方面,本發(fā)明涉及一種能夠根據(jù)多播傳輸模式從服務(wù)器設(shè)備接收數(shù)據(jù)流的客戶端設(shè)備,該客戶端設(shè)備包括以下裝置:用于獲得用于訂閱多播組(稱為目標多播組)的第一請求的裝置,所述多播組允許獲得數(shù)據(jù)流;用于利用多個第二訂閱請求替換用于訂閱目標多播組的第一請求的裝置,每個第二訂閱請求與多播子組的集合中的多播子組相關(guān)聯(lián),每個多播子組允許獲得形成數(shù)據(jù)流的子部分的數(shù)據(jù)子流,所有多播子組允許通過組合數(shù)據(jù)子流來獲得所述數(shù)據(jù)流;用于將網(wǎng)絡(luò)接口與每個第二訂閱請求相關(guān)聯(lián)的裝置,每個相關(guān)聯(lián)的網(wǎng)絡(luò)接口從將服務(wù)器設(shè)備連接到客戶端設(shè)備并在客戶端設(shè)備上可用的網(wǎng)絡(luò)接口的集合中獲??;用于在與所述第二請求相關(guān)聯(lián)的網(wǎng)絡(luò)接口上向服務(wù)器設(shè)備發(fā)送每個第二訂閱請求的裝置;用于接收與所發(fā)送的第二訂閱對應(yīng)的數(shù)據(jù)子流的裝置,所接收的每個數(shù)據(jù)子流通過發(fā)送與所述數(shù)據(jù)子流相關(guān)聯(lián)的第二訂閱請求的網(wǎng)絡(luò)接口被接收到;用于使用所接收到的數(shù)據(jù)子流來重構(gòu)數(shù)據(jù)流以便能夠使用所述數(shù)據(jù)流的裝置。
根據(jù)本發(fā)明的第三方面,本發(fā)明涉及一種能夠以多播傳輸模式向客戶端設(shè)備發(fā)送數(shù)據(jù)流的服務(wù)器設(shè)備,該服務(wù)器設(shè)備包括以下裝置:接收裝置,接收裝置用于接收與由客戶端設(shè)備發(fā)送的、替換用于訂閱由客戶端設(shè)備獲得的目標多播組的第一請求的多個第二訂閱請求對應(yīng)的多個第二訂閱請求,所述目標多播組允許獲取數(shù)據(jù)流,每個第二訂閱請求與多播子組的集合中的多播子組相關(guān)聯(lián),每個多播組允許獲得形成數(shù)據(jù)流的子部分的數(shù)據(jù)子流,所有多播子組允許通過組合所述數(shù)據(jù)子流獲得所述數(shù)據(jù)流;分配裝置,所述分配裝置用于將所述數(shù)據(jù)流的數(shù)據(jù)分配在所述數(shù)據(jù)子流中;發(fā)送裝置(desmoyensdetransmission),所述發(fā)送裝置用于通過與用于接收第二訂閱請求的接口對應(yīng)的網(wǎng)絡(luò)接口發(fā)送每個數(shù)據(jù)子流,所述第二訂閱請求與和所述數(shù)據(jù)子流對應(yīng)的多播子組相關(guān)聯(lián)。
根據(jù)本發(fā)明的第四方面,本發(fā)明涉及一種通信系統(tǒng),該通信系統(tǒng)包括根據(jù)第三方面的服務(wù)器設(shè)備以及至少一個根據(jù)第二方面的客戶端設(shè)備。
根據(jù)本發(fā)明的第五方面,本發(fā)明涉及一種計算機程序,該計算機程序包含用于當所述程序由服務(wù)器設(shè)備或客戶端設(shè)備的處理器執(zhí)行時由所述客戶端設(shè)備或所述服務(wù)器設(shè)備實現(xiàn)根據(jù)第一方面的方法的指令。
根據(jù)本發(fā)明的第六方面,本發(fā)明涉及存儲裝置,該存儲裝置存儲計算機程序,該計算機程序包含用于當所述程序由服務(wù)器設(shè)備或客戶端設(shè)備的處理器執(zhí)行時由所述客戶端設(shè)備或所述服務(wù)器設(shè)備實現(xiàn)根據(jù)第一方面的方法的指令。
上述本發(fā)明的特征(以及其它特征)將通過閱讀下面的示例實施方式的描述而更清晰地呈現(xiàn),結(jié)合附圖給出所述描述,其中:
-圖1a示意性地示出了在服務(wù)器設(shè)備與客戶端設(shè)備之間實現(xiàn)多播通信模式的第一示例;
-圖1b示意性地示出了在服務(wù)器設(shè)備與客戶端設(shè)備之間實現(xiàn)多播通信模式的第二示例;
-圖1c示意性地示出了當客戶端設(shè)備具有將客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口時的多播通信模式的限制;
-圖1d示意性地示出了當客戶端設(shè)備具有將客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口時的本發(fā)明的實現(xiàn);
-圖2a示意性地示出了實現(xiàn)本發(fā)明的客戶端設(shè)備的硬件架構(gòu)的示例;
-圖2b示意性地示出了實現(xiàn)本發(fā)明的服務(wù)器設(shè)備的硬件架構(gòu)的示例;
-圖3示意性地示出了在多播通信的背景下由客戶端設(shè)備實現(xiàn)的方法的第一示例,所述方法允許從將該客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口受益;
-圖4示意性地示出了在多播通信的背景下由客戶端設(shè)備實現(xiàn)的方法的第二示例,所述方法允許從將該客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口受益;
-圖5示意性地示出了在出現(xiàn)將客戶端設(shè)備連接到服務(wù)器設(shè)備的新的網(wǎng)絡(luò)接口時由客戶端設(shè)備實現(xiàn)的方法的示例;
-圖6示意性地示出了在將客戶端設(shè)備連接到服務(wù)器設(shè)備的現(xiàn)有網(wǎng)絡(luò)接口消失時由客戶端設(shè)備實現(xiàn)的方法的示例;
-圖7示意性地示出了由服務(wù)器設(shè)備實現(xiàn)的方法,該方法允許將與多播流對應(yīng)的多播子流發(fā)送到至少一個客戶端設(shè)備;
-圖8示意性地示出了由客戶端設(shè)備實現(xiàn)的方法的示例,該方法允許在表示多播組的信息的集合中尋找表示某一多播組的信息;
-圖9示意性地示出了允許獲得服務(wù)器可以提供的多播組的描述的請求的示例;
-圖10示意性地示出了請求的示例,所述請求使得服務(wù)器設(shè)備能夠提供表示可由所述服務(wù)器設(shè)備在相應(yīng)的多播組中傳遞的每個數(shù)據(jù)流的信息;以及
-圖11、圖12和圖13示意性地示出了請求的選項的示例,所述請求使得服務(wù)器設(shè)備能夠提供表示可由所述服務(wù)器設(shè)備在相應(yīng)的多播組中傳遞的每個數(shù)據(jù)流的信息。
圖1d示意性地示出了當客戶端設(shè)備103、104和105具有將每個客戶端設(shè)備103、104和105連接到服務(wù)器設(shè)備101的多個網(wǎng)絡(luò)接口時的本發(fā)明的實現(xiàn)。該示例重復圖1c中的情況,其中每個客戶端103、104和105具有連接到服務(wù)器101的兩個網(wǎng)絡(luò)接口。我們在這里假設(shè)每個客戶端103、104和105是因特網(wǎng)網(wǎng)關(guān),每個因特網(wǎng)網(wǎng)關(guān)已經(jīng)從位于其局部網(wǎng)絡(luò)中的終端客戶端接收到訂閱允許獲得數(shù)據(jù)流的相同多播組(被稱為目標多播組)的第一請求。在本發(fā)明的背景下,根據(jù)隨后描述的方法,每個客戶端103、104和105用兩個第二訂閱請求替換用于訂閱目標多播組的第一請求。每個第二訂閱請求與多播子組的集合中的多播子組相關(guān)聯(lián)。每個多播子組使得能夠獲得形成數(shù)據(jù)流的子部分的數(shù)據(jù)子流,所有多播子組允許通過組合數(shù)據(jù)子流來獲得所述數(shù)據(jù)流。每個客戶端103、104和105接下來向第一網(wǎng)絡(luò)接口(例如,在通信路徑106/107、106/108和106/109上)發(fā)送第一第二訂閱請求,并在第二網(wǎng)絡(luò)接口上(例如,在通信路徑110/112、110/113、110/114上)發(fā)送第二訂閱請求。當它們接收到第二訂閱請求時,如果沒有連接到路由器102和111的客戶端尚不是子組中的一個子組的訂戶,則路由器102和111各自向服務(wù)器101發(fā)送與他們已接收到的第二訂閱請求對應(yīng)的第二訂閱請求。在接收到這些第二訂閱請求之后,服務(wù)器101開始第一數(shù)據(jù)子流到客戶端103、104和105的第一網(wǎng)絡(luò)接口的傳輸以及第二數(shù)據(jù)子流到客戶端103、104和105的第二網(wǎng)絡(luò)接口的傳輸。每個客戶端103、104和105接下來從其接收到的數(shù)據(jù)子流重構(gòu)數(shù)據(jù)流,并將重構(gòu)的數(shù)據(jù)流重傳到位于其局部網(wǎng)絡(luò)中的其各自的終端客戶端。因此,每個客戶端103、104和105從使用對其可用的網(wǎng)絡(luò)接口中的每一個獲益。例如,客戶端103受益于用于接收數(shù)據(jù)流的路徑106/107和110/112的總帶寬。
在下文中,在服務(wù)器和客戶端之間的多播傳輸?shù)谋尘跋旅枋霰景l(fā)明,其中,客戶端是因特網(wǎng)網(wǎng)關(guān),其接收用于訂閱位于該因特網(wǎng)網(wǎng)關(guān)的局部網(wǎng)絡(luò)中的終端客戶端的多播組的請求。然而,本發(fā)明可以在終端客戶端(諸如,計算機、智能電話、觸摸平板等)中以相同的方式實現(xiàn)。在后一種情況下,終端客戶端不向利用多個第二訂閱請求替換第一訂閱請求的中間客戶端發(fā)送用于訂閱多播組的該第一請求,所述中間客戶端而是所述終端客戶端本身以多個第二訂閱請求替換第一訂閱請求。
此外,我們將在這里考慮用于以多播模式傳輸電視數(shù)據(jù)流的應(yīng)用。然而,可以設(shè)想其它數(shù)據(jù)流(諸如,例如,無線電數(shù)據(jù)流)。
圖2a示意性地示出了實現(xiàn)本發(fā)明的客戶端設(shè)備的硬件架構(gòu)的示例。這里我們以客戶端103為例??蛻舳?03然后包括(通過通信總線210連接的):處理器或cpu(中央處理單元)200;隨機存取存儲器(ram)201;只讀存儲器(rom)202;諸如sd(安全數(shù)字)卡讀取器203的存儲單元或存儲介質(zhì)讀取器;連接接口的集合204,所述連接接口用于將客戶端103連接到用于例如與服務(wù)器101通信的一個或更多個擴展網(wǎng)絡(luò)(wan,廣域網(wǎng))(例如,因特網(wǎng))或者連接到用于例如與終端客戶端通信的局部網(wǎng)絡(luò)。
處理器200能夠執(zhí)行從rom202、從外部存儲器(未示出)、從諸如sd卡的存儲介質(zhì)或者從通信網(wǎng)絡(luò)加載到ram201中的指令。當客戶端103被上電時,處理器200能夠從ram201讀取指令并執(zhí)行所述指令。這些指令形成計算機程序,該計算機程序使得通過處理器200實現(xiàn)下面結(jié)合圖3、圖4、圖5、圖6和圖8描述的方法中的全部或一些。
圖2b示意性地示出了實現(xiàn)本發(fā)明的服務(wù)器設(shè)備的硬件架構(gòu)的示例。這里我們以服務(wù)器101為例。服務(wù)器101然后包括(通過通信總線250連接的):處理器或cpu(中央處理單元)240;隨機存取存儲器(ram)241;只讀存儲器(rom)242;諸如sd(安全數(shù)字)卡讀取器243的存儲單元或存儲介質(zhì)讀取器;連接接口的集合244,所述連接接口用于將服務(wù)器101連接到一個或更多個擴展網(wǎng)絡(luò)(wan),以便例如與客戶端103、104和105進行通信。
處理器250能夠執(zhí)行從rom242、從外部存儲器(未示出)、從諸如sd卡的存儲介質(zhì)或者從通信網(wǎng)絡(luò)加載到ram241中的指令。當服務(wù)器101被上電時,處理器240能夠從ram241讀取指令并執(zhí)行所述指令。這些指令形成計算機程序,該計算機程序使得通過處理器240實現(xiàn)下面結(jié)合圖7描述的方法中的全部或一些。
下面結(jié)合圖3、圖4、圖5、圖6、圖7和圖8描述的算法的全部或部分可以通過由諸如dsp(數(shù)字信號處理器)或者微控制器的可編程機器執(zhí)行一組指令來以軟件的形式實現(xiàn),或者通過機器或?qū)S媒M件(諸如,fpga(現(xiàn)場可編程門陣列)或asic(專用集成電路))來以硬件的形式實現(xiàn)。
圖3示意性地示出了在多播通信的背景下由客戶端設(shè)備實現(xiàn)的方法的第一示例,所述方法允許從將該客戶端設(shè)備連接到服務(wù)器設(shè)備的多個網(wǎng)絡(luò)接口受益。我們在這里重復結(jié)合圖1d描述的示例,服務(wù)器是服務(wù)器101,客戶端是客戶端103。
在步驟301中,客戶端103獲得用于訂閱多播組(被稱為目標多播組)的第一請求,所述多播組允許獲得數(shù)據(jù)流。該訂閱請求例如已由連接到客戶端103的局部網(wǎng)絡(luò)的終端客戶端發(fā)送到客戶端103。在圖3中的示例中,用于訂閱多播組的請求的目的是將終端客戶端訂閱到允許接收與電視頻道對應(yīng)的電視數(shù)據(jù)流的多播組。
在步驟304中,客戶端103利用多個第二訂閱請求替換用于訂閱目標多播組的第一請求。每個第二訂閱請求與多播子組的集合中的多播子組相關(guān)聯(lián)。每個多播子組允許獲得形成數(shù)據(jù)流的子部分的數(shù)據(jù)子流,所有多播子組允許通過組合數(shù)據(jù)子流來獲得所述數(shù)據(jù)流。在圖3中的示例中,假設(shè)客戶端103具有對局部網(wǎng)絡(luò)中包括的終端客戶端可以訂閱的所有多播組的描述。該描述將多播組的每個地址與多播子組的多個地址相匹配。多播子組的每多個地址使得能夠訂閱允許獲得數(shù)據(jù)子流的多播子組,通過組合所述數(shù)據(jù)子流允許重構(gòu)通過訂閱目標多播組獲得的數(shù)據(jù)流。
在步驟305中,客戶端103將網(wǎng)絡(luò)接口與每個第二訂閱請求相關(guān)聯(lián)。在一個實施方式中,客戶端103具有網(wǎng)絡(luò)接口的集合,該網(wǎng)絡(luò)接口的集合包括足以使每個第二訂閱請求與不同網(wǎng)絡(luò)接口相關(guān)聯(lián)的多個網(wǎng)絡(luò)接口。
在步驟306中,客戶端103通過與第二請求相關(guān)聯(lián)的網(wǎng)絡(luò)接口向服務(wù)器101發(fā)送所述每個第二訂閱請求。通過經(jīng)由給定的網(wǎng)絡(luò)接口發(fā)送第二訂閱請求,確保了將在該給定網(wǎng)絡(luò)接口上接收與該第二訂閱請求對應(yīng)的數(shù)據(jù)子流。
在步驟307中,客戶端103接收與所發(fā)送的第二訂閱請求對應(yīng)的數(shù)據(jù)子流,所接收的每個數(shù)據(jù)子流通過發(fā)送與所述數(shù)據(jù)子流相關(guān)聯(lián)的第二訂閱請求的網(wǎng)絡(luò)接口被接收到。在一個實施方式中,針對其發(fā)送了第二訂閱請求的所有數(shù)據(jù)子流被系統(tǒng)地接收到。
在步驟308中,客戶端103從所接收到的數(shù)據(jù)子流重構(gòu)數(shù)據(jù)流。在一個實施方式中,在其傳輸期間,每個數(shù)據(jù)子流被封裝在各自包括序列號信息和時間指示符的數(shù)據(jù)分組(諸如,例如,與rtp協(xié)議(實時傳輸協(xié)議,rfc1889)兼容的分組)中。包含序列號信息和時間指示符的分組的使用使得能夠?qū)λ邮盏降拿總€數(shù)據(jù)子流的數(shù)據(jù)分組進行重新排序,以便重構(gòu)數(shù)據(jù)流。
在步驟309期間,客戶端103將數(shù)據(jù)流發(fā)送到使用它的終端客戶端。在用于發(fā)送電視數(shù)據(jù)的應(yīng)用的情況下,終端客戶端對電視數(shù)據(jù)流進行解碼以便顯示電視頻道。
在一個實施方式中,包括在客戶端103的局部網(wǎng)絡(luò)中的終端客戶端可以訂閱的所有多播組的描述包括:(針對每個數(shù)據(jù)流)表示數(shù)據(jù)流的傳輸速率的信息;以及(針對每個數(shù)據(jù)子流)關(guān)于數(shù)據(jù)子流的傳輸速率的信息。此外,客戶端103能夠估計其具有的每個網(wǎng)絡(luò)接口上可用的帶寬。在該實施方式中,在步驟304期間,在進行利用第二訂閱請求替換第一訂閱請求之前,客戶端103將與目標多播組對應(yīng)的數(shù)據(jù)流的傳輸速率與客戶端103上可用的網(wǎng)絡(luò)接口上可用帶寬的總和進行比較。僅當數(shù)據(jù)流的傳輸速率小于或等于帶寬的總和時才執(zhí)行替換。如果數(shù)據(jù)流的傳輸速率大于帶寬的總和,則放棄對多播組使用的訂閱,并且客戶端103不實現(xiàn)步驟305至309。
如果數(shù)據(jù)流的傳輸速率小于帶寬的總和,則在步驟305期間,在將第二訂閱請求與網(wǎng)絡(luò)接口相關(guān)聯(lián)之前,客戶端103檢查和與所述接口相關(guān)聯(lián)的第二訂閱請求對應(yīng)的子流的傳輸速率的總和是否小于所述網(wǎng)絡(luò)接口上可用的帶寬。如果第二訂閱請求中的至少一個不能與客戶端103上可用的網(wǎng)絡(luò)接口中的一個相關(guān)聯(lián),則客戶端103放棄對多播子組的訂閱,并且不實現(xiàn)步驟306至309。
在一個實施方式中,客戶端103具有的網(wǎng)絡(luò)接口的數(shù)量小于多播子組的數(shù)量,所述多播子組包括在與目標多播組對應(yīng)的多播子組的集合中。在這種情況下,一些網(wǎng)絡(luò)接口與多個第二訂閱請求相關(guān)聯(lián)。
在一個實施方式中,與由客戶端103發(fā)送的第二訂閱請求對應(yīng)的某些數(shù)據(jù)子流未被接收到。在這種情況下,客戶端103從其接收到的數(shù)據(jù)子流重構(gòu)數(shù)據(jù)流。在一個實施方式中,客戶端103利用其所接收到的、在時間上最接近丟失的分組的流的數(shù)據(jù)分組替換其尚未接收到的子流的數(shù)據(jù)分組。在另一個實施方式中,客戶端103不嘗試替換其尚未接收到的流的數(shù)據(jù)分組,并且認為可以使用錯誤隱藏方法通過終端客戶端掩蔽與這些數(shù)據(jù)分組對應(yīng)的每個數(shù)據(jù)丟失。
在一個實施方式中,當其被上電時,客戶端103不具有對包括在其局部網(wǎng)絡(luò)中的終端客戶端可以訂閱的所有多播組的描述。然后有必要從服務(wù)器101獲得它。然后,客戶端103可以例如通過在服務(wù)器101的url(統(tǒng)一資源定位符)地址上發(fā)送http(超文本傳輸協(xié)議)請求來獲得該描述。作為響應(yīng),服務(wù)器101例如以文本、html(超文本標記語言)或xml(可擴展標記語言)發(fā)送該描述。在下文中將結(jié)合圖4的步驟302以及圖3至圖13來看使得客戶端103能夠基于igmp協(xié)議恢復描述的第二方法。
圖4示意性地示出了在多播通信的背景下由客戶端設(shè)備103使用的方法的第二示例,所述方法允許從將客戶端設(shè)備103連接到服務(wù)器設(shè)備101的多個網(wǎng)絡(luò)接口受益。該方法重復結(jié)合圖3描述的方法的步驟301、304、305、306、308和309,并添加了其它步驟。
該方法從結(jié)合圖3描述的步驟301開始。
在步驟302中,客戶端103在表示多播組的信息的集合中尋找表示目標多播組的信息。在下文中結(jié)合圖8至圖13詳細描述步驟302。
在步驟303中,客戶端103檢查表示所述目標多播組的信息是否位于表示多播組的信息的集合中,并且檢查在表示目標組的信息中,目標多播組的地址是否與多播子組的多個地址匹配。
如果表示所述多播組的信息位于表示多播組的信息的集合中,并且目標組的多播地址與多播子組的多個地址相匹配,則客戶端103認為目標多播組適合于使用客戶端103上可用的所有網(wǎng)絡(luò)接口的傳輸。在這種情況下,客戶端103實現(xiàn)已經(jīng)結(jié)合圖3說明的步驟304至306。
在步驟3070中,客戶端103檢查客戶端103是否接收到與由客戶端103發(fā)送的第二訂閱請求對應(yīng)的所有數(shù)據(jù)子流。如果是這種情況,則客戶端103實現(xiàn)已經(jīng)說明的步驟308和309。
如果與由客戶端103發(fā)送的第二請求對應(yīng)的至少一個數(shù)據(jù)子流未被客戶端103接收到,則在步驟310中,客戶端103向服務(wù)器101發(fā)送針對每個多播子組(針對其已發(fā)送第二訂閱請求)的取消訂閱請求。
在步驟303期間,如果表示所述目標多播組的信息位于表示多播組的信息的集合中,但目標組的多播地址與多播子組的多個地址不匹配,則客戶端103認為目標多播組不適合使用客戶端上可用的所有網(wǎng)絡(luò)接口的傳輸。在這種情況下,步驟303之后是步驟311,在步驟311期間,向服務(wù)器101發(fā)送用于訂閱多播組的第一請求。
在步驟312中,客戶端103檢查與目標多播組對應(yīng)的數(shù)據(jù)流是否被接收到。
如果所述數(shù)據(jù)流被接收到,則客戶端103繼續(xù)步驟309。如果所述數(shù)據(jù)流未被接收到,則客戶端103從目標多播組取消訂閱。
在步驟303期間,如果表示所述多播組的信息不位于表示多播組的信息的集合中,則客戶端103放棄訂閱目標多播組的嘗試。
圖8示意性地示出了由客戶端103設(shè)備實現(xiàn)的方法的示例,該方法允許在表示多播組的信息的集合中尋找表示某一多播組的信息。結(jié)合圖8描述的方法詳細描述了步驟302的實現(xiàn)。這里假設(shè)客戶端103在被上電時不具有包括在客戶端103的局部網(wǎng)絡(luò)中的終端客戶端可以訂閱的所有多播組的描述,并因此,有必要從服務(wù)器101獲得該描述。
在步驟3021中,客戶端103通過其所有可用的網(wǎng)絡(luò)接口發(fā)送與igmp協(xié)議兼容的請求(稱為getcaps請求)。在圖1c和圖1d的背景下,getcaps請求旨在從服務(wù)器101獲得描述,服務(wù)器101是唯一可用的服務(wù)器。在另一個實施方式中,如果多個服務(wù)器可用,則getcaps請求旨在針對每個服務(wù)器,每個服務(wù)器能夠響應(yīng)于通過發(fā)送包括在客戶端103的局部網(wǎng)絡(luò)中的終端客戶端可以訂閱的多播組的描述接收到的getcaps請求。
圖9示意性地示出了允許獲得服務(wù)器可以提供的多播組的描述的getcaps請求的示例。getcaps請求包括:“type”字段91,例如十六進制等于0x30,其允許識別getcaps請求;“maxrespcode”字段92,其允許指示分配用于從服務(wù)器獲得響應(yīng)的最大時間;以及“checksum”字段93,其包括允許檢測getcaps請求中的錯誤的糾錯碼。“maxrespcode”字段提供例如以十分之一秒表示的時間指示。在接收到getcaps請求后,接收getcaps請求的服務(wù)器必須在等于“maxrespcode”字段的值的時間內(nèi)進行響應(yīng)。
在步驟3022中,服務(wù)器101對其已經(jīng)接收到的getcaps請求進行響應(yīng)。為此,當客戶端訂閱與數(shù)據(jù)流對應(yīng)的多播組時,服務(wù)器101發(fā)送提供表示可由服務(wù)器101傳遞的每個數(shù)據(jù)流的信息的igmp請求(稱為sendcaps請求)。
圖10示意性地示出了sendcaps請求的示例,所述sendcaps請求使得服務(wù)器設(shè)備能夠提供表示可由所述服務(wù)器設(shè)備在相應(yīng)的多播組中傳遞的每個數(shù)據(jù)流的信息。
sendcaps請求包括“type”字段1010,例如以十六進制等于值“0x31”,該字段1010允許識別sendcaps請求。sendcaps請求還包括保留字段“reserved”1020和“checksum”字段1030,所述“checksum”字段1030允許檢測sendcaps請求中的錯誤的糾錯碼?!癱hecksum”字段之后是“ttl”(離開時間)字段1040,所述“ttl”字段1040允許向客戶端指示包含在sendcaps請求中的信息的有效期?!皌tl”字段之后是至少一個可選字段1050。
可以通過sendcaps請求傳送幾種類型的可選字段1050。在用于廣播電視數(shù)據(jù)流的應(yīng)用中,結(jié)合圖11描述的第一可選字段1050允許提供關(guān)于交付電視數(shù)據(jù)流的運營商的信息??蛇x字段1050因此包括“optiontype”字段1051,例如等于值“1”,其指示可選字段1050給出關(guān)于運營商的信息。在“optiontype”字段1051之后,可選字段1050包括“l(fā)ength”字段1052,其指示接著的指示運營商的名稱的“name”字段1053的字節(jié)長度。
結(jié)合圖12描述的第二可選字段1050允許描述電視數(shù)據(jù)流。結(jié)合圖12描述的可選字段1050包括“optiontype”字段1051,例如等于值“5”,其指示可選字段1050給出關(guān)于數(shù)據(jù)流的信息。在“optiontype”字段1051之后,可選字段1050包括“l(fā)ength”字段1052,其指示接著的“channelcode”1054、“channelname”1055、“streamtransmissionrate”1056和“groupaddress“1057字段的字節(jié)總長度。“channelcode”字段1054給出分配給與電視數(shù)據(jù)流對應(yīng)的電視頻道的代碼。“channelname”字段1055給出與由“channelcode”字段指示的電視頻道的名稱對應(yīng)的名稱?!皊treamtransmissionrate”字段1056指示數(shù)據(jù)流的傳輸速率。“groupaddress”字段1057指示允許訂閱與數(shù)據(jù)流對應(yīng)的多播組的多播地址。
結(jié)合圖13描述的第三可選字段1050使得能夠給出關(guān)于與數(shù)據(jù)流對應(yīng)的數(shù)據(jù)子流的信息。結(jié)合圖13描述的可選字段因此允許在多播組與對應(yīng)于該多播組的多播子組之間建立鏈路。結(jié)合圖13描述的可選字段1050包括“optiontype”字段1051,例如等于值“6”,其指示可選字段1051給出關(guān)于與數(shù)據(jù)流對應(yīng)的數(shù)據(jù)子流的信息。在“optiontype”字段1051之后,可選字段1050包括指示接著的字段(“channelcode”字段1055,“subgroupaddress”字段1058和“sub-streamtransmissionrate”字段1059)的字節(jié)總長度的“l(fā)ength”字段1052,結(jié)合圖13描述的可選字段包含多個連續(xù)的“subgroupaddress”1058和“sub-streamtransmissionrate”1059字段對。“subgroupaddress”1058和“sub-streamtransmissionrate”1059字段具有固定大小?!皊ubgroupaddress”字段1058給出與數(shù)據(jù)子流對應(yīng)的多播子組的地址?!皊ub-streamtransmissionrate”字段指示數(shù)據(jù)子流的傳輸速率?!癱hannelcode”字段1055的存在允許在結(jié)合圖12描述的可選字段1050中描述的數(shù)據(jù)流與結(jié)合圖13描述的可選字段1050中描述的數(shù)據(jù)子流之間建立鏈接。
在某些情況下,在通過網(wǎng)絡(luò)接口發(fā)送getcaps請求之后不會接收到sendcaps請求。該網(wǎng)絡(luò)接口可以例如連接到不是客戶端103針對其具有訂閱的運營商的第三方運營商的第三方網(wǎng)絡(luò)。在下文中,客戶端103針對其具有描述的運營商稱為主運營商。在一個實施方式中,為了能夠使用第三方網(wǎng)絡(luò),使用結(jié)合圖11描述的第一可選字段1050的變型。該變型使得服務(wù)器101能夠向客戶端103提供關(guān)于主運營商的可從第三方網(wǎng)絡(luò)訪問并使得客戶端103能夠與服務(wù)器101進行通信的網(wǎng)絡(luò)單元的信息。在結(jié)合圖11描述的選項1050的該變型中,字段“optiontype”1051獲取指示可選字段1050通過第三方網(wǎng)絡(luò)提供允許與服務(wù)器101進行通信的信息的值。例如,“optiontype”字段取值“2”?!發(fā)ength”字段1052指示接著的字段“name”1053的字節(jié)長度。字段“name”1053指示允許指定主運營商的可通過第三方網(wǎng)絡(luò)訪問的網(wǎng)絡(luò)單元的絕對地址的完全合格域名(fqdn)。然后,通過連接到第三方網(wǎng)絡(luò)的網(wǎng)絡(luò)接口發(fā)送的客戶端103的每個請求被發(fā)送到在“name”字段1053中指定的主運營商的網(wǎng)絡(luò)單元,該網(wǎng)絡(luò)單元將它們重定向到服務(wù)器101。
在步驟3023中,當其接收sendcaps請求時,客戶端103構(gòu)建表示多播組的信息的集合。表示多播組的信息的集合形成對客戶端103的局部網(wǎng)絡(luò)的終端客戶端可以訂閱的多播組的描述。該集合可以例如以表的形式被放置作為輸入的多播組(稱為輸入多播組)的多播地址,并且針對每個輸入多播組提供包括與該輸入多播組對應(yīng)的多播子組的地址以及關(guān)于當接收到sendcaps請求時獲得的多播組的其它信息的描述。
在步驟3024中,客戶端103在已經(jīng)構(gòu)建的表中尋找目標多播組。步驟1024之后是已經(jīng)描述的步驟303。
經(jīng)常地,在根據(jù)多播傳輸模式傳輸數(shù)據(jù)流期間,客戶端的某些接口變得不可用(例如由于通信鏈路中斷),或者變得可用(例如在打開新的通信鏈路之后)。
圖5示意性地示出了當將客戶端設(shè)備103連接到服務(wù)器設(shè)備101的新的網(wǎng)絡(luò)接口出現(xiàn)時由客戶端設(shè)備實現(xiàn)的方法的示例。
在步驟501中,客戶端設(shè)備103檢測將客戶端設(shè)備103連接到服務(wù)器設(shè)備101的新的網(wǎng)絡(luò)接口的打開。
在步驟502中,客戶端設(shè)備103通過向其添加檢測到的新的網(wǎng)絡(luò)接口來增強其可用網(wǎng)絡(luò)接口的集合。在步驟502期間,客戶端103使用新的網(wǎng)絡(luò)接口將該新的網(wǎng)絡(luò)接口與用于訂閱多播子組的至少一個第二請求相關(guān)聯(lián)。
在步驟504中,客戶端103檢查與通過新的網(wǎng)絡(luò)接口發(fā)送的第二請求對應(yīng)的每個數(shù)據(jù)子流是否被接收到。
如果每個數(shù)據(jù)子流都被接收到,則步驟504之后是步驟505。
通過新的網(wǎng)絡(luò)接口發(fā)送的第二訂閱請求與通過不同于該新的網(wǎng)絡(luò)接口的至少一個其它網(wǎng)絡(luò)接口已經(jīng)接收到的數(shù)據(jù)子流對應(yīng)。這是因為在步驟306期間,客戶端103已經(jīng)發(fā)送了對允許重構(gòu)終端客戶端所需的數(shù)據(jù)流的所有數(shù)據(jù)子流的第二訂閱請求。然后,當實現(xiàn)步驟306時,這些第二請求已經(jīng)通過可用的客戶端103的網(wǎng)絡(luò)接口被發(fā)送。為了避免在步驟505期間多次接收相同的數(shù)據(jù)子流,當通過包括新的網(wǎng)絡(luò)接口的多個網(wǎng)絡(luò)接口接收到相同數(shù)據(jù)子流(稱為重復子流)時,客戶端103發(fā)送針對每個多播子組的取消訂閱請求,所述每個多播子組與通過除了新的網(wǎng)絡(luò)接口以外的網(wǎng)絡(luò)接口接收到的重復子流對應(yīng)。為此,客戶端103通過接收重復子流的每個其它接口發(fā)送針對與重復子流對應(yīng)的多播子組的取消訂閱請求。
在步驟505之后,客戶端103實現(xiàn)分別與步驟308和309相同的步驟507和步驟508。
在一個實施方式中,如果在步驟504期間與通過新的網(wǎng)絡(luò)接口發(fā)送的請求對應(yīng)的數(shù)據(jù)子流未被接收到,則步驟504之后是步驟506。在步驟506期間,客戶端發(fā)送針對與通過新的網(wǎng)絡(luò)接口未接收到的數(shù)據(jù)子流對應(yīng)的多播子組的取消訂閱請求,以避免該子流稍后被接收到并因此被重復。
步驟506之后是步驟507和508。
圖6示意性地示出了當將客戶端103連接到服務(wù)器101并且在步驟306期間可用的網(wǎng)絡(luò)接口消失時由客戶端設(shè)備實現(xiàn)的方法的示例。
在步驟601中,客戶端設(shè)備檢測對將客戶端103連接到服務(wù)器101的網(wǎng)絡(luò)接口的抑制。
在步驟602中,客戶端設(shè)備103通過移除被抑制的網(wǎng)絡(luò)接口來縮減其可用網(wǎng)絡(luò)接口的集合。在步驟602期間,客戶端103將先前與被抑制的網(wǎng)絡(luò)接口相關(guān)聯(lián)的每個第二訂閱請求與經(jīng)縮減的網(wǎng)絡(luò)接口的集合中的網(wǎng)絡(luò)接口相關(guān)聯(lián)。
在步驟603中,客戶端103使用經(jīng)縮減的網(wǎng)絡(luò)接口的集合中與每個第二訂閱請求相關(guān)聯(lián)的網(wǎng)絡(luò)接口向服務(wù)器設(shè)備101發(fā)送所述每個第二訂閱請求,所述每個第二訂閱請求先前與被抑制的網(wǎng)絡(luò)接口相關(guān)聯(lián)。
在步驟604中,客戶端103檢查與先前與被抑制的接口相關(guān)聯(lián)的第二請求對應(yīng)的每個子流是否被適當?shù)亟邮盏健?/p>
如果每個子流都被適當?shù)亟邮盏?,則客戶端103實現(xiàn)分別與步驟308和309相同的步驟605和606。
如果至少一個子流未被接收到,則客戶端103實現(xiàn)與步驟310相同的步驟609。
圖7示意性地示出了由服務(wù)器101實現(xiàn)的方法,所述方法允許將與多播流對應(yīng)的多播子流發(fā)送到至少一個客戶端設(shè)備。
在步驟701中,服務(wù)器101通過網(wǎng)絡(luò)接口(被稱為接收接口)接收每個第二訂閱請求。然后,服務(wù)器記憶其接收每個請求的接收接口,并將所述接收接口與請求中指示的多播子組相關(guān)聯(lián)。
在步驟702中,服務(wù)器101將數(shù)據(jù)流的數(shù)據(jù)分組分配在與針對其接收到第二訂閱請求的多播組對應(yīng)的數(shù)據(jù)子流中。在一個實施方式中,服務(wù)器101在分配這些分組時考慮每個數(shù)據(jù)子流的目標傳輸速率。該目標傳輸速率與sendcaps請求中指示的每個子流的傳輸速率對應(yīng)。
在步驟703中,服務(wù)器101通過與對應(yīng)于子流的多播子組相關(guān)聯(lián)的接收接口發(fā)送每個數(shù)據(jù)子流。以這種方式,服務(wù)器101確保該數(shù)據(jù)子流通過客戶端103的用于發(fā)送對應(yīng)于該子流的第二訂閱請求的網(wǎng)絡(luò)接口被接收到。
在圖1c和圖1d的示例中,結(jié)合圖7描述的方法在存在客戶端103、104或105中的至少一個的對與目標多播組對應(yīng)的多播子組的第一訂閱時被實現(xiàn)。在圖7中的示例中,該第一訂閱由客戶端103實現(xiàn)。如果在客戶端103的該第一訂閱之后,客戶端104和105中的至少一個發(fā)起對與目標多播組對應(yīng)的相同多播子組的訂閱過程,則服務(wù)器在這些訂閱中不具有活躍角色。這是因為這些訂閱完全由路由器102和111管理,路由器102和111負責重復用于客戶端104和/或105的數(shù)據(jù)子流的數(shù)據(jù)分組。