Stack di rete

Network Stack è un modulo Mainline aggiornabile che garantisce che Android possa adattarsi agli standard di rete in evoluzione e consente l'interoperabilità con nuove implementazioni. Ad esempio, gli aggiornamenti al rilevamento del captive Portal e al codice di accesso consentono ad Android di rimanere aggiornato con i cambiamenti dei modelli di captive Portal, mentre gli aggiornamenti ad APF consentono ad Android di risparmiare energia sul Wi-Fi man mano che nuovi tipi di pacchetti diventano comuni.

Componenti inclusi

Il modulo Stack di rete contiene i seguenti componenti. Sui dispositivi che utilizzano il modulo, questi servizi sono stati spostati su un processo diverso e sono accessibili tramite un'interfaccia AIDL stabile.

  • Servizi IP. IpClient (precedentemente IpManager ) è un componente responsabile del provisioning e della manutenzione del livello IP. In Android 9 veniva già utilizzato in modalità cross-process da componenti come Bluetooth e in-process da componenti come Wi-Fi. DhcpClient ottiene gli indirizzi IP dai server DHCP in modo che possano essere assegnati alle interfacce.

  • NetworkMonitor. Il componente NetworkMonitor verifica la raggiungibilità di Internet durante la connessione a una nuova rete o in caso di errori di rete, durante il rilevamento di captive Portal e durante la convalida delle reti.

  • App di accesso al portale captive. Un'app preinstallata incaricata di gestire l'accesso sui captive Portal. Questa è un'app separata da Android 5.0, ma interagisce con NetworkMonitor per inoltrare alcune scelte dell'utente al sistema.

Percorsi interessati

I percorsi spostati nel modulo Network Stack dal refactoring sono elencati di seguito.

  • Servizi IP. In frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (in parte)
  • Rilevamento e accesso al captive Portal. In frameworks/base/ :

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

La nuova posizione del codice spostato è in packages/modules/NetworkStack , packages/modules/CaptivePortalLogin e alcune altre posizioni condivise. I percorsi sopra indicati si riferiscono alla posizione dei file prima di essere spostati lì per Mainline. I file in packages/modules/NetworkStack e packages/modules/CaptivePortalLogin fanno parte del modulo Mainline e non possono essere modificati.

Formato del pacchetto

Il modulo Network Stack contiene i seguenti componenti in formato APK:

  • Servizi IP
  • Accesso al portale captive ( com.google.android.captiveportallogin )

Questo modulo è accompagnato dal modulo Network Stack Permission Config, che è un file APK preinstallato che definisce le autorizzazioni necessarie per i componenti Network Stack.

Dipendenze

Il modulo Stack di rete dipende da quanto segue:

  • Metodi @hide privilegiati nel server di sistema (ad esempio, in IConnectivityManager.aidl ). Queste API sono state rese @SystemApi e opportunamente protette in modo che siano accessibili al modulo Mainline ma non ad altre app privilegiate (ad esempio, utilizzando una nuova autorizzazione di firma).

  • Raccoglitore IPC per netd definito in INetd.aidl . Questa interfaccia è stata convertita in AIDL stabile ed è soggetta a test di conformità.