Обновления в Android 13
Обновлять | Дополнительная информация |
---|---|
Представлен кросс-девайс | кроссдевайс |
Представлено раздельное туннелирование | Раздельное туннелирование |
Обзор
Модуль модема использует интернет-соединение устройства Android совместно с другими подключенными клиентскими устройствами, которые могут подключаться к устройствам модема через Wi-Fi, USB, Bluetooth или Ethernet. Этот модуль включает в себя компонент модема (USB, точка доступа Wi-Fi, Bluetooth и т. д.) и его зависимости (взаимодействие с правом модема, IpServer
и offloadController
). Этот модуль является обновляемым, то есть он может получать обновления функциональности за пределами обычного цикла выпуска Android.
Модуль Tethering позволяет 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
|
Сервисы для разных устройств | В packages/modules/CrossDevice/service
|
Формат пакета CrossDevice
Основная функция этого модуля включена в пакет APEX. Ресурсы упакованы в APK.
Зависимости между устройствами
CrossDevice зависит от следующего:
- Wi-Fi
- Bluetooth
- СШП
- модули-утилиты-предварительные условия
- Прото библиотеки
Параметры настройки кросс-устройства
Мы планируем разрешить 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 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
Формат модуля
Модуль модема ( com.android.tethering
) имеет формат APEX и доступен для устройств под управлением Android 11 или выше.
Включить службу подключения
Начиная с Android 12 код ConnectivityService
, реализующий центральный компонент подключения L3+, добавляется в Tethering APEX. Объем Tethering расширяется до модуля Connectivity.
Зависимости модуля
Модуль Tethering имеет следующие зависимости:
- Общедоступные и системные методы API на системном сервере
- Стабильный интерфейс AIDL IPC с системным сервером
-
tetheroffload
HIDL (определяется вhardware/interfaces/tetheroffload/
) - DHCP-сервер (часть модуля сетевого стека)
Настройка
Модуль Tethering не поддерживает настройку.
Тестирование
Набор тестов на совместимость с Android (CTS) проверяет функциональность модуля Tethering.