Tethering offload, tethering trafiğini (USB, kablosuz ağ üzerinden) donanıma aktararak cihazların güç tasarrufu yapmasını ve performansı artırmasını sağlar. Modem ile çevre birimleri arasında doğrudan bir yol sağlanarak ve uygulama işlemcisi atlanarak tethering trafiği boşaltılır.
Teknik Özellikler
Android 8.1'den itibaren cihazlar, IPv4, IPv6 veya IPv4+IPv6 yönlendirmeyi donanıma aktarmak için tethering offload özelliğini kullanabilir.
Boşaltma özelliğinin tüm paketleri boşaltması gerekmez. Çerçeve, yazılımdaki tüm paketleri işleyebilir. Kontrol paketleri genellikle yazılımda işlenir. IPv4 bağlantı noktaları, tethering trafiği ile cihaz trafiği arasında paylaşıldığından çekirdeğin akış durumunu oluşturabilmesi için IPv4 oturum kurulumu/kaldırma paketlerinin (ör. SYN/SYN+ACK, FIN) yazılımda işlenmesi gerekir. Çerçeve, kontrol düzlemini ve durum makinelerini sağlar. Ayrıca donanıma yukarı akış ve aşağı akış arayüzleri/önekleri hakkında bilgi sağlar.
IPv4 için donanım, IPv4 ağ adresi çevrimi (NAT) oturumu kurulum paketlerinin CPU'ya ulaşmasına izin verir. Çekirdek, NAT girişleri oluşturur ve HAL uygulaması, çerçeve tarafından sağlanan dosya tanımlayıcılarındaki girişleri gözlemler ve bu akışları donanımda işler. Bu, HAL'ın çerçeveden NF_NETLINK_CONNTRACK
yuvaları açması nedeniyle HAL uygulamasının CAP_NET_*
gerektirmediği anlamına gelir. Donanım, şu anda etkin olan akışlar için NAT durumu güncellemelerini düzenli olarak çerçeveye gönderir. Bu güncellemeler, ilgili çekirdek bağlantı izleme durumu girişlerini yeniler.
IPv6 için çerçeve, trafiğin boşaltılmaması gereken IPv6 hedef öneklerinin bir listesini programlar. Diğer tüm bağlı paketler boşaltılabilir.
Veri kullanımı muhasebesi için NetworkStatsService
veri kullanımı yoklamaları, çerçevenin donanımdan trafik istatistikleri istemesine neden olur. Çerçeve, HAL aracılığıyla donanıma veri kullanım sınırlarını da iletir.
Donanım gereksinimleri
Tethering offload'u uygulamak için donanımınız, trafiği ana işlemciden geçirmeden modem ile kablosuz/USB arasında IP paketlerini yönlendirebilmelidir.
Uygulama
Tethering offload özelliğini etkinleştirmek için hem yapılandırma HAL'i (IOffloadConfig
) hem de kontrol HAL'i (IOffloadControl
) olmak üzere aşağıdaki iki HAL'i uygulamanız gerekir.
Yapılandırma HAL'ı: IOffloadConfig
IOffloadConfig
HAL, tethering offload uygulamasını başlatır. Çerçeve, HAL uygulamasına önceden bağlanmış NF_NETLINK_CONNTRACK
soketler sağlar. Bu soketler, uygulamada IPv4 akışlarını gözlemlemek için kullanılabilir. Yalnızca yönlendirilen akışlar hızlandırılmalıdır.
Kontrol HAL'si: IOffloadControl
IOffloadControl
HAL, boşaltma uygulamasını kontrol eder. Aşağıdaki yöntemler uygulanmalıdır:
- Donanım boşaltmayı başlatma/durdurma:
initOffload/stopOffload
kullanın ve yerel IP adreslerini veya diğer ağlarısetLocalPrefixes
ile boşaltmadan muaf tutun. - Yukarı akış arayüzünü, IPv4 adresini ve IPv6 ağ geçitlerini ayarlayın:
setUpstreamParameters
kullanarak aşağı akış IP adresi aralıklarınıaddDownstream/removeDownstream
ile yapılandırın. - Veri kullanımı muhasebesi:
getForwardedStats/setDataLimit
kullanın.
Tedarikçi HAL'niz, çerçeveyi aşağıdaki konularda bilgilendiren geri aramaları ITetheringOffloadCallback
arayüzü üzerinden de göndermelidir:
- Boşaltma işleminin başlatılması ve durdurulması gibi eşzamansız etkinlikler (OffloadCallbackEvent)
- Belirli bir IPv4 akışının trafik içerdiğini ve çekirdek tarafından kapatılmaması gerektiğini belirtmek için periyodik olarak gönderilmesi gereken NAT zaman aşımı güncellemeleri
Doğrulama
Tethering boşaltma özelliğini uyguladığınızı doğrulamak için tethering ve kablosuz hotspot'un beklendiği gibi çalıştığını manuel veya otomatik testlerle doğrulayın. Vendor Test Suite (VTS), tethering offload HAL'leri için testler içerir.