5G Network Slicing | Android Open Source Project

For devices running Android 12 or higher, Android
provides support for 5G network slicing, the use of network virtualization to
divide single network connections into multiple distinct virtual connections
that provide different amounts of resources to different types of traffic. 5G
network slicing allows network operators to dedicate a portion of the network to
providing specific features for a particular segment of customers.
Android 12 introduces the
following 5G enterprise network slicing capabilities, which network operators
can provide to their enterprise clients:

Enterprise device slicing for fully-managed devices

For enterprises who provide
fully managed
company devices to their employees, network providers can provide them with one
or more active enterprise network slices where traffic on the company devices
are routed to. From Android 12, Android allows carriers
to provide enterprise slices through URSP rules, instead of setting up slices
through APNs.

Enterprise business app slicing for devices with work profiles

For enterprises using the
work profile
solution, Android 12 allows devices to route the
traffic from all apps in the
work profile to an enterprise network slice. Enterprises can enable this
capability through a
Device Policy Controller (DPC).

The work profile solution provides an automatic level of authentication and
access control that enterprises require to ensure that only traffic from
enterprise apps in the work profile are routed to the enterprise network slice.
Apps in the work profile don’t need to be modified to explicitly request the
enterprise network slice.

How 5G network slicing works in AOSP

Android 12 introduces support for 5G network slicing
through additions to the telephony codebase in AOSP and the
Tethering module
to incorporate existing connectivity APIs that are required for network slicing.

The Android telephony platform provides HAL and telephony APIs to support
slicing based on network requests filed by the core networking code and 5G
slicing capabilities in the modem. Figure 1 describes the components of the 5G
network slicing feature.

5G network slicing components

Figure 1. 5G network slicing architecture in AOSP.

The telephony and connectivity platform supports:

  • Converting network requests for slice categories into
    traffic descriptors
    which are then passed to the modem for URSP traffic matching and route
    selection
  • Falling back to the default network if the requested slice isn’t available
  • Routing traffic from all apps under the work profile to the
    corresponding connection
  • Supporting enterprise slicing

    • Detecting the presence of a work profile on the device
    • Checking for permissions or routing directions provided from the
      DPC used by the enterprise’s IT admin

The core networking service includes the following changes to the Tethering
module in Android 12:

  • Adds most of android.net.* public or system API classes to the Tethering
    module
  • Expands the Tethering module boundaries to include:

    • 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
  • Moves VPN code out of the Tethering module

Android 12 moves code with the following capabilities
to the Tethering module:

  • Receiving requests from apps for network connections
  • Receiving requests from the system (for example, “place these apps on an
    enterprise slice”; introduced in Android 12)
  • Sending requests from the system to the telephony code which attempts to
    set up networks or slices by going through the HAL API and the modem
  • Informing netd how to route traffic on a per-app basis (introduced in
    Android 12)
  • Informing apps what is happening to their network traffic through
    ConnectivityManager APIs such as NetworkCallback, getActiveNetwork,
    getNetworkCapabilities.

Implementation

To support 5G slicing on a device, the device must have a modem that supports
the IRadio 1.6 HAL which has the
setupDataCall_1_6
API. This API sets up a data connection and includes the following parameters
for supporting 5G slicing:

  • trafficDescriptor: Specifies traffic descriptor sent to the modem
  • sliceInfo: Specifies information for the network slice to be used in
    case of EPDG to 5G handover
  • matchAllRuleAllowed: Specifies whether using a default match-all URSP
    rule is allowed. Telephony sets this to true for default networks
    but not for slices. The match all rule is applied to default
    networks. When an application requests a specific slice that is not available, the specific slice is reported as not available, but the application can fallback to the default network.

Modems must also implement the
getSlicingConfig
API unless it’s reported as unsupported by the
getHalDeviceCapabilities
API.

Enterprise requirements

The following describes requirements for enterprises to use 5G network slicing
on devices in an Android enterprise deployment.

  • Ensure that fully managed or employee devices set up with a work profile
    are 5G SA-capable with modems that support the
    setupDataCall_1_6
    API.
  • Work with carrier partner on slice setup and performance or SLA
    characteristics.

Enabling 5G slicing on devices set up with a work profile

For devices that are set up with work profiles, 5G network slicing is off by
default in AOSP. To enable network slicing, enterprise IT admins can turn on or
off work profile app traffic routing to the enterprise network slice on a
per-employee basis through the EMM DPC, which uses the
setPreferentialNetworkServiceEnabled
method in the
DevicePolicyManager (DPM)
API (introduced in Android 12).

EMM vendors with custom DPCs must integrate the DevicePolicyManager API to
support enterprise clients.

URSP rules

This section includes information for carriers on configuring URSP rules for
different slice categories including enterprise, CBS, low latency,
and high bandwidth traffic. When configuring URSP rules for
different slice categories, carriers must use the following Android-specific
values.

ID
Value
Description

OSId
97a498e3-fc92-5c94-8986-0333d06e4e47
The OSId for Android is a version 5 UUID generated with the namespace ISO
OID and the name “Android”.

Carriers must configure URSP rules for each slice traffic with the traffic
descriptor component as “OS Id + OS App Id type”. For example, the “ENTERPRISE”
slice must have a value of
0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345.
This value is a concatenation of the OSId, the length of the OSAppId (0x0A),
and the OSAppId.
For more information about the traffic descriptor component type, see
3GPP TS 24.526 Table 5.2.1.

The following table describes the OSAppId values for different slice categories.

Slice category
OSAppId
Description

ENTERPRISE
0x454E5445525052495345
The OSAppId is a byte array representation of the string “ENTERPRISE”

ENTERPRISE2
0x454E544552505249534532
The OSAppId is a byte array representation of the string “ENTERPRISE2”

ENTERPRISE3
0x454E544552505249534533
The OSAppId is a byte array representation of the string “ENTERPRISE3”

ENTERPRISE4
0x454E544552505249534534
The OSAppId is a byte array representation of the string “ENTERPRISE4”

ENTERPRISE5
0x454E544552505249534535
The OSAppId is a byte array representation of the string “ENTERPRISE5”

CBS
0x454E544552505249534535
The OSAppId is a byte array representation of the string “CBS”

PRIORITIZE_LATENCY
0x5052494f524954495a455f4c4154454e4359
The OSAppId is a byte array representation of the string “PRIORITIZE_LATENCY”

PRIORITIZE_BANDWIDTH
0x5052494f524954495a455f42414e445749445448
The OSAppId is a byte array representation of the string “PRIORITIZE_BANDWIDTH”

Example URSP rules

The following tables show example URSP rules for enterprise,
CBS, low latency, high bandwidth, and default traffic.

Enterprise 1

Support for Enterprise 1 is available in Android 12 and higher.
The following is an example URSP rule for ENTERPRISE1 traffic:

URSP rule #1 (enterprise1)

Precedence
1 (0x01)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
enterprise

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
enterprise

Enterprise 2

Support for Enterprise 2 is available in Android 13 and higher.
The following is an example URSP rule for ENTERPRISE2 traffic:

URSP rule #2 (enterprise2)

Precedence
2 (0x02)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A454E544552505249534532

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
enterprise2

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
enterprise2

Enterprise 3

Support for Enterprise 3 is available in Android 13 and higher.
The following is an example URSP rule for ENTERPRISE3 traffic:

URSP rule #3 (enterprise3)

Precedence
3 (0x03)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A454E544552505249534533

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
enterprise3

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
enterprise3

Enterprise 4

Support for Enterprise 4 is available in Android 13 and higher.
The following is an example URSP rule for ENTERPRISE4 traffic:

URSP rule #4 (enterprise4)

Precedence
4 (0x04)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A454E544552505249534534

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
enterprise4

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
enterprise4

Enterprise 5

Support for Enterprise 5 is available in Android 13 and higher.
The following is an example URSP rule for ENTERPRISE5 traffic:

URSP rule #5 (enterprise5)

Precedence
5 (0x05)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A454E544552505249534535

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
enterprise5

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
enterprise5

CBS

Support for CBS is available in Android 13 and higher.
The following is an example URSP rule for CBS traffic:

URSP rule #6 (CBS)

Precedence
6 (0x06)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A434253

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
cbs

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
cbs

Low latency

Support for Low Latency is available in Android 13 and higher.
The following is an example URSP rule for LOW_LATENCY traffic:

URSP rule #7 (low latency)

Precedence
7 (0x07)

Traffic descriptor #1

OS Id + OS App Id type
0x97A498E3FC925C9489860333D06E4E470A5052494f524954495a455f4c4154454e4359

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
latency

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
latency

High bandwidth

Support for High Bandwidth is available in Android 13 and higher.
The following is an example URSP rule for HIGH_BANDWIDTH traffic:

URSP rule #8 (high bandwidth)

Precedence
8 (0x08)

Traffic descriptor #1

OS Id + OS App Id type
97A498E3FC925C9489860333D06E4E470A5052494f524954495a455f42414e445749445448

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Component #2: DNN
bandwidth

Route selection descriptor #2

Precedence
2 (0x02)

Component #1: DNN
bandwidth

Default

URSP rule #9 (default)

Precedence
9 (0x09)

Traffic descriptor #1

match-all
N/A

Route selection descriptor #1

Precedence
1 (0x01)

Component #1: S-NSSAI
SST:XX SD:YYYYYY

Testing

To test 5G network slicing, use the following manual test.

To setup a device for testing, do the following:

  1. Ensure that the URSP policy is configured with a non-default rule that
    matches the enterprise category and that the corresponding route-selection
    descriptor maps the enterprise category to the enterprise slice; and a
    default rule directing traffic to the default internet slice.

  2. Ensure that a work profile is configured on the device.

  3. Opt in to using network slicing through the DPC

To test 5G network slicing behavior, do the following:

  1. Verify that a PDU session is established with the enterprise slice (for
    example, by using a specific IP address) and that apps in work profile use
    that PDU session.
  2. Verify that a separate PDU session is established with the default internet
    slice and that apps in the personal profile use the PDU session.