Partage de connexion

Mises à jour dans Android 13

Mise à jour Plus d'information
Introduction du CrossDevice Multi-appareils
Introduction du tunneling fractionné Tunneling fractionné

Aperçu

Le module 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 partage de connexion (USB, point d'accès Wi-Fi, Bluetooth, etc.) et ses dépendances (interaction avec le droit de partage de connexion, IpServer et offloadController ). Ce module est modifiable, 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 implémentation de référence standard unique qui apporte les avantages suivants.

  • Les utilisateurs finaux bénéficient d'une expérience cohérente sur tous les appareils Android et de solutions aux 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).

Tunneling fractionné

Pour prendre en charge les cas d’utilisation du split tunneling, une nouvelle API est ajoutée à Android 13 pour spécifier les routes d’exclusion.

Le tunneling fractionné fait référence à la configuration dans laquelle certains trafics passent par le VPN alors que d'autres ne le font pas. Un exemple courant est celui où une organisation souhaite que la navigation générale sur le Web, les applications gourmandes en bande passante (par exemple, YouTube, Netflix) ou sensibles à la latence (par exemple, Office 365 ) contournent le VPN. Avant que le tunneling fractionné ne soit disponible, VpnService.Builder permettait au client VPN d'indiquer que seuls certains sous-réseaux devaient y être acheminés ( inclure les routes). Avec le split tunneling, vous avez la possibilité de spécifier l'inverse : acheminer tout le trafic vers le VPN, à l'exception de sous-réseaux spécifiques ( exclure les routes).

La signature de la nouvelle API de split tunneling est :

public Builder excludeRoute(@NonNull IpPrefix prefix)

Multi-appareils

CrossDevice, introduit dans Android 13, vise à fournir des technologies de communication multi-appareils utilisant des protocoles standard. Il fournit des API et des fonctionnalités pour la découverte d'appareils, la connexion authentifiée et d'autres expériences multi-appareils.

Motivation CrossDevice

  • Collaboration plus étroite avec les partenaires OEM. Les OEM peuvent intégrer leur propre système de clé de compte avec la mise en œuvre CrossDevice au lieu de devoir utiliser la solution de Google.
  • Mise en œuvre plus visible du protocole. Le module CrossDevice est open source, offrant plus de visibilité sur les détails de mise en œuvre et une meilleure histoire de confidentialité pour la mise en œuvre des technologies CrossDevice.

Limite du module CrossDevice

API multi-appareils Dans packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Services multi-appareils Dans packages/modules/CrossDevice/service
  • NearbyService - API d'analyse

Format du package CrossDevice

La fonction principale de ce module est incluse dans un package APEX. Les ressources sont regroupées dans un APK.

Dépendances CrossDevice

CrossDevice dépend des éléments suivants :

  • Wifi
  • Bluetooth
  • UWB
  • modules-utils-conditions préalables
  • Bibliothèques de prototypes

Options de personnalisation multi-appareils

Nous prévoyons de permettre aux OEM de personnaliser l'interface utilisateur pour la demi-feuille via RRO. Il n'est pas prévu de personnaliser la fonctionnalité.

Stratégie de tests CrossDevice

Nous prévoyons d'ajouter des tests CTS (Android Compatibility Test Suite) pour vérifier la fonctionnalité CrossDevice et des tests multi-appareils dans MTS.

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é).

Depuis Android 12, cette fonctionnalité (y compris le code du programme eBPF) est entièrement assurée 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 appareil connecté)
  • Déchargement eBPF

Cette fonctionnalité est activée par défaut, les utilisateurs peuvent remplacer la configuration config_tether_enable_bpf_offload sur 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'adresses réseau (NAT) et adopte le protocole de configuration dynamique d'hôte (DHCP) pour l'attribution d'adresses 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 versions ultérieures, tous les fichiers/dossiers sous packages/modules/Connectivity se trouvent 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.android.tethering ) est au format APEX et est disponible pour les appareils exécutant Android 11 ou supérieur.

Inclure le service de connectivité

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

Dépendances des modules

Le module Tethering a les dépendances suivantes :

  • Méthodes API publiques et système sur le serveur système
  • Interface stable des IPC AIDL avec le serveur système
  • tetheroffload HIDL (défini dans hardware/interfaces/tetheroffload/ )
  • Serveur DHCP (faisant 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.