0、引言
GPRS應(yīng)用于個人商務(wù)網(wǎng)絡(luò),主要訪問網(wǎng)頁、收發(fā)郵件等,各種應(yīng)用有確定的協(xié)議,但在工業(yè)數(shù)據(jù)傳輸?shù)刃袠I(yè)應(yīng)用領(lǐng)域中,用戶面對可選的UDP與TCP傳輸,沒有明確的標(biāo)準(zhǔn),業(yè)主單位、設(shè)備供應(yīng)商、系統(tǒng)集成商常常為在GPRS網(wǎng)絡(luò)上選用何種傳輸協(xié)議進(jìn)行長時間討論與測試。本文將兩種協(xié)議進(jìn)行對比,從可靠性、適用性、資費等方面深入討論在GPRS網(wǎng)絡(luò)上,兩種數(shù)據(jù)傳輸協(xié)議在不同應(yīng)用領(lǐng)域的適用性。
1、GPRS行業(yè)應(yīng)用
GPRS當(dāng)前應(yīng)用廣泛的行業(yè)有電力、油田、工業(yè)控制、運輸、金融、證券、商業(yè)、公共安全業(yè)、天氣預(yù)報、交通信息實時發(fā)布等,應(yīng)用特點是數(shù)據(jù)量小,發(fā)送時間間隔大,或不定時發(fā)送。通過GPRS網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸,具有成本低、組網(wǎng)迅速靈活、范圍廣、專業(yè)隊伍維護(hù)的優(yōu)勢。
應(yīng)用中,用戶在GPRS網(wǎng)絡(luò)上可選擇UDP與TCP傳輸協(xié)議,由于沒有明確的標(biāo)準(zhǔn),選用何種協(xié)議讓業(yè)主單位、設(shè)備供應(yīng)商、系統(tǒng)集成商常常為在選用何種傳輸協(xié)議進(jìn)行長時間討論,并且進(jìn)行了大量測試,幾乎每個項目都要進(jìn)行小規(guī)模試驗,影響了GPRS在行業(yè)應(yīng)用的進(jìn)程。系統(tǒng)運行效果除受協(xié)議選擇影響外,還受到網(wǎng)絡(luò)質(zhì)量、使用方式、外圍設(shè)備的影響。很多試驗的結(jié)果不盡一致,不能準(zhǔn)確反映TCP/UDP協(xié)議選擇帶來的效果。讓TCP/UDP選擇再次陷入新一輪討論與測試過程。
2、兩種傳輸協(xié)議的定義與主要特征的比較
關(guān)于UDP、TCP兩種協(xié)議的詳細(xì)講解請參閱相關(guān)資料,這里針對行業(yè)應(yīng)用的特點進(jìn)行說明。
UDP是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議:進(jìn)程的每個輸出操作都正好產(chǎn)生一個UDP數(shù)據(jù)報,并組裝成一份待發(fā)送的IP數(shù)據(jù)報。UDP數(shù)據(jù)報封裝成一份IP數(shù)據(jù)報的格式如圖所示:
UDP不提供可靠性連接:它把應(yīng)用程序傳給IP層的數(shù)據(jù)發(fā)送出去,但是并不保證它們能到達(dá)目的地。
TCP和UDP都使用相同的網(wǎng)絡(luò)層(IP)。TCP提供了一種可靠的面向連接的字節(jié)流運輸層服務(wù)。如圖所示:
TCP向應(yīng)用層提供與UDP完全不同的服務(wù)。TCP提供一種面向連接的、可靠的字節(jié)流服務(wù)。TCP將用戶數(shù)據(jù)打包構(gòu)成報文段;它發(fā)送數(shù)據(jù)后啟動一個定時器,等待對端數(shù)據(jù)確認(rèn);另一端對收到的數(shù)據(jù)進(jìn)行確認(rèn),對失序的數(shù)據(jù)重新排序,丟棄重復(fù)數(shù)據(jù);TCP提供端到端的流量控制,并計算和驗證一個強制性的端到端檢驗和。
面向連接意味著兩個使用TCP的應(yīng)用(通常是一個客戶和一個服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個TCP連接。這一過程與打電話很相似,先撥號振鈴,等待對方摘機(jī)說“喂”,然后才說明是誰。
TCP傳輸協(xié)議連接過程:
首先建立連接,TCP用三個報文段完成連接的建立。這個過程也稱為三次握手(three-way handshake)。如圖所示:
終止一個連接要經(jīng)過4次握手。如圖所示:
數(shù)據(jù)發(fā)送必須經(jīng)過接收方確認(rèn),并且有超時重傳等保障機(jī)制,這是TCP傳輸有一定保障的根本原因。
可以看到,完成一次數(shù)據(jù)傳送,除了完成連接、終止連接外,至少還需要一個數(shù)據(jù)分組與一個ACK分組。
UDP與TCP提供不同的傳輸方式與不同的傳輸質(zhì)量,TCP以增加網(wǎng)絡(luò)開銷的方式提供傳輸保障。在GPRS網(wǎng)絡(luò)實際測試,當(dāng)網(wǎng)絡(luò)正常情況下,從GPRS DTU->GPRS網(wǎng)絡(luò)->互聯(lián)網(wǎng)->用戶數(shù)據(jù)中心這個通路上,UDP傳輸有效性>99%,TCP傳輸有效性≈100%
3、傳輸效率
在只考慮UDP/TCP分組情況下,發(fā)送應(yīng)用數(shù)據(jù),數(shù)據(jù)包為IP頭+UDP/TCP頭+應(yīng)用數(shù)據(jù)。GPRS網(wǎng)絡(luò)計費按照流量計費,數(shù)據(jù)傳送效率就顯得十分重要。由于目前分組數(shù)據(jù)機(jī)費按照網(wǎng)絡(luò)協(xié)議二層以上數(shù)據(jù)計算(即IP包數(shù)據(jù)),傳輸效率計算按照以下公式計算:
包傳輸效率= 數(shù)據(jù)長度/(數(shù)據(jù)長度+UDP/TCP頭長度)
數(shù)據(jù)長度
|
UDP效率
|
TCP效率
|
8
|
50.00%
|
28.57%
|
16
|
66.67%
|
44.44%
|
32
|
80.00%
|
61.54%
|
64
|
88.89%
|
76.19%
|
128
|
94.12%
|
86.49%
|
256
|
96.97%
|
92.75%
|
512
|
98.46%
|
96.24%
|
1024
|
99.22%
|
98.08%
|
通過協(xié)議內(nèi)容分析,可以看到單包傳送的用戶數(shù)據(jù)量比較小時,UDP協(xié)議傳輸效率明顯高于TCP協(xié)議。行業(yè)應(yīng)用數(shù)據(jù)量比較小,不同行業(yè)應(yīng)用選擇協(xié)議時,需要仔細(xì)分析應(yīng)用層數(shù)據(jù)單幀字節(jié)數(shù)。
以上只是數(shù)據(jù)分組的傳輸效率,TCP協(xié)議還需要連接、終止連接、ACK包等額外開銷,UDP與TCP實際傳送效率差別將遠(yuǎn)大于上表中的計算效率差別。
4、網(wǎng)絡(luò)承載能力
GPRS分組業(yè)務(wù)信道可采用CS-1~CS-4不同的編碼方式(其數(shù)據(jù)速率分別為9.05kbit/s、13.4kbit/s、15.6kbit/s、21.4kbit/s)。采用編碼方式為CS-4時,且無線環(huán)境良好,信道充足的情況下,可以實現(xiàn)GPRS網(wǎng)絡(luò)支持的理論最高速率171.2kbps,這種速率完全可以支持一些多媒體圖像傳輸業(yè)務(wù)等對帶寬要求較高的應(yīng)用業(yè)務(wù)。但實際數(shù)據(jù)傳輸速率受網(wǎng)絡(luò)編碼方式和終端支持的因素影響,CS-3、CS-4的接收參考靈敏度較低,這兩種編碼方式只有在距離基站較近且信號較好的地區(qū)才能夠真正使用。
目前,GPRS采用CS-2信道編碼方案。保證實現(xiàn)小區(qū)的90%以上覆蓋,滿足C/I不低于9dB的要求。在小區(qū)內(nèi),提供上下行分別為1~4 GPRS信道(PDCH)。GPRS無線信道的分配初期至少設(shè)置一個靜態(tài)的分組數(shù)據(jù)業(yè)務(wù)信道,以后根據(jù)GPRS的流量調(diào)整PDCH分配。按照話音優(yōu)先的原則,動態(tài)信道將優(yōu)先分配給話音信道,保證GSM質(zhì)量。所以GPRS帶寬為13.4Kbps~54.4Kbps。
在中國移動GPRS網(wǎng)絡(luò)上,采用上下行不對稱方法分配信道,上行小,下行大,通常為1+2、1+3、2+4等。這主要是為客戶訪問互聯(lián)網(wǎng)設(shè)置的,而在行業(yè)應(yīng)用中,出現(xiàn)的情況正相反,上行數(shù)據(jù)大于下行數(shù)據(jù)。因此,在考慮GPRS網(wǎng)絡(luò)帶寬問題時,應(yīng)該考慮帶寬較窄的上行帶寬。
GPRS業(yè)務(wù)的特點是數(shù)據(jù)通道共享,這帶來了按流量計費的便利,但小區(qū)內(nèi),終端數(shù)量多,數(shù)據(jù)量大等情況下,終端必須在有限的帶寬中競爭,導(dǎo)致掉線率高,上網(wǎng)困難等現(xiàn)象。這也就是GPRS開通一年之久后體現(xiàn)出的新應(yīng)用特點:GPRS在個人用戶市場上競爭力不強,但是在大量的行業(yè)數(shù)據(jù)傳輸上具有非常強的優(yōu)勢。
有限的帶寬資源對應(yīng)用提出了要求:數(shù)據(jù)量小、傳輸效率高。
5、行業(yè)應(yīng)用的需求
GPRS行業(yè)應(yīng)用,無論是電力抄表、管網(wǎng)監(jiān)測、氣象采集、金融業(yè)務(wù)等,都是終端設(shè)備與數(shù)據(jù)服務(wù)器之間的通訊,在提供GPRS傳輸方式之前,有電臺、MODEM(電話線)、專線、直接電纜連接等方式。這些方式提供的通訊質(zhì)量差異較大。不同的應(yīng)用,對傳輸可靠性的要求是不同的,有的可以接受少量數(shù)據(jù)丟失,有的必須確保任何數(shù)據(jù)的不丟失,有的不接受超時效數(shù)據(jù)。不同的應(yīng)用中,相同的特點是不依賴傳輸手段提供的數(shù)據(jù)保障,終端與數(shù)據(jù)中心之間有各自的通訊協(xié)議,通過誤碼/超時重傳等方法,確保數(shù)據(jù)的安全準(zhǔn)確。
采用UDP協(xié)議傳送,UDP包等同應(yīng)用數(shù)據(jù)包,基本沒有額外開銷。
TCP協(xié)議按照協(xié)議窗口進(jìn)行多包統(tǒng)一確認(rèn)的方式,可以減少ACK報文的數(shù)量,但是在行業(yè)應(yīng)用中,應(yīng)用的特點是數(shù)據(jù)量小,發(fā)送間隔通常從幾秒到幾小時之間不等,數(shù)據(jù)報文之間發(fā)送間隔通常超過TCP協(xié)議需要的最大確認(rèn)間隔,導(dǎo)致幾乎每個數(shù)據(jù)報文都需要在TCP協(xié)議中的ACK報文。
在整個應(yīng)用系統(tǒng)中,傳輸保障是由應(yīng)用協(xié)議與網(wǎng)絡(luò)協(xié)議共同完成的,要充份選擇發(fā)揮應(yīng)用協(xié)議與網(wǎng)絡(luò)協(xié)議的優(yōu)勢,達(dá)到總的效率最高、效果最好的目的。在應(yīng)用協(xié)議中,大多具有基本的傳輸保障功能,通過應(yīng)用層協(xié)議中超時重傳等功能完全可以滿足對UDP協(xié)議中少量丟包情況的處理,按照UDP丟包的概率,重傳概率也在1%左右。如果選用TCP協(xié)議,將導(dǎo)致數(shù)據(jù)量大大增加。兩種協(xié)議傳輸過程如圖所示。
6、其它需要考慮的問題
TCP連接保證數(shù)據(jù)傳輸?shù)目煽啃?,每個具體TCP實現(xiàn)必須選擇一個報文段最大生存時間MSL (Maximum Segment Lifetime)。它是任何報文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長時間。我們知道這個時間是有限的。RFC 793 [Postel 1981c] 指出MSL為2分鐘。然而,實現(xiàn)中的常用值是30秒,1分鐘,或2分鐘。對于部分實時監(jiān)控系統(tǒng),超過時效的數(shù)據(jù)是沒有任何用途。使用UDP連接,當(dāng)網(wǎng)絡(luò)擁塞時,部分?jǐn)?shù)據(jù)包被丟棄,但可以改善接收數(shù)據(jù)嚴(yán)重滯后的情況。
GPRS在電力系統(tǒng)中的應(yīng)用,剛剛起步,處于小規(guī)模試用階段,無論選用UDP還是TCP協(xié)議,都對網(wǎng)絡(luò)及服務(wù)器系統(tǒng)不會產(chǎn)生明顯壓力,使用TCP協(xié)議時,可靠的傳輸顯得更為便利。但TCP協(xié)議卻不適合大規(guī)模使用。城市電力配網(wǎng)自動化、抄表等應(yīng)用,一個系統(tǒng)可能有成千上萬臺終端,如果選用TCP連接,服務(wù)器除了完成大量數(shù)據(jù)處理功能,還需要完成對大量GPRS終端的TCP連接保持。這對服務(wù)器的承載能力提出了嚴(yán)格的要求。
如果終端連接數(shù)量大,使用TCP連接協(xié)議可能帶來更嚴(yán)重的問題。GPRS終端與服務(wù)器建立了TCP連接后發(fā)送數(shù)據(jù)后,或者服務(wù)器向正在請求連接的終端發(fā)出SYN+ACK應(yīng)答報文后可能無法收到對端的ACK報文,這種情況下發(fā)送端一般會重試并等待一段時間后終止這個的連接,一般來說這個時間大約為30秒~2分鐘;一個終端出現(xiàn)異常導(dǎo)致服務(wù)器的一個線程等待1分鐘不是大問題,但如果網(wǎng)絡(luò)擁塞導(dǎo)致大量這種情況,服務(wù)器端將為了維護(hù)一個非常大的半連接列表而消耗非常多的資源,即使是簡單的保存并遍歷也會消耗非常多的CPU時間和內(nèi)存,何況還要不斷對這個列表中的IP進(jìn)行重試。如果服務(wù)器的TCP/IP棧不夠強大,最后的結(jié)果往往是堆棧溢出崩潰。即使服務(wù)器系統(tǒng)足夠強大,也忙于處理TCP連接請求以及重傳數(shù)據(jù)導(dǎo)致系統(tǒng)性能嚴(yán)重下降。大量重傳數(shù)據(jù)進(jìn)一步加劇GPRS網(wǎng)絡(luò)的擁塞情況,嚴(yán)重時可以讓GPRS網(wǎng)絡(luò)及服務(wù)器系統(tǒng)崩潰。
7、結(jié)論
在行業(yè)應(yīng)用中,需要仔細(xì)分析行業(yè)應(yīng)用特點,根據(jù)需要選擇UDP或TCP協(xié)議。多點分散、數(shù)據(jù)量小、實時性要求高、終端數(shù)量多的應(yīng)用,可以考慮UDP的協(xié)議。對于一些數(shù)據(jù)量大、數(shù)據(jù)可靠性要求十分嚴(yán)格、終端數(shù)量較少,以及部分特殊應(yīng)用,TCP會好一點。
參考文獻(xiàn):
1、《TCP/IP詳解,卷1:協(xié)議》
2、《H711x GPRS DTU使用說明書》
評論
查看更多