Aktualizacje w Androidzie 13
Aktualizuj | Więcej informacji |
---|---|
Wprowadzono wiele urządzeń | CrossDevice |
Wprowadziliśmy tunelowanie podzielone. | Dzielone tunelowanie |
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 wydawniczym 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 dzielonego tunelowania, do Androida 13 dodaliśmy nowy interfejs API umożliwiający wykluczanie tras.
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).
Podpis nowego interfejsu API do dzielonego tunelowania wygląda tak:
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. Zapewnia interfejsy API i funkcje umożliwiające wykrywanie urządzeń, uwierzytelnianie połączeń i inne funkcje 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 dostosowania na różnych urządzeniach
Planujemy umożliwić producentom OEM dostosowywanie interfejsu na potrzeby półpliku za pomocą RRO. Nie planujemy dostosować 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 przewodnikiem bez korzystania z przesyłania danych na potrzeby sprzętu, Android 11 udostępnia rozwiązanie do przesyłania danych na potrzeby połączenia z przewodnikiem o nazwie eBPF offload tethering for IPv6 download (przesyłanie danych na potrzeby połączenia z przewodnikiem w ramach IPv6) (ruchu danych do urządzenia z przewodnikiem).
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 (ruchu do urządzenia połączonego przez Bluetooth)
- Przesyłanie IPv6 (ruch z urządzenia połączonego przez Bluetooth)
- Przesyłanie i pobieranie adresów IPv4 TCP/UDP (ruch przepływający do/z urządzenia powiązanego)
- Odciążanie 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 Androidzie 12 i nowszych wszystkie pliki/foldery w sekcji packages/modules/Connectivity
są objęte modułem Tethering.
W przypadku Androida 11 i starszych w pliku packages/modules/Tethering
w module Tethering znajdują się te pliki z Androida 10:
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.
Uwzględnij ConnectivityService
Od Androida 12 kod ConnectivityService
, który wdraża centralny komponent łączności L3+, jest dodawany do funkcji tetheringu w APEX. Zakres tetheringu zostaje poszerzony o moduł połączeń.
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
Android Compatibility Test Suite (CTS) sprawdza działanie modułu Tethering.