Tethering

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

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
  • NearbyManager
  • AccountProviderBase
Usługi na różnych urządzeniach W packages/modules/CrossDevice/service
  • NearbyService - API do skanowania

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 w hardware/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.