Aktualizacje w Androidzie 13
Aktualizacja | Więcej informacji |
---|---|
Wprowadzono CrossDevice | CrossDevice |
Wprowadzenie dzielonego tunelowania | Tunelowanie dzielone |
Przegląd
Moduł Tethering współdzieli połączenie internetowe urządzenia z systemem Android z innymi podłączonymi urządzeniami klienckimi, które mogą łączyć się z urządzeniami tetheringowymi przez Wi-Fi, USB, Bluetooth lub Ethernet. Ten moduł zawiera komponent tetheringu (USB, punkt dostępu Wi-Fi, Bluetooth itp.) i jego zależności (interakcja z uprawnieniami do tetheringu, IpServer
i offloadController
). Ten moduł można aktualizować, co oznacza, że może otrzymywać aktualizacje funkcji poza normalnym cyklem wydawniczym Androida.
Moduł Tethering umożliwia producentom OEM w całym ekosystemie Androida korzystanie z jednej, standardowej implementacji referencyjnej, która przynosi następujące korzyści.
Użytkownicy końcowi uzyskują spójne środowisko na urządzeniach z systemem Android i rozwiązują problemy ze współdziałaniem dzięki aktualizacjom modułów.
Producenci OEM mogą spełnić wymagania przewoźnika, 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 w celu określenia tras wykluczających.
Tunelowanie dzielone odnosi się do konfiguracji, w której pewien ruch przechodzi przez VPN, a inny nie. Typowym przykładem jest sytuacja, w której organizacja chce, aby ogólne surfowanie po Internecie, aplikacje o dużej przepustowości (na przykład YouTube, Netflix) lub aplikacje wrażliwe na opóźnienia (na przykład Office 365 ) omijały VPN. Zanim udostępniono dzielone tunelowanie, VpnService.Builder
pozwolił klientowi VPN wskazać, że tylko niektóre podsieci powinny być do niego kierowane (w tym trasy). Dzięki dzielonemu tunelowaniu możesz określić odwrotność: kierować cały ruch do VPN, z wyjątkiem określonych podsieci ( wyklucz trasy).
Sygnatura nowego API dzielonego tunelowania to:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
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 do wykrywania urządzeń, uwierzytelnionego połączenia i innych doświadczeń na różnych urządzeniach.
Motywacja CrossDevice
- Ściślejsza współpraca z partnerami OEM. Producenci OEM mogą zintegrować własny system kluczy kont z implementacją CrossDevice zamiast korzystać z rozwiązania Google.
- Bardziej widoczna implementacja protokołu. Moduł CrossDevice jest oprogramowaniem typu open source, zapewniającym lepszy wgląd w szczegóły implementacji i lepszą historię prywatności dla implementacji technologii CrossDevice.
Granica modułu CrossDevice
Interfejsy API dla różnych urządzeń | W packages/modules/CrossDevice/framework
|
Usługi na różnych urządzeniach | W packages/modules/CrossDevice/service
|
Format pakietu CrossDevice
Główna funkcja tego modułu jest zawarta w pakiecie APEX. Zasoby są spakowane w pakiecie APK.
Zależności między urządzeniami
CrossDevice zależy od:
- Wi-Fi
- Bluetooth
- UWB
- moduły-utils-warunki wstępne
- Protobiblioteki
Opcje dostosowywania CrossDevice
Planujemy umożliwić producentom OEM dostosowanie interfejsu użytkownika do pół arkusza za pośrednictwem RRO. Nie ma planu dostosowywania funkcjonalności.
Strategia testowania CrossDevice
Planujemy dodać testy Android Compatibility Test Suite (CTS), aby zweryfikować funkcjonalność CrossDevice i testy na różnych urządzeniach do MTS.
Odciążanie tetheringu eBPF
Aby zapewnić szybkie udostępnianie tetheringu bez odpowiedzi na odciążanie sprzętowe, system Android 11 udostępnia rozwiązanie do odciążania oprogramowania do tetheringu o nazwie odciążanie tetheringu eBPF w celu pobrania IPv6 (ruch płynący do urządzenia tetheringowego).
Od Androida 12 ta funkcjonalność (w tym kod programu eBPF) jest w całości zapewniana przez moduł Tethering, który obsługuje:
- Pobieranie IPv6 (ruch płynący do urządzenia tethered)
- Przesyłanie IPv6 (ruch płynący z podłączonego urządzenia)
- Przesyłanie i pobieranie IPv4 TCP/UDP (ruch płynący do/z urządzenia połączonego)
- Odciążenie eBPF
Ta funkcja jest domyślnie włączona, użytkownicy mogą nadpisać konfigurację config_tether_enable_bpf_offload
na false przez RRO. Zobacz Dostosowywanie , aby uzyskać więcej informacji.
Obsługa 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 przydzielania adresów IP.
W przypadku sieci IPv6 moduł przyjmuje bezstanową automatyczną konfigurację adresów IPv6 (SLAAC) do przypisywania adresów IP.
Granica modułu
W przypadku systemu Android 12 i nowszych wszystkie pliki/foldery w packages/modules/Connectivity
znajdują się w zakresie modułu Tethering.
W przypadku systemu Android 11 i niższych moduł Tethering zawiera następujące pliki systemu Android 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.
Uwzględnij usługę łączności
Od Androida 12 kod ConnectivityService
, który implementuje centralny składnik łączności L3+, jest dodawany do Tethering APEX. Zakres Tetheringu rozszerza się do modułu Connectivity.
Zależności modułów
Moduł Tethering ma następujące zależności:
- Publiczne i systemowe metody API na serwerze systemowym
- Stabilny interfejs AIDL IPC z serwerem systemowym
-
tetheroffload
HIDL (zdefiniowane whardware/interfaces/tetheroffload/
) - Serwer DHCP (część modułu stosu sieciowego)
Dostosowywanie
Moduł Tethering nie obsługuje dostosowywania.
Testowanie
Android Compatibility Test Suite (CTS) weryfikuje funkcjonalność modułu Tethering.