Tethering offload memungkinkan perangkat menghemat daya dan meningkatkan kinerja dengan memindahkan lalu lintas tethering (melalui USB, Wi-Fi) ke perangkat keras. Lalu lintas tethering diturunkan dengan menyediakan jalur langsung antara modem dan periferal, melewati prosesor aplikasi.
Spesifikasi
Mulai Android 8.1, perangkat dapat menggunakan tethering offload untuk memindahkan penerusan IPv4, IPv6, atau IPv4+IPv6 ke perangkat keras.
Fitur offload tidak perlu membongkar semua paket. Kerangka kerja ini mampu menangani paket apa pun dalam perangkat lunak. Paket kontrol biasanya diproses dalam perangkat lunak. Karena port IPv4 digunakan bersama antara lalu lintas yang ditambatkan dan lalu lintas perangkat, paket penyiapan/pembongkaran sesi IPv4 (misalnya, SYN/SYN+ACK, FIN) harus diproses dalam perangkat lunak sehingga kernel dapat menyusun status aliran. Kerangka kerja ini menyediakan bidang kendali dan mesin negara. Ini juga memberikan informasi kepada perangkat keras tentang antarmuka/awalan hulu dan hilir.
Untuk IPv4, perangkat keras mengizinkan paket pengaturan sesi terjemahan alamat jaringan IPv4 (NAT) untuk mencapai CPU. Kernel membuat entri NAT, dan implementasi HAL mengamati entri dari deskriptor file yang disediakan kerangka kerja dan menangani aliran ini di perangkat keras. Ini berarti implementasi HAL tidak memerlukan CAP_NET_*
karena HAL membuka soket NF_NETLINK_CONNTRACK
dari kerangka kerja. Secara berkala, perangkat keras mengirimkan pembaruan status NAT untuk aliran yang sedang aktif ke kerangka kerja, yang menyegarkan entri status pelacakan koneksi kernel yang sesuai.
Untuk IPv6, kerangka memprogram daftar awalan tujuan IPv6 yang lalu lintasnya tidak boleh diturunkan. Semua paket tertambat lainnya dapat diturunkan.
Untuk akuntansi penggunaan data, jajak pendapat penggunaan data NetworkStatsService
menyebabkan kerangka kerja meminta statistik lalu lintas dari perangkat keras. Kerangka kerja ini juga mengkomunikasikan batas penggunaan data ke perangkat keras melalui HAL.
Persyaratan perangkat keras
Untuk menerapkan tethering offload, perangkat keras Anda harus mampu meneruskan paket IP antara modem dan Wi-Fi/USB tanpa mengirimkan lalu lintas melalui prosesor utama.
Penerapan
Untuk mengaktifkan fitur tethering offload, Anda harus mengimplementasikan dua konfigurasi berikut HAL ( IOffloadConfig
) dan kontrol HAL ( IOffloadControl
).
Konfigurasi HAL: IOffloadConfig
IOffloadConfig
HAL memulai implementasi tethering offload. Kerangka kerja ini menyediakan implementasi HAL dengan soket NF_NETLINK_CONNTRACK
yang sudah terhubung sebelumnya sehingga implementasi dapat digunakan untuk mengamati aliran IPv4. Hanya arus yang diteruskan yang harus dipercepat.
Kontrol HAL: IOffloadControl
IOffloadControl
HAL mengontrol implementasi offload. Cara-cara berikut ini harus diterapkan:
- Memulai/menghentikan perangkat keras pembongkaran: Gunakan
initOffload/stopOffload
dan kecualikan alamat IP lokal atau jaringan lain dari pembongkaran dengansetLocalPrefixes
. - Atur antarmuka upstream, alamat IPv4, dan gateway IPv6: Gunakan
setUpstreamParameters
dan konfigurasikan rentang alamat IP downstream denganaddDownstream/removeDownstream
. - Akuntansi penggunaan data: Gunakan
getForwardedStats/setDataLimit
.
Vendor HAL Anda juga harus mengirimkan panggilan balik melalui antarmuka ITetheringOffloadCallback
, yang menginformasikan kerangka:
- Peristiwa asinkron seperti offload dimulai dan dihentikan (OffloadCallbackEvent)
- Pembaruan batas waktu NAT, yang harus dikirim secara berkala untuk menunjukkan bahwa aliran IPv4 tertentu berisi lalu lintas dan tidak boleh ditutup oleh kernel
Validasi
Untuk memvalidasi penerapan tethering offload, gunakan pengujian manual atau otomatis untuk memverifikasi tethering dan hotspot Wi-Fi berfungsi seperti yang diharapkan. Vendor Test Suite (VTS) berisi pengujian untuk HAL offload tethering.