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
|
| CrossDevice Services | packages/modules/CrossDevice/service içinde
|
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.javaframeworks/base/services/core/java/com/android/server/connectivity/tethering/frameworks/base/services/core/java/com/android/server/NetworkManagementService.javaframeworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.javaframeworks/base/services/net/java/android/net/{netlink,dhcp}/*frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.javaframeworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidlframeworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.javaframeworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.javaframeworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.javaframeworks/base/core/java/android/os/INetworkManagementService.aidlframeworks/base/core/java/android/bluetooth/BluetoothPan.javaframeworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpppackages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.javapackages/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ü
tetheroffloadHIDL (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.