網路共用

Android 13 的更新

Update 更多資訊
導入 CrossDevice CrossDevice
推出分割通道功能 分割通道

總覽

網路共用模組會與其他連線的用戶端裝置共用 Android 裝置的網際網路連線,這些裝置可透過 Wi-Fi、USB、藍牙或乙太網路連線至網路共用裝置。這個模組包含網路共用元件 (USB、Wi-Fi 存取點、藍牙等) 和其依附元件 (與網路共用授權、IpServeroffloadController 互動)。這個模組可更新,也就是說,即使不在正常的 Android 發布週期內,也能接收功能更新。

透過「網路共用」模組,Android 生態系統中的原始設備製造商可以使用單一標準參考實作,享有下列優點。

  • 透過模組更新,使用者在 Android 裝置上可獲得一致的體驗,並修正互通性問題。

  • 原始設備製造商可以滿足電信業者需求,同時減少個別自訂項目的成本 (因為他們不需要以不同方式實作相同需求)。

分割通道

為支援通道分割用途,Android 13 新增了 API,可指定排除路徑。

分割通道是指某些流量會透過 VPN 傳輸,其他流量則不會的設定。常見的例子是機構想要讓一般網頁瀏覽、耗用大量頻寬 (例如 YouTube、Netflix) 或對延遲時間敏感的應用程式 (例如 Office 365) 繞過 VPN。在支援分割通道之前,VpnService.Builder 允許 VPN 用戶端指出只有部分子網路應轉送至該用戶端 (include 路由)。使用通道分割功能時,您可以指定相反的設定:將所有流量轉送到 VPN,但特定子網路除外 (排除路徑)。

新版分割通道 API 的簽章如下:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

Android 13 推出的 CrossDevice 旨在透過標準通訊協定,提供跨裝置通訊技術。這個 SDK 提供 API 和功能,可供探索裝置、驗證連線,以及打造其他跨裝置體驗。

CrossDevice motivation

  • 與原始設備製造商 (OEM) 合作夥伴密切合作。OEM 可以將自己的帳戶金鑰系統與 CrossDevice 實作項目整合,不必使用 Google 的解決方案。
  • 更顯眼的通訊協定實作方式。CrossDevice 模組為開放原始碼,可讓您進一步瞭解實作詳細資料,並為 CrossDevice 技術實作提供更完善的隱私權故事。

CrossDevice 模組界線

CrossDevice API packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
CrossDevice Services packages/modules/CrossDevice/service
  • NearbyService - scanning API

CrossDevice 套件格式

這個模組的主要功能包含在 APEX 套件中。資源會封裝在 APK 中。

CrossDevice 依附元件

CrossDevice 依附於下列項目:

  • Wi-Fi
  • 藍牙
  • UWB
  • modules-utils-preconditions
  • Proto 程式庫

跨裝置自訂選項

我們預計允許 OEM 透過 RRO 自訂半頁 UI。目前沒有自訂功能的計畫。

跨裝置測試策略

我們計畫新增 Android Compatibility Test Suite (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 下的所有檔案/資料夾都位於 Tethering 模組範圍內。

如果是 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 以上版本的裝置。

包含 ConnectivityService

自 Android 12 起,實作 L3+ 連線中央元件的 ConnectivityService 程式碼會新增至 Tethering APEX。Tethering 的範圍會擴展到連線模組。

模組依附元件

Tethering 模組具有下列依附元件:

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

自訂

「網路共用」模組不支援自訂。

測試

Android Compatibility Test Suite (CTS) 會驗證「網路共用」模組的功能。