Partage de connexion

Le module de partage de connexion partage la connexion Internet d'un appareil Android avec d'autres appareils clients connectés, qui peuvent se connecter à des appareils de partage de connexion via Wi-Fi, USB, Bluetooth ou Ethernet. Ce module comprend le composant de tethering (USB, point d'accès Wi-Fi, Bluetooth, etc.) et ses dépendances (interaction avec le droit de tethering, IpServer et offloadController ). Ce module peut être mis à jour, ce qui signifie qu'il peut recevoir des mises à jour de fonctionnalités en dehors du cycle de publication normal d'Android.

Le module Tethering permet aux OEM de l'ensemble de l'écosystème Android d'utiliser une seule implémentation de référence standard qui apporte les avantages suivants.

  • Les utilisateurs finaux bénéficient d'une expérience cohérente sur tous les appareils Android et de correctifs pour les problèmes d'interopérabilité grâce aux mises à jour des modules.

  • Les OEM peuvent répondre aux exigences des opérateurs tout en réduisant les coûts des personnalisations individuelles (car ils n'ont pas besoin de différentes implémentations des mêmes exigences de différentes manières).

Déchargement du partage de connexion eBPF

Pour fournir un partage de connexion à haut débit sans répondre aux déchargements matériels, Android 11 fournit une solution de déchargement de logiciel de partage de connexion appelée déchargement de partage de connexion eBPF pour le téléchargement IPv6 (trafic circulant vers un appareil connecté).

A partir d'Android 12, cette fonctionnalité (y compris le code du programme eBPF) est entièrement fournie par le module Tethering, qui prend en charge les éléments suivants :

  • Téléchargement IPv6 (trafic circulant vers un appareil connecté)
  • Téléchargement IPv6 (trafic provenant d'un appareil connecté)
  • Téléchargement et aval IPv4 TCP/UDP (trafic circulant vers/depuis un périphérique connecté)
  • déchargement eBPF

Cette fonctionnalité est activée par défaut, les utilisateurs peuvent remplacer la configuration config_tether_enable_bpf_offload par false par RRO. Voir Personnalisation pour plus d'informations.

Prise en charge IPv4 et IPv6

Le module Tethering prend en charge la double pile IPv4 et IPv6.

  • Pour les réseaux IPv4, le module configure la traduction d'adresse réseau (NAT) et adopte le protocole de configuration d'hôte dynamique (DHCP) pour l'attribution d'adresse IP.

  • Pour les réseaux IPv6, le module adopte la configuration automatique d'adresse sans état IPv6 (SLAAC) pour l'attribution d'adresse IP.

Limite du module

Pour Android 12 et supérieur, tous les fichiers/dossiers sous packages/modules/Connectivity sont dans la portée du module Tethering.

Pour Android 11 et versions antérieures, le module Tethering contient les fichiers Android 10 suivants dans packages/modules/Tethering .

  • frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
  • frameworks/base/services/core/java/com/android/server/connectivity/tethering/
  • frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
  • frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
  • frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
  • frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
  • frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
  • frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
  • frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
  • frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
  • frameworks/base/core/java/android/os/INetworkManagementService.aidl
  • frameworks/base/core/java/android/bluetooth/BluetoothPan.java
  • frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
  • packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
  • packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java

Format des modules

Le module Tethering ( com.google.android.tethering ) est au format APEX et est disponible pour les appareils exécutant Android 11 ou supérieur.

Inclure ConnectivityService

À partir d'Android 12, le code ConnectivityService qui implémente le composant central de la connectivité L3+ est ajouté à l'APEX Tethering. La portée de Tethering s'étend à un module de connectivité.

Dépendances des modules

Le module Tethering a les dépendances suivantes :

  • Méthodes d'API publiques et système dans le serveur système
  • Interface stable des IPC AIDL avec le serveur système
  • tetheroffload HIDL (défini dans hardware/interfaces/tetheroffload/ )
  • Serveur DHCP (partie du module Network Stack)

Personnalisation

Le module Tethering ne prend pas en charge la personnalisation.

Essai

La suite de tests de compatibilité Android (CTS) vérifie la fonctionnalité du module Tethering.