Tethering

Android 13'teki güncellemeler

Güncelle Daha fazla bilgi
Cihazlar Arası ile tanışın 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, Wi-Fi 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 yayın 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 (çünkü aynı şartların farklı şekillerde uygulanmasına gerek yoktur).

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 (örneğin, YouTube, Netflix) veya gecikmeye duyarlı uygulamaların (örneğin, Office 365) VPN'yi atlamasını istediği durumdur. 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. Bu SDK, 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ı. Cihazlar Arası modülü açık kaynaklıdır. Bu sayede, uygulama ayrıntıları hakkında daha fazla görünürlük ve Cihazlar Arası teknolojilerin uygulanması için daha iyi bir gizlilik hikayesi sunar.

CrossDevice 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 ana işlevi bir APEX paketinde yer alır. 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 Uyumluluk Test Paketi (CTS) testlerini ve MTS'ye cihazlar arası testleri eklemeyi planlıyoruz.

eBPF tethering offload

Android 11, donanım boşaltmalarına güvenmeden yüksek hızlı tethering sağlamak için 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ı 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.

  • 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 kapsayacak şekilde genişletildi.

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 Uyumluluk Test Paketi (CTS), Tethering modülünün işlevselliğini doğrular.