Network Stack — это обновляемый модуль Mainline, который гарантирует, что Android сможет адаптироваться к развивающимся сетевым стандартам, а также обеспечивает совместимость с новыми реализациями. Например, обновления системы обнаружения перехватывающих порталов и кода входа позволяют Android быть в курсе изменений моделей перехватывающих порталов, а обновления APF позволяют Android экономить электроэнергию на Wi-Fi, поскольку новые типы пакетов становятся обычным явлением.
Входящие в комплект компоненты
Модуль Network Stack содержит следующие компоненты. На устройствах, использующих этот модуль, эти службы были перенесены в другой процесс, и доступ к ним осуществляется через стабильный интерфейс AIDL.
IP-сервисы.
IpClient
(ранееIpManager
) — это компонент, отвечающий за подготовку и обслуживание уровня IP. В Android 9 он уже использовался в кросс-процессе такими компонентами, как Bluetooth, и внутри процесса такими компонентами, как Wi-Fi.DhcpClient
получает IP-адреса от DHCP-серверов, чтобы их можно было назначить интерфейсам.СетьМонитор. Компонент
NetworkMonitor
проверяет доступность Интернета при подключении к новой сети или при сбоях сети, при обнаружении авторизованных порталов и при проверке сетей.Приложение для входа в Captive-портал. Предустановленное приложение, отвечающее за управление входом на авторизованные порталы. Начиная с Android 5.0, это отдельное приложение, но оно взаимодействует с
NetworkMonitor
, перенаправляя в систему некоторые варианты выбора пользователя.
Затронутые пути
Пути, перемещенные в модуль Network Stack в результате рефакторинга, перечислены ниже.
IP-сервисы. В
frameworks/base/services/net/java/android/net/
:-
apf
-
dhcp
-
ip
-
netlink
-
util
(частично)
-
Обнаружение Captive-портала и вход в систему. В
frameworks/base/
:-
core/java/android/net/captiveportal/
-
services/core/java/com/android/server/connectivity/NetworkMonitor.java
-
packages/CaptivePortalLogin/*
-
Новое расположение перемещенного кода — packages/modules/NetworkStack
, packages/modules/CaptivePortalLogin
и некоторых других общих папках. Вышеупомянутые пути относятся к местоположению файлов перед их перемещением туда для основной линии. Файлы в packages/modules/NetworkStack
и packages/modules/CaptivePortalLogin
являются частью модуля Mainline и не могут быть изменены.
Формат упаковки
Модуль Network Stack содержит следующие компоненты в формате APK:
- IP-услуги
- Вход в авторизованный портал (
com.google.android.captiveportallogin
)
К этому модулю прилагается модуль конфигурации разрешений сетевого стека, который представляет собой предустановленный APK-файл, определяющий необходимые разрешения для компонентов сетевого стека.
Зависимости
Модуль Network Stack зависит от следующего:
Привилегированные методы @hide на системном сервере (например, в
IConnectivityManager.aidl
). Эти API были созданы@SystemApi
и соответствующим образом защищены, чтобы они были доступны модулю Mainline, но не другим привилегированным приложениям (например, с использованием нового разрешения на подпись).Привязка IPC к
netd
определена вINetd.aidl
. Этот интерфейс был преобразован в стабильный AIDL и подлежит тестам на соответствие.