애플리케이션별 네트워크 선택(PANS)

OEM과 차량 소유자 모두가 요청하는 늘어나는 사용 사례 목록을 관리하기 위해 차량은 연결성에 점점 더 의존하고 있으며, 이로 인해 데이터 공간과 관련 비용이 증가합니다. PANS(애플리케이션별 네트워크 선택) 기능을 사용하여 OEM이 비용을 지불한 네트워크에서 지정된 앱의 트래픽을 라우팅합니다.

PANS를 사용하면 데이터 사용량과 비용을 관리하는 동시에 강력하고 안전한 연결된 자동차 경험을 제공할 수 있습니다. 팬:

  • 자동차 장치에서만 사용할 수 있는 ConnectivityManager 에 추가된 새로운 API로 구성됩니다.
  • 동적으로 변경되는 PANS 네트워크 기능에 대한 지원을 포함하도록 업데이트된 Wi-Fi 제안 API( 인터넷 연결을 위한 Wi-Fi 제안 API 참조)를 제공합니다.
  • 지원 측정항목을 수집합니다.
  • 참조 앱을 제공합니다.

왜 팬인가?

팬은 다음을 수행할 수 있습니다.

  • 앱-네트워크 매핑을 동적으로 업데이트합니다.
  • 앱을 변경하지 않고 앱 수준 라우팅을 관리합니다.
  • OEM 허용 앱만 매핑된 OEM 네트워크에 액세스할 수 있습니다.
  • 앱 개발자는 이 기능을 구현하기 위해 변경할 필요가 없습니다.
  • 사용자 대상 측정항목은 OEM 관리 네트워크에 대한 앱-네트워크 데이터 사용량을 추적합니다.
  • 네트워크 액세스는 안전하며 의도하지 않은 사용 사례나 승인되지 않은 앱을 통해 남용될 수 없습니다.
  • PANS 앱-네트워크 매핑에 대한 변경 사항이 사용자에게 전달됩니다.
  • 모든 사용자에게 동일한 네트워크 구성이 적용됩니다.

핵심 장점

PANS는 OEM에게 다음과 같은 핵심 이점을 제공합니다.

  1. OEM은 사용자 대신 네트워크 트래픽 비용을 지불할 수 있습니다.
    • 시스템 업데이트는 사용자에게 무료로 제공될 수 있습니다.
    • 특정 앱의 네트워크 사용은 사용자에게 무료로 제공될 수 있습니다.
    • 원격 측정 및 기타 분석은 사용자에게 무료로 관리될 수 있습니다.
  2. OEM은 사용자 유료 데이터 요금제 없이도 중요한 앱이 연결된 상태를 유지할 수 있습니다. 예를 들어, 지도, 어시스턴트(핸즈프리 운전), 시스템 업데이트 등 안전에 중요한 기능은 사용자가 데이터 요금제를 사용하지 않는 경우에도 계속 작동합니다.
  3. PANS는 Android의 네트워크 트래픽 라우팅과 관련된 추가 세부 제어 기능을 제공합니다. 예를 들어 OEM은 앱 수준 트래픽 라우팅을 위한 논리적 네트워크 토폴로지를 최적으로 정의할 수 있습니다.

그림 1 . PANS 프레임워크

팬 구현

PANS를 구현하기 위해 새로운 ConnectivityManager API인 setOemNetworkPreference 가 제공됩니다. 이 새로운 API는 앱을 OemNetworkPreference 에 매핑합니다. 이 API는 자동차 장치에만 사용할 수 있으며 새로운 signature 권한이 있는 @SystemApi 로 주석이 추가됩니다.

그림 2. PANS 구현

OEM네트워크기본 설정

OemNetworkPreference 패키지 이름별로 앱을 네트워크 기본 설정 에 매핑하는 OEM_PAIDOEM_PRIVATE NetworkCapabilities 에 대한 추상화입니다. 네트워크 기본 설정은 네트워크 계층을 허용합니다. 예를 들어 앱을 OEM_NETWORK_PREFERENCE_OEM_PAID 기본 설정에 매핑하면 앱에 할당된 기본 네트워크 우선순위가 다음과 같습니다. 먼저 UNMETERED 네트워크를 사용하고, UNMETERED 사용할 수 없는 경우 OEM_PAID 네트워크를 사용하고, OEM_PAID 사용할 수 없는 경우 시스템 기본값을 사용합니다. 회로망.

  • OEM_PAID 주로 OEM 네트워크와 비OEM 네트워크 모두에서 라우팅될 수 있는 앱에 사용됩니다.
  • OEM_PRIVATE 주로 OEM 앱이 전용 네트워크에 액세스하는 데 사용됩니다.
/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, use the general default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1;

/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, the app doesn't get a default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2;

/**
* Use only NET_CAPABILITY_OEM_PAID networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3;

/**
* Use only NET_CAPABILITY_OEM_PRIVATE networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;

PANS API 호출

PANS API를 사용하려면:

  1. OemNetworkPreferences 사용하여 앱을 네트워크 기본 설정에 매핑합니다.
  2. OemNetworkPreferences 개체를 사용하여 setOemNetworkPreference 호출합니다.
  3. Runnable 인터페이스를 사용하여 API 완료를 수신합니다.

예를 들어:

// Mapping three packages to two network preferences
// Packages have a 1:1 mapping to network preferences
OemNetworkPreferences pref = new OemNetworkPreferences.Builder()
   .addNetworkPreference("first.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("second.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("third.package.name", OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY)
   .build();

myConnectivityManager.setOemNetworkPreference(pref, myExecutor, myListener);

고려사항

PANS를 구현할 때 다음 사항에 유의하세요.

  • 네트워크 기본 설정은 부팅 시 유지되지 않으며 부팅할 때마다 다시 적용해야 합니다.
  • 앱에 대한 기본 설정을 생성하려면 앱을 설치할 필요가 없습니다. 따라서 제거된 앱에 대한 네트워크 기본 설정을 사전에 설정할 수 있습니다.
  • 언제든지 앱은 단일 네트워크 기본 설정에만 매핑될 수 있습니다.
  • 네트워크 기본 설정은 앱의 기본 네트워크를 설정하는 데 사용됩니다. 이는 앱이 특수 API 중 하나를 통해 사용하려는 네트워크를 지정하지 않았을 때 사용되는 네트워크입니다. 이는 대부분의 연결 요구 사항을 충족할 뿐만 아니라 기존 앱 사용 사례를 중단하지 않도록 NetworkRequest API와 같은 특수 API를 계속 사용할 수도 있습니다. 예를 들어 앱이 무제한 네트워크를 통해서만 작업을 수행하려는 경우 PANS는 앱이 다른 네트워크를 사용하도록 강제하지 않습니다.

네트워크 구성

해당 네트워크 기본 설정을 사용할 때 OEM_PAID 또는 OEM_PRIVATE 기능이 있는 네트워크를 사용할 수 있어야 합니다. Android는 이더넷 및 Wi-Fi 네트워크 기능 구성을 지원합니다. 이더넷 네트워크의 경우 리소스 오버레이 config_ethernet_interfaces 사용할 수 있습니다. 이는 컴파일 타임에 설정됩니다.

Wi-Fi의 경우 WifiNetworkSuggestion API를 새로운 Android 12 API인 setOemPaid(Boolean)setOemPrivate(Boolean) 과 함께 사용할 수 있습니다. 이는 런타임 시 변경될 수 있습니다.

다음 예를 고려하십시오.

  1. config_ethernet_interfaces 라는 리소스 오버레이는 다음을 지정합니다.
    • 구성할 인터페이스의 이름입니다.
    • 원하는 NetworkCapabilities 값입니다.
      <!-- 11 NET_CAPABILITY_NOT_METERED
           12 NET_CAPABILITY_INTERNET
           14 NET_CAPABILITY_TRUSTED
           15 NET_CAPABILITY_NOT_VPN
           22 NET_CAPABILITY_OEM_PAID || 26 NET_CAPABILITY_OEM_PRIVATE -->
      <string-array translatable="false" name="config_ethernet_interfaces">
         <item>eth0;11,12,14,15,22;;</item></string-array>
      
  2. WiFiNetworkSuggestion 동적으로 변경될 수 있습니다:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

PANS 네트워크에 대한 액세스 제한

OEM_PAID 또는 OEM_PRIVATE 기능을 사용하여 네트워크에 태그를 지정하면 해당 네트워크가 제한된 네트워크 로 표시됩니다. 제한된 네트워크는 OEM이 제어하는 CONNECTIVITY_USE_RESTRICTED_NETWORKS 권한이 있는 앱 에서만 사용할 수 있습니다.

이 권한이 있는 앱은 앱에서 명시적으로 요청하는 경우 제한된 네트워크를 사용할 수 있습니다. 그러나 이러한 앱은 기본적으로 제한된 네트워크를 갖지 않습니다. PANS를 통해 매핑된 앱은 제한된 OEM 네트워크를 기본값으로 설정할 수 있으며 이를 사용하기 위해 제한된 네트워크 권한이 필요하지 않습니다. 이러한 앱에 PANS에 의해 기본 네트워크로 할당된 제한된 OEM 네트워크가 있는 경우 앱이 그렇게 하도록 선택하면 해당 OEM 네트워크를 명시적으로 요청할 수도 있습니다.

참조 앱 검토

NetworkPreferenceApp 이라는 참조 앱(코드 포함)은 사용자 디버그 자동차 빌드에 제공되며 다음 방법을 보여줍니다.

  • PANS 측정항목을 사용합니다.
  • PANS 정책을 설정합니다.
  • 장치에 대한 기본 정책을 설정합니다.
  • 정책을 지웁니다.
  • 부팅 시 정책을 적용합니다.
  • 운전자 주의 분산 API를 사용하십시오( 운전자 주의 분산 지침 참조).
  • OEM_PAIDOEM_PRIVATE 사용하여 Wi-Fi를 동적으로 업데이트합니다.

그림 3. 참조 앱

측정항목

데이터 사용에 대한 투명성을 높이기 위해 OEM_PAIDOEM_PRIVATE 네트워크 매핑을 통해 전송되는 데이터 양에 관한 측정항목이 수집되어 제공됩니다.

문제 해결

대부분의 문제 해결 조건은 잘못된 네트워크(네트워크 연결 없음)를 사용하는 앱이나 데이터 초과로 인해 발생합니다. 빠른 해결 방법을 활성화하려면:

  • Connectivity dumpsys 활성 앱별 기본 네트워크 목록과 관련 앱(PANS에서 매핑됨)이 포함되어 있습니다.
  • Netd dumpsys UID IP 및 방화벽 규칙이 포함되어 있습니다.
  • Netstats dumpsys PANS 앱별 측정항목이 포함되어 있습니다. 예를 들어 어떤 앱이 어떤 OEM 네트워크를 사용했는지 등이 있습니다.

모든 dumpsys 데이터는 Android 버그 보고서를 생성하여 사용할 수 있습니다.