Tethering

Update di Android 13

Update Informasi selengkapnya
Memperkenalkan CrossDevice CrossDevice
Memperkenalkan tunneling terpisah Tunnel terpisah

Ringkasan

Modul Tethering membagikan koneksi internet perangkat Android ke perangkat klien terhubung lainnya, yang dapat terhubung ke perangkat tethering melalui Wi-Fi, USB, Bluetooth, atau Ethernet. Modul ini mencakup komponen tethering (USB, hotspot Wi-Fi, Bluetooth, dll.) dan dependensinya (interaksi dengan hak tethering, IpServer, dan offloadController). Modul ini dapat diupdate, yang berarti modul ini dapat menerima update fungsi di luar siklus rilis Android normal.

Modul Tethering memungkinkan OEM di seluruh ekosistem Android menggunakan satu implementasi referensi standar yang memberikan manfaat berikut.

  • Pengguna akhir mendapatkan pengalaman yang konsisten di seluruh perangkat Android dan perbaikan masalah interoperabilitas melalui update modul.

  • OEM dapat memenuhi persyaratan operator sekaligus mengurangi biaya untuk penyesuaian individual (karena mereka tidak memerlukan penerapan persyaratan yang sama dengan cara yang berbeda).

Tunnel terpisah

Untuk mendukung kasus penggunaan tunneling terpisah, API baru ditambahkan ke Android 13 untuk menentukan rute yang dikecualikan.

Tunnel terpisah mengacu pada konfigurasi saat traffic tertentu melewati VPN, sedangkan traffic lainnya tidak. Contoh umumnya adalah saat organisasi ingin aplikasi yang digunakan untuk menjelajahi web secara umum, aplikasi yang menggunakan bandwidth besar (misalnya, YouTube, Netflix), atau aplikasi yang sensitif terhadap latensi (misalnya, Office 365) melewati VPN. Sebelum tunneling terpisah tersedia, VpnService.Builder memungkinkan klien VPN menunjukkan bahwa hanya beberapa subnet yang harus dirutekan ke klien tersebut (rute sertakan). Dengan tunneling terpisah, Anda dapat menentukan kebalikannya: untuk merutekan semua traffic ke VPN, kecuali untuk subnet tertentu (rute pengecualian).

Tanda tangan API split tunneling baru adalah:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

CrossDevice, yang diperkenalkan di Android 13, bertujuan untuk menyediakan teknologi komunikasi lintas perangkat menggunakan protokol standar. SDK ini menyediakan API dan fitur untuk penemuan perangkat, koneksi yang diautentikasi, dan pengalaman lintas perangkat lainnya.

Motivasi CrossDevice

  • Kolaborasi yang lebih erat dengan partner OEM. OEM dapat mengintegrasikan sistem kunci akun mereka sendiri dengan penerapan CrossDevice, alih-alih harus menggunakan solusi Google.
  • Penerapan protokol yang lebih terlihat. Modul CrossDevice bersifat open source, sehingga memberikan visibilitas yang lebih besar ke detail penerapan dan kisah privasi yang lebih baik untuk penerapan teknologi CrossDevice.

Batas modul CrossDevice

CrossDevice API Di packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Layanan CrossDevice Di packages/modules/CrossDevice/service
  • NearbyService - scanning API

Format paket CrossDevice

Fungsi utama modul ini disertakan dalam paket APEX. Resource dikemas dalam APK.

Dependensi CrossDevice

CrossDevice bergantung pada hal berikut:

  • Wi-Fi
  • Bluetooth
  • UWB
  • modules-utils-preconditions
  • Library proto

Opsi penyesuaian CrossDevice

Kami berencana mengizinkan OEM menyesuaikan UI untuk setengah halaman melalui RRO. Tidak ada rencana untuk menyesuaikan fungsi.

Strategi pengujian CrossDevice

Kami berencana menambahkan pengujian Android Compatibility Test Suite (CTS) untuk memverifikasi fungsi Lintas Perangkat, dan pengujian lintas perangkat ke MTS.

Pengurangan beban tethering eBPF

Untuk menyediakan penambatan berkecepatan tinggi tanpa mengandalkan offload hardware, Android 11 menyediakan solusi offload software penambatan yang disebut offload penambatan eBPF untuk download IPv6 (traffic yang mengalir ke perangkat yang ditambatkan).

Mulai Android 12, fungsi ini (termasuk kode program eBPF) sepenuhnya disediakan oleh modul Tethering, yang mendukung hal berikut:

  • Download IPv6 (traffic mengalir ke perangkat yang di-tether)
  • Upload IPv6 (traffic mengalir dari perangkat yang di-tether)
  • Upload dan downstream TCP/UDP IPv4 (traffic yang mengalir ke/dari perangkat yang di-tether)
  • eBPF offload

Fitur ini diaktifkan secara default, pengguna dapat mengganti konfigurasi config_tether_enable_bpf_offload ke salah (false) dengan RRO. Lihat Penyesuaian untuk mengetahui informasi selengkapnya.

Dukungan IPv4 dan IPv6

Modul Tethering mendukung dual stack IPv4 dan IPv6.

  • Untuk jaringan IPv4, modul ini menyiapkan network address translation (NAT) dan mengadopsi dynamic host configuration protocol (DHCP) untuk penetapan alamat IP.

  • Untuk jaringan IPv6, modul ini mengadopsi konfigurasi otomatis alamat stateless IPv6 (SLAAC) untuk penetapan alamat IP.

Batas modul

Untuk Android 12 dan yang lebih tinggi, semua file/folder di bawah packages/modules/Connectivity berada dalam cakupan modul Tethering.

Untuk Android 11 dan yang lebih lama, modul Tethering memiliki file Android 10 berikut di 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 modul

Modul Tethering (com.android.tethering) dalam format APEX dan tersedia untuk perangkat yang menjalankan Android 11 atau yang lebih tinggi.

Sertakan ConnectivityService

Mulai Android 12, kode ConnectivityService yang menerapkan komponen pusat konektivitas L3+ ditambahkan ke Tethering APEX. Cakupan Penambatan diperluas ke dalam modul Konektivitas.

Dependensi modul

Modul Tethering memiliki dependensi berikut:

  • Metode API publik dan sistem di server sistem
  • IPC AIDL stabil berinteraksi dengan server sistem
  • tetheroffload HIDL (ditentukan dalam hardware/interfaces/tetheroffload/)
  • Server DHCP (bagian dari modul Network Stack)

Penyesuaian

Modul Tethering tidak mendukung penyesuaian.

Pengujian

Android Compatibility Test Suite (CTS) memverifikasi fungsi modul Tethering.