Pile réseau

Network Stack est un module Mainline pouvant être mis à jour qui permet à Android de s'adapter aux normes réseau en constante évolution et d'assurer l'interopérabilité avec les nouvelles implémentations. Par exemple, les mises à jour du code de détection et de connexion au portail captif permettent à Android de rester à jour avec les modèles de portail captif en constante évolution, et les mises à jour d'APF permettent à Android d'économiser de l'énergie sur le Wi-Fi à mesure que de nouveaux types de paquets deviennent courants.

Composants inclus

Le module Network Stack contient les composants suivants. Sur les appareils utilisant le module, ces services ont été déplacés vers un autre processus et sont accessibles via une interface AIDL stable.

  • Services IP. IpClient (anciennement IpManager) est un composant chargé de l'approvisionnement et de la maintenance de la couche IP. Dans Android 9, il était déjà utilisé entre les processus par des composants tels que Bluetooth, et dans le processus par des composants tels que le Wi-Fi. DhcpClient obtient des adresses IP auprès des serveurs DHCP afin qu'elles puissent être attribuées aux interfaces.

  • NetworkMonitor. Le composant NetworkMonitor teste l'accessibilité à Internet lors de la connexion à un nouveau réseau ou en cas de défaillance du réseau, lors de la détection de portails captifs et lors de la validation des réseaux.

  • Application de connexion au portail captif : application préinstallée chargée de gérer la connexion sur les portails captifs. Il s'agit d'une application distincte depuis Android 5.0, mais elle interagit avec NetworkMonitor pour transmettre certains choix de l'utilisateur au système.

Chemins concernés

Les chemins déplacés vers le module Network Stack par la refactorisation sont listés ci-dessous.

  • Services IP. Dans frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (en partie)
  • Détection et connexion au portail captif. Dans frameworks/base/ :

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

Le nouveau emplacement du code déplacé se trouve dans packages/modules/NetworkStack, packages/modules/CaptivePortalLogin et d'autres emplacements partagés. Les chemins ci-dessus font référence à l'emplacement des fichiers avant leur déplacement vers Mainline. Les fichiers de packages/modules/NetworkStack et packages/modules/CaptivePortalLogin font partie du module Mainline et ne peuvent pas être modifiés.

Format du package

Le module Network Stack contient les composants suivants au format APK :

  • Services IP
  • Connexion au portail captif (com.google.android.captiveportallogin)

Ce module est accompagné du module Network Stack Permission Config, qui est un fichier APK préinstallé qui définit les autorisations nécessaires pour les composants Network Stack.

Dépendances

Le module Network Stack dépend des éléments suivants :

  • Méthodes @hide privilégiées dans le serveur système (par exemple, dans IConnectivityManager.aidl). Ces API ont été définies sur @SystemApi et correctement protégées afin qu'elles soient accessibles au module Mainline, mais pas à d'autres applications privilégiées (par exemple, à l'aide d'une nouvelle autorisation de signature).

  • IPC Binder vers netd défini dans INetd.aidl. Cette interface a été convertie en AIDL stable et est soumise à des tests de conformité.