модем

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

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

Обзор

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

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

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

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

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

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

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

Сигнатура нового API для раздельного туннелирования выглядит следующим образом:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

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

Кроссплатформенная мотивация

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

Межустройственная граница модуля

API для работы на разных устройствах В packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Межплатформенные службы В packages/modules/CrossDevice/service
  • NearbyService - API сканирования

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

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

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

CrossDevice зависит от следующих компонентов:

  • Wi-Fi
  • Bluetooth
  • UWB
  • modules-utils-preconditions
  • Протобиблиотеки

Параметры настройки для разных устройств

Мы планируем разрешить производителям оригинального оборудования (OEM) настраивать пользовательский интерфейс для полулистовых панелей через RRO. Настраивать функциональность пока не планируется.

Стратегия кроссплатформенного тестирования

Мы планируем добавить в MTS тесты из набора тестов совместимости Android (CTS) для проверки функциональности на разных устройствах и проведения тестирования на разных устройствах.

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

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

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

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

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

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

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

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

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

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

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

Для 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

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

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

Включить ConnectivityService

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

Зависимости модуля

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

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

Настройка

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

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

Пакет тестов совместимости Android (CTS) проверяет работоспособность модуля «Привязка к сети».