модем

Обновления в Android 13

Обновлять Больше информации
Представлен CrossDevice КроссДевице
Введено раздельное туннелирование. Разделенное туннелирование

Обзор

Модуль модема использует подключение к Интернету устройства Android совместно с другими подключенными клиентскими устройствами, которые могут подключаться к модемным устройствам через Wi-Fi, USB, Bluetooth или Ethernet. Этот модуль включает в себя компонент привязки (USB, точка доступа Wi-Fi, Bluetooth и т. д.) и его зависимости (взаимодействие с правами на привязку, IpServer и offloadController ). Этот модуль является обновляемым, то есть он может получать обновления функциональности вне обычного цикла выпуска Android.

Модуль привязки позволяет OEM-производителям всей экосистемы Android использовать единую стандартную эталонную реализацию, которая дает следующие преимущества.

  • Конечные пользователи получают единообразную работу на устройствах Android и устраняют проблемы совместимости посредством обновлений модулей.

  • OEM-производители могут выполнять требования операторов связи, одновременно снижая затраты на индивидуальную настройку (поскольку им не нужны разные реализации одних и тех же требований разными способами).

Разделенное туннелирование

Для поддержки вариантов использования раздельного туннелирования в Android 13 добавлен новый API для указания исключаемых маршрутов.

Разделенное туннелирование относится к конфигурации, в которой определенный трафик проходит через VPN, а другой трафик — нет. Типичным примером является случай, когда организация хочет, чтобы обычные веб-серфинги, приложения с высокой пропускной способностью (например, YouTube, Netflix) или чувствительные к задержке (например, Office 365 ) обходили VPN. До того, как было доступно раздельное туннелирование, VpnService.Builder позволял VPN-клиенту указывать, что к нему следует маршрутизировать только некоторые подсети ( включая маршруты). При раздельном туннелировании у вас есть возможность указать обратный вариант: маршрутизировать весь трафик в VPN, за исключением определенных подсетей ( исключить маршруты).

Сигнатура нового API разделенного туннелирования:

public Builder excludeRoute(@NonNull IpPrefix prefix)

КроссДевице

CrossDevice, представленный в Android 13, призван обеспечить технологии связи между устройствами с использованием стандартных протоколов. Он предоставляет API и функции для обнаружения устройств, подключения с проверкой подлинности и других возможностей взаимодействия с несколькими устройствами.

Кроссдевайс-мотивация

  • Более тесное сотрудничество с OEM-партнерами. OEM-производители могут интегрировать свою собственную систему ключей учетной записи с реализацией CrossDevice вместо использования решения Google.
  • Более наглядная реализация протокола. Модуль CrossDevice имеет открытый исходный код, что обеспечивает большую наглядность деталей реализации и лучшую защиту конфиденциальности при реализации технологий CrossDevice.

Граница модуля CrossDevice

Кроссдевице API В packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Кроссдевайс-сервисы В packages/modules/CrossDevice/service
  • NearbyService — API сканирования

Формат пакета CrossDevice

Основная функция этого модуля включена в комплект APEX. Ресурсы упакованы в APK.

Зависимости между устройствами

CrossDevice зависит от следующего:

  • Wi-Fi
  • Bluetooth
  • СШП
  • модули-утилиты-предварительные условия
  • Прото библиотеки

Параметры настройки CrossDevice

Мы планируем разрешить OEM-производителям настраивать пользовательский интерфейс для половины листа через RRO. Кастомизация функциональности не планируется.

Стратегия кроссдевайс-тестирования

Мы планируем добавить тесты Android Compatibility Test Suite (CTS) для проверки функциональности CrossDevice, а также тестирование кросс-устройств в MTS.

Разгрузка привязки eBPF

Чтобы обеспечить высокоскоростную модемную связь без ответа на аппаратную разгрузку, Android 11 предоставляет решение для разгрузки программного обеспечения модема, называемое разгрузкой модема eBPF для загрузки IPv6 (трафик, поступающий на привязанное устройство).

Начиная с Android 12, этот функционал (включая программный код eBPF) полностью обеспечивается модулем Tethering, который поддерживает следующее:

  • Загрузка IPv6 (трафик поступает на привязанное устройство)
  • Загрузка IPv6 (трафик, поступающий от привязанного устройства)
  • Загрузка и нисходящий трафик IPv4 TCP/UDP (трафик, поступающий к/от привязанного устройства)
  • разгрузка eBPF

Эта функция включена по умолчанию, пользователи могут переопределить конфигурацию config_tether_enable_bpf_offload на false с помощью RRO. См. раздел «Настройка» для получения дополнительной информации.

Поддержка IPv4 и IPv6

Модуль модема поддерживает двойной стек IPv4 и IPv6.

  • Для сетей IPv4 модуль настраивает преобразование сетевых адресов (NAT) и использует протокол динамической конфигурации хоста (DHCP) для назначения IP-адресов.

  • Для сетей IPv6 модуль использует автоматическую настройку адреса без сохранения состояния IPv6 (SLAAC) для назначения IP-адреса.

Граница модуля

В Android 12 и более поздних версиях все файлы/папки в packages/modules/Connectivity находятся в области модуля привязки.

Для Android 11 и более ранних версий модуль Tethering содержит следующие файлы Android 10 в packages/modules/Tethering .

  • frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
  • frameworks/base/services/core/java/com/android/server/connectivity/tethering/
  • frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
  • frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
  • frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
  • frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
  • frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
  • frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
  • frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
  • frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
  • frameworks/base/core/java/android/os/INetworkManagementService.aidl
  • frameworks/base/core/java/android/bluetooth/BluetoothPan.java
  • frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
  • packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
  • packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java

Формат модуля

Модуль модема ( com.android.tethering ) имеет формат APEX и доступен для устройств под управлением Android 11 или более поздней версии.

Включить службу подключения

Начиная с Android 12, в Tethering APEX добавляется код ConnectivityService , реализующий центральный компонент подключения L3+. Область применения модема расширяется за счет модуля подключения.

Зависимости модулей

Модуль Tethering имеет следующие зависимости:

  • Публичные и системные методы API на системном сервере
  • Стабильный интерфейс AIDL IPC с системным сервером
  • tetheroffload HIDL (определен в hardware/interfaces/tetheroffload/ )
  • DHCP-сервер (часть модуля Network Stack)

Кастомизация

Модуль Tethering не поддерживает настройку.

Тестирование

Набор тестов совместимости Android (CTS) проверяет функциональность модуля модема.