Tethering

Android 13'teki güncellemeler

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

Genel Bakış

Tethering modülü, bir Android cihazın internet bağlantısını diğer bağlı istemci cihazlarla paylaşır. Bu cihazlar, tethering cihazlarına kablosuz ağ, USB, Bluetooth veya Ethernet üzerinden bağlanabilir. Bu modül, tethering bileşenini (USB, kablosuz ağ erişim noktası, Bluetooth vb.) ve bağımlılıklarını (tethering yetkisi, IpServer ve offloadController ile etkileşim) içerir. Bu modül güncellenebilir. 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 ve standart bir referans uygulaması kullanmasına olanak tanır.

  • Son kullanıcılar, Android cihazlarda tutarlı bir deneyim elde eder ve modül güncellemeleri sayesinde birlikte çalışabilirlik sorunları düzeltilir.

  • OEM'ler, operatörlerin şartlarını karşılayabilir ve aynı zamanda bireysel özelleştirmelerin maliyetini düşürebilir (aynı şartların farklı şekillerde uygulanması gerekmediği için).

Bölünmüş tünel

Bölünmüş tünel kullanım alanlarını desteklemek için Android 13'e hariç tutulacak rotaları belirten yeni bir API eklendi.

Bölünmüş tünel, belirli trafiğin VPN üzerinden geçtiği, diğer trafiğin ise geçmediği yapılandırmayı ifade eder. Yaygın bir örnek, bir kuruluşun genel web'de gezinme, bant genişliği yoğun (ör. YouTube, Netflix) veya gecikmeye duyarlı uygulamaların (ör. Office 365) VPN'yi atlamasını istediği durumlardır. Bölünmüş tünel oluşturma özelliği kullanıma sunulmadan önce VpnService.Builder, VPN istemcisinin yalnızca bazı alt ağların kendisine yönlendirilmesi gerektiğini belirtmesine olanak tanıyordu (include rotaları). Bölünmüş tünelleme ile tersini belirtebilirsiniz: Belirli alt ağlar (hariç tutulan rotalar) hariç tüm trafiği VPN'ye yönlendirebilirsiniz.

Yeni split tünel API'sinin imzası şöyledir:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

Android 13'te kullanıma sunulan CrossDevice, standart protokolleri kullanarak cihazlar arası iletişim teknolojileri sağlamayı amaçlar. Cihaz keşfi, kimliği doğrulanmış 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ı işbirliği. OEM'ler, Google'ın çözümünü kullanmak zorunda kalmak yerine kendi hesap anahtarı sistemlerini CrossDevice uygulamasına entegre edebilir.
  • Protokolün daha görünür şekilde uygulanması. CrossDevice modülü açık kaynaklıdır. Bu sayede, uygulama ayrıntıları hakkında daha fazla görünürlük ve CrossDevice teknolojilerinin uygulanması için daha iyi bir gizlilik hikayesi sunar.

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

CrossDevice API'leri packages/modules/CrossDevice/framework içinde
  • NearbyManager
  • AccountProviderBase
CrossDevice Services packages/modules/CrossDevice/service içinde
  • NearbyService - scanning API

CrossDevice paket biçimi

Bu modülün temel işlevi bir APEX paketinde yer alıyor. Kaynaklar bir APK'da paketlenir.

Cihazlar arası bağımlılıklar

Cihazlar arası, aşağıdakilere bağlıdır:

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

Cihazlar arası özelleştirme seçenekleri

RRO aracılığıyla OEM'lerin kullanıcı arayüzünü yarım sayfa için özelleştirmesine izin vermeyi planlıyoruz. İşlevselliği özelleştirme planı yoktur.

Cihazlar arası test stratejisi

CrossDevice işlevini doğrulamak için Android Compatibility Test Suite (CTS) testleri ve MTS'ye cihazlar arası testler eklemeyi planlıyoruz.

eBPF tethering offload

Donanım boşaltmalarına güvenmeden yüksek hızlı tethering sağlamak için Android 11, IPv6 indirme (tethering yapılan cihaza akan trafik) için eBPF tethering boşaltma adlı bir tethering yazılım boşaltma çözümü sunar.

Android 12'den itibaren bu işlev (eBPF program kodu dahil) tamamen Tethering modülü tarafından sağlanır. Bu modül şunları destekler:

  • IPv6 indirme (bağlı cihaza akan trafik)
  • IPv6 yükleme (bağlı cihazdan gelen trafik)
  • IPv4 TCP/UDP yükleme ve indirme (bağlı cihaza/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ı false olarak geçersiz kılabilir. 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.

  • IPv4 ağlarında modül, ağ adresi çevirisi (NAT) ayarlar ve IP adresi atama için dinamik ana makine yapılandırma protokolünü (DHCP) kullanır.

  • IPv6 ağlarında, modül IP adresi atama için IPv6 durumsuz 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ını içerir.

  • 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ümlerin yüklü olduğu cihazlarda kullanılabilir.

Include ConnectivityService

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ünü de içerecek şekilde genişletiliyor.

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

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

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

Özelleştirme

Tethering modülü özelleştirmeyi desteklemez.

Test

Android Compatibility Test Suite (CTS), Tethering modülünün işlevselliğini doğrular.