劉華+金志堅



【摘 要】為了提升端到端數據包傳輸效率以及移動互聯網用戶感知,以EGPRS網絡為例,深入分析了整個業務鏈條影響數據包分片的機制、參數設置等,并提出相應設置策略和建議,最后結合實際案例驗證了研究成果的可行性和準確性。
【關鍵詞】移動互聯網 EGPRS 端到端 數據包分片 MTU
Research on the Optimization Method of End-to-End Packet Fragmentation
in Mobile Internet
[Abstract] In order to improve the end-to-end data packet transmission efficiency and the mobile Internet user perception, based on EGPRS networks, the impacts of the whole business chain on the mechanism and parameter configuration of packets was analyzed in depth in this paper. Then, corresponding setting policies and suggestions were put forward. Finally, the feasibility and accuracy of the research result was verified according to the practical case.
[Key words]mobile Internet EGPRS end-to-end packet fragmentation maximum transmission unit
1 引言
移動互聯網業務流程涉及眾多節點,包括終端、無線網、核心網、業務網、承載網、互聯網等,這些網絡節點由于其實現機制、接口協議、處理能力等不同,都有可能對數據包進行分片。分片過多或者過少,都將嚴重影響端到端鏈路的承載效率和用戶感知。本文以EGPRS(Enhanced General Packet Radio Service,增強型通用分組無線業務)網絡為例,研究如何在復雜的業務流程和眾多的業務節點中合理設置數據包分片大小,幫助從業人員提升2G/3G數據業務優化能力,并為當前LTE網絡優化奠定基礎。
2 EGPRS端到端網絡結構及協議
EGPRS端到端網絡結構及接口如圖1所示。手機上網業務經過的主要節點包括終端、BSS(Base Station Subsystem,基站子系統)/UTRAN(Universal Terrestrial Radio Access Network,全球陸地無線接入網絡)、SGSN(Serving GPRS Support Node,服務GPRS支持節點)、GGSN(Gateway GPRS Support Node,網關GPRS支持節點)等,主要涉及Um、Gb、Gn、Gi等接口。
EGPRS網絡體現出了分組交換和分組傳輸的特點,即數據和信令是基于統一的傳輸平面。EGPRS端到端控制面、用戶面接口及協議分別如圖2和圖3所示:
3 IP數據包分片
為了適應移動業務多元化,實現網絡融合、業務融合以及運營轉型,移動互聯網不斷向IP化演進,因此IP協議是端到端數據包分片的首要考慮因素。
3.1 數據包的分片與重組
在TCP(Transmission Control Protocol,傳輸控制協議)/IP協議封裝過程中,各個應用程序將要發送的數據送給傳輸層,傳輸層TCP/UDP(User Datagram Protocol,用戶數據報協議)再將數據分為大小一定的數據段,加上本層的報文頭發送給網絡層(IP)。IP分片是網絡層傳輸IP報文的一種技術手段。IP協議在傳輸數據包時,將數據報文分為若干分片進行傳輸,并在下一跳節點進行重組,這一過程稱為分片(Fragmentation)。
MTU(Maximum Transmission Unit,最大傳輸單元)是指在網絡層中可以傳輸的最大IP數據包大小;MSS(Maximum Segment Size,最大報文段長度)是TCP協議的概念,是指傳輸層能夠發送的數據塊最大長度,此長度不包括TCP頭內容。
MTU和MSS是TCP/IP協議通信中有關傳送數據包大小的參數,直接影響到傳送路徑上設備對數據包的分片處理,間接影響到分片包錯序、丟包導致重傳等情況的發生。如果MTU/MSS設置過大,將會導致數據在傳送時多次進行分片,影響系統性能或者出現丟包等問題;如果TCP MSS值設置過小,報文數量明顯增多,導致承載效率下降。
通常情況下,MSS=MTU-IP報頭-TCP報頭(一般為1460=1500-20-20)。為了達到最佳的傳輸效能,TCP協議在建立連接時,需要事先協商雙方的MSS值。對于TCP數據包來說,每個TCP數據包在組成前其大小就已經被MSS限制了,自然也就不用再進行IP層分片;而對于UDP數據包來說,如果UDP組成的IP數據包長度超過MTU,那么必須要進行IP層分片,因為UDP協議不能像TCP協議那樣可以自己進行分片。需要注意的是,分片既可能發生在發送端,也可能發生在轉發報文的路由器、防火墻等中間系統。
IP數據報被分片之后,所有分片報文的IP報頭中的源IP、目的IP、IP標識、上層協議等信息都是一樣的,不同的地方在于分片標志位和分片偏移量,而接收方正是根據接收到的分片報文的源IP、目的IP、IP標識、分片標志位、分片偏移量來對接收到的分片報文進行重組。接收方根據報文的源IP、目的IP、IP標識將接收到的分片報文歸為不同原始IP數據報的分片分組;分片標志中的MF位(More Fragment)標識了是否是最后一個分片報文,如果是則根據分片偏移量計算出各個分片報文在原始IP數據報中的位置,重組為分片前的原始IP報文,如果不是則等待最后一個分片報文達到后完成重組。
如圖4所示,數據包在IP層進行了分片,Identification(0x3555)為該數據包所有分片打上同樣的標記,由于第一個分片的長度為1480字節,因此第二個分片的Fragment offset為1480。
3.2 數據包分片帶來的問題
分片過多將帶來諸多網絡問題,為此要盡量減少分片產生,以適配各個網絡階段傳輸特性,提升系統整體性能。分片帶來的主要問題如下:
(1)分片過多帶來性能消耗
分片和重組會消耗發送方、接收方一定的CPU等資源,如果存在大量的分片報文,可能會造成較為嚴重的資源消耗;分片對接收方內存資源的消耗較多,因為接收方要為接收到的每個分片報文分配內存空間,以便于最后一個分片報文到達后完成重組。
(2)分片丟包導致重傳
IP層本身沒有超時重傳機制,而是由更高層(如TCP)來負責超時和重傳。如果某個分片報文在網絡傳輸過程中丟失,那么接收方將無法完成重組,若應用進程要求重傳,發送方必須重傳所有分片報文而不是僅重傳被丟棄的那個分片報文,這種效率低下的重傳行為會給端系統和網絡資源帶來額外的消耗。
(3)分片攻擊
黑客構造的分片報文不向接收方發送最后一個分片報文,導致接收方要為所有的分片報文分配內存空間,但由于最后一個分片報文永遠不會達到,接收方的內存得不到及時釋放,接收方會啟動一個分片重組的定時器,在一定時間內如果無法完成重組,將向發送方發送ICMP重組超時差錯報文,只要這種攻擊的分片報文發送的足夠多、足夠快,很容易占滿接收方內存,讓接收方無內存資源處理正常的業務,從而達到DoS的攻擊效果。
(4)安全隱患
由于分片只有第一個分片報文具有四層信息而其他分片沒有,這給路由器、防火墻等中間設備在做訪問控制策略匹配時帶來了麻煩。
4 各層協議數據包分片標識
對于不同節點,可以基于以下方法對各個節點IP層分片情況進行評估和分析:
(1)IP層分片標識
IP層應用于Gn、Gi等眾多接口,可以利用ip_flags、ip_flags_df、ip_flags_mf(該字段為“0”表示是最后一個分段,為“1”表示還有更多的分段,除了最后一個分段外,其他的分段都應將該位置“1”)、ip_frag_offset分組統計,得到ip_flags_mf=1的IP層分片包數量占比(即IP層分片的比例)等指標。MF字段為“0”表示是最后一個分段,為“1”表示還有更多的分段,除了最后一個分段外,其他的分段都應將該位置“1”。
(2)IP2層分片標識
EGPRS的IP應用規程結構可以理解為兩層IP結構,即用戶級的IP協議以及采用IP協議的EGPRS系統本身。可以利用ip2_flags、ip2_flags_df、ip2_flags_mf、ip2_frag_offset分組統計,得到ip2_flags_mf=1的IP2層分片包數量占比(即IP2層分片的比例)等指標。
(3)SNDCP層分片標識
SNDCP(Sub Network Dependent Convergence Protocol,子網相關會聚協議)層應用于Gb接口,More bit表示是否最后一個SNDCP分片(實際上隱含說明這個數據包有沒有被分段),該字段為“0”表示是最后一個分段,為“1”表示還有更多的分段。可以利用ip_flags_mf、sndcp_m、sndcp_segment分組統計,得到IP層分片包數量占比、SNDCP層分片包數量占比等指標。
5 接口分片
5.1 Um接口分片
Um接口是手機和基站間的接口,數據包的分片主要取決于信道編碼方式。GPRS支持的編碼方式如表1所示:
EGPRS支持9種編碼方式,峰值速率相比GPRS提升了約3倍,具體如表2所示。
RLC(Radio Link Control,無線鏈路控制)層主要負責LLC-PDU包的拆分和組裝。其運用一種滑動窗口協議,采用確認或非確認模式在對等層之間傳送數據。通過優化手段提升高階編碼占比和降低重傳率,可以提升空中接口傳輸效率和用戶上網速率。
5.2 Gb接口分片
Gb接口是SGSN和BSS之間的接口,該接口通過SNDCP協議實現數據包的分片。SNDCP層執行N-PDU分段的依據是N201,這個LLC層參數通過XID流程協商確定。具體來說,非確認模式根據N201-U來進行分段,確認模式根據N201-I來進行分段。
由于協議并未規定由手機還是SGSN首先發起N201-U協商,目前部分終端不主動與SGSN進行SNDCP的N201-U協商,如果SGSN配置為不主動發起N201-U協商,可能導致以下結果:
(1)終端不主動發起而使得N201-U為500字節,引起數據包在SNDCP層分片。
(2)終端發起協商,由于終端的品牌類型和能力不同,N201-U協商的值會參差不齊,手機發起協商的N201-U值過小(如僅為800字節)。這種情況下也會引起數據包在SNDCP層分片,只是分片數量比第一種情況少。
因此,建議SGSN側開啟Gb N201-U協商功能以及對TCP MSS進行優化調整,可實現所有手機的最大傳輸單元參數協商,以提升手機傳輸能力。
考慮到上述原因,現網中N201-U參數具體優化思路為:基于現網統計,確定現網BSSGP協議開銷,合理設置N201-U參數,保證在SNDCP層和IP層都不分片。例如,基于現網統計,BSSGP協議的字節開銷為63個字節,則LLC層N201-U應設置為:MTU-IP頭長度20字節-UDP頭長度8字節-NS頭長度4字節-BSSGP頭長度63字節-LLC頭長度6字節。
5.3 Gn、Gi接口分片
Gn接口是SGSN和GGSN之間的接口,該接口采用在UDP協議之上承載GTP(GPRS Tunneling Protocol,GPRS隧道協議)的方式進行通信;Gi接口是GPRS與外部分組數據網之間的接口,該接口根據所互通的數據網不同而采用相應的協議,如X.25協議、IP協議等。
Gn、Gi接口采用隧道(Tunnel)技術,隧道是一個虛擬的點對點的連接,在實際中可以看成僅支持點對點連接的虛擬接口,該接口提供了一條通路使封裝的數據包能夠在這個通路上傳輸,并且在一個隧道的兩端分別對數據包進行封裝及解封裝。EGPRS網絡中主要的隧道技術包括:GTP隧道和GRE(Generic Routing Encapsulation,通用路由封裝協議)隧道。
在傳統有線以太網接入情況下,MTU=MSS+IP報頭長度+TCP報頭長度。當MTU為默認1500字節、MSS為1460字節時,MTU和MSS為最優設置,在傳送過程中不會額外發生分片,傳送順暢且效率最佳。但在EGPRS網絡中,由于數據包在Gn、Gi等接口存在額外開銷,有線以太網中的MTU和MSS最優設置不再有效,對于傳統默認參數設置,在GTP隧道(GTP Tunnel)/GRE隧道(GRE Tunnel)必須進行分片處理后才能發送。
(1)GTP隧道
GSN和GGSN之間數據承載為GTP Tunnel,當終端APN(Access Point Name,接入點名稱)設置為CMNET時,GGSN可以直接通過防火墻NAT訪問公網業務服務器,無需GRE隧道(如APN=CMNET)。
3GPP TS 29.060定義的GTP頭部字段(GTP Header)如圖5所示,通常為12字節,其中第1~8個字節為必選項。因此,GTP Tunnel的額外開銷為:IP層開銷(20字節)、UDP層開銷(8字節)和GTP層開銷(可變長度,通常為8字節或12字節)。
(2)GRE隧道
在EGPRS網絡中,用戶使用WAP(Wireless Application Protocol,無線應用通訊協議)網關代理的業務時,由于WAP網關采用私網地址、GGSN采用公網地址,需要在WAP網關和GGSN之間建立GRE隧道,將私網IP報文用公網IP地址封裝后在公網上進行傳輸。當終端APN設置為CMWAP時,GGSN和WAP網關側防火墻之間數據承載為GRE Tunnel。
RFC1701定義的GRE頭部字段如圖6所示,包頭長度為4~20字節,GRE報頭的前32位,這4個字節是必選項,構成了GRE的基本報頭。因此,GRE Tunnel的額外開銷為:IP層開銷(20字節)和GRE開銷(通常為4字節)。
6 分片優化案例
通過對數據包分片原理進行研究,結合實際網絡情況,可以有針對性地解決網絡中存在的分片相關的問題。
案例1:GRE包頭長度問題導致用戶訪問WAP網頁無法打開
問題描述:A廠商GGSN和B廠商WAP網關對接。具體設置為:WAP網關側MSS設置為1436,MTU為1476字節;GRE路由器以及中間IP承載網其他數據通信設備的MTU都是1500。用戶投訴訪問WAP網頁無法打開。
問題分析:
GRE封裝過程如圖7所示,GRE的包大小為:MSS+原始TCP包頭(20字節)+原始IP包頭(20字節)+新IP包頭(20字節)+GRE包頭(通常為4字節)=1500字節。
通常情況下,GRE頭部開銷為4~20字節,前4個字節為必選項,后16個字節為可選項。進行抓包分析,發現在該GRE路由器GRE頭部開銷實際為8字節,導致WAP網關側1476(MTU)字節長度的數據包經過GRE路由器后實際長度為:1476+20(新IP包頭)+8(GRE包頭)=1504字節,超過GRE路由器以及中間IP承載網其他數據通信設備的MTU(1500字節),如果存在中間網元丟包處理或者GGSN無法完成分片重組等,MS將無法打開相應的網頁。
考慮到實際網絡中GRE頭部開銷為8字節,將WAP網關側MTU降至1472字節,保證經過GRE路由器處理后正好為1500字節(1472+20+8=1500),這樣在傳遞給其他數據通信設備以及GGSN時就不會再出現分片的問題。
案例2:GGSN GRE接口MTU設置問題導致下行分片率過高
問題描述:基于現網統計,某局WAP網關到GGSN下行分片率較高。
問題分析:WAP網關→GGSN下行數據業務承載在GRE Tunnel上,除去IP層開銷(20字節)和GRE開銷(通常為4字節)后,最大傳輸單元最大為1476字節。基于上述分析,可通過優化GGSN GRE接口MTU值為1476、優化WAP網關防火墻MTU值為1476來解決該問題。
案例3:GGSN側Gi接口MSS設置問題導致GTP Tunnel和GRE Tunnel分片率均過高
問題描述:基于現網統計,WAP網關到SGSN的下行數據傳輸中,GTP Tunnel和GRE Tunnel分片率均較高。
問題分析:正常情況下,GTP Tunnel需要增加IP層開銷(20字節)、UDP層開銷(8字節)和GTP層開銷(8或12字節開銷,假設現網為8字節),而GRE Tunnel需要增加IP層開銷(20字節)和GRE開銷(4字節)。因此,一個數據包如果在GTP Tunnel上不分片,那么在GRE Tunnel上也不會分片。
基于上述分析,解決措施為:優化GGSN側匯聚交換機Gi接口MSS配置為1500-20-8-8-20(應用級IP包頭)-20(應用級TCP包頭)=1424字節。
7 結束語
本文以EGPRS網絡為例,研究了移動互聯網端到端數據包分片的原理,基于業務鏈條總結了Um、Gb、Gn、Gi導致數據包分片的原因及優化方法,相應成果在解決網絡實際問題中也得到了應用和驗證。下一步可在此成果基礎上,對LTE、VoLTE端到端數據包分片的原理及優化方法進行專題研究。
參考文獻:
[1] W Richard Stevens. TCP/IP詳解卷1:協議[M]. 范建華,胥光輝,張濤,等譯. 北京: 機械工業出版社, 2014.
[2] Chris Sanders. Wireshark數據包分析實戰[M]. 2版. 諸葛建偉,陳霖,許偉林,譯. 北京: 人民郵電出版社, 2013.
[3] 3GPP TS 29.060 V4.11.0. GPRS Tunnelling Protocol (GTP) across the Gn and Gp interface[S]. 2004.
[4] 3GPP TS 23.060 V4.11.0. Service description; Stage 2[S]. 2006.
[5] 3GPP TS 44.060 V4.23.0. Radio Link Control/Medium Access Control (RLC/MAC) protocol[S]. 2005.
[6] 3GPP TS 44.064. V4.3.0. Logical Link Control (LLC) layer specification[S]. 2002.
[7] 3GPP TS 44.065.V4.3.0. Subnetwork Dependent Convergence Protocol (SNDCP)[S]. 2004.
[8] 3GPP TS 29.061. V4.10.1. Interworking between the Public Land Mobile Network (PLMN) supporting packet based services and Packet Data Networks (PDN)[S]. 2005.
[9] 3GPP TS 48.016.V4.4.0. Base Station System (BSS) - Serving GPRS Support Node (SGSN) interface; Network Service[S]. 2004.
[10] 3GPP TS 48.018. V4.7.0. General Packet Radio Service (GPRS); Base Station System (BSS) - Serving GPRS Support Node (SGSN); BSS GPRS Protocol (BSSGP)[S]. 2004.