Выбор сети для каждого приложения (PANS)

Транспортные средства все больше полагаются на подключение для управления растущим списком вариантов использования, запрашиваемых как OEM-производителями, так и владельцами транспортных средств, что приводит к увеличению объемов данных и связанных с этим затрат. Используйте функцию выбора сети для каждого приложения (PANS) для маршрутизации трафика указанных приложений в сети, оплачиваемые OEM-производителем.

С PANS вы можете управлять объемом и стоимостью использования данных, одновременно обеспечивая надежный, безопасный и подключенный автомобиль. сковороды:

  • Состоит из нового API, добавленного в ConnectivityManager , доступного только для автомобильных устройств.
  • Предоставляет обновленный API-интерфейс предложения Wi-Fi (см. API-интерфейс предложения Wi-Fi для подключения к Интернету ), который включает поддержку динамически изменяющихся сетевых возможностей PANS.
  • Собирает вспомогательные показатели.
  • Предоставляет справочное приложение.

Почему ПАНС?

ПАНС может:

  • Динамически обновлять сопоставления приложений и сетей.
  • Управляйте маршрутизацией на уровне приложений, не внося изменений в приложения.
  • Только разрешенные OEM-приложения могут получить доступ к сопоставленным OEM-сетям.
  • Разработчикам приложений не нужно вносить никаких изменений для реализации этой функции.
  • Метрики, ориентированные на пользователя, отслеживают использование данных между приложением и сетью для сетей, управляемых OEM.
  • Доступ к сети является безопасным и не может быть использован не по назначению или в результате неавторизованных приложений.
  • Изменения в сопоставлении приложения PANS с сетью сообщаются пользователям.
  • Для всех пользователей применяется одна и та же сетевая конфигурация.

Основные преимущества

PANS предоставляет OEM-производителям следующие основные преимущества:

  1. OEM-производители могут платить за сетевой трафик вместо пользователей:
    • Системные обновления могут предоставляться пользователю бесплатно.
    • Сетевое использование указанных приложений может предоставляться пользователю бесплатно.
    • Телеметрия и другая аналитика могут управляться бесплатно для пользователя.
  2. OEM-производители могут гарантировать, что важные приложения останутся подключенными даже без платного тарифного плана. Например, важные для безопасности функции, такие как карты, помощник (вождение без помощи рук) и системные обновления, продолжают работать, даже если у пользователя нет тарифного плана.
  3. PANS обеспечивает дополнительную степень детализации управления маршрутизацией сетевого трафика в Android. Например, OEM-производители могут оптимально определить логическую топологию сети для маршрутизации трафика на уровне приложений.

Рисунок 1 . структура PANS

Внедрение PANS

Для реализации PANS предоставляется новый API ConnectivityManager , setOemNetworkPreference . Этот новый API сопоставляет приложения с OemNetworkPreference . Этот API доступен только для автомобильных устройств и помечен как @SystemApi с новым разрешением signature .

Рисунок 2. Внедрение PANS

OEMNetworkPreference

OemNetworkPreference — это абстракция над OEM_PAID и OEM_PRIVATE NetworkCapabilities приложения по имени пакета с сетевым предпочтением . Сетевые настройки позволяют создавать сетевые иерархии. Например, сопоставление приложения с предпочтением OEM_NETWORK_PREFERENCE_OEM_PAID приведет к следующему приоритету сетей по умолчанию, назначенных приложению: сначала используйте сеть UNMETERED , если UNMETERED недоступен, используйте сеть OEM_PAID , а если OEM_PAID недоступен, используйте систему сеть по умолчанию.

  • OEM_PAID Используется в основном для приложений, которые можно маршрутизировать как в сетях 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;

Вызов API PANS

Чтобы использовать API PANS:

  1. Используйте OemNetworkPreferences , чтобы сопоставить приложение с настройками сети.
  2. Вызовите setOemNetworkPreference с объектом OemNetworkPreferences .
  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. Это не только покрывает подавляющее большинство потребностей в подключении, но также позволяет продолжать использовать специализированные API, такие как API NetworkRequest , чтобы не нарушать существующие сценарии использования приложений. Например, когда приложение хочет выполнить операцию только в сети без счетчика, PANS не заставит его использовать другую сеть.

Настройка сети

Сеть с возможностями OEM_PAID или OEM_PRIVATE должна быть доступна при использовании соответствующей настройки сети. Android обеспечивает поддержку настройки возможностей для сетей Ethernet и Wi-Fi. Для сетей Ethernet вы можете использовать оверлей ресурсов, config_ethernet_interfaces . Это устанавливается во время компиляции.

Для Wi-Fi API WifiNetworkSuggestion можно использовать с новыми API Android 12, 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 помечает эту сеть как сеть с ограниченным доступом . Сети с ограниченным доступом могут использоваться только приложениями, имеющими разрешение CONNECTIVITY_USE_RESTRICTED_NETWORKS , которое контролируется OEM-производителями.

Приложения с этим разрешением могут использовать сети с ограниченным доступом, если приложения явно запрашивают их . Однако эти приложения не получат сети с ограниченным доступом по умолчанию. Для приложений, сопоставленных через PANS, могут быть установлены ограниченные OEM-сети по умолчанию, и для их использования не потребуется ограниченное сетевое разрешение. Когда такое приложение имеет ограниченную OEM-сеть, назначенную PANS в качестве сети по умолчанию, оно также имеет возможность явным образом запросить указанную OEM-сеть, если приложение решит это сделать.

Проверка эталонного приложения

Эталонное приложение (включая код) с именем NetworkPreferenceApp предоставляется в автомобильных сборках, отлаживаемых пользователем, и демонстрирует, как:

  • Используйте показатели PANS.
  • Установите политику PANS.
  • Установите политику по умолчанию для устройства.
  • Очистить политику.
  • Применение политики при загрузке.
  • Используйте API для отвлечения внимания водителя (см. Рекомендации по отвлечению внимания водителя ).
  • Динамически обновлять Wi-Fi с помощью OEM_PAID и OEM_PRIVATE .

Рисунок 3. Эталонное приложение

Метрики

Чтобы повысить прозрачность использования данных, собираются и становятся доступными метрики, касающиеся объема данных, переданных через сетевые сопоставления OEM_PAID и OEM_PRIVATE .

Исправление проблем

Большинство условий устранения неполадок возникают либо из-за того, что приложение использует неправильную сеть (отсутствует сетевое подключение), либо из-за избытка данных. Чтобы включить быстрое разрешение:

  • dumpsys подключения включает в себя список активных сетей по умолчанию для каждого приложения и связанных с ними приложений (сопоставленных из PANS).
  • Netd dumpsys включает IP-адрес UID и правила брандмауэра.
  • Netstats dumpsys включает метрики PANS для каждого приложения. Например, какие приложения использовали какую OEM-сеть.

Все данные dumpsys доступны при создании отчета об ошибке Android.