Pilha de rede

A pilha de rede é um módulo principal 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 fique atualizado com a mudança de 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 da pilha de rede contém os seguintes componentes. Em dispositivos que usam o módulo, esses serviços foram movidos para um processo diferente e são acessados por uma interface AIDL estável.

  • Serviços de IP. IpClient (antigo IpManager) é um componente responsável por Provisionamento e manutenção da camada IP. No Android 9, ele já era usado entre processos por componentes como Bluetooth e em processos por componentes como Wi-Fi. O DhcpClient recebe endereços IP de servidores DHCP para que possa ser atribuídos a interfaces.

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

  • App de login do portal cativo: um app pré-instalado responsável por gerenciar o login em portais cativos. Esse é um app separado desde o Android 5.0, mas ele interage com NetworkMonitor para encaminhar algumas escolhas do usuário ao sistema.

Caminhos afetados

Os caminhos movidos para o módulo da pilha de rede pelo refatoramento estão listados abaixo.

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

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

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

O novo local do código movido está em packages/modules/NetworkStack, packages/modules/CaptivePortalLogin e alguns outros locais compartilhados. A instrução Os caminhos se referem à localização dos arquivos antes de serem movidos para lá para a linha principal. Arquivos em packages/modules/NetworkStack e packages/modules/CaptivePortalLogin fazem parte do módulo Mainline e não podem ser modificada.

Formato do pacote

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

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

Esse módulo é acompanhado pelo módulo de configuração de permissões da pilha de rede, que é um arquivo APK pré-instalado que define as permissões necessárias para os componentes da pilha de rede.

Dependências

O módulo da pilha de rede depende do seguinte:

  • Métodos privilegiados de @hide no servidor do sistema (por exemplo, em IConnectivityManager.aidl). Essas APIs tornaram-se @SystemApi e adequadamente protegidos para que possam ser acessados pelo módulo Mainline, e não outros apps privilegiados (por exemplo, usar uma nova permissão de assinatura).

  • Vincular as IPCs a netd definidas em INetd.aidl. Essa interface foi convertida em AIDL estável e está sujeita a testes de conformidade.