Tính năng chia sẻ Internet qua USB 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 lưu lượng truy cập chia sẻ Internet qua USB (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à 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 chia sẻ Internet để chuyển tải IPv4, IPv6 hoặc IPv4+IPv6 đến phần cứng.
Tính năng giảm tải không cần phải 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 đ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ẻ và lưu lượng truy cập của thiết bị, nên các gói thiết lập/huỷ 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áy trạng thái và vùng điều khiển. Tệp này cũng cung cấp cho phần cứng thông tin về giao diện/phần tiền tố thượng nguồn và hạ nguồn.
Đố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 truy cập vào CPU. Hạt nhân tạo các mục nhập NAT và quá trình triển khai HAL sẽ quan sát các mục nhập từ chỉ số 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. Theo đị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 đang hoạt động đến khung, giúp làm mới các mục trạng thái theo dõi kết nối hạt nhân tương ứng.
Đối với IPv6, khung này lập trình danh sách tiền tố đích IPv6 mà lưu lượng truy cập không được chuyển sang. Bạn có thể chuyển tất cả các gói khác được chia sẻ Internet.
Đố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
sẽ 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 thông báo giới hạn 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 qua USB, phần cứng của bạn phải có khả năng chuyển tiếp 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 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
) sau đây.
Cấu hình HAL: IOffloadConfig
HAL IOffloadConfig
bắt đầu triển khai tính năng chia sẻ Internet. Khung này cung cấp cho quá trình triển khai HAL các ổ cắm NF_NETLINK_CONNTRACK
đã kết nối trước mà quá trình triển khai có thể sử dụng để quan sát luồng IPv4. Chỉ những luồng được chuyển tiếp mớ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 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/stopOffload
và miễn trừ địa chỉ IP cục bộ hoặc các mạng khác khỏi việc giảm tải bằngsetLocalPrefixes
. - Thiết lập giao diện ngược dòng, địa chỉ IPv4 và cổng IPv6: Sử dụng
setUpstreamParameters
và định cấu hình dải địa chỉ IP hạ nguồn 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
để thông báo cho khung về:
- Các sự kiện không đồng bộ như quá trình tải xuống đang bắt đầu và dừng (OffloadCallbackEvent)
- Thông tin cập nhật về thời gian chờ NAT, 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 chia sẻ Internet, hãy sử dụng quy trình kiểm thử thủ công hoặc tự động để xác minh tính năng chia sẻ Internet và điểm phát sóng Wi-Fi hoạt động như mong đợi. Bộ kiểm thử nhà cung cấp (VTS) chứa các bài kiểm thử cho các HAL giảm tải tính năng chia sẻ Internet.