網絡共享

Android 13 中的更新

更新更多資訊
推出跨裝置跨裝置
引進分割隧道分裂隧道

概述

網路共享模組與其他連接的用戶端裝置共享 Android 裝置的網路連接,這些用戶端裝置可以透過 Wi-Fi、USB、藍牙或乙太網路連接到網路共享裝置。此模組包括網路共用元件(USB、Wi-Fi 存取點、藍牙等)及其相依性(與網路共用權利、 IpServeroffloadController互動)。該模組是可更新的,這意味著它可以在正常的 Android 發布週期之外接收功能更新。

網路共享模組使整個 Android 生態系統的 OEM 能夠使用單一的標準參考實現,從而帶來以下優勢。

  • 最終用戶在 Android 裝置上獲得一致的體驗,並透過模組更新修復互通性問題。

  • OEM 可以滿足營運商的要求,同時還可以降低個人化客製化的成本(因為他們不需要以不同的方式實現相同的要求)。

分裂隧道

為了支援分割隧道用例,Android 13 中新增了一個新的 API 來指定排除路由。

分割隧道是指某些流量通過 VPN 而其他流量不通過的設定。一個常見的例子是,組織希望常規網路衝浪、高頻寬(例如 YouTube、Netflix)或延遲敏感的應用程式(例如Office 365 )繞過 VPN。在分割隧道可用之前, VpnService.Builder允許 VPN 用戶端指示僅應將某些子網路路由到它(包括路由)。透過分割隧道,您可以指定相反的操作:將所有流量路由到 VPN,但特定子網路除外(排除路由)。

新的分割隧道 API 的簽章是:

public Builder excludeRoute(@NonNull IpPrefix prefix)

跨裝置

Android 13 中引入的 CrossDevice 旨在提供使用標準協定的跨裝置通訊技術。它提供用於裝置發現、經過身份驗證的連接和其他跨裝置體驗的 API 和功能。

跨裝置動機

  • 與 OEM 合作夥伴更緊密的合作。 OEM 可以將自己的帳戶金鑰系統與 CrossDevice 實作集成,而無需使用 Google 的解決方案。
  • 協議的實施更加明顯。 CrossDevice 模組是開源的,可以更清楚地了解實作細節,並為 CrossDevice 技術實作提供更好的隱私保護。

CrossDevice模組邊界

跨裝置 APIpackages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
跨裝置服務packages/modules/CrossDevice/service
  • NearbyService - 掃描 API

跨裝置包格式

此模組的主要功能包含在APEX包中。資源打包在APK中。

跨裝置依賴性

CrossDevice 取決於以下各項:

  • 無線上網
  • 藍牙
  • 超寬頻
  • 模組實用程式先決條件
  • 原型庫

跨裝置自訂選項

我們計劃允許 OEMS 透過 RRO 定制半張的 UI。沒有計劃自訂該功能。

跨裝置測試策略

我們計劃添加 Android 相容性測試套件 (CTS) 測試來驗證 CrossDevice 功能,並將跨裝置測試新增至 MTS 中​​。

eBPF 網路共享卸載

為了在不回覆硬體卸載的情況下提供高速網路共享,Android 11 提供了一種名為 eBPF 網路共享卸載的網路共享軟體卸載解決方案,用於 IPv6 下載(流量流向共享裝置)。

從 Android 12 開始,此功能(包括 eBPF 程式碼)完全由 Tethering 模組提供,該模組支援以下功能:

  • IPv6 下載(流量流向受限設備)
  • IPv6 上傳(來自系留設備的流量)
  • IPv4 TCP/UDP 上傳和下行(流入/流出受限設備的流量)
  • eBPF 解除安裝

此功能預設為啟用,使用者可以透過 RRO 將config_tether_enable_bpf_offload配置覆蓋為 false。有關詳細信息,請參閱自訂

IPv4 和 IPv6 支援

網路共用模組支援 IPv4 和 IPv6 雙協定堆疊。

  • 對於IPv4網絡,模組設定網路位址轉換(NAT)並採用動態主機配置協定(DHCP)進行IP位址分配。

  • 對於IPv6網絡,模組採用IPv6無狀態位址自動配置(SLAAC)進行IP位址分配。

模組邊界

對於 Android 12 及更高版本, packages/modules/Connectivity下的所有檔案/資料夾均位於網路共用模組範圍內。

對於 Android 11 及更低版本,網路共享模組在packages/modules/Tethering中具有以下 Android 10 檔案。

  • 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

模組格式

網路共享模組 ( com.android.tethering ) 採用 APEX 格式,適用於運行 Android 11 或更高版本的裝置。

包括連線服務

從 Android 12 開始,實作 L3+ 連線的核心元件的ConnectivityService程式碼已新增至 Tethering APEX 中。網路共享的範圍擴展到連接模組。

模組依賴

網路共享模組具有以下相依性:

  • 系統伺服器中的公共和系統API方法
  • 與系統伺服器穩定的 AIDL IPC 介面
  • tetheroffload HIDL(在hardware/interfaces/tetheroffload/中定義)
  • DHCP 伺服器(網路堆疊模組的一部分)

客製化

網路共享模組不支援自訂。

測試

Android 相容性測試套件 (CTS) 驗證網路共用模組的功能。