Pengurangan beban tethering memungkinkan perangkat menghemat daya dan meningkatkan performa dengan mengurangi beban traffic tethering (melalui USB, Wi-Fi) ke hardware. Traffic tethering di-offload dengan menyediakan jalur langsung antara modem dan perangkat periferal, dengan melewati prosesor aplikasi.
Spesifikasi
Mulai Android 8.1, perangkat dapat menggunakan pelepasan beban tethering untuk melepaskan beban penerusan IPv4, IPv6, atau IPv4+IPv6 ke hardware.
Fitur pelepasan tidak perlu melepaskan semua paket. Framework ini mampu menangani paket apa pun di software. Paket kontrol biasanya diproses dalam software. Karena port IPv4 digunakan bersama antara traffic tethering dan traffic perangkat, paket penyiapan/penghapusan sesi IPv4 (misalnya, SYN/SYN+ACK, FIN) harus diproses dalam software sehingga kernel dapat membuat status alur. Framework ini menyediakan bidang kontrol dan mesin status. Hal ini juga memberikan informasi tentang antarmuka/awalan hulu dan hilir ke hardware.
Untuk IPv4, hardware memungkinkan paket penyiapan sesi Network Address Translation (NAT) IPv4 mencapai CPU. Kernel membuat entri NAT, dan implementasi HAL mengamati entri dari deskriptor file yang disediakan framework dan menangani alur ini di hardware. Artinya, penerapan HAL tidak
memerlukan CAP_NET_*
karena HAL membuka soket NF_NETLINK_CONNTRACK
dari framework. Secara berkala, hardware mengirimkan update status NAT untuk
aliran yang sedang aktif ke framework, yang memperbarui entri status pelacakan koneksi kernel yang sesuai.
Untuk IPv6, framework memprogram daftar awalan tujuan IPv6 yang trafficnya tidak boleh di-offload. Semua paket yang di-tether lainnya dapat di-offload.
Untuk penghitungan penggunaan data, polling penggunaan data NetworkStatsService
menyebabkan framework meminta statistik traffic dari hardware. Framework ini juga
mengirimkan batas penggunaan data ke hardware melalui HAL.
Persyaratan hardware
Untuk menerapkan offload tethering, hardware Anda harus dapat meneruskan paket IP antara modem dan Wi-Fi/USB tanpa mengirimkan traffic melalui prosesor utama.
Implementasi
Untuk mengaktifkan fitur offload tethering, Anda harus menerapkan dua HAL berikut, yaitu HAL konfigurasi (IOffloadConfig
) dan HAL kontrol (IOffloadControl
).
HAL Konfigurasi: IOffloadConfig
HAL
IOffloadConfig
memulai penerapan pelepasan tethering. Framework menyediakan implementasi HAL
dengan soket NF_NETLINK_CONNTRACK
yang telah terhubung sebelumnya yang dapat digunakan
implementasi untuk mengamati alur IPv4. Hanya alur yang diteruskan yang harus dipercepat.
HAL Kontrol: IOffloadControl
HAL
IOffloadControl
mengontrol penerapan pelepasan beban. Metode berikut harus diterapkan:
- Mulai/berhenti menggunakan hardware offload: Gunakan
initOffload/stopOffload
dan kecualikan alamat IP lokal atau jaringan lain dari offload dengansetLocalPrefixes
. - Tetapkan antarmuka upstream, alamat IPv4, dan gateway IPv6: Gunakan
setUpstreamParameters
dan konfigurasikan rentang alamat IP downstream denganaddDownstream/removeDownstream
. - Penghitungan penggunaan data: Gunakan
getForwardedStats/setDataLimit
.
HAL vendor Anda juga harus mengirimkan callback melalui antarmuka ITetheringOffloadCallback
, yang memberi tahu framework tentang:
- Peristiwa asinkron seperti mulai dan berhenti memindahkan data (OffloadCallbackEvent)
- Update waktu tunggu NAT, yang harus dikirim secara berkala untuk menunjukkan bahwa alur IPv4 tertentu berisi traffic dan tidak boleh ditutup oleh kernel
Validasi
Untuk memvalidasi penerapan offload tethering, gunakan pengujian manual atau otomatis untuk memverifikasi bahwa tethering dan hotspot Wi-Fi berfungsi seperti yang diharapkan. Vendor Test Suite (VTS) berisi pengujian untuk HAL offload tethering.