Android 13 中的更新
更新 | 更多資訊 |
---|---|
推出跨裝置 | 跨裝置 |
引進分割隧道 | 分裂隧道 |
概述
網路共享模組與其他連接的用戶端裝置共享 Android 裝置的網路連接,這些用戶端裝置可以透過 Wi-Fi、USB、藍牙或乙太網路連接到網路共享裝置。此模組包括網路共用元件(USB、Wi-Fi 存取點、藍牙等)及其相依性(與網路共用權利、 IpServer
和offloadController
互動)。該模組是可更新的,這意味著它可以在正常的 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模組邊界
跨裝置 API | 在packages/modules/CrossDevice/framework 中
|
跨裝置服務 | 在packages/modules/CrossDevice/service 中
|
跨裝置包格式
此模組的主要功能包含在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) 驗證網路共用模組的功能。