網路共用

Android 13 的更新內容

更新 更多資訊
跨裝置導入 CrossDevice
推出分割隧道功能 分割通道

總覽

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

連線模組可讓 Android 生態系統中的原始設備製造商 (OEM) 使用單一標準參考實作項目,帶來下列優點。

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

  • 原始設備製造商 (OEM) 不僅能滿足電信業者的要求,還能降低個別自訂項目的成本 (因為他們不需要以不同方式針對相同要求執行不同的實作)。

分割通道

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

分割通道是指某些流量會透過 VPN,而其他流量則不會透過 VPN 的設定。常見的例子是,機構希望一般網頁瀏覽、頻寬需求高的應用程式 (例如 YouTube、Netflix) 或延遲敏感應用程式 (例如 Office 365) 能繞過 VPN。在分割式通道可用之前,VpnService.Builder 允許 VPN 用戶端指出只應將部分子網路轉送至該用戶端 (include 路徑)。透過分割通道,您可以指定相反的情況:將所有流量轉送至 VPN,除了特定子網路 (排除路徑) 以外。

新的分割隧道 API 簽章如下:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

Android 13 中導入的 CrossDevice 旨在使用標準通訊協定提供跨裝置通訊技術。提供裝置探索、驗證連線和其他跨裝置體驗的 API 和功能。

跨裝置動機

  • 與原始設備製造商 (OEM) 合作夥伴的合作更加緊密。原始設備製造商 (OEM) 可以將自己的帳戶金鑰系統與 CrossDevice 實作整合,而不需要使用 Google 的解決方案。
  • 更加醒目的通訊協定實作。CrossDevice 模組是開放原始碼,可讓您更深入瞭解實作細節,並改善 CrossDevice 技術實作項目的隱私權說明。

跨裝置模組邊界

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

CrossDevice 套件格式

這個模組的主函式已納入 APEX 套件。資源會封裝在 APK 中。

CrossDevice 依附元件

CrossDevice 取決於下列因素:

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

CrossDevice 自訂選項

我們打算讓原始設備製造商 (OEM) 透過 RRO 自訂半面層的使用者介面。我們沒有計劃自訂這項功能。

跨裝置測試策略

我們計劃加入 Android Compatibility Test Suite (CTS) 測試,藉此驗證 CrossDevice 功能,並在 MTS 中進行跨裝置測試。

eBPF 網路共用卸載

為了在不依賴硬體卸載的情況下提供高速 Tethering 功能,Android 11 提供名為 eBPF Tethering Offload 的 Tethering 軟體卸載解決方案,可用於 IPv6 下載 (流量流向 Tethering 裝置)。

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

加入 ConnectivityService

自 Android 12 起,實作 L3+ 連線的核心元件的 ConnectivityService 程式碼已新增至 Tethering APEX。網路共用功能的範圍擴大至連線模組。

模組依附元件

網路共用模組具有下列依附元件:

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

自訂

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

測試

Android Compatibility Test Suite (CTS) 可驗證 Tethering 模組的功能。