針對執行 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 類別新增至網路共用模組 將 Tethering 模組的範圍擴大至包含下列項目:
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 規則。在預設網路中,Telephony 會將此值設為 true,但在切片中則不會。系統會將「比對所有」規則套用至預設網路。如果應用程式要求的特定區塊無法使用,系統會將該區塊回報為無法使用。對於企業應用程式,如果企業網路無法使用,電話通訊系統架構可以改用預設網路。
除非 getHalDeviceCapabilities
API 回報 getSlicingConfig
API 不支援,否則數據機也必須實作 getSlicingConfig
API。
企業版需求
以下說明企業在 Android 企業部署中使用 5G 網路切片功能的相關規定。
- 請確保透過工作資料夾設定的全代管或員工裝置支援 5G SA,且數據機支援支援
setupDataCall_1_6
API。 - 與電信合作夥伴合作,針對切片設定和效能或服務水準協議 (SLA) 特性進行合作。
在設有工作資料夾的裝置上啟用 5G 切片
如果是設有工作資料夾的裝置,AOSP 中預設會關閉 5G 網路切片功能。如要啟用網路分段,企業 IT 管理員可透過 EMM DPC (使用 DevicePolicyManager
(DPM) API (在 Android 12 中推出) 的 setPreferentialNetworkServiceEnabled
方法,為每位員工開啟或關閉工作資料夾應用程式流量轉送功能,將流量轉送至企業網路配量。
使用自訂 DPC 的 EMM 供應商必須整合 DevicePolicyManager
API,才能支援企業用戶端。
URSP 規則
本節提供電信業者的相關資訊,說明如何針對不同的切片類別設定 URSP 規則,包括企業、CBS、低延遲和高頻寬流量。為不同片段類別設定 URSP 規則時,電信業者必須使用以下 Android 專屬值。
ID | 值 | 說明 |
---|---|---|
OS ID | 97a498e3-fc92-5c94-8986-0333d06e4e47 |
Android 的 OSId 是使用命名空間 ISO 的 5 版 UUID 和「Android」名稱產生的。 |
電信業者必須為使用流量描述元元件的每個配量流量設定 URSP 規則,設為「OS ID + OS 應用程式 ID 類型」。舉例來說,「ENTERPRISE」配量必須包含 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345
。這個值是 OSId、OSAppId 長度 (0x0A
) 和 OSAppId 的串連字串。如要進一步瞭解流量描述元元件類型,請參閱 3GPP TS 24.526 表 5.2.1。
下表說明不同切片類別的 OSAppId 值。
區塊類別 | OSApp ID | 說明 |
---|---|---|
企業 | 0x454E5445525052495345 |
OSAppId 是字串「ENTERPRISE」的位元組陣列表示法 |
Enterprise | 0x454E544552505249534532 |
OSAppId 是「ENTERPRISE2」字串的位元組陣列表示 |
Enterprise | 0x454E544552505249534533 |
OSAppId 是字串「ENTERPRISE3」的位元組陣列表示法 |
ENTERPRISE4 | 0x454E544552505249534534 |
OSAppId 是「ENTERPRISE4」字串的位元組陣列表示 |
ENTERPRISE5 | 0x454E544552505249534535 |
OSAppId 是字串「ENTERPRISE5」的位元組陣列表示法 |
CBS | 0x434253 |
OSAppId 是字串「CBS」的位元組陣列表示法 |
PRIORITIZE_LATENCY | 0x5052494f524954495a455f4c4154454e4359 |
OSAppId 是字串「PRIORITIZE_LATENCY」的位元組陣列表示法 |
標準寬頻 | 0x5052494f524954495a455f42414e445749445448 |
OSAppId 是字串「PRIORITIZE_BANDWIDTH」的位元組陣列表示法 |
URSB 規則範例
下表列出企業、CBS、低延遲、高頻寬和預設流量的 URSP 規則範例。
Enterprise 1
企業 1 支援 Android 12 以上版本。以下是 ENTERPRISE1 流量適用的 URSP 規則範例:
URSP 規則 #1 (enterprise1) | |
---|---|
優先順序 | 1 (0x01) |
流量描述元 #1 | |
OS ID + OS 應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 企業 |
路線選擇描述元 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | Enterprise |
Enterprise 2
Android 13 以上版本支援 Enterprise 2。以下是 ENTERPRISE2 流量適用的 URSP 規則範例:
URSP 規則 #2 (enterprise2) | |
---|---|
優先順序 | 2 (0x02) |
流量描述元 #1 | |
OS ID + OS App ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534532 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | enterprise2 |
路徑選取描述元 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | enterprise2 |
企業 3
Android 13 以上版本支援 Enterprise 3。以下是 ENTERPRISE3 流量的 URSP 規則範例:
URSP 規則 #3 (enterprise3) | |
---|---|
優先順序 | 3 (0x03) |
流量描述元 #1 | |
OS ID + OS App ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534533 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | enterprise3 |
路徑選取描述元 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | 企業 3 |
Enterprise 4
Android 13 以上版本支援 Enterprise 4。以下是 ENTERPRISE4 流量的 URSP 規則範例:
URSP 規則 #4 (enterprise4) | |
---|---|
優先順序 | 4 x 04 |
流量描述元 #1 | |
OS ID + OS App ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534534 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | Enterprise4 |
路線選擇描述元 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | Enterprise4 |
Enterprise 5
Android 13 以上版本支援 Enterprise 5。以下是 ENTERPRISE5 流量的 URSP 規則範例:
URSP 規則 #5 (enterprise5) | |
---|---|
優先順序 | 5 x 05 |
流量描述元 #1 | |
OS ID + OS App ID 類型 | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534535 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | enterprise5 |
路線選擇描述元 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | enterprise5 |
CBS
Android 13 以上版本支援 CBS。以下是 CBS 流量 URSP 規則的範例:
URSP 規則 #6 (CBS) | |
---|---|
優先順序 | 6 (0x06) |
流量描述元 #1 | |
OS ID + OS 應用程式 ID 類型 | 0x97A498E3FC925C9489860333D06E4E4703434253 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | cbs |
路徑選擇描述元 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | cbs |
低延遲
Android 13 以上版本支援低延遲。以下是 LOW_LATENCY 流量適用的 URSP 規則範例:
URSP 規則 #7 (低延遲) | |
---|---|
優先順序 | 7 (0x07) |
流量描述元 #1 | |
OS ID + OS App 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 | |
OS ID + OS 應用程式 ID 類型 | 97A498E3FC925C9489860333D06E4E47145052494f524954495a455f42414e445749445448 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
元件 #2:DNN | 頻寬 |
路徑選取描述元資料 #2 | |
優先順序 | 2 (0x02) |
元件 #1:DNN | 頻寬 |
預設
URSP 規則 #9 (預設) | |
---|---|
優先順序 | 9 (0x09) |
流量描述元 #1 | |
match-all | 無 |
路線選擇描述元 #1 | |
優先順序 | 1 (0x01) |
元件 #1:S-NSSAI | SST:XX SD:YYYYYY |
測試
如要測試 5G 網路切片,請使用下列手動測試。
如要設定裝置進行測試,請按照下列步驟操作:
請確認 URSP 政策設有非預設規則,該規則與企業類別相符,且對應的路徑選取描述元將企業類別對應至企業配量;並且有預設規則將流量導向至預設網際網路部分。
確保裝置上已設定工作資料夾。
選擇透過 DPC 使用網路切片
如要測試 5G 網路切片行為,請按照下列步驟操作:
- 確認已透過企業配量建立 PDU 工作階段 (例如使用特定 IP 位址),且工作資料夾中的應用程式使用該 PDU 工作階段。
- 確認已使用預設網際網路切片建立個別的 PDU 工作階段,且個人資料夾中的應用程式會使用 PDU 工作階段。
5G 分割功能的加購方案
5G 網路切片升級功能可在 Android 14-QPR1 中使用,可讓電信業者透過 5G 網路切片功能,為使用者提供強化的網路功能 (延遲和頻寬)。
5G 切片升級功能會使用電信業者授權伺服器的 TS.43 回應,推動購買流程。電信業者可以使用回應指定電信業者購物網格畫面的網址、傳送額外資料至網格畫面,並指出切片是否已佈建,且可在電信業者的網路上使用。
電信業者可以使用電信業者設定自訂 5G 切片升級功能的行為,這些設定可控制是否允許提出購買要求、應用程式何時可要求高級功能,以及電話服務架構等待使用者或網路回應的時間長度。
5G 切片升級功能提供稱為 DataBoostWebServiceFlow
的介面,可讓 Android 和電信業者 WebView 之間進行通訊。
圖 2 顯示 5G 切片升級購買流程:
圖 2. 5G 切片升級銷售購買流程。
TS.43 授權程序
當使用者要求強化網路功能時,Telephony 架構會要求所要求的進階功能的服務授權設定。如果 TS.43 回應有效,電話通訊架構會使用 HTTP 回應中的欄位來引發購買要求。
Slice 購買欄位
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
(未佈建),Telephony 架構會向使用者顯示升級通知,要求他們透過電信業者的 WebView 購買升級方案。下表說明電話通訊架構對於不同佈建和授權狀態值的組合行為。
佈建狀態 | |||||
---|---|---|---|---|---|
未配置 (0 ) |
已佈建 (1 |
不適用 (2 ) |
進行中 (3 ) |
||
授權狀態 | 已停用 (0 ) |
失敗 | 失敗 | 失敗 | 失敗 |
已啟用 (1 ) |
顯示網頁瀏覽畫面 | 已購買廣告產品 | 已購買廣告產品 | 處理中 | |
不相容 (2 ) |
失敗 | 失敗 | 失敗 | 失敗 | |
佈建 (3 ) |
電信業者發生錯誤 | 電信業者錯誤 | 處理中 | 處理中 | |
已納入 (4 ) |
電信業者錯誤 | 已購買廣告產品 | 已購買廣告產品 | 電信業者錯誤 |
服務流程欄位
TS.43 回應會指定網址、使用者資料和內容類型,以便自訂電信業者的購買 WebView 行為。如果未指定內容類型,系統會將網址載入為 GET 要求。如果存在使用者資料,則會以查詢參數的形式附加至網址 (例如 https://www.android.com?encodedValue=Base64EncodedUserData
);如果沒有,則會直接採用網址 (例如 https://www.android.com
)。
如果內容類型以 JSON 或 XML 格式指定,則會以 POST 要求形式載入網址,而使用者資料 (如果是以 Base 64 編碼,則以 Base 64 編碼) 做為要求資料傳送。
- 網址
鍵:
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
使用者點選加購通知時,要向使用者顯示的備用電信業者購買網址。如果授權伺服器的 TS.43 回應中找不到購買網址,系統會改用這個值。如果 TS.43 回應中的網址或電信業者設定皆無效,購買要求就會失敗,並傳回
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED
結果。KEY_PREMIUM_CAPABILITY_SUPPORTED_ON_LTE_BOOL
允許在裝置連線至長期演進技術 (LTE) 時購買進階功能。如果設為
true
,則可以在 LTE 和 New Radio (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
在電信業者或網路發生錯誤後,後續購買要求應受到限制的時間長度。如果授權檢查失敗、網址無法使用,或是電信業者購買網址顯示失敗,就會啟動這個延遲計時器。在這個計時器啟用期間,購買要求會失敗,並傳回
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLED
結果。KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONG
網路必須設定購買優質功能的切片設定的時間長度。在此期間,後續的購買要求會遭到封鎖,並傳回
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP
結果。如果網路無法及時設定切片設定,應用程式可以再次要求購買高級功能。無論使用者是否向電信業者付費,電話服務都會在傳送相應的切片設定後,才視為購買交易完成。
JavaScript 介面
當使用者點選網路加速通知時,系統會向使用者顯示含有電信業者購買網址的 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 規則。