Aktualizacje w Androidzie 13
Aktualizuj | Więcej informacji |
---|---|
Wprowadzenie funkcji CrossDevice | CrossDevice |
Wprowadzenie tunelowania dzielonego | Tunelowanie dzielone |
Omówienie
Moduł tetheringu udostępnia połączenie internetowe urządzenia z Androidem innym podłączonym urządzeniom klienckim, które mogą łączyć się z urządzeniami do tetheringu przez Wi-Fi, USB, Bluetooth lub Ethernet. Ten moduł obejmuje 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ł tetheringu umożliwia producentom OEM w całym ekosystemie Androida korzystanie z jednej standardowej implementacji referencyjnej, która zapewnia te korzyści:
Dzięki aktualizacjom modułów użytkownicy mają spójne wrażenia na różnych urządzeniach z Androidem i mogą rozwiązywać problemy z interoperacyjnością.
Producenci OEM mogą spełniać wymagania operatorów, a jednocześnie obniżać koszty indywidualnych dostosowań (ponieważ nie potrzebują różnych implementacji tych samych wymagań na różne sposoby).
Tunelowanie dzielone
Aby obsługiwać przypadki użycia tunelowania dzielonego, w Androidzie 13 dodano nowy interfejs API do określania wykluczonych tras.
Podzielony tunel to konfiguracja, w której część ruchu przechodzi przez sieć VPN, a część nie. Częstym przykładem jest sytuacja, w której organizacja chce, aby ogólne przeglądanie internetu, 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 stało się dostępne tunelowanie dzielone, parametr
VpnService.Builder
umożliwiał klientowi VPN wskazanie, że tylko niektóre podsieci powinny być do niego kierowane (trasy include). Dzielone tunelowanie umożliwia określenie odwrotności: kierowanie całego ruchu do sieci VPN z wyjątkiem określonych podsieci (trasy wykluczające).
Sygnatura nowego interfejsu API tunelowania dzielonego 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. Zawiera interfejsy API i funkcje do wykrywania urządzeń, uwierzytelnionego połączenia i innych funkcji na różnych urządzeniach.
Motywacja na różnych urządzeniach
- ściślejsza współpraca z partnerami OEM; Producenci OEM mogą zintegrować własny system kluczy konta z implementacją CrossDevice zamiast korzystać z rozwiązania Google.
- Bardziej widoczne wdrożenie protokołu. Moduł CrossDevice jest dostępny na licencji open source, co zapewnia większą przejrzystość szczegółów implementacji i lepszą ochronę prywatności w przypadku wdrożenia technologii CrossDevice.
CrossDevice module boundary
Interfejsy CrossDevice API | 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 plik APK.
Zależności CrossDevice
CrossDevice zależy od tych czynników:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Biblioteki proto
Opcje dostosowywania na różnych urządzeniach
Planujemy umożliwić producentom OEM dostosowywanie interfejsu użytkownika do połowy arkusza za pomocą RRO. Nie planujemy dostosowywania tej funkcji.
Strategia testowania na różnych urządzeniach
Planujemy dodać testy pakietu CTS (Android Compatibility Test Suite), aby weryfikować funkcje na różnych urządzeniach, a także testy na różnych urządzeniach do MTS.
Przekierowanie tetheringu eBPF
Aby zapewnić szybkie udostępnianie internetu bez polegania na sprzętowym odciążaniu, Android 11 udostępnia rozwiązanie do odciążania oprogramowania do udostępniania internetu o nazwie eBPF do odciążania udostępniania internetu w przypadku pobierania IPv6 (ruch przychodzący na urządzenie, na którym udostępniany jest internet).
Od Androida 12 ta funkcja (w tym kod programu eBPF) jest w całości udostępniana przez moduł tetheringu, który obsługuje te elementy:
- Pobieranie IPv6 (ruch do urządzenia podłączonego do tetheringu)
- Przesyłanie IPv6 (ruch z urządzenia podłączonego do internetu)
- Przesyłanie i pobieranie danych przez TCP/UDP w IPv4 (ruch do/z urządzenia podłączonego do internetu)
- Odciążanie eBPF
Ta funkcja jest domyślnie włączona. Użytkownicy mogą zastąpić konfigurację config_tether_enable_bpf_offload
wartością „false” za pomocą RRO.
Więcej informacji znajdziesz w sekcji Dostosowywanie.
Obsługa IPv4 i IPv6
Moduł tetheringu obsługuje stos podwójny IPv4 i IPv6.
W przypadku sieci IPv4 moduł konfiguruje translację adresów sieciowych (NAT) i przyjmuje protokół DHCP do przypisywania adresów IP.
W przypadku sieci IPv6 moduł przyjmuje bezstanową autokonfigurację adresu IPv6 (SLAAC) do przypisywania adresów IP.
Granica modułu
W przypadku Androida 12 i nowszych wszystkie pliki i foldery w packages/modules/Connectivity
znajdują się w zakresie modułu tetheringu.
W przypadku Androida 11 i starszych wersji moduł Tethering zawiera w packages/modules/Tethering
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ł tetheringu (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 do pakietu APEX Tethering dodawany jest ConnectivityService
kod, który implementuje centralny komponent łączności L3+. Zakres tetheringu rozszerza się na moduł łączności.
Zależności modułów
Moduł Tethering ma te zależności:
- Publiczne i systemowe metody interfejsu API na serwerze systemowym
- Stabilne interfejsy IPC AIDL komunikują się 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 z Androidem (CTS) weryfikuje funkcjonalność modułu tetheringu.