網路共享硬體卸載

網路共享卸載透過將網路共享流量(透過 USB、Wi-Fi)卸載到硬件,使設備能夠節省電力並提高效能。透過在數據機和周邊設備之間提供直接路徑(繞過應用處理器)來卸載網路共享流量。

規格

從 Android 8.1 開始,裝置可以使用網路共用卸載將 IPv4、IPv6 或 IPv4+IPv6 轉送卸載到硬體。

卸載功能不需要卸載所有資料包。該框架能夠處理軟體中的任何資料包。控制資料包通常在軟體中處理。由於 IPv4 連接埠在繫留流量和裝置流量之間共用,因此必須在軟體中處理 IPv4 會話建立/拆除封包(例如 SYN/SYN+ACK、FIN),以便核心可以建構流狀態。此框架提供控制平面和狀態機。它還為硬體提供有關上游和下游介面/前綴的資訊。

對於 IPv4,硬體允許 IPv4 網路位址轉換 (NAT) 會話設定封包到達 CPU。核心建立 NAT 條目,HAL 實作觀察框架提供的檔案描述符中的條目並在硬體中處理這些流。這意味著 HAL 實作不需要CAP_NET_* ,因為 HAL 從框架開啟NF_NETLINK_CONNTRACK套接字。硬體會定期向框架發送當前活動流的 NAT 狀態更新,從而刷新相應的核心連接追蹤狀態條目。

對於 IPv6,框架會寫一個 IPv6 目標前綴列表,流量不得卸載到這些前綴。所有其他系留資料包都可以卸載。

對於資料使用情況統計, NetworkStatsService資料使用情況輪詢會導致框架向硬體請求流量統計資料。該框架還透過 HAL 將數據使用限制傳達給硬體。

硬體需求

若要實現網路共用卸載,您的硬體必須能夠在數據機和 Wi-Fi/USB 之間轉送 IP 封包,而無需透過主處理器傳送流量。

執行

若要啟用網路共用卸載功能,您必須實作以下兩個設定 HAL ( IOffloadConfig ) 和控制 HAL ( IOffloadControl )。

設定 HAL:IOffloadConfig

IOffloadConfig HAL 啟動網路共享卸載實作。此框架為 HAL 實作提供了預先連接的NF_NETLINK_CONNTRACK套接字,該實作可使用該套接字來觀察 IPv4 流。只有轉發的流必須加速。

控制 HAL:IOffloadControl

IOffloadControl HAL 控制卸載實作。必須實施以下方法:

  • 啟動/停止卸載硬體:使用initOffload/stopOffload並透過setLocalPrefixes免除本機 IP 位址或其他網路的卸載。
  • 設定上游介面、IPv4 位址和 IPv6 閘道:使用setUpstreamParameters並使用addDownstream/removeDownstream來設定下游 IP 位址範圍。
  • 資料使用統計:使用getForwardedStats/setDataLimit

您的供應商 HAL 也必須透過ITetheringOffloadCallback介面發送回調,該介面通知框架:

  • 非同步事件,例如卸載啟動和停止 (OffloadCallbackEvent)
  • NAT 逾時更新,必須定期傳送以指示特定 IPv4 串流包含流量且不得被核心關閉

驗證

若要驗證網路共用卸載的實施情況,請使用手動或自動測試來驗證網路共用和 Wi-Fi 熱點是否如預期般運作。供應商測試套件 (VTS)包含網路共用卸載 HAL 的測試。