5G 網路切片

針對執行 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 網路切片功能的元件。

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 (例如 NetworkCallbackgetActiveNetworkgetNetworkCapabilities),告知應用程式網路流量發生的情況。

實作

如要在裝置上支援 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 網路切片,請使用下列手動測試。

如要設定裝置進行測試,請按照下列步驟操作:

  1. 請確認 URSP 政策設有非預設規則,該規則與企業類別相符,且對應的路徑選取描述元將企業類別對應至企業配量;並且有預設規則將流量導向至預設網際網路部分。

  2. 確保裝置上已設定工作資料夾。

  3. 選擇透過 DPC 使用網路切片

如要測試 5G 網路切片行為,請按照下列步驟操作:

  1. 確認已透過企業配量建立 PDU 工作階段 (例如使用特定 IP 位址),且工作資料夾中的應用程式使用該 PDU 工作階段。
  2. 確認已使用預設網際網路切片建立個別的 PDU 工作階段,且個人資料夾中的應用程式會使用 PDU 工作階段。

5G 分割功能的加購方案

5G 網路切片升級功能可在 Android 14-QPR1 中使用,可讓電信業者透過 5G 網路切片功能,為使用者提供強化的網路功能 (延遲和頻寬)。

5G 切片升級功能會使用電信業者授權伺服器的 TS.43 回應,推動購買流程。電信業者可以使用回應指定電信業者購物網格畫面的網址、傳送額外資料至網格畫面,並指出切片是否已佈建,且可在電信業者的網路上使用。

電信業者可以使用電信業者設定自訂 5G 切片升級功能的行為,這些設定可控制是否允許提出購買要求、應用程式何時可要求高級功能,以及電話服務架構等待使用者或網路回應的時間長度。

5G 切片升級功能提供稱為 DataBoostWebServiceFlow 的介面,可讓 Android 和電信業者 WebView 之間進行通訊。

圖 2 顯示 5G 切片升級購買流程:

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 (進行中)

電話服務架構會結合使用授權狀態和佈建狀態,判斷目前的切片購買狀態。結果可能是下列其中之一:

如果授權狀態為 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 是失敗原因的易讀原因 (如果失敗代碼不明)。

如果未呼叫上述任一回應方法,系統就不會將購買交易視為已完成,且購買要求最終會逾時。

以下是運送公司網站可針對購買失敗情形傳回的有效失敗代碼:

購買交易完成後,電信業者必須將 PRIORITIZE_LATENCY 切片更新至使用者的裝置,以便執行 URSP 規則