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