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 le nuove implementazioni. Ad esempio, gli aggiornamenti al rilevamento dei portali captive e al codice di accesso consentono ad Android di rimanere al passo con i modelli di portali captive in evoluzione, mentre gli aggiornamenti all'APF consentono ad Android di risparmiare energia sul Wi-Fi man mano che nuovi tipi di pacchetti diventano comuni.

Componenti inclusi

Il modulo Network Stack contiene i seguenti componenti. Sui dispositivi che utilizzano il modulo, questi servizi sono stati spostati in un processo diverso e vi si accede tramite un'interfaccia AIDL stabile.

  • Servizi IP. IpClient (in precedenza IpManager) è un componente responsabile del provisioning e della manutenzione del livello IP. In Android 9, era già utilizzato cross-process da componenti come il Bluetooth e in-process da componenti come il Wi-Fi. DhcpClient ottiene gli indirizzi IP dai server DHCP per poter essere assegnati alle interfacce.

  • NetworkMonitor. Il componente NetworkMonitor testa la raggiungibilità di internet quando ci si connette a una nuova rete o in caso di errori di rete, quando vengono rilevati captive portal e quando si convalidano le reti.

  • App di accesso a captive portal.Un'app preinstallata incaricata di gestire l'accesso ai captive portal. Si tratta di 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 (parzialmente)
  • Rilevamento e accesso a captive portal. Tra 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 in alcune altre posizioni condivise. I percorsi sopra indicati si riferiscono alla posizione dei file prima che vengano 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 captive portal (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 con privilegi nel server di sistema (ad es. in IConnectivityManager.aidl). Queste API sono state rese @SystemApi e adeguatamente protette in modo che siano accessibili al modulo Mainline ma non ad altre app con privilegi (ad esempio, utilizzando una nuova autorizzazione di firma).

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