Aktualizacje w Androidzie 13
Aktualizuj | Więcej informacji |
---|---|
Wprowadzono CrossDevice | CrossDevice |
Wprowadziliśmy tunelowanie podzielone. | Tunelowanie podzielone |
Omówienie
Moduł tetheringu udostępnia połączenie internetowe urządzenia z Androidem innym połączonym urządzeniom klienckim, które mogą łączyć się z urządzeniami tetheringu przez Wi-Fi, USB, Bluetooth lub Ethernet. Ten moduł obejmuje komponent tetheringu (USB, punkt dostępu Wi-Fi, Bluetooth itp.) oraz jego zależności (interakcje z uprawnieniami tetheringu, IpServer
i offloadController
). Moduł ten można aktualizować, co oznacza, że może on otrzymywać aktualizacje funkcji poza normalnym cyklem publikowania Androida.
Moduł udostępniania połączenia umożliwia OEM-om w całym ekosystemie Androida korzystanie z jednego standardowego implementowania referencyjnego, który zapewnia te korzyści.
Użytkownicy mają dostęp do spójnych funkcji na różnych urządzeniach z Androidem, a aktualizacje modułów rozwiązują problemy z współdziałaniem.
Producenci OEM mogą spełniać wymagania operatorów, a także obniżać koszty związane z indywidualnym dostosowywaniem (ponieważ nie muszą stosować różnych implementacji tych samych wymagań na różne sposoby).
Tunelowanie podzielone
Aby obsługiwać przypadki użycia tunelowania podzielonego, do Androida 13 dodano nowy interfejs API, który umożliwia określanie tras wykluczenia.
Tunelowanie podzielone to konfiguracja, w której pewien ruch przechodzi przez sieć VPN, a inny nie. Typowym przykładem jest sytuacja, w której organizacja chce, aby ogólne przeglądanie stron internetowych, aplikacje wymagające dużej przepustowości (np. YouTube, Netflix) lub aplikacje wrażliwe na opóźnienia (np. Office 365) omijały sieć VPN. Zanim udostępniono tunelowanie podzielone, klient VPN mógł wskazać, że tylko niektóre podsieci mają być do niego kierowane (include routes).VpnService.Builder
Dzięki tunelowaniu podzielonemu możesz określić odwrotną kolejność: kierować cały ruch do sieci VPN z wyjątkiem określonych podsieci (wyklucz trasy).
Sygnatura nowego interfejsu API tunelowania podzielonego to:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice, wprowadzony w Androidzie 13, ma na celu udostępnianie technologii komunikacji między urządzeniami przy użyciu standardowych protokołów. Udostępnia interfejsy API i funkcje do wykrywania urządzeń, uwierzytelniania połączeń i innych funkcji obsługi na różnych urządzeniach.
Motywacja na różnych urządzeniach
- ściślej współpracować 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 oparty na otwartym kodzie źródłowym, co zapewnia większą przejrzystość szczegółów implementacji i lepszą ochronę prywatności w przypadku wdrażania technologii CrossDevice.
Granica modułu CrossDevice
Interfejsy CrossDevice API | W packages/modules/CrossDevice/framework
|
Usługi cross-device | 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 cross-device
Funkcja CrossDevice zależy od tych czynników:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Biblioteki prototypowe
Opcje dostosowywania w CrossDevice
Planujemy umożliwić OEM dostosowywanie interfejsu na potrzeby półpliku za pomocą RRO. Nie planujemy dostosowywać tej funkcji.
Strategia testowania na wielu urządzeniach
Planujemy dodać testy z pakietu Compatibility Test Suite (CTS) na Androida, aby sprawdzić działanie funkcji cross-device, oraz dodać testy cross-device do MTS.
odciążenie tetheringu eBPF.
Aby zapewnić szybkie połączenie z internetem bez korzystania z przesyłania danych na potrzeby sprzętu, Android 11 udostępnia rozwiązanie oparte na oprogramowaniu o nazwie eBPF tethering offload dla pobierania IPv6 (ruchu kierowanego na urządzenie z połączeniem tetheringowym).
Od Androida 12 ta funkcja (w tym kod programu eBPF) jest całkowicie obsługiwana przez moduł tworzenia połączeń, który umożliwia:
- Pobieranie IPv6 (ruch kierowany na urządzenie połączone przez kabel)
- Przesyłanie IPv6 (ruch z urządzenia połączonego przez Bluetooth)
- Przesyłanie i przesyłanie dalej IPv4 TCP/UDP (ruch do/z urządzenia połączonego)
- odciążanie przez eBPF.
Ta funkcja jest domyślnie włączona. Użytkownicy mogą zastąpić konfigurację config_tether_enable_bpf_offload
wartością Fałsz za pomocą RRO.
Więcej informacji znajdziesz w sekcji Dostosowywanie.
Obsługa IPv4 i IPv6
Moduł tetheringu obsługuje skomplikowany stos IPv4 i IPv6.
W przypadku sieci IPv4 moduł konfiguruje translację adresów sieciowych (NAT) i używa protokołu DHCP do przypisywania adresów IP.
W przypadku sieci IPv6 moduł stosuje automatyczną konfigurację adresów bezstanowych IPv6 (SLAAC) do przypisywania adresów IP.
Granica modułu
W przypadku Androida 12 i nowszych wszystkie pliki/foldery w folderze packages/modules/Connectivity
znajdują się w zakresie działania modułu Tethering.
W przypadku Androida 11 lub starszego moduł tetheringu zawiera te pliki Androida 10 w folderze 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ł udostępniania połączenia (com.android.tethering
) jest w formacie APEX i jest dostępny na urządzeniach z Androidem 11 lub nowszym.
Dołącz ConnectivityService
Od Androida 12 kod ConnectivityService
, który wdraża centralny komponent łączności L3+, jest dodawany do funkcji tetheringu w APEX. Zakres działania funkcji tetheringu rozszerza się na moduł łączności.
Zależności modułu
Moduł tetheringu ma te zależności:
- Publiczne i systemowe metody interfejsu API 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ł tetheringu nie obsługuje dostosowywania.
Testowanie
Pakiet testów zgodności z Androidem (CTS) sprawdza funkcjonalność modułu tetheringu.