對於運行 Android 12 或更高版本的設備,Android 提供對 5G 網路切片的支持,即使用網路虛擬化將單一網路連接劃分為多個不同的虛擬連接,為不同類型的流量提供不同數量的資源。 5G 網路切片允許網路營運商將網路的一部分專門用於為特定客戶群提供特定功能。 Android 12 引進了以下 5G 企業網路切片功能,網路營運商可以向其企業客戶提供這些功能:
針對完全託管設備的企業設備切片
對於向員工提供完全託管的公司設備的企業,網路供應商可以為他們提供一個或多個活動的企業網路切片,公司設備上的流量將路由到這些切片。從Android 12開始,Android允許業者透過URSP規則提供企業切片,而不是透過APN設定切片。
適用於具有工作設定檔的裝置的企業業務應用程式切片
對於使用工作設定檔解決方案的企業,Android 12 允許裝置將工作設定檔中所有應用的流量路由到企業網路切片。企業可以透過設備策略控制器(DPC)啟用此功能。
工作設定檔解決方案提供了企業所需的自動層級的身份驗證和存取控制,以確保只有來自工作設定檔中的企業應用程式的流量才會路由到企業網路切片。工作設定檔中的應用程式無需修改即可明確請求企業網路切片。
5G 網路切片在 AOSP 中的工作原理
Android 12 透過新增 AOSP 中的電話程式碼庫和網路共用模組來引入對 5G 網路切片的支持,以合併網路切片所需的現有連接 API。
Android 電話平台提供 HAL 和電話 API,以支援基於核心網路程式碼提交的網路請求和數據機中的 5G 切片功能進行切片。圖 1 描述了 5G 網路切片功能的組件。
圖 1. AOSP 中的 5G 網路切片架構。
電話和連接平台支援:
- 將切片類別的網路請求轉換為流量描述符,然後將其傳遞到數據機以進行 URSP 流量匹配和路由選擇
- 如果企業網路切片不可用,則回退到預設網絡
- 將工作設定檔下所有應用程式的流量路由到相應的連接
支持企業切片
- 檢測設備上是否存在工作設定文件
- 檢查企業 IT 管理員所使用的 DPC 提供的權限或路由方向
核心網路服務包括 Android 12 中的網路共享模組的以下變更:
- 將大部分
android.net.*
公共或系統 API 類別新增至網路共用模組 擴展了網路共享模組邊界,包括:
-
f/b/core/java/android/net/…
-
f/b/services/net/…
-
f/b/services/core/java/com/android/server/connectivity/…
-
f/b/services/core/java/com/android/server/ConnectivityService.java
-
f/b/services/core/java/com/android/server/TestNetworkService.java
-
將 VPN 程式碼移出網路共享模組
Android 12 將具有以下功能的程式碼移至網路共用模組:
- 接收來自應用程式的網路連線請求
- 接收來自系統的請求(例如,「將這些應用程式放在企業切片上」;在 Android 12 中引入)
- 從系統向電話代碼發送請求,該代碼嘗試透過 HAL API 和數據機設定網路或切片
- 通知 netd 如何基於每個應用程式路由流量(在 Android 12 中引入)
- 透過
ConnectivityManager
API(例如NetworkCallback
、getActiveNetwork
、getNetworkCapabilities
通知應用程式其網路流量發生了什麼情況。
執行
若要在裝置上支援 5G 切片,裝置必須具有支援 IRadio 1.6 HAL 的數據機,該 HAL 具有setupDataCall_1_6
API。此API用於建立資料連接,包含以下參數以支援5G切片:
-
trafficDescriptor
:指定傳送到數據機的流量描述符 sliceInfo
:指定 EPDG 到 5G 切換時要使用的網路切片的信息matchAllRuleAllowed
:指定是否允許使用預設的全部符合 URSP 規則。對於預設網絡,電話將其設為 true,但對於切片則不然。將所有規則套用於預設網路。當應用程式要求不可用的特定切片時,該特定切片將被報告為不可用。對於企業應用程序,如果企業網路不可用,電話框架可以回退到預設網路。
數據機也必須實作getSlicingConfig
API,除非getHalDeviceCapabilities
API 報告不支援該 API。
企業要求
以下介紹企業在Android企業部署的裝置上使用5G網路切片的要求。
- 確保使用工作設定檔設定的完全託管設備或員工設備支援 5G SA,並且數據機支援
setupDataCall_1_6
API。 - 與營運商合作夥伴就切片設定和效能或 SLA 特徵進行合作。
在設定了工作設定檔的裝置上啟用 5G 切片
對於設定了工作設定檔的設備,5G 網路切片在 AOSP 中預設為關閉。若要啟用網路切片,企業 IT 管理員可以透過 EMM DPC 基於每個員工開啟或關閉到企業網路切片的工作設定檔應用程式流量路由,該 DPC 使用DevicePolicyManager
(DPM) API(在 Android 中引入)中的setPreferentialNetworkServiceEnabled
方法12)。
具有自訂 DPC 的 EMM 供應商必須整合DevicePolicyManager
API 以支援企業用戶端。
URSP規則
本部分包括業者為不同切片類別(包括企業、CBS、低延遲和高頻寬流量)配置 URSP 規則的資訊。在為不同切片類別配置 URSP 規則時,運營商必須使用以下 Android 特定值。
ID | 價值 | 描述 |
---|---|---|
作業系統ID | 97a498e3-fc92-5c94-8986-0333d06e4e47 | Android 的 OSId 是使用命名空間 ISO OID 和名稱「Android」產生的版本 5 UUID。 |
運營商必須為每個分片流量配置 URSP 規則,流量描述符元件為「OS Id + OS App Id 類型」。例如,「ENTERPRISE」切片的值必須為0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345
。該值是 OSId、OSAppId 的長度 ( 0x0A
) 和 OSAppId 的串聯。有關流量描述符組件類型的更多信息,請參閱3GPP TS 24.526 表 5.2.1 。
下表描述了不同切片類別的 OSAppId 值。
切片類別 | 作業系統應用程式ID | 描述 |
---|---|---|
企業 | 0x454E5445525052495345 | OSAppId 是字串“ENTERPRISE”的位元組數組表示形式 |
企業2 | 0x454E544552505249534532 | OSAppId 是字串“ENTERPRISE2”的位元組數組表示形式 |
企業3 | 0x454E544552505249534533 | OSAppId 是字串“ENTERPRISE3”的位元組數組表示形式 |
企業4 | 0x454E544552505249534534 | OSAppId 是字串“ENTERPRISE4”的位元組數組表示形式 |
企業5 | 0x454E544552505249534535 | OSAppId 是字串“ENTERPRISE5”的位元組數組表示形式 |
哥倫比亞廣播公司 | 0x434253 | OSAppId 是字串「CBS」的位元組數組表示形式 |
優先_延遲 | 0x5052494f524954495a455f4c4154454e4359 | OSAppId 是字串「PRIORITIZE_LATENCY」的位元組陣列表示形式 |
優先頻寬 | 0x5052494f524954495a455f42414e445749445448 | OSAppId 是字串「PRIORITIZE_BANDWIDTH」的位元組陣列表示形式 |
URSP 規則範例
下表顯示了針對企業、CBS、低延遲、高頻寬和預設流量的 URSP 規則範例。
企業1
Android 12 及更高版本支援 Enterprise 1。以下是 ENTERPRISE1 流量的 URSP 規則範例:
URSP 規則 #1(企業 1) | |
---|---|
優先權 | 1(0x01) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | 夏令時:XX 夏令時:YYYYYYY |
元件 #2:DNN | 企業 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件 #1:DNN | 企業 |
企業2
Android 13 及更高版本支援 Enterprise 2。以下是 ENTERPRISE2 流量的 URSP 規則範例:
URSP 規則#2(企業2) | |
---|---|
優先權 | 2(0x02) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534532 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 企業2 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件#1:DNN | 企業2 |
企業3號
Android 13 及更高版本支援 Enterprise 3。以下是 ENTERPRISE3 流量的 URSP 規則範例:
URSP 規則 #3(企業 3) | |
---|---|
優先權 | 3(0x03) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534533 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 企業3 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件#1:DNN | 企業3 |
企業4號
Android 13 及更高版本支援 Enterprise 4。以下是 ENTERPRISE4 流量的 URSP 規則範例:
URSP 規則 #4(企業 4) | |
---|---|
優先權 | 4(0x04) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534534 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 企業4 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件 #1:DNN | 企業4 |
企業5號
Android 13 及更高版本中提供對 Enterprise 5 的支援。以下是 ENTERPRISE5 流量的 URSP 規則範例:
URSP 規則 #5(企業 5) | |
---|---|
優先權 | 5(0x05) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534535 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 企業5 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件#1:DNN | 企業5 |
哥倫比亞廣播公司
Android 13 及更高版本中提供對 CBS 的支援。以下是 CBS 流量的 URSP 規則範例:
URSP 規則 #6 (CBS) | |
---|---|
優先權 | 6(0x06) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E4703434253 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 哥倫比亞廣播公司 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件#1:DNN | 哥倫比亞廣播公司 |
低延遲
Android 13 及更高版本中提供了對低延遲的支援。以下是 LOW_LATENCY 流量的 URSP 規則範例:
URSP 規則#7(低延遲) | |
---|---|
優先權 | 7 (0x07) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E47125052494f524954495a455f4c4154454e4359 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 潛伏 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件#1:DNN | 潛伏 |
高頻寬
Android 13 及更高版本中提供了對高頻寬的支援。以下是 HIGH_BANDWIDTH 流量的 URSP 規則範例:
URSP 規則#8(高頻寬) | |
---|---|
優先權 | 8(0x08) |
流量描述符#1 | |
作業系統 ID + 作業系統應用程式 ID 類型 | 97A498E3FC925C9489860333D06E4E47145052494f524954495a455f42414e445749445448 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 頻寬 |
路由選擇描述符#2 | |
優先權 | 2(0x02) |
元件#1:DNN | 頻寬 |
預設
URSP 規則#9(預設) | |
---|---|
優先權 | 9(0x09) |
流量描述符#1 | |
全部匹配 | 不適用 |
路由選擇描述符#1 | |
優先權 | 1(0x01) |
組件 #1:S-NSSAI | SST:XX SD:YYYYYY |
測試
若要測試 5G 網路切片,請使用以下手動測試。
若要設定測試設備,請執行以下操作:
確保URSP策略配置了與企業類別相符的非預設規則,並且對應的選路描述符將企業類別對應到企業切片;以及將流量引導至預設網際網路切片的預設規則。
確保設備上配置了工作設定檔。
選擇透過 DPC 使用網路切片
若要測試 5G 網路切片行為,請執行以下操作:
- 驗證是否與企業切片建立了 PDU 會話(例如,透過使用特定 IP 位址)以及工作設定檔中的應用程式是否使用該 PDU 會話。
- 驗證是否使用預設 Internet 切片建立了單獨的 PDU 會話,以及個人設定檔中的應用程式是否使用 PDU 會話。
5G切片追加銷售
Android 14-QPR1 提供 5G 切片追加銷售功能,營運商可以透過 5G 網路切片向用戶提供增強的網路功能(延遲和頻寬)。
5G 切片追加銷售功能使用營運商授權伺服器的 TS.43 回應來驅動購買流程。運營商可以使用回應來指定運營商購買 Web 視圖的 URL、向 Web 視圖發送附加數據,並指示切片是否已在運營商網路上配置和可用。
運營商可以使用運營商配置自訂 5G 切片追加銷售功能的行為,這些配置控制是否可以發出購買請求、何時允許應用程式請求高級功能以及電話框架等待用戶或網路響應的時間。
5G 切片追加銷售功能提供了一個名為DataBoostWebServiceFlow
接口,以允許 Android 和運營商 webview 之間進行通訊。
圖2展示了5G切片追加銷售購買流程:
圖 2. 5G 切片追加銷售購買流程。
TS.43 權利流程
當使用者要求增強的網路功能時,電話框架會要求所要求的高階功能的服務權利配置。如果 TS.43 回應有效,電話框架將使用 HTTP 回應中的欄位來驅動購買請求。
切片購買字段
TS.43 權利配置包括以下切片購買欄位:
- 權利狀態
鍵:
EntitlementStatus
類型:
int
支援的值:
0
(停用)、1
(啟用)、2
(不相容)、3
(配置)、4
(包含)- 配置狀態
鍵:
ProvStatus
類型:
int
支援的值:
0
(未配置)、1
(已配置)、2
(不可用)、3
(正在進行)
電話框架使用權利狀態和配置狀態的組合來確定目前的切片購買狀態。結果可能是以下其中之一:
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILED
-
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
如果權利狀態為1
(已啟用)且配置狀態為0
(未配置),則電話框架會向使用者顯示追加銷售通知,以透過電信業者 Webview 購買加值服務。下表描述了電話框架對於配置和權利狀態值的不同組合的行為。
配置狀態 | |||||
---|---|---|---|---|---|
未配置 ( 0 ) | 已配置 ( 1 ) 1 ) | 不可用 ( 2 ) | 進行中 ( 3 ) | ||
權利狀態 | 已停用 ( 0 ) | 失敗的 | 失敗的 | 失敗的 | 失敗的 |
已啟用 ( 1 ) | 顯示網頁視圖 | 已經購買 | 已經購買 | 進行中 | |
不相容 ( 2 ) | 失敗的 | 失敗的 | 失敗的 | 失敗的 | |
配置 ( 3 ) | 運營商錯誤 | 運營商錯誤 | 進行中 | 進行中 | |
包含 ( 4 ) | 運營商錯誤 | 已經購買 | 已經購買 | 運營商錯誤 |
服務流場
TS.43 回應指定 URL、使用者資料和內容類型以自訂營運商購買 Web 視圖行為。如果未指定內容類型,則 URL 將作為 GET 請求載入。如果使用者資料存在,則會將其作為查詢參數附加到 URL(例如, https://www.android.com?encodedValue=Base64EncodedUserData
);如果不存在,則按原樣使用 URL(例如https://www.android.com
)。
如果以 JSON 或 XML 格式指定內容類型,則 URL 將作為 POST 請求加載,並且使用者資料(如果以 Base 64 編碼則進行解碼)將作為 POST 請求的資料發送。
- 網址
金鑰:
ServiceFlow_URL
類型:
String
範例:
"https://www.android.com"
- 使用者資料
金鑰:
ServiceFlow_UserData
類型:
String
範例:
"encodedValue=Base64EncodedUserData"
- 內容類型
鍵:
ServiceFlow_ContentsType
類型:
String
支援的值:
0
(未指定)、1
(JSON)、2
(XML)
載體配置
以下是可用於自訂 5G 切片追加銷售功能行為的業者配置。
-
KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAY
支援的高級功能列表。這是
TelephonyManager.PremiumCapability
的 int 陣列。這些進階功能與對應的NetworkCapabilities.NetCapability
類別共用相同的值。如果請求高級功能且未包含在此配置中,則購買請求將失敗並傳回CARRIER_DISABLED
結果。在 Android 14 中,僅支援
PREMIUM_CAPABILITY_PRIORITIZE_LATENCY
。-
KEY_PREMIUM_CAPABILITY_MAXIMUM_DAILY_NOTIFICATION_COUNT_INT
每日向用戶顯示購買追加銷售通知的最大次數。如果達到每日最高限額,則不會顯示追加銷售通知,並且購買請求(包括權利伺服器請求)將受到限制,直到第二天午夜。達到每日上限後發出的購買請求失敗,結果為
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
。-
KEY_PREMIUM_CAPABILITY_MAXIMUM_MONTHLY_NOTIFICATION_COUNT_INT
每月向用戶顯示購買追加銷售通知的最大次數。如果達到每月最高限額,則不會顯示追加銷售通知,並且購買請求(包括權利伺服器請求)將受到限制,直到下個月的第一天。達到每月最大值後發出的購買請求失敗,結果為
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
。-
KEY_PREMIUM_CAPABILITY_PURCHASE_URL_STRING
當用戶點擊追加銷售通知時向用戶顯示的備用業者購買 URL。如果在來自權利伺服器的 TS.43 回應中找不到購買 URL,則使用此值。如果 TS.43 回應中的 URL 或營運商配置均無效,則購買請求將失敗並傳回
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
結果。-
KEY_PREMIUM_CAPABILITY_SUPPORTED_ON_LTE_BOOL
當設備連接到長期演進 (LTE) 時是否允許購買高級功能。如果
true
,則可以在 LTE 和新無線電 (NR) 上提出購買請求。如果為false
,則只能在 NR 上發出購買請求,而在 LTE 上發出的請求將失敗,並顯示PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE
結果。-
KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG
在自動取消之前向用戶顯示購買追加銷售通知的時間。取消通知後,後續請求將受到限制並失敗,並顯示
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
結果。-
KEY_PREMIUM_CAPABILITY_NOTIFICATION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG
因逾時或使用者取消而失敗後應限制後續購買請求的時間量。如果使用者在
KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONG
指定的逾時時間內沒有點選購買追加銷售通知,或取消或忽略通知,則此退避計時器將會啟動。當此計時器處於活動狀態時,購買請求會失敗並顯示PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
結果。-
KEY_PREMIUM_CAPABILITY_PURCHASE_CONDITION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONG
由於運營商或網路原因導致故障後,後續購買請求應受到限制的時間量。如果權利檢查失敗、URL 不可用或運營商購買 URL 指示失敗,則此退避計時器啟動。當此計時器處於活動狀態時,購買請求會失敗並顯示
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
結果。-
KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONG
網路必須為購買進階功能設定切片配置的時間量。在此期間,後續購買請求將被阻止並傳回
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
結果。如果網路未能及時建立切片配置,應用程式可以要求再次購買高級能力。在發送相應的切片配置之前,無論用戶是否向運營商付款,電話服務都不會認為購買已完成。
JavaScript 介面
當使用者點擊網路增強通知時,將向使用者顯示帶有運營商購買 URL 的WebView
物件。營運商可以使用其購買網站中的DataBoostWebServiceFlow
Javascript 介面中提供的 API 與切片購買應用程式進行通訊。
運營商網站可以透過getRequestedCapability()
方法取得所請求的高階能力。
如果購買成功,運營商網站必須透過notifyPurchaseSuccessful()
或notifyPurchaseSuccessful(duration)
通知切片購買應用程序,其中duration
是可選參數,指示切片的預期持續時間。
如果購買不成功,運營商網站必須透過方法notifyPurchaseFailed(code, reason)
通知分片購買應用,其中code
是指示失敗原因的失敗代碼, reason
是人類可讀的失敗原因,如果故障代碼未知。
如果未呼叫其中任何一個回應方法,則購買將不會被視為已完成,並且購買請求最終會逾時。
以下是運營商網站因購買失敗可返回的有效失敗代碼:
-
FAILURE_CODE_UNKNOWN
-
FAILURE_CODE_CARRIER_URL_UNAVAILABLE
-
FAILURE_CODE_AUTHENTICATION_FAILED
-
FAILURE_CODE_PAYMENT_FAILED
-
FAILURE_CODE_NO_USER_DATA
購買完成後,操作員必須使用PRIORITIZE_LATENCY
片將URSP 規則更新到使用者的裝置。