Network Stack

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 captive portal e al codice di accesso consentono ad Android di rimanere al passo con i modelli di captive portal in continua evoluzione e 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 Network Stack contiene i seguenti componenti. Sui dispositivi che utilizzano il modulo, questi servizi sono stati spostati in un processo diverso e sono accessibili tramite un'interfaccia AIDL stabile.

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

  • NetworkMonitor. Il componente NetworkMonitor esegue test di raggiungibilità di internet quando ci si connette a una nuova rete o in caso di errori di rete, quando rileva captive portal e quando convalida le reti.

  • App di accesso al captive portal.Un'app preinstallata incaricata di gestire l'accesso sui 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 (in parte)
  • Rilevamento di captive portal e accesso. 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 in altre posizioni condivise. I percorsi sopra indicati si riferiscono alla posizione dei file prima di essere spostati 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 a captive portal (com.google.android.captiveportallogin)

Questo modulo è accompagnato dal modulo di configurazione delle autorizzazioni dello stack di rete, che è un file APK preinstallato che definisce le autorizzazioni necessarie per i componenti dello stack di rete.

Dipendenze

Il modulo Network Stack dipende da quanto segue:

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

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