Aktualizacje w Androidzie 13
Aktualizacja | Więcej informacji |
---|---|
Wprowadzono CrossDevice | Urządzenie krzyżowe |
Wprowadzono dzielone tunelowanie | Tunelowanie dzielone |
Przegląd
Moduł Tethering udostępnia połączenie internetowe urządzenia z systemem Android innym podłączonym urządzeniom klienckim, które mogą łączyć się z urządzeniami tetheringowymi przez Wi-Fi, USB, Bluetooth lub Ethernet. Moduł ten zawiera komponent tetheringu (USB, punkt dostępu Wi-Fi, Bluetooth itp.) i jego zależności (interakcja z uprawnieniami do tetheringu, IpServer
i offloadController
). Moduł ten można aktualizować, co oznacza, że może otrzymywać aktualizacje funkcjonalności poza normalnym cyklem wydawniczym Androida.
Moduł Tethering umożliwia producentom OEM w całym ekosystemie Androida korzystanie z jednej, standardowej implementacji referencyjnej, która zapewnia następujące korzyści.
Użytkownicy końcowi uzyskują spójne środowisko na wszystkich urządzeniach z systemem Android i poprawki problemów ze współdziałaniem dzięki aktualizacjom modułów.
Producenci OEM mogą spełniać wymagania przewoźników, jednocześnie zmniejszając koszty indywidualnych dostosowań (ponieważ nie potrzebują różnych implementacji tych samych wymagań na różne sposoby).
Tunelowanie dzielone
Aby obsługiwać przypadki użycia dzielonego tunelowania, do systemu Android 13 dodano nowy interfejs API umożliwiający określenie wykluczających tras.
Tunelowanie dzielone odnosi się do konfiguracji, w której określony ruch przechodzi przez VPN, a inny nie. Typowym przykładem jest sytuacja, gdy organizacja chce, aby ogólne surfowanie po Internecie, aplikacje wymagające dużej przepustowości (na przykład YouTube, Netflix) lub wrażliwe na opóźnienia (na przykład Office 365 ) omijały VPN. Zanim udostępniono tunelowanie dzielone, VpnService.Builder
umożliwiał klientowi VPN wskazanie, że powinny być do niego kierowane tylko niektóre podsieci ( w tym trasy). Dzięki tunelowaniu dzielonemu możesz określić odwrotność: skierować cały ruch do VPN, z wyjątkiem określonych podsieci ( z wyłączeniem tras).
Sygnatura nowego API dzielonego tunelowania to:
public Builder excludeRoute(@NonNull IpPrefix prefix)
Urządzenie krzyżowe
CrossDevice, wprowadzony w systemie Android 13, ma na celu zapewnienie technologii komunikacji między urządzeniami przy użyciu standardowych protokołów. Zapewnia interfejsy API i funkcje umożliwiające wykrywanie urządzeń, uwierzytelniane połączenia i inne doświadczenia na różnych urządzeniach.
Motywacja na różnych urządzeniach
- Ściślejsza współpraca z partnerami OEM. Producenci OEM mogą zintegrować swój własny system kluczy do kont z implementacją CrossDevice, zamiast korzystać z rozwiązania Google.
- Bardziej widoczna implementacja protokołu. Moduł CrossDevice jest modułem typu open source, zapewniającym lepszy wgląd w szczegóły implementacji i lepszą historię prywatności przy wdrażaniu technologii CrossDevice.
Granica modułu CrossDevice
Interfejsy API różnych urządzeń | W packages/modules/CrossDevice/framework
|
Usługi między urządzeniami | W packages/modules/CrossDevice/service
|
Format pakietu CrossDevice
Główna funkcja tego modułu jest zawarta w pakiecie APEX. Zasoby są spakowane w pliku APK.
Zależności między urządzeniami
CrossDevice zależy od następujących czynników:
- WiFi
- Bluetooth
- UWB
- moduły-narzędzia-warunki wstępne
- Biblioteki Proto
Opcje dostosowywania na różnych urządzeniach
Planujemy umożliwić producentom OEM dostosowywanie interfejsu użytkownika w przypadku połowy arkusza poprzez RRO. Nie ma planu dostosowywania funkcjonalności.
Strategia testowania na różnych urządzeniach
Planujemy dodać testy pakietu Android Compatibility Test Suite (CTS), aby zweryfikować funkcjonalność CrossDevice, oraz testy na różnych urządzeniach w MTS.
Odciążenie tetheringu eBPF
Aby zapewnić szybkie tethering bez odpowiadania na odciążenia sprzętowe, Android 11 udostępnia oprogramowanie do odciążania tetheringu o nazwie eBPF tethering offload na potrzeby pobierania IPv6 (ruch przepływający do urządzenia na uwięzi).
Od Androida 12 tę funkcjonalność (w tym kod programu eBPF) w całości zapewnia moduł Tethering, który obsługuje:
- Pobieranie IPv6 (ruch kierowany do urządzenia na uwięzi)
- Przesyłanie IPv6 (ruch płynący z urządzenia na uwięzi)
- Przesyłanie i pobieranie protokołu IPv4 TCP/UDP (ruch przepływający do/z urządzenia na uwięzi)
- Odciążenie eBPF
Ta funkcja jest domyślnie włączona. Użytkownicy mogą zmienić konfigurację config_tether_enable_bpf_offload
na false przez RRO. Aby uzyskać więcej informacji, zobacz Dostosowywanie .
Obsługa protokołu IPv4 i IPv6
Moduł Tethering obsługuje podwójny stos IPv4 i IPv6.
W przypadku sieci IPv4 moduł konfiguruje translację adresów sieciowych (NAT) i przyjmuje protokół dynamicznej konfiguracji hosta (DHCP) do przypisywania adresów IP.
W przypadku sieci IPv6 moduł wykorzystuje bezstanową autokonfigurację adresu IPv6 (SLAAC) w celu przydzielania adresu IP.
Granica modułu
W przypadku Androida 12 i nowszych wszystkie pliki/foldery w packages/modules/Connectivity
znajdują się w zakresie modułu Tethering.
W przypadku Androida 11 i starszych moduł Tethering zawiera następujące pliki Androida 10 w 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 modułu
Moduł Tethering ( com.android.tethering
) jest w formacie APEX i jest dostępny dla urządzeń z systemem Android 11 lub nowszym.
Dołącz usługę ConnectivityService
Od wersji Androida 12 do Tethering APEX dodano kod ConnectivityService
, który implementuje centralny komponent łączności L3+. Zakres Tetheringu rozszerza się o moduł Łączności.
Zależności modułów
Moduł Tethering ma następujące zależności:
- Metody API publiczne i systemowe na serwerze systemowym
- Stabilny interfejs AIDL IPC z serwerem systemowym
-
tetheroffload
HIDL (zdefiniowany whardware/interfaces/tetheroffload/
) - Serwer DHCP (część modułu Network Stack)
Dostosowywanie
Moduł Tethering nie obsługuje dostosowywania.
Testowanie
Pakiet testów zgodności systemu Android (CTS) weryfikuje funkcjonalność modułu Tethering.