Tethering

Android 13'teki güncellemeler

Güncelle Daha fazla bilgi
CrossDevice özelliği kullanıma sunuldu CrossDevice
Bölünmüş tünel özelliği kullanıma sunuldu Bölünmüş tünel oluşturma

Genel Bakış

Tethering modülü, Android cihazın internet bağlantısını kablosuz ağ, USB, Bluetooth veya Ethernet üzerinden tethering cihazlara bağlanabilen diğer bağlı istemci cihazlarla paylaşır. Bu modül, tethering bileşenini (USB, kablosuz erişim noktası, Bluetooth vb.) ve bağımlılarını (tethering hakkı, IpServer ve offloadController ile etkileşim) içerir. Bu modül güncellenebilirdir. Yani normal Android sürüm döngüsü dışında işlevsellik güncellemeleri alabilir.

Tethering modülü, Android ekosistemindeki OEM'lerin aşağıdaki avantajları sağlayan tek bir standart referans uygulamasını kullanmasına olanak tanır.

  • Son kullanıcılar, Android cihazlar arasında tutarlı bir deneyim elde eder ve modül güncellemeleri sayesinde birlikte çalışabilirlik sorunlarının düzeltilmesini sağlar.

  • OEM'ler, operatör şartlarını karşılarken aynı zamanda bireysel özelleştirmelerin maliyetlerini de düşürebilir (aynı şartların farklı şekillerde uygulanmasına gerek olmadığı için).

Bölünmüş tünel

Bölünmüş tünelleme kullanım alanlarını desteklemek için Android 13'e hariç tutma rotaları belirtecek yeni bir API eklenmiştir.

Bölünmüş tünel, belirli trafiğin VPN'den geçtiği, diğer trafiğin ise geçmediği yapılandırmayı ifade eder. Kuruluşların VPN'i atlamak için genel web sörfü, bant genişliği yoğun (ör. YouTube, Netflix) veya gecikmeye duyarlı uygulamalar (ör. Office 365) istemesi yaygın bir örnektir. Bölünmüş tünel oluşturma özelliği kullanıma sunulmadan önce VpnService.Builder, VPN istemcisinin kendisine yalnızca bazı alt ağların yönlendirileceğini belirtmesine olanak tanır (rotaları dahil et). Bölünmüş tünelleme ile, tersini belirtebilirsiniz: belirli alt ağlar hariç tüm trafiği VPN'ye yönlendirmek (rotaları hariç tutma) için kullanılır.

Yeni bölünmüş tünel API'sinin imzası:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

Android 13'te kullanıma sunulan CrossDevice, standart protokoller kullanarak cihazlar arası iletişim teknolojileri sunmayı amaçlar. Cihaz keşfi, kimlik doğrulaması yapılmış bağlantı ve diğer cihazlar arası deneyimler için API'ler ve özellikler sağlar.

Cihazlar arası motivasyon

  • OEM iş ortaklarıyla daha sıkı bir iş birliği. OEM'ler, Google'ın çözümünü kullanmak yerine kendi hesap anahtar sistemlerini CrossDevice uygulamasıyla entegre edebilir.
  • Protokolün daha görünür bir şekilde uygulanması. CrossDevice modülü açık kaynaktır. Bu sayede, uygulama ayrıntıları hakkında daha fazla bilgi edinebilir ve CrossDevice teknolojileri uygulama konusunda daha iyi bir gizlilik hikayesi oluşturabilirsiniz.

Cihazlar arası modül sınırı

Cihazlar Arası API'ler packages/modules/CrossDevice/framework içinde
  • NearbyManager
  • AccountProviderBase
Cihazlar Arası Hizmetler packages/modules/CrossDevice/service içinde
  • NearbyService - scanning API

Cihazlar Arası paket biçimi

Bu modülün ana işlevi bir APEX paketine dahildir. Kaynaklar bir APK'da paketlenir.

Cihazlar arası bağımlılıklar

Cihazlar arası şunlara bağlıdır:

  • Kablosuz
  • Bluetooth
  • ultra geniş bant
  • modules-utils-preconditions
  • Proto kitaplıkları

Cihazlar arası özelleştirme seçenekleri

OEM'lerin, RRO aracılığıyla yarım sayfa için kullanıcı arayüzünü özelleştirmesine izin vermeyi planlıyoruz. Bu işlevi özelleştirmek için herhangi bir planımız yok.

Cihazlar arası test stratejisi

Cihazlar arası işlevselliği doğrulamak için Android Compatibility Test Suite (CTS) testlerini, MTS'ye ise cihazlar arası testler eklemeyi planlıyoruz.

eBPF tethering offload

Android 11, donanımdan aktarma işlemlerine ihtiyaç duymadan yüksek hızlı tethering sağlamak için IPv6 indirme (bağlantılı cihaza akan trafik) için eBPF tethering aktarma işlemi adlı bir tethering yazılım aktarma çözümü sunar.

Android 12'den itibaren bu işlev (eBPF program kodu dahil), aşağıdakileri destekleyen Tethering modülü tarafından tamamen sağlanır:

  • IPv6 indirme (bağlantılı cihaza akan trafik)
  • IPv6 yüklemesi (bağlanan cihazdan gelen trafik)
  • IPv4 TCP/UDP yükleme ve yayın (bağlantılı cihaza/bağlantılı cihazdan akan trafik)
  • eBPF boşaltma

Bu özellik varsayılan olarak etkindir. Kullanıcılar, RRO ile config_tether_enable_bpf_offload yapılandırmasını geçersiz kılarak yanlış değerine ayarlayabilir. Daha fazla bilgi için Özelleştirme bölümüne bakın.

IPv4 ve IPv6 desteği

Tethering modülü, IPv4 ve IPv6 çift yığınını destekler.

  • Modül, IPv4 ağları için ağ adresi çevirimini (NAT) ayarlar ve IP adresi ataması için dinamik ana makine yapılandırması protokolünü (DHCP) kullanır.

  • IPv6 ağlarında modül, IP adresi ataması için IPv6 durum bilgisiz adres otomatik yapılandırmasını (SLAAC) kullanır.

Modül sınırı

Android 12 ve sonraki sürümlerde, packages/modules/Connectivity altındaki tüm dosyalar/klasörler Tethering modülü kapsamındadır.

Android 11 ve önceki sürümlerde Tethering modülü, packages/modules/Tethering içinde aşağıdaki Android 10 dosyalarına sahiptir.

  • 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

Modül biçimi

Tethering modülü (com.android.tethering), APEX biçimindedir ve Android 11 veya sonraki sürümleri çalıştıran cihazlarda kullanılabilir.

ConnectivityService'i dahil edin

Android 12'den itibaren, L3+ bağlantısının merkezi bileşenini uygulayan ConnectivityService kodu, Tethering APEX'e eklenir. Tethering'in kapsamı, Bağlantı modülü olarak genişletildi.

Modül bağımlılıkları

Tethering modülü aşağıdaki bağımlılıklara sahiptir:

  • Sistem sunucusundaki herkese açık API ve sistem API yöntemleri
  • Kararlı AIDL IPC'lerin sistem sunucusuyla arayüzü
  • tetheroffload HIDL (hardware/interfaces/tetheroffload/ içinde tanımlanmıştır)
  • DHCP sunucusu (Ağ Yığını modülünün bir parçası)

Özelleştirme

Tethering modülü özelleştirmeyi desteklemez.

Test

Android Uyumluluk Test Paketi (CTS), Tethering modülünün işlevini doğrular.