Aktualizacje w Androidzie 13
| Aktualizuj | Więcej informacji |
|---|---|
| Wprowadzenie CrossDevice | CrossDevice |
| Wprowadzenie split tunneling | Split tunneling |
Przegląd
Moduł Tethering udostępnia połączenie internetowe urządzenia z Androidem innym połączonym urządzeniom klienckim, które mogą łączyć się z urządzeniami udostępniającymi połączenie 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 uprawnieniem do tetheringu, IpServer i offloadController). Ten moduł można aktualizować, co oznacza, że może on otrzymywać aktualizacje funkcji poza normalnym cyklem wydawania Androida.
Moduł Tethering umożliwia producentom OEM w całym ekosystemie Androida korzystanie z jednej standardowej implementacji referencyjnej, która zapewnia te korzyści:
Użytkownicy mają spójne wrażenia na różnych urządzeniach z Androidem, a dzięki aktualizacjom modułu 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 muszą implementować tych samych wymagań na różne sposoby).
Split tunneling
Aby obsługiwać przypadki użycia split tunneling, w Androidzie 13 dodano nowy interfejs API do określania tras wykluczonych.
Split tunneling to konfiguracja, w której część ruchu przechodzi przez VPN, a część nie. Typowym przykładem jest sytuacja, w której organizacja
chce, aby ogólne przeglądanie internetu, aplikacje zużywające dużo przepustowości (np. YouTube, Netflix) lub
aplikacje wrażliwe na opóźnienia (np. Office 365) omijały VPN. Zanim split tunneling stał się dostępny,
VpnService.Builder
umożliwiał klientowi VPN wskazanie, że tylko niektóre podsieci powinny być do niego kierowane
(include routes). Dzięki split tunneling możesz określić odwrotność: kierować cały ruch do VPN, z wyjątkiem określonych podsieci (exclude routes).
Sygnatura nowego interfejsu API split tunneling jest taka:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice, wprowadzony w Androidzie 13, ma na celu zapewnienie technologii komunikacji między urządzeniami przy użyciu standardowych protokołów. Udostępnia interfejsy API i funkcje do wykrywania urządzeń, uwierzytelnionego połączenia i innych funkcji na innym urządzeniu.
Motywacja CrossDevice
- Ścisła 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 open source, co zapewnia większą przejrzystość szczegółów implementacji i lepszą ochronę prywatności w przypadku implementacji technologii CrossDevice.
Granica modułu CrossDevice
| Interfejsy API CrossDevice | W packages/modules/CrossDevice/framework
|
| Usługi CrossDevice | 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 CrossDevice
CrossDevice zależy od tych elementów:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Biblioteki Proto
Opcje dostosowywania CrossDevice
Planujemy umożliwić producentom OEM dostosowywanie interfejsu użytkownika w przypadku połowy arkusza za pomocą RRO. Nie planujemy dostosowywania funkcji.
Strategia testowania CrossDevice
Planujemy dodać testy pakietu CTS (Compatibility Test Suite) do weryfikacji funkcji CrossDevice oraz testowanie między urządzeniami w MTS.
Przekierowanie tetheringu eBPF
Aby zapewnić szybki tethering bez korzystania z odciążania przez sprzęt, Android 11 udostępnia rozwiązanie do odciążania oprogramowania tetheringu o nazwie odciążanie tetheringu eBPF do pobierania IPv6 (ruch do urządzenia udostępniającego połączenie).
Od Androida 12 ta funkcja (w tym kod programu eBPF) jest w całości udostępniana przez moduł Tethering, który obsługuje te elementy:
- pobieranie IPv6 (ruch do urządzenia udostępniającego połączenie);
- przesyłanie IPv6 (ruch z urządzenia udostępniającego połączenie);
- przesyłanie i pobieranie IPv4 TCP/UDP (ruch do/z urządzenia udostępniającego połączenie);
- odciążenie 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ł Tethering obsługuje stos podwójny IPv4 i IPv6.
W przypadku sieci IPv4 moduł konfiguruje translację adresów sieciowych (NAT) i przyjmuje protokół DHCP (Dynamic Host Configuration Protocol) 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 Androidzie 12 i nowszych wersjach wszystkie pliki i foldery w packages/modules/Connectivity znajdują się w zakresie modułu Tethering.
W Androidzie 11 i starszych wersjach moduł Tethering zawiera te pliki Androida 10 w packages/modules/Tethering:
frameworks/base/services/core/java/com/android/server/connectivity/Tethering.javaframeworks/base/services/core/java/com/android/server/connectivity/tethering/frameworks/base/services/core/java/com/android/server/NetworkManagementService.javaframeworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.javaframeworks/base/services/net/java/android/net/{netlink,dhcp}/*frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.javaframeworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidlframeworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.javaframeworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.javaframeworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.javaframeworks/base/core/java/android/os/INetworkManagementService.aidlframeworks/base/core/java/android/bluetooth/BluetoothPan.javaframeworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpppackages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.javapackages/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 na urządzeniach z Androidem 11 lub nowszym.
Dołączanie ConnectivityService
Od Androida 12 kod ConnectivityService, który
implementuje centralny komponent łączności L3+, jest dodawany do Tethering
APEX. Zakres tetheringu rozszerza się na moduł łączności.
Zależności modułu
Moduł Tethering ma te zależności:
- metody publicznego i systemowego interfejsu API na serwerze systemowym;
- stabilny interfejs AIDL IPC z serwerem systemowym;
tetheroffloadHIDL (zdefiniowany whardware/interfaces/tetheroffload/);- serwer DHCP (część modułu Network Stack).
Dostosowywanie
Moduł Tethering nie obsługuje dostosowywania.
Testowanie
Pakiet CTS (Compatibility Test Suite) weryfikuje funkcje modułu Tethering.