專利名稱:發(fā)送裝置、發(fā)送方法以及程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及發(fā)送裝置、發(fā)送方法以及程序。
背景技術(shù):
最近幾年,已經(jīng)公開了用于發(fā)送裝置將相同數(shù)據(jù)發(fā)送到多個(gè)目的地的各種技術(shù)。 作為第一技術(shù),公開了不經(jīng)由虛擬網(wǎng)絡(luò)接口(以下,也稱為“虛擬I/F”)通過單播(imicast) 而多次發(fā)送分組的技術(shù)。例如,在JP-A-2008494717中公開的技術(shù)是用于在網(wǎng)絡(luò)帶中存在瓶頸的情況下通過同時(shí)使用多個(gè)接口來避免瓶頸。另外,作為第二技術(shù),公開了通過使用IP (因特網(wǎng)協(xié)議)多播(multicast)將分組發(fā)送到多個(gè)目的地的技術(shù)。根據(jù)利用IP多播的技術(shù),分組生成處理的次數(shù)可以為1,并且發(fā)送處理的次數(shù)可以為1,因此,降低了 CPU上的負(fù)荷。
發(fā)明內(nèi)容
然而,在不經(jīng)由虛擬I/F通過單播進(jìn)行多次發(fā)送的技術(shù)中,IP分組生成處理要被執(zhí)行與目的地的數(shù)目相同的次數(shù),因此,存在CPU上的負(fù)荷變大的問題。具體地,在 JP-A-2008-294717中公開的技術(shù)中,存在當(dāng)CPU上的負(fù)荷變大時(shí)難以避免瓶頸的問題。在通過使用IP多播向多個(gè)目的地發(fā)送分組的技術(shù)中,存在網(wǎng)絡(luò)支持IP多播的需要以及在經(jīng)由不支持IP多播的網(wǎng)絡(luò)進(jìn)行通信的情況下難以使用IP多播的問題。另外,由于要發(fā)送的所有分組都是多播,所以存在難以選擇性地重新發(fā)送(retransmit)分組的問題。鑒于以上,希望提供新穎并改進(jìn)的技術(shù)無論網(wǎng)絡(luò)的類型如何,當(dāng)發(fā)送裝置經(jīng)由網(wǎng)絡(luò)向多個(gè)目的地發(fā)送分組時(shí),其可以降低發(fā)送裝置的CPU上的負(fù)荷。根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種發(fā)送裝置,包括虛擬接口控制部分,其輸出要發(fā)送的數(shù)據(jù);分組生成處理部分,其生成包含該數(shù)據(jù)的分組;存儲(chǔ)部分,其存儲(chǔ)該分組的多個(gè)目的地;虛擬接口,其對(duì)多個(gè)目的地依次進(jìn)行重寫由存儲(chǔ)在所述存儲(chǔ)部分中的多個(gè)目的地之一在所述分組生成處理部分所生成的分組中所設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及實(shí)際接口,每次從所述虛擬接口輸出分組時(shí),該實(shí)際接口將該分組發(fā)送到在該分組中所設(shè)置的目的地。該虛擬接口控制部分可以生成用于發(fā)送的套接,并且可以經(jīng)由所生成的用于發(fā)送的套接向改虛擬接口輸出該分組。該發(fā)送裝置還可以包括實(shí)際接口控制部分,其為存儲(chǔ)在所述存儲(chǔ)部分中的每個(gè)目的地生成用于接收的套接,并且當(dāng)使用所生成的用于接收的套接經(jīng)由所述實(shí)際接口接收到指示已經(jīng)發(fā)生分組發(fā)送中的錯(cuò)誤的響應(yīng)時(shí),該實(shí)際接口控制部分向所述虛擬接口控制部分輸出目的地刪除請(qǐng)求,該目的地刪除請(qǐng)求指示從存儲(chǔ)在所述存儲(chǔ)部分中的目的地中刪除與已經(jīng)接收到響應(yīng)的用于接收的套接對(duì)應(yīng)的目的地。當(dāng)從所述實(shí)際接口控制部分輸出所述目的地刪除請(qǐng)求時(shí),所述虛擬接口控制部分可以向所述虛擬接口輸出指示從存儲(chǔ)在所述存儲(chǔ)部分中的目的地中刪除該目的地的目的地刪除請(qǐng)求。當(dāng)從所述虛擬接口控制部分輸出所述目的地刪除請(qǐng)求時(shí),所述虛擬接口可以從存儲(chǔ)在所述存儲(chǔ)部分中的目的地中刪除該目的地。該發(fā)送裝置還可以包括實(shí)際接口控制部分,其對(duì)于存儲(chǔ)在所述存儲(chǔ)部分中的每個(gè)目的地生成用于重新發(fā)送的套接,當(dāng)使用所生成的用于重新發(fā)送的套接經(jīng)由所述實(shí)際接口接收到指示已經(jīng)發(fā)生分組丟失的響應(yīng)時(shí),該實(shí)際接口控制部分向與已經(jīng)接收該響應(yīng)的用于重新發(fā)送的套接對(duì)應(yīng)的目的地重新發(fā)送丟失的分組。此外,根據(jù)本發(fā)明的另一實(shí)施例,還提供了一種發(fā)送方法,所述發(fā)送方法包括下列步驟存儲(chǔ)分組的多個(gè)目的地;輸出要發(fā)送的數(shù)據(jù);生成包含該數(shù)據(jù)的分組;對(duì)于多個(gè)目的地依次進(jìn)行重寫由存儲(chǔ)在存儲(chǔ)部分中的多個(gè)目的地之一在分組生成處理部分所生成的分組中設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及每次輸出分組時(shí),將該分組發(fā)送到在該分組中所設(shè)置的目的地。此外,根據(jù)本發(fā)明的另一實(shí)施例,提供了一種用于致使計(jì)算機(jī)起發(fā)送裝置的作用的程序,所述發(fā)送裝置包括虛擬接口控制部分,其輸出要發(fā)送的數(shù)據(jù);分組生成處理部分,其生成包含該數(shù)據(jù)的分組;存儲(chǔ)部分,其存儲(chǔ)該分組的多個(gè)目的地;虛擬接口,其對(duì)多個(gè)目的地依次進(jìn)行重寫由存儲(chǔ)在所述存儲(chǔ)部分中的多個(gè)目的地之一在所述分組生成處理部分所生成的分組中所設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及實(shí)際接口,每次從所述虛擬接口輸出分組時(shí),該實(shí)際接口將該分組發(fā)送到在該分組中所設(shè)置的目的地。根據(jù)上述本發(fā)明的實(shí)施例,當(dāng)發(fā)送裝置經(jīng)由網(wǎng)絡(luò)向多個(gè)目的地發(fā)送分組時(shí),不管網(wǎng)絡(luò)的類型如何,可以降低發(fā)送裝置的CPU上的負(fù)荷。
圖1是示出根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置的功能配置的圖;圖2是示出不使用虛擬I/F向多個(gè)目的地發(fā)送相同數(shù)據(jù)的處理的流程的流程圖;圖3是示出通過使用虛擬I/F向多個(gè)目的地發(fā)送相同數(shù)據(jù)的處理的流程的流程圖;圖4是示出根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置的操作的具體示例的圖;圖5示出根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置所執(zhí)行的添加目的地的序列;圖6是示出當(dāng)根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置接收ICMP錯(cuò)誤時(shí)的操作示例的圖;圖7是將圖6中所示的處理表示為序列圖的圖;圖8是示出當(dāng)根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置被應(yīng)用于RTP/RTCP流時(shí)的選擇性重新發(fā)送示例的圖;圖9是將圖8中所示的處理表示為序列圖的圖;圖10示出虛擬I/F所執(zhí)行的處理的流程圖;以及圖11是在根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置被應(yīng)用于TCP通信的情況下的示意圖。
具體實(shí)施例方式以下,將參照附圖詳細(xì)描述本發(fā)明的優(yōu)選實(shí)施例。注意,在本說明書與附圖中,將使用相同的參考數(shù)字來表示具有基本相同功能與結(jié)構(gòu)的結(jié)構(gòu)元件,并且省略對(duì)這些結(jié)構(gòu)元件的重復(fù)說明。
另外,以下,將按以下順序描述“具體實(shí)施方式
”。
1.實(shí)施例
1-1.發(fā)送裝置概述
1-2.發(fā)送裝置的功能配置
1-3.不使用虛擬I/F的情況
1-4.使用虛擬I/F的情況
1-5.發(fā)送裝置的操作的具體示例
1-6.發(fā)送裝置進(jìn)行的添加目的地的序列
1-7.當(dāng)發(fā)送裝置接收ICMP錯(cuò)誤時(shí)的操作示例
1-8.當(dāng)進(jìn)行RTP數(shù)據(jù)發(fā)送時(shí)的選擇性重新發(fā)送的示例
1-9.虛擬I/F執(zhí)行的處理
1-10.將發(fā)送裝置應(yīng)用于TCP通信的情況
2.修改示例
3 ·總結(jié)
<1.實(shí)施例>
[1-1.發(fā)送裝置概述]
將描述根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置。當(dāng)向多個(gè)目的地發(fā)送相同數(shù)據(jù)時(shí),根據(jù)本
發(fā)明實(shí)施例的發(fā)送裝置經(jīng)由用于多點(diǎn)發(fā)送的虛擬網(wǎng)絡(luò)接口(以下,也稱為“虛擬I/F 120”) 發(fā)送數(shù)據(jù),從而降低導(dǎo)致瓶頸的IP分組生成處理的次數(shù),并且降低發(fā)送裝置的CPU上的負(fù)荷。要發(fā)送的數(shù)據(jù)是但不被特別限制為視頻流等。此外,發(fā)送裝置的虛擬I/F 120可以通過在根據(jù)設(shè)置的目的地信息重寫分組的IP 頭標(biāo)和傳輸頭標(biāo)的同時(shí)將該分組傳遞到實(shí)際網(wǎng)絡(luò)接口(以下,也稱為“實(shí)際I/F 130”)來實(shí)現(xiàn)多點(diǎn)發(fā)送。傳輸頭標(biāo)的例子包括UDP (用戶數(shù)據(jù)報(bào)協(xié)議)的頭標(biāo)和TCP (發(fā)送控制協(xié)議) 的頭標(biāo)。另外,在發(fā)送裝置經(jīng)由虛擬I/F 120進(jìn)行通信的情況下,在發(fā)送裝置內(nèi)部生成的套接(socket)變?yōu)閮H用于發(fā)送,并且發(fā)送裝置難以接收諸如ICPM(因特網(wǎng)控制消息協(xié)議) 分組的響應(yīng)和進(jìn)行錯(cuò)誤控制。因此,在發(fā)送裝置內(nèi)部生成僅用于接收使用的套接,以使發(fā)送裝置可以接收該響應(yīng)。此外,經(jīng)由虛擬I/F 120由發(fā)送裝置所發(fā)送的數(shù)據(jù)被發(fā)送到所有指定的目的地, 因此難以選擇性地重新發(fā)送數(shù)據(jù)。從而,發(fā)送裝置可以通過生成用于重新發(fā)送的套接并致使數(shù)據(jù)從所生成的用于重新發(fā)送的套接重新發(fā)送來進(jìn)行選擇性重新發(fā)送。[1-2.發(fā)送裝置的功能配置]圖1是示出根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置的功能配置的圖。如圖1中所示,在由為發(fā)送裝置10所提供的CPU(未示出)所執(zhí)行的應(yīng)用中,包括用于實(shí)現(xiàn)虛擬I/F控制部分 110的應(yīng)用和用于實(shí)現(xiàn)實(shí)際I/F控制部分140的應(yīng)用。此外,在由為發(fā)送裝置10所提供的 CPU(未示出)所執(zhí)行的設(shè)備驅(qū)動(dòng)器中,包括用于實(shí)現(xiàn)虛擬I/F 120和實(shí)際I/F 130的設(shè)備驅(qū)動(dòng)器。除此之外,核心部分(kernel)由為發(fā)送裝置10所提供的CPU(未示出)執(zhí)行。在該核心部分中,包括了用于根據(jù)網(wǎng)絡(luò)層協(xié)議進(jìn)行處理的程序以及用于根據(jù)傳輸層協(xié)議進(jìn)行處理的程序。此處,IP被用作網(wǎng)絡(luò)層協(xié)議,并且UDP被用作傳輸層協(xié)議,但是它們不限于此。諸如那些應(yīng)用、核心部分、以及設(shè)備驅(qū)動(dòng)器的程序被存儲(chǔ)在例如為發(fā)送裝置10所提供的存儲(chǔ)部分(未示出)中,并且各個(gè)功能塊(虛擬I/F控制部分110、虛擬I/F 120、實(shí)際I/ F 130、實(shí)際I/F控制部分140等)通過被CPU執(zhí)行而實(shí)現(xiàn)。各個(gè)功能塊所使用的數(shù)據(jù)可以是存儲(chǔ)在例如為發(fā)送裝置10所提供的存儲(chǔ)部分 (未示出)中的數(shù)據(jù)。實(shí)際I/F 130的通信可以經(jīng)由例如為發(fā)送裝置10所提供的通信設(shè)備 (未示出)來進(jìn)行。發(fā)送裝置10通過虛擬I/F控制部分110將要發(fā)送的數(shù)據(jù)發(fā)送到虛擬I/F120 (步驟S110)。然后,在核心部分中進(jìn)行IP分組生成處理(步驟S120)之后,通過核心部分將 IP分組發(fā)送到虛擬I/F 120(步驟S130)。用于進(jìn)行核心部分中的分組生成處理的功能塊具體地起著分組生成處理部分的示例的作用。在重寫IP頭標(biāo)和UDP頭標(biāo)(步驟S140)的同時(shí),虛擬I/F 120多次將其頭標(biāo)被重寫的分組發(fā)送到實(shí)際I/F 130(步驟S150),從而實(shí)現(xiàn)多點(diǎn)分發(fā)(distribution)。通過從虛擬I/F控制部分110輸出到虛擬I/F 120的發(fā)送目的地添加/刪除請(qǐng)求來控制分發(fā)的目的地(步驟S160)。在諸如ICMP錯(cuò)誤的響應(yīng)從目的地發(fā)送回到實(shí)際I/F 130 (步驟S170)的情況下, 因?yàn)閼?yīng)用難以經(jīng)由虛擬I/F 120接收該錯(cuò)誤,所以應(yīng)用經(jīng)由實(shí)際I/F控制部分140接收該錯(cuò)誤。在分組在網(wǎng)絡(luò)中丟失的情況下,需要發(fā)送裝置10重新發(fā)送分組,然而當(dāng)經(jīng)由虛擬I/ F 120發(fā)送分組時(shí),分組被發(fā)送到所有目的地。當(dāng)實(shí)際I/F控制部分140僅將分組重新發(fā)送到其中分組已經(jīng)丟失的目的地(步驟S180)時(shí),可以實(shí)現(xiàn)選擇性重新發(fā)送。[1-3.不使用虛擬I/F的情況]圖2是示出不使用虛擬I/F 120向目的地A到C 3個(gè)目的地發(fā)送相同數(shù)據(jù)的處理的流程的流程圖。發(fā)送裝置10經(jīng)由網(wǎng)絡(luò)與目的地A到C通信。在不使用虛擬I/F 120將相同數(shù)據(jù)發(fā)送到目的地A到C的3個(gè)目的地的情況下,應(yīng)用將數(shù)據(jù)發(fā)送到目的地A到C中的每個(gè)(步驟S210A到步驟S210C),而且核心部分的分組生成處理進(jìn)行三次(步驟S211A 到步驟S211 C)。[1-4.使用虛擬I/F的情況]圖3是示出通過使用虛擬I/F 120向目的地A到C 3個(gè)目的地發(fā)送相同數(shù)據(jù)的處理的流程的流程圖。根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置10通過使用虛擬I/F120將相同的數(shù)據(jù)發(fā)送到目的地A到C的3個(gè)目的地。應(yīng)用將數(shù)據(jù)發(fā)送到作為虛設(shè)(dummy)目的地的目的地 V (步驟S310)?;谟脩糨斎氲牟⑶移漭斎氡粸榘l(fā)送裝置10所提供的輸入部分(未示出) 接受的數(shù)據(jù)和發(fā)送操作來進(jìn)行該應(yīng)用所進(jìn)行的數(shù)據(jù)發(fā)送(步驟S310)。核心部分生成尋址到目的地V的分組一次(步驟S311)。在參照目的地表(步驟 S312)并且將所生成的分組的頭標(biāo)重寫到目的地A到C的同時(shí),虛擬I/F 120將其頭標(biāo)被重寫的分組發(fā)送三次(步驟S313A到步驟S313C)。目的地表被存儲(chǔ)在為發(fā)送裝置所提供的存儲(chǔ)部分(未示出)中,并且由虛擬I/F120讀取和使用。以此方式,在使用虛擬I/F 120的情況下,分組生成處理僅進(jìn)行一次,因此減輕了 CPU上的負(fù)荷。[1-5.發(fā)送裝置的操作的具體示例]圖4是示出發(fā)送裝置10的操作的具體示例的圖。作為虛擬I/F 120的地址,例如,設(shè)置了虛設(shè)地址“ 192. 168. 100. 1 ”。虛擬I/F控制部分110創(chuàng)建了使用 bindO將虛設(shè)地址綁定到的套接,并且使用cormectO將該套接連接到作為虛設(shè)目的地的“192. 168. 100.2”。在目的地表中,設(shè)置了 “(開始點(diǎn)地址)192. 168. 0. 1:10000, (結(jié)束點(diǎn)地址)192. 168. 10. 2:20000”,“ (開始點(diǎn)地址)192. 168. 0. 1:10000,(結(jié)束點(diǎn)地址)192. 168. 10. 3:20000”,以及“(結(jié)束點(diǎn)地址)192. 168. 0. 1:10000,(結(jié)束點(diǎn)地址)192. 168. 10.4:20000”。這些設(shè)置由 ioctl ()編輯。當(dāng)虛擬I/F控制部分110從所創(chuàng)建的套接發(fā)送數(shù)據(jù)時(shí),在核心部分中數(shù)據(jù)被 IP-分組,并且IP分組到達(dá)虛擬I/F 120。虛擬I/F 120將IP分組傳遞到實(shí)際I/F 130,同時(shí)根據(jù)目的地表重寫IP分組的頭標(biāo)。實(shí)際I/F 130將其頭標(biāo)被重寫的IP分組按原樣發(fā)送到網(wǎng)絡(luò)。由于在虛擬I/F 120中重寫了頭標(biāo),所以難以在接收分組的一側(cè)將通過上述技術(shù)發(fā)送的分組與通過一般技術(shù)所發(fā)送的分組相區(qū)分。[1-6.發(fā)送裝置進(jìn)行的添加目的地的序列]圖5示出發(fā)送裝置10進(jìn)行的添加目的地的序列。首先,虛擬I/F控制部分110接收目的地添加請(qǐng)求(步驟S410),并且請(qǐng)求實(shí)際I/F控制部分140創(chuàng)建用于接收/重新發(fā)送的套接(步驟S420)?;谟脩糨斎氲牟⑶移漭斎氡粸榘l(fā)送裝置10所提供的輸入部分(未示出)接受的目的地和目的地添加操作來進(jìn)行虛擬I/F控制部分110所接收的目的地添加請(qǐng)求。在創(chuàng)建了套接(步驟S430)之后,實(shí)際I/F控制部分140發(fā)送回套接創(chuàng)建完成響應(yīng) (步驟S440)。在那之后,虛擬I/F控制部分110向虛擬I/F 120發(fā)送目的地添加請(qǐng)求(步驟S450),虛擬I/F 120將由目的地添加請(qǐng)求指定的目的地添加到目的地表(步驟S460)。 當(dāng)目的地的添加完成之后,虛擬I/F 120向虛擬I/F控制部分110發(fā)送回目的地添加完成響應(yīng)(步驟S470)。[1-7.發(fā)送裝置接收ICMP錯(cuò)誤時(shí)的操作示例]圖6是示出當(dāng)發(fā)送裝置10接收到ICMP錯(cuò)誤時(shí)的操作示例。實(shí)際I/F控制部分 140使用用于接收/重新發(fā)送的套接經(jīng)由實(shí)際I/F 130接收ICMP錯(cuò)誤(步驟S510),并且將目的地刪除請(qǐng)求發(fā)送到虛擬I/F控制部分110,以停止向其中已經(jīng)出現(xiàn)ICMP錯(cuò)誤的目的地的數(shù)據(jù)發(fā)送(步驟S520)。當(dāng)虛擬I/F控制部分110接收到該目的地刪除請(qǐng)求時(shí),虛擬 I/F控制部分110向虛擬I/F 120發(fā)送目的地刪除請(qǐng)求(步驟S530),當(dāng)虛擬I/F 120接收到該目的地刪除請(qǐng)求時(shí),虛擬I/F 120從目的地表中刪除由該目的地刪除請(qǐng)求所指定的目的地。于是,停止向該目的地的數(shù)據(jù)發(fā)送。圖7是將圖6中所示的處理表示為序列圖的圖。首先,當(dāng)接收到ICMP錯(cuò)誤(步驟 S510)時(shí),實(shí)際I/F 130向?qū)嶋HI/F控制部分140發(fā)送該ICMP錯(cuò)誤。當(dāng)使用用于接收/重新發(fā)送的套接接收到該ICMP錯(cuò)誤時(shí),實(shí)際I/F控制部分140向虛擬I/F控制部分110發(fā)送目的地刪除請(qǐng)求(步驟S520)。當(dāng)接收到該目的地刪除請(qǐng)求時(shí),虛擬I/F控制部分110向虛擬I/F 120發(fā)送該目的地刪除請(qǐng)求(步驟S530)。虛擬I/F 120從目的地表中刪除由該目的地刪除請(qǐng)求所指定的目的地(步驟 S540),并且當(dāng)完成目的地的刪除時(shí),向虛擬I/F控制部分110發(fā)送回目的地刪除完成響應(yīng) (步驟S550)。當(dāng)接收到該目的地刪除完成響應(yīng)時(shí),虛擬I/F控制部分110向?qū)嶋HI/F控制部分140發(fā)送套接刪除請(qǐng)求(步驟S560)。當(dāng)接收到該套接刪除請(qǐng)求時(shí),實(shí)際I/F控制部分 140刪除與該目的地對(duì)應(yīng)的、用于接收/重新發(fā)送的套接(步驟S570),并且向虛擬I/F控
8制部分110發(fā)送套接刪除完成響應(yīng)(步驟S580)。[1-8.進(jìn)行RTP數(shù)據(jù)發(fā)送時(shí)的選擇性重新發(fā)送的示例]圖8是示出當(dāng)將根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置應(yīng)用于RTP/RTCP流時(shí)的選擇性重新發(fā)送的示例。在RTP (實(shí)時(shí)協(xié)議)/RTCP (RTP控制協(xié)議)流中,使用RTCP進(jìn)行RTP分組丟失的通知,并且可以提示向發(fā)送裝置10重新發(fā)送。在圖8中所示的例子中,“192. 168. 0. 4” 的終端(目的地C)檢測(cè)到分組“2”丟失,并且通過使用RTCP進(jìn)行向發(fā)送裝置10的分組“2” 丟失通知(步驟S610)。RTP/RTCP控制部分150向?qū)嶋HI/F控制部分140發(fā)送分組“2”丟失的事實(shí)(步驟S620),并且實(shí)際I/F控制部分140使用與目的地C對(duì)應(yīng)的用于接收/重新發(fā)送的套接來接收分組“2”丟失的該事實(shí),并且經(jīng)由實(shí)際I/F 130僅向“192. 168. 0. 4”的終端(目的地C)重新發(fā)送分組。圖9是將圖8中所示的處理表示為序列圖的圖。RTP/RTCP控制部分150將要發(fā)送的RTP數(shù)據(jù)發(fā)送到目的地V的地址“ 192. 168. 100. 2” (步驟S710),并且虛擬I/F控制部分 110將所接收的RTP數(shù)據(jù)發(fā)送到核心部分(步驟S720)。當(dāng)接收RTP數(shù)據(jù)時(shí),核心部分生成包含該RTP數(shù)據(jù)的分組(步驟S730),并且將所生成的分組發(fā)送到虛擬I/F 120。在虛擬I/ F 120參照目的地表(步驟S740)并且將所生成的分組的頭標(biāo)重寫到目的地A到C的地址中(步驟S750A到步驟S750C)的同時(shí),虛擬I/F 120將其頭標(biāo)被重寫的分組發(fā)送三次。當(dāng)目的地C檢測(cè)到分組丟失時(shí)(步驟S760),目的地C使用RTCP向RTP/RTCP控制部分150通知該通知(步驟S610),并且RTP/RTCP控制部分150將RTP重新發(fā)送請(qǐng)求發(fā)送到實(shí)際I/F控制部分140 (步驟S620)。當(dāng)接收到該RTP重新發(fā)送請(qǐng)求時(shí),實(shí)際I/F控制部分140經(jīng)由實(shí)際I/F 130僅向目的地C重新發(fā)送分組(步驟S620)。[1-9.虛擬I/F執(zhí)行的處理]圖10示出虛擬I/F 120執(zhí)行的處理的流程圖。當(dāng)從核心部分接收到IP分組時(shí), 虛擬I/F 120參照目的地表(步驟S810)。當(dāng)目的地表中存在目的地?cái)?shù)據(jù)時(shí)(步驟S820 中的“是”),虛擬I/F 120基于該目的地?cái)?shù)據(jù)重寫IP分組的頭標(biāo)(IP頭標(biāo))(步驟S830), 并且重新計(jì)算IP校驗(yàn)和(checksum)(步驟S840)。然后,虛擬I/F 120重寫該IP分組的 UDP頭標(biāo)(步驟S850),重新計(jì)算UDP校驗(yàn)和(步驟S860),并且將該IP分組發(fā)送到實(shí)際I/ F 130 (步驟S870)。虛擬I/F 120進(jìn)行步驟S830到步驟S870中所示的處理,直至目的地表中不再有目的地?cái)?shù)據(jù),并且當(dāng)目的地表中不存在目的地?cái)?shù)據(jù)時(shí)(步驟S820中的“否”), 處理終止。[1-10.將發(fā)送裝置應(yīng)用于TCP通信的情況]圖11是在將根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置應(yīng)用于TCP通信的情況下的示意圖。按與在進(jìn)行UDP通信的情況下幾乎相同的方式進(jìn)行步驟S910到步驟S940和步驟S960。注意, 在進(jìn)行TCP通信的情況下,在TCP層中進(jìn)行重新發(fā)送和速率控制,因此,需要虛擬I/F 120 在重寫IP分組的頭標(biāo)之后將IP分組傳遞到TCP層(步驟S950)。在進(jìn)行UDP通信的情況下,虛擬I/F 120直接將IP分組傳遞到IP層。當(dāng)從TCP ACK的內(nèi)容中檢測(cè)到分組的丟失(步驟S970)時(shí),在TCP處理中,核心部分進(jìn)行選擇性重新發(fā)送而不進(jìn)行向應(yīng)用的通知(步驟S980)。實(shí)際I/F控制部分140僅進(jìn)行套接的生成/刪除,而不管選擇性重新發(fā)送處理(步驟S990)。例如,在TCP RST到達(dá)的情況下,在核心部分的TCP處理中,向?qū)嶋HI/F控制部分140通知TCP RST的到達(dá),并且實(shí)際I/F控制部分140進(jìn)行諸如套接刪除的處理。在將根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置應(yīng)用于 TCP通信的情況下,盡管被降低的CPU上的負(fù)荷量小于在UDP通信的情況下被降低的CPU上的負(fù)荷量,但是當(dāng)與一般通信相比時(shí)甚至可以更多地提高效率。<2.修改示例>本領(lǐng)域中技術(shù)人員應(yīng)該理解,取決于設(shè)計(jì)要求和其它因素,可以發(fā)生各種修改、組合、子組合以及變更,只要它們?cè)谒綑?quán)利要求或者其等效物的范圍內(nèi)即可。例如,不一定要按在本發(fā)明實(shí)施例中使用的序列圖和流程圖中所示的順序來執(zhí)行這些序列圖和流程圖中所示的步驟。即,可以適當(dāng)?shù)馗淖儾?zhí)行本發(fā)明實(shí)施例中所使用的序列圖和流程圖中所示步驟的順序。<3.總結(jié)〉根據(jù)本發(fā)明實(shí)施例,當(dāng)發(fā)送裝置經(jīng)由網(wǎng)絡(luò)向多個(gè)目的地發(fā)送分組時(shí),不管網(wǎng)絡(luò)的類型如何,可以降低發(fā)送裝置的CPU上的負(fù)荷。即,例如,即使當(dāng)網(wǎng)絡(luò)不支持IP多播時(shí),該發(fā)送裝置也可以經(jīng)由網(wǎng)絡(luò)向多個(gè)目的地發(fā)送分組,同時(shí)降低發(fā)送裝置的CPU上的負(fù)荷。因此,發(fā)送裝置分發(fā)數(shù)據(jù)時(shí)發(fā)送裝置的CPU上的負(fù)荷被降低,因此,發(fā)送裝置變得能夠?qū)?shù)據(jù)分發(fā)到更多目的地。此外,由于可以降低發(fā)送裝置的CPU上的負(fù)荷,所以變得容易地在進(jìn)行數(shù)據(jù)分發(fā)的同時(shí)進(jìn)行除數(shù)據(jù)分發(fā)之外的處理。當(dāng)通過CPU能力被限制的嵌入設(shè)備進(jìn)行多點(diǎn)分發(fā)等時(shí),根據(jù)本發(fā)明實(shí)施例的發(fā)送裝置是特別適合的。本申請(qǐng)包含與2010年3月30日在日本專利局提交的日本優(yōu)先專利申請(qǐng)JP 2010-079071中所公開的主題相關(guān)的主題,其全部內(nèi)容通過參考并入此處。
權(quán)利要求
1.一種發(fā)送裝置,包括虛擬接口控制部分,其輸出要發(fā)送的數(shù)據(jù);分組生成處理部分,其生成包含該數(shù)據(jù)的分組;存儲(chǔ)部分,其存儲(chǔ)該分組的多個(gè)目的地;虛擬接口,其對(duì)多個(gè)目的地依次進(jìn)行重寫由存儲(chǔ)在所述存儲(chǔ)部分中的多個(gè)目的地之一在所述分組生成處理部分所生成的分組中所設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及實(shí)際接口,每次從所述虛擬接口輸出分組時(shí),該實(shí)際接口將該分組發(fā)送到在該分組中所設(shè)置的目的地。
2.根據(jù)權(quán)利要求1所述的發(fā)送裝置,其中,所述虛擬接口控制部分生成用于發(fā)送的套接,并且經(jīng)由所生成的用于發(fā)送的套接向虛擬接口輸出分組。
3.根據(jù)權(quán)利要求2所述的發(fā)送裝置,還包括實(shí)際接口控制部分,其為存儲(chǔ)在所述存儲(chǔ)部分中的每個(gè)目的地生成用于接收的套接, 并且當(dāng)使用所生成的用于接收的套接經(jīng)由所述實(shí)際接口接收到指示已經(jīng)發(fā)生分組發(fā)送中的錯(cuò)誤的響應(yīng)時(shí),該實(shí)際接口控制部分向所述虛擬接口控制部分輸出目的地刪除請(qǐng)求,該目的地刪除請(qǐng)求指示從存儲(chǔ)在所述存儲(chǔ)部分中的目的地中刪除與已經(jīng)接收到響應(yīng)的用于接收的套接對(duì)應(yīng)的目的地。
4.根據(jù)權(quán)利要求3所述的發(fā)送裝置,其中,當(dāng)從所述實(shí)際接口控制部分輸出所述目的地刪除請(qǐng)求時(shí),所述虛擬接口控制部分向所述虛擬接口輸出指示從存儲(chǔ)在所述存儲(chǔ)部分中的目的地中刪除該目的地的目的地刪除請(qǐng)求,以及其中,當(dāng)從所述虛擬接口控制部分輸出所述目的地刪除請(qǐng)求時(shí),所述虛擬接口從存儲(chǔ)在所述存儲(chǔ)部分中的目的地中刪除該目的地。
5.根據(jù)權(quán)利要求2所述的發(fā)送裝置,還包括實(shí)際接口控制部分,其對(duì)于存儲(chǔ)在所述存儲(chǔ)部分中的每個(gè)目的地生成用于重新發(fā)送的套接,當(dāng)使用所生成的用于重新發(fā)送的套接經(jīng)由所述實(shí)際接口接收到指示已經(jīng)發(fā)生分組丟失的響應(yīng)時(shí),該實(shí)際接口控制部分向與已經(jīng)接收該響應(yīng)的用于重新發(fā)送的套接對(duì)應(yīng)的目的地重新發(fā)送丟失的分組。
6.一種發(fā)送方法,包括下列步驟存儲(chǔ)分組的多個(gè)目的地;輸出要發(fā)送的數(shù)據(jù);生成包含該數(shù)據(jù)的分組;對(duì)于多個(gè)目的地依次進(jìn)行重寫由所述多個(gè)目的地之一在所述分組中設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及每次輸出分組時(shí),將該分組發(fā)送到在該分組中所設(shè)置的目的地。
7.一種用于致使計(jì)算機(jī)起發(fā)送裝置的作用的程序,所述發(fā)送裝置包括虛擬接口控制部分,其輸出要發(fā)送的數(shù)據(jù);分組生成處理部分,其生成包含該數(shù)據(jù)的分組;存儲(chǔ)部分,其存儲(chǔ)該分組的多個(gè)目的地;虛擬接口,其對(duì)多個(gè)目的地依次進(jìn)行重寫由存儲(chǔ)在所述存儲(chǔ)部分中的多個(gè)目的地之一在所述分組生成處理部分所生成的分組中所設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及實(shí)際接口,每次從所述虛擬接口輸出分組時(shí),該實(shí)際接口將該分組發(fā)送到在該分組中所設(shè)置的目的地。
全文摘要
提供了一種發(fā)送裝置,其包括虛擬I/F控制部分,其輸出要發(fā)送的數(shù)據(jù);分組生成處理部分,其生成包含該數(shù)據(jù)的分組;存儲(chǔ)部分,其存儲(chǔ)該分組的多個(gè)目的地;虛擬I/F,其對(duì)多個(gè)目的地依次進(jìn)行重寫由存儲(chǔ)在所述存儲(chǔ)部分中的多個(gè)目的地之一在所述分組生成處理部分所生成的分組中所設(shè)置的目的地、并且輸出其中目的地被重寫的分組的處理;以及實(shí)際接口,每次從所述虛擬I/F輸出分組時(shí),該實(shí)際接口將該分組發(fā)送到在該分組中所設(shè)置的目的地。本發(fā)明還提供了發(fā)送方法以及程序。
文檔編號(hào)H04L12/18GK102209025SQ201110070359
公開日2011年10月5日 申請(qǐng)日期2011年3月23日 優(yōu)先權(quán)日2010年3月30日
發(fā)明者增田康人 申請(qǐng)人:索尼公司