Penambatan

Pembaruan di Android 13

Memperbarui Informasi lebih lanjut
Memperkenalkan CrossDevice Lintas Perangkat
Memperkenalkan terowongan terpisah Terowongan 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 diperbarui, artinya dapat menerima pembaruan fungsi di luar siklus rilis normal Android.

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

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

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

Terowongan terpisah

Untuk mendukung kasus penggunaan terowongan terpisah, API baru ditambahkan ke Android 13 untuk menentukan rute pengecualian.

Kanalisasi terpisah mengacu pada konfigurasi di mana lalu lintas tertentu melewati VPN sementara lalu lintas lainnya tidak. Contoh umum adalah ketika sebuah organisasi menginginkan penjelajahan web secara umum, aplikasi yang membutuhkan banyak bandwidth (misalnya, YouTube, Netflix) atau aplikasi yang sensitif terhadap latensi (misalnya, Office 365 ) untuk melewati VPN. Sebelum kanalisasi terbagi tersedia, VpnService.Builder mengizinkan klien VPN untuk menunjukkan bahwa hanya beberapa subnet yang harus dirutekan ke sana ( termasuk rute). Dengan kanalisasi terbagi, Anda memiliki kemampuan untuk menentukan kebalikannya: merutekan semua lalu lintas ke VPN, kecuali subnet tertentu ( tidak termasuk rute).

Ciri khas API terowongan 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. Ini menyediakan API dan fitur untuk penemuan perangkat, koneksi terautentikasi, dan pengalaman lintas perangkat lainnya.

Motivasi Lintas Perangkat

  • Kolaborasi yang lebih erat dengan mitra OEM. OEM dapat mengintegrasikan sistem kunci akun mereka sendiri dengan penerapan CrossDevice tanpa perlu menggunakan solusi Google.
  • Implementasi protokol lebih terlihat. Modul CrossDevice bersifat open source, memberikan lebih banyak visibilitas ke dalam detail implementasi dan kisah privasi yang lebih baik untuk implementasi teknologi CrossDevice.

Batas modul CrossDevice

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

Format paket Lintas Perangkat

Fungsi utama modul ini disertakan dalam paket APEX. Sumber daya dikemas dalam APK.

Ketergantungan lintas perangkat

CrossDevice bergantung pada hal berikut:

  • Wifi
  • Bluetooth
  • UWB
  • modul-utils-prakondisi
  • Perpustakaan proto

Opsi penyesuaian Lintas Perangkat

Kami berencana mengizinkan OEM untuk menyesuaikan UI setengah lembar melalui RRO. Tidak ada rencana untuk menyesuaikan fungsinya.

Strategi pengujian CrossDevice

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

pembongkaran penambatan eBPF

Untuk menyediakan tethering berkecepatan tinggi tanpa membalas offload perangkat keras, Android 11 menyediakan solusi offload software tethering yang disebut eBPF tethering offload untuk download IPv6 (aliran lalu lintas ke perangkat yang ditambatkan).

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

  • Pengunduhan IPv6 (lalu lintas mengalir ke perangkat yang ditambatkan)
  • Unggahan IPv6 (lalu lintas mengalir dari perangkat yang ditambatkan)
  • Unggahan dan hilir IPv4 TCP/UDP (lalu lintas mengalir ke/dari perangkat yang ditambatkan)
  • pembongkaran eBPF

Fitur ini diaktifkan secara default, pengguna dapat mengganti konfigurasi config_tether_enable_bpf_offload menjadi false oleh RRO. Lihat Kustomisasi untuk informasi lebih lanjut.

Dukungan IPv4 dan IPv6

Modul Tethering mendukung dual stack IPv4 dan IPv6.

  • Untuk jaringan IPv4, modul mengatur terjemahan alamat jaringan (NAT) dan mengadopsi protokol konfigurasi host dinamis (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 lebih tinggi, semua file/folder di bawah packages/modules/Connectivity berada dalam cakupan modul Tethering.

Untuk Android 11 dan yang lebih rendah, modul Tethering memiliki file Android 10 berikut dalam 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 lebih tinggi.

Sertakan Layanan Konektivitas

Mulai Android 12, kode ConnectivityService yang mengimplementasikan komponen utama konektivitas L3+ ditambahkan ke Tethering APEX. Cakupan Tethering diperluas menjadi modul Konektivitas.

Ketergantungan modul

Modul Tethering memiliki dependensi berikut:

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

Kustomisasi

Modul Tethering tidak mendukung penyesuaian.

Pengujian

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