Chia sẻ kết nối

Cập nhật trong Android 13

Cập nhật Thêm thông tin
Giới thiệu CrossDevice Thiết bị chéo
Giới thiệu đường hầm phân chia Chia đường hầm

Tổng quan

Mô-đun Tethering chia sẻ kết nối internet của thiết bị Android với các thiết bị khách được kết nối khác, có thể kết nối với các thiết bị chia sẻ kết nối qua Wi-Fi, USB, Bluetooth hoặc Ethernet. Mô-đun này bao gồm thành phần chia sẻ kết nối (USB, điểm truy cập Wi-Fi, Bluetooth, v.v.) và các phần phụ thuộc của nó (tương tác với quyền chia sẻ kết nối, IpServeroffloadController ). Mô-đun này có thể cập nhật, nghĩa là nó có thể nhận các bản cập nhật cho chức năng ngoài chu kỳ phát hành Android thông thường.

Mô-đun Tethering cho phép các OEM trên toàn hệ sinh thái Android sử dụng một triển khai tham chiếu tiêu chuẩn, duy nhất mang lại những lợi ích sau.

  • Người dùng cuối có được trải nghiệm nhất quán trên các thiết bị Android và khắc phục các sự cố về khả năng tương tác thông qua các bản cập nhật mô-đun.

  • OEM có thể đáp ứng các yêu cầu của nhà cung cấp dịch vụ đồng thời giảm chi phí cho các tùy chỉnh riêng lẻ (vì họ không cần triển khai các yêu cầu giống nhau theo những cách khác nhau).

Chia đường hầm

Để hỗ trợ các trường hợp sử dụng đường hầm phân chia, một API mới được thêm vào Android 13 để chỉ định các tuyến đường loại trừ.

Đường hầm phân chia đề cập đến cấu hình trong đó lưu lượng truy cập nhất định đi qua VPN trong khi lưu lượng truy cập khác thì không. Một ví dụ phổ biến là khi một tổ chức muốn các ứng dụng lướt web nói chung, sử dụng nhiều băng thông (ví dụ: YouTube, Netflix) hoặc các ứng dụng nhạy cảm với độ trễ (ví dụ: Office 365 ) bỏ qua VPN. Trước khi có đường hầm phân chia, VpnService.Builder đã cho phép máy khách VPN chỉ ra rằng chỉ một số mạng con nên được định tuyến đến nó ( bao gồm các tuyến). Với đường hầm phân chia, bạn có khả năng chỉ định điều ngược lại: định tuyến tất cả lưu lượng truy cập đến VPN, ngoại trừ các mạng con cụ thể ( loại trừ các tuyến).

Chữ ký của API đường hầm phân chia mới là:

public Builder excludeRoute(@NonNull IpPrefix prefix)

Thiết bị chéo

CrossDevice, được giới thiệu trong Android 13, nhằm mục đích cung cấp công nghệ giao tiếp giữa các thiết bị bằng cách sử dụng các giao thức tiêu chuẩn. Nó cung cấp các API và tính năng để khám phá thiết bị, kết nối được xác thực và các trải nghiệm đa thiết bị khác.

Động lực của CrossDevice

  • Hợp tác chặt chẽ hơn với các đối tác OEM. Các OEM có thể tích hợp hệ thống khóa tài khoản của riêng họ với việc triển khai CrossDevice thay vì cần sử dụng giải pháp của Google.
  • Việc thực hiện giao thức rõ ràng hơn. Mô-đun CrossDevice là nguồn mở, cung cấp khả năng hiển thị rõ ràng hơn về chi tiết triển khai và câu chuyện về quyền riêng tư tốt hơn cho việc triển khai công nghệ CrossDevice.

Ranh giới mô-đun CrossDevice

API nhiều thiết bị Trong packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Dịch vụ thiết bị chéo Trong packages/modules/CrossDevice/service
  • NearbyService - API quét

Định dạng gói CrossDevice

Chức năng chính của mô-đun này được bao gồm trong gói APEX. Các tài nguyên được đóng gói trong một APK.

Phụ thuộc nhiều thiết bị

CrossDevice phụ thuộc vào những điều sau:

  • Wifi
  • Bluetooth
  • UWB
  • mô-đun-utils-điều kiện tiên quyết
  • Thư viện nguyên mẫu

Tùy chọn tùy chỉnh CrossDevice

Chúng tôi dự định cho phép OEMS tùy chỉnh giao diện người dùng cho nửa trang tính thông qua RRO. Không có kế hoạch tùy chỉnh chức năng.

Chiến lược thử nghiệm CrossDevice

Chúng tôi dự định thêm các thử nghiệm Bộ kiểm tra khả năng tương thích Android (CTS) để xác minh chức năng CrossDevice và thử nghiệm nhiều thiết bị vào MTS.

Giảm tải kết nối eBPF

Để cung cấp khả năng chia sẻ kết nối tốc độ cao mà không phản hồi khi giảm tải phần cứng, Android 11 cung cấp giải pháp giảm tải phần mềm chia sẻ kết nối được gọi là giảm tải chia sẻ kết nối eBPF để tải xuống IPv6 (lưu lượng truy cập truyền đến thiết bị được kết nối).

Từ Android 12, chức năng này (bao gồm mã chương trình eBPF) hoàn toàn được cung cấp bởi mô-đun Tethering, hỗ trợ những tính năng sau:

  • Tải xuống IPv6 (lưu lượng truy cập đến thiết bị được kết nối)
  • Tải lên IPv6 (lưu lượng truy cập từ thiết bị được kết nối)
  • Tải lên và hạ lưu IPv4 TCP/UDP (lưu lượng truy cập đến/từ thiết bị được kết nối)
  • giảm tải eBPF

Tính năng này được bật theo mặc định, người dùng có thể ghi đè cấu hình config_tether_enable_bpf_offload thành false bằng RRO. Xem Tùy chỉnh để biết thêm thông tin.

Hỗ trợ IPv4 và IPv6

Mô-đun Tethering hỗ trợ ngăn xếp kép IPv4 và IPv6.

  • Đối với mạng IPv4, mô-đun thiết lập dịch địa chỉ mạng (NAT) và áp dụng giao thức cấu hình máy chủ động (DHCP) để gán địa chỉ IP.

  • Đối với mạng IPv6, mô-đun này áp dụng tính năng tự động cấu hình địa chỉ không trạng thái IPv6 (SLAAC) để gán địa chỉ IP.

Ranh giới mô-đun

Đối với Android 12 trở lên, tất cả các tệp/thư mục trong packages/modules/Connectivity đều nằm trong phạm vi mô-đun Tethering.

Đối với Android 11 trở xuống, mô-đun Tethering có các tệp Android 10 sau trong packages/modules/Tethering .

  • 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

Định dạng mô-đun

Mô-đun Tethering ( com.android.tethering ) ở định dạng APEX và có sẵn cho các thiết bị chạy Android 11 trở lên.

Bao gồm dịch vụ kết nối

Từ Android 12, mã ConnectivityService triển khai thành phần trung tâm của kết nối L3+ sẽ được thêm vào Tethering APEX. Phạm vi của Tethering mở rộng thành mô-đun Kết nối.

Phần phụ thuộc của mô-đun

Mô-đun Tethering có các phần phụ thuộc sau:

  • Các phương thức API công khai và hệ thống trong máy chủ hệ thống
  • Giao diện AIDL IPC ổn định với máy chủ hệ thống
  • tetheroffload HIDL (được xác định trong hardware/interfaces/tetheroffload/ )
  • Máy chủ DHCP (một phần của mô-đun Network Stack)

Tùy chỉnh

Mô-đun Tethering không hỗ trợ tùy chỉnh.

Kiểm tra

Bộ kiểm tra khả năng tương thích Android (CTS) xác minh chức năng của mô-đun Tethering.