OpenHarmony 3GPP協議開發深度剖析之搜網流程之PLMN選擇
協議開發最大的法寶就是反復閱讀3GPP協議標準,然后結合標準梳理信令流程,同時比對modem日志或者ap側日志,閱讀modem側源碼或者ap側源碼。本系列主題在操作系統OpenHarmony 側即ap側,不涉及modem側代碼或者日志解讀,但是同樣要對3GPP協議標準弄明白。
何為搜網?
從消費者角度來看,在手機設置-》移動網絡設置中有一項網絡運營商搜索選擇的功能設置,如下圖所示:
如上圖所示,可以選擇“自動搜網”和“手動搜網”兩種模式,通過搜索網絡,可以把手機所在環境的網絡給搜索出來,然后選擇其中一個運營商的網絡去進行注冊。
搜網,從技術原理角度看,就是UE(User Equipment的縮寫,可以簡單理解為手機)對所有的頻段進行掃描,選擇合適的PLMN和小區之后進行注冊。
搜網流程可以簡單化為PLMN選擇-》小區選擇-》注冊網絡,本節內容將只講解PLMN選擇。
自動搜網
UE根據事先設定好的PLMN優先級準則,自主完成PLMN的搜索和選擇,確定好了PLMN之后,會選擇該PLMN內信號最好的小區進行注冊。絕大多數UE都是采用自動搜網模式,手機開機之后也會進行自動搜網。
手動搜網
UE對所有頻段進行掃描,講所有滿足條件的所有PLMN以列表形式呈現給用戶,由用戶來進行選擇。
MCC與MNC
MCC: Mobile Country Code,移動國家碼,MCC的資源由國際電聯(ITU)統一分配和管理,唯一識別移動用戶所屬的國家,共3位,中國為460。
MNC: Mobile Network Code,移動網絡號,用于識別移動用戶所歸屬的移動通信網,2~3位數字組成。
中國MCC常用值如下:
IMSI
國際移動用戶識別碼(英語:IMSI,International Mobile Subscriber Identity),是用于區分蜂窩網絡中不同用戶的、在所有蜂窩網絡中不重復的識別碼。手機將IMSI存儲于一個64比特的字段發送給網絡。IMSI一般存儲在SIM卡中。
IMSI由一串十進制數字組成,最大長度為15位。實際使用的IMSI的長度絕大部分都是15位,短于15位的例子少見,例如,南非MTN有一些仍在網絡中使用的較舊的IMSI為14位數字。IMSI由MCC、MNC和移動訂戶識別代碼(MSIN,Mobile subscription identification number)依次連接而成。MSIN的值由運營商自行分配。
IMSI可以用來在歸屬位置寄存器(HLR,Home Location Register)或拜訪位置寄存器(VLR,Visitor Location Register)中查詢用戶的信息。為了避免被監聽者識別并追蹤特定的用戶,大部分情形下手機和網絡之間的通信會使用隨機產生的臨時移動用戶識別碼(TMSI,Temporary Mobile Subscriber Identity)代替IMSI。
PLMN簡介
PLMN(Public Land Mobile Network,公共陸地移動網絡),由政府批準的經營者,為公眾提供陸地移動通信業務目的而建立和經營的網絡。該網路必須與公眾交換電話網(PSTN)互連,形成整個地區或國家規模的通信網。PLMN = MCC + MNC,例如中國移動的PLMN為46000,中國聯通的PLMN為46001。
PLMN分類
UE通常需要維護幾種不同類型的PLML列表,而每個列表中會有多個不同的PLMN。
- RPLMN(Registered PLMN 已登記PLMN):
已注冊PLMN。是UE在上次關機或脫網前注冊上的PLMN。在3GPP 2003年第TSG TP-21次會議上決定,將該參數從USIM卡上刪掉,而將其保存在UE的內存中。
- EPLMN(Equivalent PLMN 等效PLMN):
即對等公用陸地移動網,是與用戶終端當前所選擇的PLMN處于同等地位的PLMN,其優先級相同。EPLMN主要解決共享網絡與原網絡的用戶駐留和漫游策略。運營商可以配置對等的PLMN網絡,這些網絡之間可以實現通信網絡資源共享。從業務的角度,它使得不同運營商的網絡資源之間,或者同一運營商定義的不同PLMN之間可以實現通信網絡資源共享。
運營商在網絡側(MSCS中)配置EPLMN列表,在EPLMN列表中配置不同PLMN間的對等關系,使這些PLMN處于一個平等的網絡中,這樣,其歸屬的簽約用戶就可以在不同的EPLMN之間進行駐留。一個EPLMN列表最多可配置5個EPLMN(3GPP R5及其以前的階段)或者15個EPLMN(3GPP R6及其以后的階段)。
有了EPLMN列表之后,MSCS將相關的EPLMN數據通過Location Updating Accept(位置更新接受)消息下發給移動用戶,移動用戶將MSCS下發的EPLMN列表加上當前網絡的網絡號保存在SIM卡中,直到下次位置更新成功后刷新該列表。
EPLMN的作用是在跨PLMN漫游時,UE優先選擇簽約注冊網絡推薦的PLMN,保護本運營商的利益。EPLMN功能使得UE在選擇PLMN時可以將不同的PLMN代碼認為是彼此地位相等的,在位置更新(Location Update)、路由區更新(Routing Area Update)、跟蹤區更新(Tracking Area Update)、GPRS(General Packet Radio Service,通用無線分組業務)附著(GPRS Attach)、LTE附著(LTE Attach)過程中,網絡側向UE發送EPLMN列表,UE會將此EPLMN列表和發送此列表的PLMN共同存儲在UE的“Equivalent PLMNs”表中。
比如在邊境地區網絡若配置了EPLMN,具體為本國/地區的運營商將鄰近國家/地區運營商網絡的PLMN標識配置成本國/地區網絡的EPLMN,在該區域的UE可在空閑態從本國/地區網絡進行小區重選到鄰近國家/地區網絡,在連接態從本國/地區網絡進行切換或重定向到鄰近國家/地區網絡,不需要等到脫網后再通過網絡搜索和網絡選擇進行登記,較大的節省了漫游注冊的時延。
- EHPLMN(Equivalent Home PLMN 等效歸屬PLMN):
USIM卡中引入EHPLMN文件,能夠配合終端徹底解決一網雙號甚至一網多號帶來的“終端周期搜網 、出現漫游標識、耗電較快”等問題。其實:EHPLMN和EPLMN就好比是中移動的新建的158網絡,而PLMN就好比是原來的135~139網絡。這是中移為解決一網多號問題而引入的概念,可以參考《對等網絡(EHPLMN)技術標準》。移動用戶激增,移動運營商需要啟用新網號(MNC)與新號段MSISDN映射;運營商重組并購也會導致一個運營商擁有多個網號。但是網絡只能廣播一個網號,這就導致網絡側廣播網號和終端側多個網號不能匹配,終端無法找到歸屬網絡(HPLMN)。例如,目前中移新增號段為158的PLMN為(MCC:460,MNC:02),而以前的135~139號段的PLMN為(MCC:460,MNC:00)。終端在進行PLMN選擇時,除了映射IMSI中的MCC+MNC外,還要進行EHPLMN中MCC+MNC與網絡側進行映射,直到有一個成功或均失敗。
- HPLMN(Home PLMN 歸屬PLMN):為終端用戶歸屬的PLMN。
也就是UE用戶開戶的PLMN,存儲在用戶USIM卡中,即USIM卡上的IMSI號中包含的MCC和MNC,對于某一用戶來說,其歸屬的PLMN只有一個。
- UPLMN(User Controlled PLMN ,用戶控制PLMN):
是終端在用戶手動選網時選擇的PLMN,USIM卡會存儲下來。
- OPLMN(Operator Controlled PLMN 運營商控制PLMN):
運營商燒卡時將與該運營商簽署了漫游協議的運營商PLMN作為OPLMN寫入USIM卡,作為后面用戶選網的建議。
- VPLMN(Visited PLMN 訪問PLMN):
即拜訪PLMN。其PLMN和存在SIM卡中的IMSI的MCC,MNC是不完全相同的。UE在內部會維護一個VPLMN列表,存儲拜訪地網絡下發的PLMN標識信息。當UE切換或者漫游的時候,需要登記到拜訪PLMN。VPLMN的MCC與HPLMN的MCC相同,而MNC不同,這時UE可以根據這種狀況通過周期性搜網的方式回到歸屬網絡。
- APLMN(approve PLMN可捕獲PLMN):
為UE能在其上找到至少一個小區,并能讀出其PLMN標識信息的PLMN。
- FPLMN(Forbidden PLMN禁用PLMN):
為被禁止訪問的PLMN,通常UE在嘗試接入某個PLMN被拒絕以后,會將其加到本列表中。
PLMN選擇優先級
不同類型的PLMN其優先級別不同,終端在進行PLMN選擇時將按照以下順序依次進行:
(1) RPLMN/EPLMN。
(2) EHPLMN。
(3) HPLMN。
(4) UPLMN。
(6) OPLMN。
(7) 其他PLMN。
想要梳理清楚PLMN的選擇流程,就需要閱讀3GPP協議文檔了。
在3GPP 23122中對開機或者小區重選時的PLMN選擇做出了如下說明,
即最先選擇RPLMN或者它的等效PLMN即EPLMN(如果可用的情況下)。
RPLMN或對等PLMN選擇失敗后按照如下順序選擇:
上述順序翻譯過來就是:
- HPLMN(如果EHPLMN列表不存在或為空)或最高優先級的EHPLMN(如果EHPLMN列表存在)。
- 在USIM/SIM卡數據中按照UPLMN優先級順序選擇;(User Controlled PLMN Selector with Access Technology)。
- 在USIM/SIM卡數據中按照OPLMN優先級順序選擇;(Operator Controlled PLMN Selector with Access Technology)。
- 以隨機順序接收高質量信號的其他PLMN/接入技術組合。
- 當信號強度不夠時,根據接收信號強度遞減排序選擇其他所有PLMN。
- 符合災難條件下的FPLMN。
OpenHarmony中相關源碼
OpenHarmony對應搜網的相關核心代碼在 telephony_core_service/ services / network_search下。
而關于PLMN選擇的核心代碼在network_search_manager.cpp 文件中。