移動資料通訊網路工作原理(SGSN&GGSN)
最近公司在做行動網路的優化和治理工作,借這個機會,好好學習了下行動網路底層傳輸的工作原理,並將結果分享出來。
1 行動網路的演進
GSM(Global System For Mobile Communications)是第一代行動通訊網路,也就是常用的2G行動電話系統。其做出的改變是將信令和語音通道都轉換成數字式的。
GPRS(General Packet Radio Service)是第二代移動通訊系統,在GSM的基礎上,採用分組交換傳輸資料的高效率方式,利用“包交換”(Packet-Switched)將資料封裝成許多獨立的封包,再將這些封包一個一個傳送出去,效率比GSM高的多,因為這樣做,只有在需要傳輸時,才會佔用頻寬。GPRS核心網元包括SGSN(Serving GPRS Support Node)和GGSN(Gateway GPRS Support Node)
UMTS(Universal Mobile Telecommunications System)在GPRS的基礎上,引入了WCDMA空中介面技術,“空中介面”相對於有線通訊中的線路介面,是基站和行動電話之間的無線傳輸規範,它定義每個無線通道的使用頻率。UMTS被稱為第三代移動通訊系統。同時,GPRS/UMTS也成為了一個完整的3G移動通訊技術標準。
LTE(Lang Term Evolution)是目前普遍應用的4G通訊的主流技術,原有3G核心網的SGSN和GGSN功能歸併後重新被劃分,生成新的邏輯網元:移動管理實體(MME)和服務閘道器(Serving Gateway)。換言之,3G和4G核心網路的邏輯架構是不同的,演進過程中需要對SGSN和GGSN的軟硬體進行升級。
綜上所述,GPRS/UMTS起到了承前啟後的作用,其工作原理與機制也被4G、5G所沿用並優化。因此我們詳細來看GPRS/UMTS系統。
2 GPRS/UMTS網路架構
簡單來說,GPRS/UMTS的網路架構主要包括兩部分:無線接入網路(RAN)和核心網(CN)。如下圖所示:
2.1 無線接入網RAN
無線接入網(Radio Access Network),簡稱RAN。RAN中包括的裝置包括有:基站(Node B)和無線網路控制器(RNC),主要的功能就是控制使用者通過無線接入到行動通訊網路中來。
其中,基站的作用是為了資料的無線傳遞,而RNC主要用於管理和控制它下面的多個基站,並決定接入到核心網。
2.2 無線核心網CN
現階段,3G核心網由電路域(CS域)和分組域(PS域)兩部分組成,分別負責傳統語音業務和分組域業務(資料和多媒體業務),我們只看PS域。
PS核心網主要由SGSN和GGSN兩部分組成。統稱為GSN,GSN的功能包括:
- 過濾和使用者訪問控制:通過資料包過濾功能過濾出未經授權和未經請求的訊息,所有這類訊息由使用者控制處理。在使用者請求訪問外部分組資料網之前,可以發起對使用者身份的鑑權流程。
- 計費:收集必要的話單資料,以支援按照簽約付費或者按照流量付費。
- 中繼:把從一個節點收到的資料轉發到路由表指定的下一個節點。
- 路由:路由功能按照訊息的目的地址決定轉發的下一個節點,並選擇傳輸路徑。
- 地址轉換和對映:地址轉換是把一個地址變成不同種類的一個地址,比如把一個分組資料網路協議地址變成一個內部網路地址,使得該資料能在內部網路上路由。地址對映是把一個地址變成相同種類的另一個地址,以便在內部網路上路由和中繼。
- 封裝:封裝是在一個數據單元上增加地址和控制資訊,以便在內部網路或者之間的網路上路由。去封裝是把地址和控制資訊,從資料包上去掉,以恢復原始資料單元。
- 隧道:隧道功能是在內部或之間的網路上把封裝後的資料從一個封裝點傳送到另一個去封裝點。一個隧道一條雙向點到點的路徑。只有隧道端點能夠識別。
- 移動性管理:移動性管理功能用於在內部或之間,跟蹤移動臺當前的位置
SGSN
SGSN主要用於為在其地理範圍內的移動站傳遞資料包,相當於無線網路中的路由節點。它可以進行分組路由和轉發,移動性管理(附著,去附著和位置管理),邏輯鏈路管理,鑑權以及計費功能。SGSN的位置暫存器儲存著位置資訊,比如當前的小區。
SGSN的主要功能包括:
1 完成和GGSN的通訊,通過GTP協議將使用者資料傳遞給GGSN,並將GGSN返回的資料傳遞給使用者
2 當用戶地理位置發生變化,執行移動性管理。
GGSN
GSGN作為整個GPRS/UMTS網路的閘道器,位於GPRS網路和外部分組交換網路(Internet)之間。閘道器的作用能將一種協議格式的資料轉換為另一種格式的資料。
GGSN把來自的SGSN的GPRS資料包轉化為適當的分組資料協議格式,比如IP,然後再把它們傳送到相應的分組資料網路,比如廣域有線網。反之亦然。
SGSN和GGSN的區別
所以,GGSN和SGSN的主要區別就在於,GGSN作為閘道器,是在不同的通訊網中轉換協議,而SGSN作為路由,只是在使用相同協議的網路中傳送、接受以及延遲它的資料包。
另外,GGSN能夠實現地址的轉換,比如把無線網路內部地址(PDP地址)轉換為一個分組資料網路協議地址(IP地址),而SGSN只能實現PDP地址對映,即根據一個地址,對映到相同種類的另一個地址。可見,我們常說的3、4G網路的IP地址,其實就是對應GGSN的出口IP地址。
2.3 GTP隧道協議
GTP協議為GPRS/UMTS分組域核心網中的SGSN和GGSN之間的信令和使用者資料提供隧道。隧道協議能夠將其他協議的資料幀或包重新封裝然後通過隧道傳送。新的幀頭提供路由資訊,以便在不同網路下傳遞被封裝的負載資料
GPRS隧道通過GTP協議封裝了含有終結點標識TEID的頭,用於實現路由以及多路複用。在核心網內部通過GTP協議通訊,在外部資料網側是TCP協議或者UDP協議通訊,所以資料報在這兩種網路間互動需要對資料報頭進行處理(SGSN、GGSN都可以實現)。進入核心網時需要對資料報進行加GTP頭處理,反之,則需要對資料報進行去GTP頭處理。
3. 無線核心網工作原理
在GPRS/UMTS分組域核心網中,通過PDP上下文(Pocket Data Protocol, 分組資料協議)來管理使用者從移動終端到GGSN及外部分組資料網的資料路由資訊。PDP上下文的資料分別儲存在移動終端、SGSN和GGSN中。移動使用者需要使用分組資料業務時,需要先執行啟用PDP上下文,啟用成功後,在移動終端、SGSN和GGSN中就增加了一條新的PDP上下文記錄,根據這條記錄資訊,SGSN和GGSN才能正確地路由和轉發使用者資料。
所以,一個完整的分組業務過程包括三個階段:
- 分組域會話連線建立階段:使用者在移動終端一側發起啟用PDP上下文的請求,GPRS/UMTS接受使用者的請求並建立新的PDP上下文。PDP上下文包含了對映和路由資訊,用於在移動臺和GGSN之間轉發資料;
- 分組域會話階段:使用者得到PDP上下文建立成功的確認後,開始使用外部分組資料網路提供的資料業務(簡單說,開始使用網際網路Internet服務)。GPRS/UMTS網路在移動終端和網際網路之間透明地路由並轉發分組資料,同時,提供資料封裝功能(GTP),保證在不同網路環境下,資料與路由的正確性。
- 分組域會話結束連線階段:當用戶不再需要使用上述資料業務時,GGSN釋放PDP地址。
3.1 分組業務會話連線建立
如下圖所示,移動終端傳送PDP啟用請求訊息給SGSN,SGSN驗證PDP型別,根據地址轉發到GGSN。GGSN在PDP上下文表中加入一條新的記錄,這條新的記錄允許GGSN在SGSN和網際網路之間正確地路由通訊。
GGSN返回一條響應訊息給SGSN,SGSN更新自己的PDP上下文表,可以在GGSN和移動終端之間正確的路由通訊。併發送響應告知移動終端建連成功。
3.2 分組會話傳輸
當PDP上下文成功建立後,該使用者就可以通過GPRS/UMTS網路,在移動終端使用分組資料網提供的各種應用程式,如HTTP、FTP、郵件和流媒體業務。
3.3 分組會話結束
當用戶不再使用業務時,移動終端傳送去啟用訊息給SGSN。SGSN傳送刪除PDP上下文請求給GGSN,GGSN刪除PDP上下文,並返回訊息給SGSN。SGSN將去啟用響應訊息再返回給移動終端。
4. 行動網路優化建議
行動網路傳輸的特性對我們的效能策略提出了新的、獨特的要求。應用層協議雖然相同,但物理傳輸層的差別卻有很多限制,如果對這些限制估計不足,就會導致響應速度慢、延遲時間搖擺不定,最終導致使用者體驗大打折扣。
底層的無線傳輸優化必須依賴於運營商,作為應用程式提供方,參考《Web效能權威指南》,我們可以做的事情包括:
4.1 APP節約用電
手機無線電模組的耗電量僅次於裝置的螢幕,全功率開啟無線電模組只消幾小時就可耗盡電量。我們應該盡最大可能在無線電開啟時傳輸資料,而儘量把喚醒無線電以傳輸資料的次數減到最少。
這裡提供給開發和測試一款開源工具,可以用於測試和評估應用程式的耗電量:Application Resource Optimizer(ARO,應用資源優化器)工具包。
ARO包含兩個元件:收集器和分析器。其中,收集器是一個後臺Android應用(可以在手機或模擬器中執行),用於捕獲傳輸的資料分組、無線模組活動息及其他與手機的互動行為。要想記錄用電情況,可以開啟收集器,點選記錄,使用應用,然後將記錄結果複製到系統中。
得到記錄結果後,可以通過分析器開啟它,從而得知無線電狀態、電量消耗、應用的通訊模式等資訊。另外,分析器有一個很不錯的功能,即針對常見的效能陷阱提供建議,比如沒有壓縮、重複傳輸資料,等等。
4.2 服務端推送優於客戶端輪詢
輪詢在行動網路中代價極高,少用,儘可能使用推送和通知,且要控制推送頻率。一般來說,推送比輪詢效果更好。但頻率過高的推送與輪詢也不相上下。
對推送而言,原生應用可以訪問平臺專有的推送服務,因此應該儘可能使用。對Web應用來說,可以使用SSE(Server Sent Events,伺服器傳送事件)和WebSocket以降低延時間和協議消耗,儘可能不使用輪詢和更耗資源的XHR技術。
4.3 面對多網路瞬態變化的現實
即便使用者手裡拿著最新的手機,也需要不斷在4G、3G,甚至2G網路之間切換。我們的應用必須接受這些介面變化,作出相應調整:
- 不要快取或試圖猜測網路狀態;
- 排程請求、監聽並診斷錯誤;
- 瞬態錯誤總會發生,不可忽視,可以採取重試策略;
- 監聽連線狀態,以便採用最佳請求方式;
- 對重試請求採用補償演算法,不要永遠迴圈;
- 離線時,儘可能記錄並在將來發送請求;
- 利用H5的AppCache和localStorage實現離線應用。
5. 根據行動通訊原理解釋常見的網路疑問
瞭解了移動資料核心網路的架構和工作原理後,對我們分析使用者常見的一些網路現象和問題幫助很多,比如說:
場景一:在同一個地區,使用同一個運營商的同一個基站的使用者出口IP是否相同?
不相同,正如我們上面說的,基站的作用其實僅僅是無線資料的傳遞(只涉及到物理層和資料鏈路層),而真正決定使用者出口IP的是GGSN(GGSN將無線地址轉換成IP地址)。而每個地區運營商的GGSN,使用的不只一個IP地址,而是一個IP地址池。
所以同地區運營商的使用者,IP地址不同,但會處於一個網段中。同時,每個使用者的IP在一定時間內會變換(GGSN會從地址池中更新IP)
場景二:為什麼手機漫遊到外省後上網卻顯示歸屬地 IP?
比如使用者是上海聯通的,來到南京,顯示的仍是上海聯通的IP。
漫遊使用者接入網際網路的方案有兩種:1. 歸屬地接入方式,2. 漫遊地接入方式。蘋果手機預設使用歸屬地接入方式。
歸屬地接入方式就是無論使用者漫遊還是在本地,最終都是通過歸屬地的GGSN連線到網際網路的。歸屬地接入方式的好處就是各省之間的計費話單對賬方便,缺點就是增加了時延。
漫遊地接入方式顧名思義就是直接使用漫遊地運營商的GGSN/P-GW接入Internet,此時使用者所使用的公網IP地址就是漫遊地的IP地址。漫遊地接入方式的優點就是省去了資料可能要繞大半個中國甚至大半個地球的麻煩,有利於降低時延,節省長途鏈路資源等等。
場景三:漫遊手機使用者的網路問題應該如何排查?
漫遊手機使用者的網路問題肯定是由於漫遊地運營商網路造成的。而如果採用歸屬地接入方式的話,網路問題有可能是歸屬地運營商網路造成,也有可能是由漫遊地的SSGN無線核心網造成的。