Pilha de rede

Network Stack é um módulo Mainline atualizável que garante que o Android possa se adaptar aos padrões de rede em evolução e permite a interoperabilidade com novas implementações. Por exemplo, as atualizações na detecção de portal cativo e no código de login permitem que o Android se mantenha atualizado com as mudanças nos modelos de portal cativo, e as atualizações no APF permitem que o Android economize energia no Wi-Fi à medida que novos tipos de pacotes se tornam comuns.

Componentes incluídos

O módulo Network Stack contém os seguintes componentes. Nos dispositivos que utilizam o módulo, esses serviços foram movidos para um processo diferente e são acessados ​​por meio de uma interface AIDL estável.

  • Serviços IP. IpClient (anteriormente IpManager ) é um componente responsável pelo provisionamento e manutenção da camada IP. No Android 9, já era utilizado processo cruzado por componentes como Bluetooth, e em processo por componentes como Wi-Fi. DhcpClient obtém endereços IP de servidores DHCP para que possam ser atribuídos a interfaces.

  • Monitor de rede. O componente NetworkMonitor testa a acessibilidade da Internet ao conectar-se a uma nova rede ou em caso de falhas de rede, ao detectar portais cativos e ao validar redes.

  • Aplicativo de login do portal cativo. Um aplicativo pré-instalado encarregado de gerenciar o login em portais cativos. Este é um aplicativo separado desde o Android 5.0, mas interage com NetworkMonitor para encaminhar algumas escolhas do usuário para o sistema.

Caminhos afetados

Os caminhos movidos para o módulo Network Stack pelo refatorador estão listados abaixo.

  • Serviços IP. Em frameworks/base/services/net/java/android/net/ :

    • apf
    • dhcp
    • ip
    • netlink
    • util (parcialmente)
  • Detecção e login do portal cativo. Em frameworks/base/ :

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

A nova localização do código movido está em packages/modules/NetworkStack , packages/modules/CaptivePortalLogin e alguns outros locais compartilhados. Os caminhos acima referem-se à localização dos arquivos antes de serem movidos para o Mainline. Arquivos em packages/modules/NetworkStack e packages/modules/CaptivePortalLogin fazem parte do módulo Mainline e não podem ser modificados.

Formato do pacote

O módulo Network Stack contém os seguintes componentes em formato APK:

  • Serviços IP
  • Login do portal cativo ( com.google.android.captiveportallogin )

Este módulo é acompanhado pelo módulo Network Stack Permission Config, que é um arquivo APK pré-instalado que define as permissões necessárias para os componentes do Network Stack.

Dependências

O módulo Network Stack depende do seguinte:

  • Métodos @hide privilegiados no servidor do sistema (por exemplo, em IConnectivityManager.aidl ). Essas APIs foram criadas @SystemApi e devidamente protegidas para que sejam acessíveis ao módulo Mainline, mas não a outros aplicativos privilegiados (por exemplo, usando uma nova permissão de assinatura).

  • Binder IPCs para netd definido em INetd.aidl . Esta interface foi convertida para AIDL estável e está sujeita a testes de conformidade.