Tethering

Update di Android 13

Update Informasi selengkapnya
Memperkenalkan CrossDevice CrossDevice
Memperkenalkan tunneling terpisah Tunneling terpisah

Ringkasan

Modul Tethering membagikan koneksi internet perangkat Android dengan perangkat klien lain yang terhubung, yang dapat terhubung ke perangkat tethering melalui Wi-Fi, USB, Bluetooth, atau Ethernet. Modul ini mencakup komponen tethering (USB, titik akses Wi-Fi, Bluetooth, dll.) dan dependensinya (interaksi dengan hak tethering, IpServer, dan offloadController). Modul ini dapat diupdate, yang berarti dapat menerima update pada 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 untuk masalah interoperabilitas melalui update modul.

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

Tunneling terpisah

Untuk mendukung kasus penggunaan split tunneling, 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 umum adalah saat organisasi ingin menjelajahi web secara umum, aplikasi yang menggunakan bandwidth besar (misalnya, YouTube, Netflix), atau aplikasi yang sensitif terhadap latensi (misalnya, Office 365) untuk mengabaikan VPN. Sebelum tunneling terpisah tersedia, VpnService.Builder memungkinkan klien VPN untuk menunjukkan bahwa hanya beberapa subnet yang harus dirutekan ke subnet tersebut (rute include). Dengan split tunneling, Anda dapat menentukan kebalikannya: untuk merutekan semua traffic ke VPN, kecuali untuk subnet tertentu (rute exclude).

Tanda tangan API tunneling terpisah yang baru adalah:

public Builder excludeRoute(@NonNull IpPrefix prefix)

Lintas-Perangkat

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 terautentikasi, 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, bukan harus menggunakan solusi Google.
  • Implementasi protokol yang lebih terlihat. Modul CrossDevice bersifat open source, sehingga memberikan visibilitas yang lebih baik ke detail penerapan dan kisah privasi yang lebih baik untuk penerapan teknologi CrossDevice.

Batas modul CrossDevice

CrossDevice API Dalam packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Layanan Lintas Perangkat Di packages/modules/CrossDevice/service
  • NearbyService - API pemindaian

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 sheet melalui RRO. Tidak ada rencana untuk menyesuaikan fungsi tersebut.

Strategi pengujian CrossDevice

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

Mengurangi beban tethering eBPF

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

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

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

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

Dukungan IPv4 dan IPv6

Modul Tethering mendukung stack ganda IPv4 dan IPv6.

  • Untuk jaringan IPv4, modul menyiapkan penafsiran alamat jaringan (NAT) dan menggunakan 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 bagian 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.

Menyertakan ConnectivityService

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

Dependensi modul

Modul Tethering memiliki dependensi berikut:

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

Penyesuaian

Modul Tethering tidak mendukung penyesuaian.

Pengujian

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