модем

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

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

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

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

Разгрузка привязки 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.google.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.