接口(可為一條或多條)、2G數(shù)據(jù)接口(可為一條或多條)。應(yīng)理解,在某些情況下,一些數(shù)據(jù) 接口并不能共存,例如,對(duì)于同一移動(dòng)通信模塊,其只能提供LTE數(shù)據(jù)接口或3G數(shù)據(jù)接口,而 不能同時(shí)提供運(yùn)兩者。但對(duì)于不同的移動(dòng)通信模塊,即可分別同時(shí)提供LTE數(shù)據(jù)接口和3G數(shù) 據(jù)接口。
[004引應(yīng)理解,當(dāng)WIFI數(shù)據(jù)接口為多條時(shí),終端100中包括有多個(gè)WIFI模塊。
[0049] 在本發(fā)明的實(shí)施例中,在存儲(chǔ)器101中可W存儲(chǔ)多個(gè)操作系統(tǒng),操作系統(tǒng)包括但不 限于 Windows、Linux、Unix、MacOSX、IOS、Solaris、Android#。
[0050] 在一個(gè)實(shí)施例中,圖1所示的存儲(chǔ)于存儲(chǔ)器4中,并由處理器1處理執(zhí)行的操作系統(tǒng) 的架構(gòu)如圖2所示,其包括:驅(qū)動(dòng)層、內(nèi)核層和用戶(hù)層。其中,內(nèi)核層包括:網(wǎng)絡(luò)接日層、網(wǎng)絡(luò) 層、TCP/UDP和內(nèi)核接口。
[0051] 參見(jiàn)圖3為本發(fā)明一實(shí)施例的網(wǎng)絡(luò)架構(gòu)示意圖。終端100可同時(shí)通過(guò)基站、無(wú)線(xiàn)接 入點(diǎn)(AP)等方式連接到無(wú)線(xiàn)核屯、網(wǎng),再連接到專(zhuān)網(wǎng)、Internet網(wǎng)實(shí)現(xiàn)無(wú)線(xiàn)數(shù)據(jù)的傳輸。另一 方面,多個(gè)終端100之間還可通過(guò)基站、無(wú)線(xiàn)接入點(diǎn)連接到無(wú)線(xiàn)核屯、網(wǎng),從而實(shí)現(xiàn)相互間的 數(shù)據(jù)傳輸。
[0化2]實(shí)施例1
[0053] 參見(jiàn)圖4,本發(fā)明實(shí)施例提供一種數(shù)據(jù)接口分流方法。在本發(fā)明的實(shí)施例中,待傳 輸?shù)臄?shù)據(jù)被劃分為多個(gè)數(shù)據(jù)塊,當(dāng)有數(shù)據(jù)需要傳輸時(shí),將會(huì)通過(guò)建立的多條鏈接分別傳輸 該多個(gè)數(shù)據(jù)塊。接收到多個(gè)數(shù)據(jù)塊的終端,再將數(shù)據(jù)塊進(jìn)行組合W得到完整的數(shù)據(jù)。本發(fā)明 實(shí)施例的數(shù)據(jù)接口分流方法即是確定各個(gè)數(shù)據(jù)接口的數(shù)據(jù)流量大小,即確定建立的多條鏈 接分別通過(guò)哪一個(gè)數(shù)據(jù)接口進(jìn)行傳輸。由此,從各個(gè)數(shù)據(jù)接口傳輸?shù)臄?shù)據(jù)塊不相同,可實(shí)現(xiàn) 高效利用各數(shù)據(jù)接口,提高傳輸效率。具體的,本發(fā)明實(shí)施例的數(shù)據(jù)接口分流方法包括:
[0054] Sl、實(shí)時(shí)檢測(cè)各數(shù)據(jù)接口的連通性。
[005引應(yīng)理解,檢測(cè)接口的連通性即是檢測(cè)數(shù)據(jù)接口是否連通。例如,檢測(cè)WIFI接口的連 通性,即是檢測(cè)是否可W通過(guò)WIFI數(shù)據(jù)接口接入到WIFI網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。
[0化6]在本發(fā)明的實(shí)施例中,接口包括WIFI接口、LTE接口、3G接口等等。且接口的個(gè)數(shù)可 為多個(gè),例如,接口可包括兩個(gè)LTE接口和兩個(gè)WIFI接口。
[0057]在一個(gè)實(shí)施例中,參見(jiàn)圖5,接口連通性檢測(cè)按照W下方式進(jìn)行:
[005引每隔第一預(yù)設(shè)時(shí)間(例如,10秒),從每個(gè)接口發(fā)一個(gè)ping報(bào)文,ping的目的ip地址 為一固定DNS服務(wù)器的地址,例如,114.114.114.114。
[0059] 等待第二預(yù)設(shè)時(shí)間(例如,10秒),若未收到回復(fù),則將該接口標(biāo)記為未連通 (down),若收到回復(fù),則將該接口標(biāo)記為連通(UP)。
[0060] 在一些實(shí)施例中,若接口之前是連通狀態(tài),等待預(yù)設(shè)時(shí)長(zhǎng)未收到回復(fù),則將該接口 標(biāo)記為未連通。若接口之前是未連通狀態(tài),等待預(yù)設(shè)時(shí)長(zhǎng)收到回復(fù),則認(rèn)為該鏈路已連通, 將該接口標(biāo)記為連通。
[0061 ]具體的,若某一接口為連通化P)狀態(tài),則可將該接口添加到可用接口列表中;若某 一接口為未連通(down),則不將其添加到可用接口列表中或?qū)⑵鋸目捎媒涌诹斜碇袆h除。
[0062] 應(yīng)理解,接口的連通性還可通過(guò)其它的方式進(jìn)行,例如,發(fā)送空數(shù)據(jù)包等方式。
[0063] S2、檢測(cè)到有數(shù)據(jù)需要傳輸時(shí),按照初始分流權(quán)重為處于連通狀態(tài)的數(shù)據(jù)接口分 配數(shù)據(jù)流量。
[0064] 在本發(fā)明的一個(gè)實(shí)施例中,檢測(cè)到有數(shù)據(jù)需要傳輸時(shí),需要建立多條鏈接W傳輸 多個(gè)數(shù)據(jù)塊。建立鏈接是指在發(fā)送終端設(shè)備與接收終端設(shè)備之間建立鏈接,例如,通過(guò)=次 握手建立鏈接。鏈接的數(shù)量可根據(jù)實(shí)際情況設(shè)定,例如,終端100可支持的最大鏈接數(shù)、數(shù)據(jù) 業(yè)務(wù)的數(shù)據(jù)量大小等。
[0065] 在本發(fā)明的實(shí)施例中,初始分流權(quán)重為1: 1分流權(quán)重,即按照1: 1的分流權(quán)重將建 立的鏈接分配到處于連通狀態(tài)的接口。
[0066] 具體的,在本發(fā)明的實(shí)施例中,可根據(jù)接口的連通性建立一個(gè)初始的路由規(guī)則。該 初始的路由規(guī)則可按照均分的方式建立,即按照1:1的初始分流權(quán)重,使得處于連通狀態(tài)的 接口分配的待傳輸鏈接數(shù)相同。例如,若2個(gè)接口均處于連通狀態(tài),則初始路由規(guī)則為第1、2 和3條鏈接通過(guò)第一接口傳輸,第4、5和6條鏈接通過(guò)第二接口傳輸。
[0067] 本發(fā)明的一些實(shí)施例中,在傳輸數(shù)據(jù)時(shí),首先依據(jù)初始的路由規(guī)則進(jìn)行數(shù)據(jù)的傳 輸。運(yùn)里的數(shù)據(jù)傳輸從建立鏈接即開(kāi)始,具體的,建立鏈接時(shí)需要生成;連接請(qǐng)求報(bào)文,將生 成的連接請(qǐng)求報(bào)文均分到每個(gè)接口進(jìn)行發(fā)送。接收終端設(shè)備接收到連接請(qǐng)求報(bào)文,對(duì)每個(gè) 連接請(qǐng)求報(bào)文回復(fù)一個(gè)確認(rèn)報(bào)文。確認(rèn)報(bào)文經(jīng)相應(yīng)的接口分別回復(fù)給發(fā)送終端設(shè)備。發(fā)送 終端設(shè)備通過(guò)各個(gè)接口接收確認(rèn)報(bào)文并發(fā)送確認(rèn)報(bào)文,W在發(fā)送終端設(shè)備和接收終端設(shè)備 間建立多條TCP鏈接用于傳輸數(shù)據(jù)。若無(wú)其它特別說(shuō)明,本發(fā)明實(shí)施例中的多條鏈接可包括 一條和一條W上的鏈接。
[0068] 應(yīng)理解,在本發(fā)明的實(shí)施例中,發(fā)送終端設(shè)備和接收終端設(shè)備間建立了鏈接后,即 可進(jìn)行數(shù)據(jù)的傳輸,當(dāng)某一鏈接完成其的數(shù)據(jù)傳輸任務(wù)后(即相應(yīng)的數(shù)據(jù)塊傳輸完畢),即 被釋放。由此,本發(fā)明的實(shí)施例中,在傳輸開(kāi)始時(shí)建立的鏈接按照初始路由規(guī)則進(jìn)行分配。 若運(yùn)些鏈接的建立已完成所有資源的傳輸,則無(wú)需再新建鏈接繼續(xù)進(jìn)行傳輸,否則新建鏈 接,W進(jìn)行資源的傳輸,直到所有資源傳輸完成。新建的鏈接將按照步驟S3的分流進(jìn)行調(diào) 整。
[0069] S3、在數(shù)據(jù)傳輸?shù)倪^(guò)程中,根據(jù)數(shù)據(jù)接口的速率和預(yù)設(shè)分流規(guī)則,調(diào)整各數(shù)據(jù)接口 的數(shù)據(jù)流量。
[0070] 由于網(wǎng)絡(luò)環(huán)境是實(shí)時(shí)變化的,各接口的連通狀態(tài)、速率等也是實(shí)時(shí)變化的,因此, 在數(shù)據(jù)業(yè)務(wù)的傳輸過(guò)程中,根據(jù)接口的速率和預(yù)設(shè)分流規(guī)則,調(diào)整各數(shù)據(jù)接口的數(shù)據(jù)流量。
[0071] 應(yīng)理解,在進(jìn)行數(shù)據(jù)傳輸時(shí),可將待下載的數(shù)據(jù)業(yè)務(wù)劃分為多個(gè)大小相同或不同 的數(shù)據(jù)塊,W分別通過(guò)建立的多條鏈接進(jìn)行傳輸。例如,可將一個(gè)IOM大小的APK,劃分為10 個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊的大小為1M,且每個(gè)數(shù)據(jù)塊通過(guò)一條鏈接進(jìn)行傳輸。
[0072] 在一些實(shí)施例中,終端100可建立的最大鏈接數(shù)不一定和劃分的數(shù)據(jù)塊相等,例 如,數(shù)據(jù)塊為10,而建立的最大鏈接數(shù)為5。則當(dāng)完成某一鏈接的傳輸完成時(shí),相應(yīng)的即可新 建一條鏈接W繼續(xù)傳輸剩下的數(shù)據(jù)。具體的,本發(fā)明的實(shí)施例中,按照上述步驟S2的初始分 流權(quán)重分流后,在數(shù)據(jù)傳輸過(guò)程中新建立的鏈接,將根據(jù)數(shù)據(jù)接口的速率和預(yù)設(shè)分流規(guī)則 分配到不同的數(shù)據(jù)接口。
[0073] 具體的,每隔一第一預(yù)設(shè)時(shí)間(例如,I秒)對(duì)接口進(jìn)行測(cè)速,在本發(fā)明的實(shí)施例中, 按照W下方式進(jìn)行接口的速率檢測(cè):
[0074] 每隔預(yù)設(shè)時(shí)間(例如,1秒),獲取接口字節(jié)數(shù)的變化作為接口的當(dāng)前速率。具體的, 若為第一次檢測(cè)某一接口的速率,則將檢測(cè)得到的字節(jié)數(shù)保存。若不是第一次檢測(cè)某一接 口的速率,則將獲取得到的接口字節(jié)數(shù)減去前一次獲取得到的接口字節(jié)數(shù),得到的差值再 除W兩次檢測(cè)的時(shí)間即為該接口的當(dāng)前速率。
[0075] 在本發(fā)明的實(shí)施例中,根據(jù)接口的速率確定分流權(quán)重采用W下方式:
[0076] 對(duì)接口進(jìn)行測(cè)速,并檢測(cè)接口是否處于擁塞狀態(tài),若是,則判斷當(dāng)前的實(shí)時(shí)速率比 之前統(tǒng)計(jì)的最大速率(max_speed)是否更小,如果更小,當(dāng)前實(shí)時(shí)速率加上一預(yù)設(shè)值(例如, 100邸/s)后是否小于最大速率(max_speed),如果是,則說(shuō)明網(wǎng)絡(luò)環(huán)境發(fā)生了較大的變換, 將當(dāng)前實(shí)時(shí)速率賦值給最大速率(max_speed);
[0077] 若接口不處于擁塞狀態(tài),且當(dāng)前實(shí)時(shí)速率大于max_speed,則將當(dāng)前實(shí)時(shí)速率賦值 給最大速率(max_speed)。
[0078] 在本發(fā)明的實(shí)施例中,當(dāng)根據(jù)接口的速率計(jì)算分流權(quán)重時(shí),按照W下公式進(jìn)行計(jì) 算:
[0079] 第i個(gè)接口的分流權(quán)重=第i個(gè)接口的最大速率/(第1個(gè)接口的最大速率+第2個(gè)接 口的最大速率+……+第i個(gè)接口的最大速率+……)
[0080] 應(yīng)理解,上述按照接口速率計(jì)算分流權(quán)重還可采用其它的方式,例如,預(yù)先設(shè)定速 率范圍與分流權(quán)重的關(guān)系,當(dāng)速率在第一范圍時(shí),分流權(quán)重為20 %,而在第二范圍時(shí),分流 權(quán)重為80 %等等方式。
[0081] 在本發(fā)明的實(shí)施例中,檢測(cè)接口是否處于擁塞狀態(tài),是通過(guò)檢測(cè)接口的時(shí)延獲知 的,接口的時(shí)延檢測(cè)方法有如下兩種方式:
[0082] 方式一:每隔預(yù)設(shè)時(shí)間(例如,5秒)通過(guò)接口發(fā)一組Ping報(bào)文(例如,每組5個(gè)報(bào)文, 每個(gè)報(bào)64Bytes),并根據(jù)接收到回復(fù)的時(shí)間差獲取接口的時(shí)延。
[0083] 方式二:通過(guò)TCPS次握手計(jì)算時(shí)延,具體的:當(dāng)接收到一個(gè)syn+ack報(bào)文時(shí),判斷 是否處于SYN_SEND狀態(tài),若處于,則獲取當(dāng)前的系統(tǒng)時(shí)間,并將獲取的當(dāng)前系統(tǒng)時(shí)間減去系 統(tǒng)發(fā)送syn報(bào)文的時(shí)間,獲得一時(shí)間差。該時(shí)間差即為接口時(shí)延。
[0084] 若時(shí)延大于或等于一預(yù)設(shè)值(例如aOOOms),則將該接口標(biāo)記為處于擁塞狀態(tài)。若 時(shí)延小于一預(yù)設(shè)值,則檢測(cè)此鏈接的syn報(bào)文是否重傳過(guò),若重傳過(guò),則將該接口標(biāo)記為處 于擁塞狀態(tài),將時(shí)延值設(shè)定為1000 ms;若未重傳過(guò),則接口不處于擁塞狀態(tài)。
[0085] 在一個(gè)實(shí)施例中,若出現(xiàn)預(yù)設(shè)異常情況,則將分流權(quán)重設(shè)定為1:1,即默認(rèn)按1:1的 權(quán)重進(jìn)行分流。例如,預(yù)設(shè)異常情況包括但不限于:當(dāng)最大速率不大于預(yù)設(shè)值等。
[0086] 上述介紹了根據(jù)數(shù)據(jù)接口的速率調(diào)整分流權(quán)重W調(diào)整各數(shù)據(jù)接口的數(shù)據(jù)流量的 具體實(shí)現(xiàn),而在本發(fā)明的實(shí)施例中,調(diào)整數(shù)據(jù)接口的數(shù)據(jù)流量時(shí),還要考慮預(yù)設(shè)分流規(guī)則。
[0087] 在本發(fā)明的實(shí)施例中,當(dāng)數(shù)據(jù)接口包括一WIFI數(shù)據(jù)接口和一LTE數(shù)據(jù)接口時(shí),由于 WIFI數(shù)據(jù)接口相比于LTE數(shù)據(jù)接口具有費(fèi)用低,速率