Tethering donanımdan kaldırma

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.