Descarga de hardware de tethering

O descarregamento de tethering permite que os dispositivos economizem energia e melhorem o desempenho ao descarregar o tráfego de tethering (por USB, Wi-Fi) para o hardware. O tráfego de tethering é descarregado fornecendo um caminho direto entre o modem e os periféricos, ignorando o processador do aplicativo.

Especificações

A partir do Android 8.1, os dispositivos podem usar o descarregamento de tethering para descarregar o encaminhamento IPv4, IPv6 ou IPv4+IPv6 para o hardware.

O recurso de descarregamento não precisa descarregar todos os pacotes. A estrutura é capaz de lidar com qualquer pacote em software. Os pacotes de controle são normalmente processados ​​em software. Como as portas IPv4 são compartilhadas entre o tráfego conectado e o tráfego do dispositivo, os pacotes de configuração/desmontagem da sessão IPv4 (por exemplo, SYN/SYN+ACK, FIN) devem ser processados ​​em software para que o kernel possa construir o estado de fluxo. A estrutura fornece o plano de controle e as máquinas de estado. Ele também fornece ao hardware informações sobre interfaces/prefixos upstream e downstream.

Para IPv4, o hardware permite que os pacotes de configuração de sessão de tradução de endereços de rede IPv4 (NAT) alcancem a CPU. O kernel cria entradas NAT e a implementação HAL observa as entradas dos descritores de arquivo fornecidos pela estrutura e trata esses fluxos no hardware. Isso significa que a implementação do HAL não requer CAP_NET_* porque o HAL recebe soquetes NF_NETLINK_CONNTRACK abertos do framework. Periodicamente, o hardware envia atualizações de estado NAT para fluxos atualmente ativos para a estrutura, que atualiza as entradas de estado de rastreamento de conexão do kernel correspondentes.

Para IPv6, a estrutura programa uma lista de prefixos de destino IPv6 para os quais o tráfego não deve ser descarregado. Todos os outros pacotes amarrados podem ser descarregados.

Para a contabilidade de uso de dados, as pesquisas de uso de dados do NetworkStatsService fazem com que a estrutura solicite estatísticas de tráfego do hardware. A estrutura também comunica os limites de uso de dados ao hardware por meio do HAL.

Requisitos de hardware

Para implementar o descarregamento de tethering, seu hardware deve ser capaz de encaminhar pacotes IP entre o modem e o Wi-Fi/USB sem enviar o tráfego pelo processador principal.

Implementação

Para habilitar o recurso de transferência de tethering, você deve implementar os dois seguindo um HAL de configuração ( IOffloadConfig ) e um HAL de controle ( IOffloadControl ).

Configuração HAL: IOffloadConfig

O IOffloadConfig HAL inicia a implementação de transferência de tethering. A estrutura fornece a implementação HAL com soquetes NF_NETLINK_CONNTRACK pré-conectados que a implementação pode usar para observar os fluxos IPv4. Apenas os fluxos encaminhados devem ser acelerados.

Controle HAL: IOffloadControl

O IOffloadControl HAL controla a implementação de descarregamento. Os seguintes métodos devem ser implementados:

  • Iniciar/parar o descarregamento de hardware: Use initOffload/stopOffload e isente endereços IP locais ou outras redes do descarregamento com setLocalPrefixes .
  • Configurar interface upstream, endereço IPv4 e gateways IPv6: use setUpstreamParameters e configure intervalos de endereços IP downstream com addDownstream/removeDownstream .
  • Contabilidade de uso de dados: use getForwardedStats/setDataLimit .

Seu fornecedor HAL também deve enviar retornos de chamada por meio da interface ITetheringOffloadCallback , que informa a estrutura de:

  • Eventos assíncronos, como descarregamento sendo iniciado e interrompido (OffloadCallbackEvent)
  • Atualizações de tempo limite de NAT, que devem ser enviadas periodicamente para indicar que um fluxo IPv4 específico contém tráfego e não deve ser fechado pelo kernel

Validação

Para validar sua implementação de transferência de tethering, use testes manuais ou automatizados para verificar se o tethering e o ponto de acesso Wi-Fi funcionam conforme o esperado. O Vendor Test Suite (VTS) contém testes para as HALs de descarregamento de tethering.

,

O descarregamento de tethering permite que os dispositivos economizem energia e melhorem o desempenho ao descarregar o tráfego de tethering (por USB, Wi-Fi) para o hardware. O tráfego de tethering é descarregado fornecendo um caminho direto entre o modem e os periféricos, ignorando o processador do aplicativo.

Especificações

A partir do Android 8.1, os dispositivos podem usar o descarregamento de tethering para descarregar o encaminhamento IPv4, IPv6 ou IPv4+IPv6 para o hardware.

O recurso de descarregamento não precisa descarregar todos os pacotes. A estrutura é capaz de lidar com qualquer pacote em software. Os pacotes de controle são normalmente processados ​​em software. Como as portas IPv4 são compartilhadas entre o tráfego conectado e o tráfego do dispositivo, os pacotes de configuração/desmontagem da sessão IPv4 (por exemplo, SYN/SYN+ACK, FIN) devem ser processados ​​em software para que o kernel possa construir o estado de fluxo. A estrutura fornece o plano de controle e as máquinas de estado. Ele também fornece ao hardware informações sobre interfaces/prefixos upstream e downstream.

Para IPv4, o hardware permite que os pacotes de configuração de sessão de tradução de endereços de rede IPv4 (NAT) alcancem a CPU. O kernel cria entradas NAT e a implementação HAL observa as entradas dos descritores de arquivo fornecidos pela estrutura e trata esses fluxos no hardware. Isso significa que a implementação do HAL não requer CAP_NET_* porque o HAL recebe soquetes NF_NETLINK_CONNTRACK abertos do framework. Periodicamente, o hardware envia atualizações de estado NAT para fluxos atualmente ativos para a estrutura, que atualiza as entradas de estado de rastreamento de conexão do kernel correspondentes.

Para IPv6, a estrutura programa uma lista de prefixos de destino IPv6 para os quais o tráfego não deve ser descarregado. Todos os outros pacotes amarrados podem ser descarregados.

Para a contabilidade de uso de dados, as pesquisas de uso de dados do NetworkStatsService fazem com que a estrutura solicite estatísticas de tráfego do hardware. A estrutura também comunica os limites de uso de dados ao hardware por meio do HAL.

Requisitos de hardware

Para implementar o descarregamento de tethering, seu hardware deve ser capaz de encaminhar pacotes IP entre o modem e o Wi-Fi/USB sem enviar o tráfego pelo processador principal.

Implementação

Para habilitar o recurso de transferência de tethering, você deve implementar os dois seguindo um HAL de configuração ( IOffloadConfig ) e um HAL de controle ( IOffloadControl ).

Configuração HAL: IOffloadConfig

O IOffloadConfig HAL inicia a implementação de transferência de tethering. A estrutura fornece a implementação HAL com soquetes NF_NETLINK_CONNTRACK pré-conectados que a implementação pode usar para observar os fluxos IPv4. Apenas os fluxos encaminhados devem ser acelerados.

Controle HAL: IOffloadControl

O IOffloadControl HAL controla a implementação de descarregamento. Os seguintes métodos devem ser implementados:

  • Iniciar/parar o descarregamento de hardware: Use initOffload/stopOffload e isente endereços IP locais ou outras redes do descarregamento com setLocalPrefixes .
  • Configurar interface upstream, endereço IPv4 e gateways IPv6: use setUpstreamParameters e configure intervalos de endereços IP downstream com addDownstream/removeDownstream .
  • Contabilidade de uso de dados: use getForwardedStats/setDataLimit .

Seu fornecedor HAL também deve enviar retornos de chamada por meio da interface ITetheringOffloadCallback , que informa a estrutura de:

  • Eventos assíncronos, como descarregamento sendo iniciado e interrompido (OffloadCallbackEvent)
  • Atualizações de tempo limite de NAT, que devem ser enviadas periodicamente para indicar que um fluxo IPv4 específico contém tráfego e não deve ser fechado pelo kernel

Validação

Para validar sua implementação de transferência de tethering, use testes manuais ou automatizados para verificar se o tethering e o ponto de acesso Wi-Fi funcionam conforme o esperado. O Vendor Test Suite (VTS) contém testes para as HALs de descarregamento de tethering.