Tính năng chuyển tải chia sẻ kết nối cho phép thiết bị tiết kiệm pin và cải thiện hiệu suất bằng cách chuyển tải lưu lượng truy cập chia sẻ kết nối (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 đường dẫn trực tiếp giữa modem và thiết bị ngoại vi, bỏ qua bộ xử lý ứng dụng.
Thông số kỹ thuật
Kể từ Android 8.1, thiết bị có thể sử dụng tính năng giảm tải chia sẻ Internet để giảm tải việc chuyển tiếp IPv4, IPv6 hoặc IPv4+IPv6 sang phần cứng.
Tính năng giảm tải không cần giảm tải tất cả các gói. Khung này có thể xử lý mọi gói trong phần mềm. Các gói kiểm soát 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 chia sẻ kết nối và lưu lượng truy cập 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 để nhân có thể tạo trạng thái luồng. Khung này cung cấp mặt phẳng kiểm soát và máy trạng thái. Khung này 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. Nhân tạo các mục NAT và việc triển khai HAL quan sát các mục từ 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 ổ cắm NF_NETLINK_CONNTRACK từ khung. Định kỳ, phần cứng sẽ gửi các bản 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 nhân tương ứng.
Đối với IPv6, khung này sẽ 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 chuyển tải. Tất cả các gói chia sẻ kết nối khác đều có thể được chuyển tải.
Đố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 các giới hạn sử dụng dữ liệu đến phần cứng thông qua HAL.
Yêu cầu về phần cứng
Để triển khai tính năng chuyển tải chia sẻ kết nối, 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 gửi lưu lượng truy cập qua bộ xử lý chính.
Triển khai
Để bật tính năng giảm tải chia sẻ Internet, bạn phải triển khai cả hai HAL cấu hình (IOffloadConfig) và HAL kiểm soát (IOffloadControl).
HAL cấu hình: IOffloadConfig
HAL
IOffloadConfig
bắt đầu triển khai tính năng chuyển tải chia sẻ kết nối. Khung này cung cấp cho việc triển khai HAL các ổ cắm NF_NETLINK_CONNTRACK được kết nối trước mà việc triển khai có thể sử dụng để quan sát các luồng IPv4. Chỉ các luồng được chuyển tiếp mới được tăng tốc.
HAL kiểm soát: IOffloadControl
HAL
IOffloadControl
kiểm soát việc triển khai tính năng giảm tải. Bạn phải triển khai các phương thức sau:
- Bắt đầu/dừng phần cứng giảm tải: Sử dụng
initOffload/stopOffloadvà miễn địa chỉ IP cục bộ hoặc các mạng khác khỏi việc giảm tải bằngsetLocalPrefixes. - Đặt giao diện ngược dòng, địa chỉ IPv4 và cổng IPv6: Sử dụng
setUpstreamParametersvà định cấu hình các dải địa chỉ IP xuôi dòng bằngaddDownstream/removeDownstream. - Tính toán 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 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ư việc bắt đầu và dừng chuyển tải (OffloadCallbackEvent)
- Các bản cập nhật thời gian chờ NAT. Các bản cập nhật này phải được gửi định kỳ để cho biết rằng một luồng IPv4 cụ thể chứa lưu lượng truy cập và không được nhân đóng
Xác nhận kết quả
Để xác thực việc triển khai tính năng giảm tải 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. The Bộ kiểm thử nhà cung cấp (VTS) chứa các bài kiểm thử cho HAL giảm tải chia sẻ Internet.