>[0038] (3)少數(shù)系統(tǒng)雖然已經(jīng)具備TCP網(wǎng)絡(luò)側(cè)代理功能,但實現(xiàn)方案多為收到下行數(shù)據(jù) 包直接提前對服務(wù)器應(yīng)答、提前應(yīng)答邏輯單一,未能考慮基站空口質(zhì)量因素,造成在空口質(zhì) 量不佳的場景下,被加速而至的下行數(shù)據(jù)在空口傳輸不暢,從而造成整體傳輸效率的惡化。
[0039] 本發(fā)明在上述數(shù)據(jù)傳輸結(jié)構(gòu)中,添加專門應(yīng)對終端用戶TCP協(xié)議層數(shù)據(jù)的處理單 元,引入后的協(xié)議結(jié)構(gòu)如圖2所示,其他制式基站引入方案相同。
[0040] 本發(fā)明提供的一種優(yōu)化基站下行傳輸?shù)目刂品椒把b置,適用于各種制式基站設(shè) 備,包括GSM、CDMA、WCDMA、TD-SCDMA、FDD-LTE、TDD-LTE、WLAN等,同樣為了簡化分析現(xiàn)有基 站系統(tǒng),仍以LTE制式基站為例展開描述,其他制式基站的缺點以及引入方案均以LTE制式 基站相同。
[0041] 如圖3所示,本發(fā)明的基站下行傳輸控制方法可包括以下步驟:
[0042] S1,接收服務(wù)器發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包存儲在本地緩存中;
[0043] S2,接收用戶端對序號為N的數(shù)據(jù)包的第一應(yīng)答包;其中,所述第一應(yīng)答包為用戶 端對基站發(fā)送的數(shù)據(jù)包的應(yīng)答;N為正整數(shù);
[0044] S3,根據(jù)到用戶端之間的通信鏈路的無線傳輸誤碼率設(shè)置最大提前應(yīng)答量;其中, 所述最大提前應(yīng)答量是基站向服務(wù)器提前發(fā)送應(yīng)答包的最大提前量;
[0045] S4,當(dāng)本地緩存中的數(shù)據(jù)包的序號連續(xù)且當(dāng)前提前應(yīng)答量M小于最大提前應(yīng)答量 時,向服務(wù)器發(fā)送對序號為M+N的數(shù)據(jù)包的第二應(yīng)答包;其中,所述第二應(yīng)答包為基站對服 務(wù)器發(fā)送的數(shù)據(jù)包的應(yīng)答;M為正整數(shù),初值為0 ;
[0046] S5,當(dāng)數(shù)據(jù)包的序號不連續(xù)時,每隔一段時間將丟失的數(shù)據(jù)包對應(yīng)的第二應(yīng)答包 連續(xù)發(fā)送K次至服務(wù)器,直到收到服務(wù)器發(fā)送的所述丟失的數(shù)據(jù)包;其中,K為不小于3的 整數(shù)。
[0047] 實際應(yīng)用中,基站可在內(nèi)部設(shè)置一個數(shù)據(jù)區(qū),用來存儲當(dāng)前存在的TCP連接的相 關(guān)信息,包括TCP連接的源IP地址、目的IP地址、源端口號、目的端口號、最新從服務(wù)器接 收的TCP數(shù)據(jù)包的序列號、最新發(fā)送給服務(wù)器的TCP應(yīng)答包的確認號、最新發(fā)送給用戶端的 TCP數(shù)據(jù)包的序列號、最新從用戶端接收的TCP應(yīng)答包的確認號,以及對應(yīng)TCP連接緩存的 由服務(wù)器發(fā)往用戶端的TCP數(shù)據(jù)包等等。當(dāng)基站接收到服務(wù)器發(fā)往某個用戶端的TCP數(shù)據(jù) 包時,首先解析TCP數(shù)據(jù)包的協(xié)議頭,根據(jù)解析結(jié)果確定該用戶端是否已與本基站建立TCP 連接。
[0048] 當(dāng)基站接收到服務(wù)器發(fā)送的數(shù)據(jù)包之后,可將所述數(shù)據(jù)包存儲在本地緩存中,并 檢測所述數(shù)據(jù)包的序號是否連續(xù)。由于TCP數(shù)據(jù)包是嚴格按序的,如果所述數(shù)據(jù)包的序號 連續(xù),則表示基站接收到的數(shù)據(jù)包是完整的,沒有丟失數(shù)據(jù)包;否則,表示基站接收到的數(shù) 據(jù)包有丟包。如圖4-a所示,基站接收的數(shù)據(jù)包中缺少序號為1100至1199的數(shù)據(jù)包,因此, 序號為1100、長度為100的IP包丟失。
[0049] 如果沒有丟失數(shù)據(jù)包,可執(zhí)行提前應(yīng)答操作?;究筛鶕?jù)用戶端返回的應(yīng)答包來 確定提前應(yīng)答量。如圖4-b所示,假設(shè)用戶已成功接收到IP包[500-599],則向基站返回 IP包[500-599]對應(yīng)的應(yīng)答包,用于向基站請求發(fā)送IP包[600-699]。
[0050] 如圖5所示,在實際情況下,還可根據(jù)基站到用戶端之間的通信鏈路的無線傳輸 誤碼率設(shè)置最大提前應(yīng)答量,具體方法如下:
[0051] S31,設(shè)置多個誤碼率區(qū)間,并設(shè)置每個誤碼率區(qū)間對應(yīng)的提前應(yīng)答量閾值;
[0052] S32,檢測到用戶端之間的通信鏈路的無線傳輸誤碼率;
[0053] S33,判斷所述無線傳輸誤碼率所屬的誤碼率區(qū)間,并將最大提前應(yīng)答量設(shè)置為所 述誤碼率區(qū)間對應(yīng)的提前應(yīng)答量閾值。在一個實施例中,可根據(jù)表1所示的無線傳輸誤碼 率與最大提前應(yīng)答量的關(guān)系來設(shè)置系統(tǒng)的最大提前應(yīng)答量。然而,表1所示的實施例并非 本發(fā)明的唯一實施例,可根據(jù)實際需要設(shè)置不同的無線傳輸誤碼率與最大提前應(yīng)答量的關(guān) 系。
[0054] 表1無線傳輸誤碼率與最大提前應(yīng)答量的關(guān)系
[0055]
[0056] 如圖4-b所示,假設(shè)此時的無線傳輸誤碼率為15 %,根據(jù)表1所示的無線傳輸誤碼 率與最大提前應(yīng)答量的關(guān)系,可以將最大提前應(yīng)答量設(shè)為3。例如,當(dāng)用戶端向基站返回對 IP包[500-599]的應(yīng)答時,基站最多可以向服務(wù)器發(fā)送對IP包[900-999]的應(yīng)答。
[0057] 基站可設(shè)置當(dāng)前提前應(yīng)答量M,其初值設(shè)為0。基站可判斷當(dāng)前提前應(yīng)答量M是否 大于或等于最大提前應(yīng)答量。例如,在圖4-b中,假設(shè)最大提前應(yīng)答量為3,基站已收到用戶 端對IP包[500-599]的應(yīng)答,則此時當(dāng)前提前應(yīng)答量M小于最大提前應(yīng)答量。基站可向服 務(wù)器發(fā)送對IP包[500-599]的應(yīng)答,然后將M的值加1。此時,M的值為1,基站可向服務(wù)器 發(fā)送對IP包[600-699]的應(yīng)答,然后將M的值加1。此時,M的值為2,基站可向服務(wù)器發(fā) 送對IP包[700-799]的應(yīng)答,然后將M的值加1。此時,M的值為3,基站可向服務(wù)器發(fā)送 對IP包[800-899]的應(yīng)答,然后將M的值加1。此時M的值為4,基站不再向服務(wù)器發(fā)送應(yīng) 答包,直到收到用戶端對IP包[600-699]的應(yīng)答,基站才向服務(wù)器發(fā)送對IP包[900-999] 的應(yīng)答,然后等待用戶端對IP包[700-799]的應(yīng)答。后續(xù)應(yīng)答過程以此類推。
[0058] 如果丟失數(shù)據(jù)包,可執(zhí)行提前重復(fù)應(yīng)答操作。如圖4-a所示,IP包[1100-1199] 丟失,則基站可向服務(wù)器發(fā)送對IP包[1100-1199]的應(yīng)答,請求服務(wù)器重發(fā)IP包 [1100-1199]。在提前重復(fù)應(yīng)答過程中,為使服務(wù)器優(yōu)先發(fā)送丟失的數(shù)據(jù)包,可將丟失的數(shù) 據(jù)包對應(yīng)的應(yīng)答包連續(xù)發(fā)送K次至服務(wù)器,K為不小于3的整數(shù)。例如,在圖4-a中,K= 3。也可根據(jù)實際情況將K值設(shè)為4或5或其他不小于3的值。
[0059] 在一個實施例中,還可根據(jù)本地緩存,按照TCP協(xié)議在第二應(yīng)答包中設(shè)置選擇性 確認擴展選項;其中,所述選擇性確認擴展選項中包括丟失的數(shù)據(jù)包之后的數(shù)據(jù)包的序號。 例如,在圖4_a中,可在應(yīng)答包之后添加SACK(SelectedAcknowledgement),所述SACK中攜 帶丟失的IP包[1100-1199]之后的數(shù)據(jù)包[1200-1299]的序號。
[0060] 如圖6所示,在步驟S2之后,還可執(zhí)行以下步驟:
[0061] S21,將第一應(yīng)答包中的確認號與基站記錄的用戶端最新確認號進行比較;
[0062] S22,若第一應(yīng)答包中的確認號等于基站記錄的用戶端最新確認號,則在本地緩存 中查找第一應(yīng)答包請求的數(shù)據(jù)包;若找到,則將第一應(yīng)答包丟棄,將第一應(yīng)答包請求的數(shù)據(jù) 包發(fā)送至用戶端;否則,向服務(wù)器發(fā)送對序號為N的數(shù)據(jù)包的第二應(yīng)答包;
[0063] S23,若第一應(yīng)答包中的確認號大于基站記錄的用戶端最新確認號,則將基站記錄 的用戶端最新確認號更新為第一應(yīng)答包中的確認號,并釋放本地緩存中序號為N的數(shù)據(jù)包 的內(nèi)存;
[0064] S24,若第一應(yīng)答包中的確認號小于基站記錄的用戶端最新確認號,則將第二應(yīng)答 包發(fā)送至服務(wù)器。
[0065] 若第一應(yīng)答包中的確認號等于基站記錄的用戶端最新確認號,則屬于重復(fù)應(yīng)答, 即此時用戶端收到的數(shù)據(jù)包存在丟包。根據(jù)所述第一應(yīng)答包中的確認號,基站首先在緩存 中查找所述確認號請求的數(shù)據(jù)包;若找到,則將所述第一應(yīng)答包丟棄,并將所述第一應(yīng)答包 請求的數(shù)據(jù)包發(fā)送至用戶端;若在緩存中沒有找到相應(yīng)數(shù)據(jù)包,則說明基站沒有從服務(wù)器 正確接收到該數(shù)據(jù)包,此時,基站向服務(wù)