Nouveautés d'Android 13
| Mettre à jour | En savoir plus |
|---|---|
| Introduction de CrossDevice | CrossDevice |
| Introduction du tunneling partagé | Tunneling partagé |
Présentation
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 inclut le composant de partage de connexion (USB, point d'accès Wi-Fi, Bluetooth, etc.) et ses dépendances (interaction avec l'autorisation de partage de connexion, IpServer et offloadController). Ce module est actualisable, ce qui signifie qu'il peut recevoir des mises à jour de fonctionnalités en dehors du cycle de publication Android normal.
Le module de partage de connexion permet aux OEM de l'écosystème Android d'utiliser une seule implémentation de référence standard qui présente les avantages suivants.
Les utilisateurs finaux bénéficient d'une expérience cohérente sur tous les appareils Android et de corrections des 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 liés aux personnalisations individuelles (car ils n'ont pas besoin d'implémentations différentes des mêmes exigences de différentes manières).
Tunneling partagé
Pour prendre en charge les cas d'utilisation du tunneling partagé, une nouvelle API est ajoutée à Android 13 pour spécifier les routes à exclure.
Le tunneling partagé fait référence à la configuration dans laquelle certains trafics passent par le VPN, tandis que d'autres ne le font pas. Un exemple courant est celui où une organisation
souhaite que la navigation Web générale, les applications gourmandes en bande passante (par exemple, YouTube, Netflix) ou
les applications sensibles à la latence (par exemple, Office 365) contournent le VPN. Avant que le tunneling partagé ne soit disponible,
VpnService.Builder
permettait au client VPN d'indiquer que seuls certains sous-réseaux devaient y être routés
(routes d'inclusion). Avec le tunneling partagé, vous pouvez spécifier l'inverse : router tout le trafic vers le VPN, à l'exception de sous-réseaux spécifiques (routes d'exclusion).
La signature de la nouvelle API de tunneling partagé est la suivante :
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice, introduit dans Android 13, vise à fournir des technologies de communication inter-appareils à l'aide de protocoles standards. Il fournit des API et des fonctionnalités pour la détection d'appareils, la connexion authentifiée et d'autres expériences inter-appareils.
Motivation de CrossDevice
- Collaboration plus étroite avec les partenaires OEM. Les OEM peuvent intégrer leur propre système de clés de compte à l'implémentation CrossDevice au lieu d'avoir à utiliser la solution de Google.
- Implémentation plus visible du protocole. Le module CrossDevice est Open Source, ce qui offre une meilleure visibilité sur les détails de l'implémentation et une meilleure confidentialité pour l'implémentation des technologies CrossDevice.
Limite du module CrossDevice
| API CrossDevice | Dans packages/modules/CrossDevice/framework
|
| Services CrossDevice | Dans packages/modules/CrossDevice/service
|
Format du package CrossDevice
La fonction principale de ce module est incluse dans un package APEX. Les ressources sont empaquetées dans un APK.
Dépendances de CrossDevice
CrossDevice dépend des éléments suivants :
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Bibliothèques proto
Options de personnalisation de CrossDevice
Nous prévoyons d'autoriser les OEM à personnaliser l'UI pour la moitié de la feuille via RRO. Aucune personnalisation de la fonctionnalité n'est prévue.
Stratégie de test de CrossDevice
Nous prévoyons d'ajouter des tests Android Compatibility Test Suite (CTS) 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 dépendre des déchargements matériels, Android 11 fournit une solution de déchargement logiciel de partage de connexion appelée déchargement du partage de connexion eBPF pour le téléchargement IPv6 (trafic vers l'appareil connecté).
À partir d'Android 12, cette fonctionnalité (y compris le code du programme eBPF) est entièrement fournie par le module de partage de connexion, qui prend en charge les éléments suivants :
- Téléchargement IPv6 (trafic vers l'appareil connecté)
- Importation IPv6 (trafic depuis l'appareil connecté)
- Importation et téléchargement TCP/UDP IPv4 (trafic vers/depuis l'appareil 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" à l'aide de RRO.
Pour en savoir plus, consultez Personnalisation.
Compatibilité avec IPv4 et IPv6
Le module de partage de connexion est compatible avec 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 DHCP (Dynamic Host Configuration Protocol) pour l'attribution d'adresses IP.
Pour les réseaux IPv6, le module adopte la configuration automatique d'adresses sans état IPv6 (SLAAC) pour l'attribution d'adresses IP.
Limite du module
Pour Android 12 et versions ultérieures, tous les fichiers/dossiers sous packages/modules/Connectivity se trouvent dans le champ d'application du module de partage de connexion.
Pour Android 11 et versions antérieures, le module de partage de connexion contient les fichiers Android 10 suivants dans packages/modules/Tethering.
frameworks/base/services/core/java/com/android/server/connectivity/Tethering.javaframeworks/base/services/core/java/com/android/server/connectivity/tethering/frameworks/base/services/core/java/com/android/server/NetworkManagementService.javaframeworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.javaframeworks/base/services/net/java/android/net/{netlink,dhcp}/*frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.javaframeworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidlframeworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.javaframeworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.javaframeworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.javaframeworks/base/core/java/android/os/INetworkManagementService.aidlframeworks/base/core/java/android/bluetooth/BluetoothPan.javaframeworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpppackages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.javapackages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java
Format du module
Le module de partage de connexion (com.android.tethering) est au format APEX et est disponible pour les appareils fonctionnant sous Android 11 ou version ultérieure.
Inclure ConnectivityService
À partir d'Android 12, le ConnectivityService code qui
implémente le composant central de la connectivité L3+ est ajouté à l'APEX de partage de connexion. Le champ d'application du partage de connexion s'étend à un module de connectivité.
Dépendances du module
Le module de partage de connexion présente les dépendances suivantes :
- Méthodes d'API publiques et système dans le serveur système
- Interface AIDL IPC stable avec le serveur système
- HIDL
tetheroffload(défini danshardware/interfaces/tetheroffload/) - Serveur DHCP (qui fait partie du module de pile réseau)
Personnalisation
Le module de partage de connexion n'est pas compatible avec la personnalisation.
Tests
Android Compatibility Test Suite (CTS) vérifie la fonctionnalité du module de partage de connexion.