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

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

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

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

Почему PANS?

PANS может:

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

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

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

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

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

Внедрение PANS

Для реализации сковородки, новый ConnectivityManager API, 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 - сетях.
  • 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 помните о следующих моментах:

  • Сетевые предпочтения не сохраняются при загрузке, и их нужно будет повторно применять при каждой загрузке.
  • Чтобы создать предпочтение для приложения, его не нужно устанавливать. Таким образом, сетевые предпочтения для удаленных приложений можно установить заранее.
  • В любой момент времени приложение может быть сопоставлено только одному сетевому предпочтению.

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

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

Для Wi-Fi, то WifiNetworkSuggestion API можно использовать с новым 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 (см Руководство Driver Отвлечение ).
  • Динамическое обновление Wi-Fi с OEM_PAID и OEM_PRIVATE .

Рисунок 3. Ссылка приложение

Метрики

Для того, чтобы облегчить прозрачность вокруг использования данных, показатели собраны и доступны в отношении объема данных , передаваемых по OEM_PAID и OEM_PRIVATE сетевых отображений.

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

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

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

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