Chia sẻ Internet qua tính năng giảm tải phần cứng

Tính năng chia sẻ Internet giúp thiết bị tiết kiệm pin và cải thiện hiệu suất bằng cách chuyển lưu lượng truy cập chia sẻ Internet (qua USB, Wi-Fi) sang phần cứng. Lưu lượng truy cập chia sẻ Internet được giảm tải bằng cách cung cấp một đường dẫn trực tiếp giữa modem và các thiết bị ngoại vi, bỏ qua bộ xử lý ứng dụng.

Quy cách

Kể từ Android 8.1, các thiết bị có thể sử dụng tính năng chuyển tải chia sẻ Internet để chuyển tải việc chuyển tiếp IPv4, IPv6 hoặc IPv4+IPv6 sang phần cứng.

Tính năng chuyển tải không cần chuyển tải tất cả các gói. Khung này có khả năng xử lý mọi gói trong phần mềm. Các gói điều khiển thường được xử lý trong phần mềm. Vì các cổng IPv4 được chia sẻ giữa lưu lượng truy cập được chia sẻ Internet và lưu lượng truy cập của thiết bị, nên các gói thiết lập/huỷ bỏ phiên IPv4 (ví dụ: SYN/SYN+ACK, FIN) phải được xử lý trong phần mềm để hạt nhân có thể tạo trạng thái luồng. Khung này cung cấp mặt phẳng điều khiển và các máy trạng thái. Nó cũng cung cấp cho phần cứng thông tin về các giao diện/tiền tố xuôi dòng và ngược dòng.

Đối với IPv4, phần cứng cho phép các gói thiết lập phiên dịch địa chỉ mạng (NAT) IPv4 tiếp cận CPU. Hạt nhân tạo các mục NAT và việc triển khai HAL sẽ quan sát các mục từ các bộ mô tả tệp do khung cung cấp và xử lý các luồng này trong phần cứng. Điều này có nghĩa là việc triển khai HAL không yêu cầu CAP_NET_* vì HAL sẽ mở các socket NF_NETLINK_CONNTRACK từ khung. Định kỳ, phần cứng sẽ gửi thông tin cập nhật trạng thái NAT cho các luồng hiện đang hoạt động đến khung. Khung này sẽ làm mới các mục trạng thái theo dõi kết nối kernel tương ứng.

Đối với IPv6, khung này lập trình một danh sách các tiền tố đích IPv6 mà lưu lượng truy cập không được giảm tải. Bạn có thể chuyển tất cả các gói được chia sẻ Internet khác.

Đối với việc tính toán mức sử dụng dữ liệu, các cuộc thăm dò mức sử dụng dữ liệu NetworkStatsService khiến khung yêu cầu số liệu thống kê lưu lượng truy cập từ phần cứng. Khung này cũng truyền đạt hạn mức sử dụng dữ liệu cho phần cứng thông qua HAL.

Yêu cầu về phần cứng

Để triển khai tính năng chia sẻ Internet, phần cứng của bạn phải có khả năng chuyển tiếp các gói IP giữa modem và Wi-Fi/USB mà không cần gửi lưu lượng truy cập qua bộ xử lý chính.

Triển khai

Để bật tính năng chuyển tải chia sẻ Internet, bạn phải triển khai cả hai HAL cấu hình (IOffloadConfig) và HAL điều khiển (IOffloadControl).

HAL cấu hình: IOffloadConfig

HAL IOffloadConfig bắt đầu triển khai tính năng chuyển tải dữ liệu qua điểm phát sóng. Khung này cung cấp chế độ triển khai HAL với các ổ cắm NF_NETLINK_CONNTRACK được kết nối trước mà chế độ triển khai có thể dùng để quan sát các luồng IPv4. Chỉ những luồng được chuyển tiếp mới phải được tăng tốc.

HAL điều khiển: IOffloadControl

HAL IOffloadControl kiểm soát việc triển khai tính năng chuyển tải. Bạn phải triển khai các phương thức sau:

  • Bắt đầu/dừng tải phần cứng: Sử dụng initOffload/stopOffload và miễn địa chỉ IP cục bộ hoặc các mạng khác khỏi quá trình tải bằng setLocalPrefixes.
  • Đặt giao diện nguồn, địa chỉ IPv4 và cổng IPv6: Sử dụng setUpstreamParameters và định cấu hình dải địa chỉ IP đích bằng addDownstream/removeDownstream.
  • Tính mức sử dụng dữ liệu: Sử dụng getForwardedStats/setDataLimit.

HAL của nhà cung cấp cũng phải gửi các lệnh gọi lại thông qua giao diện ITetheringOffloadCallback. Giao diện này sẽ thông báo cho khung về:

  • Các sự kiện không đồng bộ, chẳng hạn như quá trình chuyển tải được bắt đầu và dừng (OffloadCallbackEvent)
  • Bản cập nhật thời gian chờ NAT, phải được gửi định kỳ để cho biết rằng một luồng IPv4 cụ thể có chứa lưu lượng truy cập và không được đóng bởi nhân

Xác nhận kết quả

Để xác thực việc triển khai tính năng chia sẻ Internet, hãy sử dụng quy trình kiểm thử thủ công hoặc tự động để xác minh rằng tính năng chia sẻ Internet và điểm phát sóng Wi-Fi hoạt động như dự kiến. Bộ kiểm thử của nhà cung cấp (VTS) chứa các bài kiểm thử cho HAL hỗ trợ tính năng chia sẻ Internet.