Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

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 CrossDevice
Giới thiệu đường hầm tách rời Phân chia đường hầm

Tổng quan

Mô-đun chia sẻ kết nối 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 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 thành 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, có 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 trong toàn bộ 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 đầy đủ 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 khác nhau theo những cách khác nhau).

Phân chia đường hầm

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

Đường hầm phân tách đề cập đến cấu hình trong đó một số lưu lượng nhất định đi qua VPN trong khi các lưu lượng khác thì không. Một ví dụ phổ biến là nơi một tổ chức muốn lướt web 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 tách, 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 đường). Với đường hầm phân tách, 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 đường).

Chữ ký của API tách đường hầm mới là:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

CrossDevice, được giới thiệu trong Android 13, nhằm mục đích cung cấp công nghệ giao tiếp thiết bị chéo 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 thiết bị chéo khác.

Động lực CrossDevice

  • Hợp tác chặt chẽ hơn với các đối tác OEM. OEM có thể tích hợp hệ thống khóa tài khoản của riêng họ với triển khai CrossDevice thay vì cần sử dụng giải pháp của Google.
  • Triển khai giao thức rõ ràng hơn. Mô-đun CrossDevice là mã 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 CrossDevice Trong packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Dịch vụ CrossDevice 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 một gói APEX. Các tài nguyên được đóng gói trong một APK.

Sự phụ thuộc của CrossDevice

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

  • Wifi
  • Bluetooth
  • UWB
  • module-utils-preconditions
  • Thư viện Proto

Các 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 có kế hoạch thêm các bài kiểm tra Bộ kiểm tra tính tương thích Android (CTS) để xác minh chức năng CrossDevice và kiểm tra thiết bị chéo vào MTS.

Giảm tải chia sẻ kết nối eBPF

Để cung cấp tính năng chia sẻ kết nối tốc độ cao mà không phải trả lờ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ền đến thiết bị được kết nối).

Từ Android 12, chức năng này (bao gồm cả mã chương trình eBPF) được cung cấp hoàn toàn bởi mô-đun Tethering, hỗ trợ những điều 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à xuống IPv4 TCP / UDP (lưu lượng truy cập đến / từ thiết bị được kết nối)
  • eBPF giảm tải

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 bản dịch địa chỉ mạng (NAT) và thông qua 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 sử dụng tự động định 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 Chia sẻ kết nối có các tệp Android 10 sau đây 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 ) có định dạng APEX và khả dụng cho các thiết bị chạy Android 11 trở lên.

Bao gồm ConnectivityService

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

Phụ thuộc mô-đun

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

  • Phương thức API hệ thống và công khai trong máy chủ hệ thống
  • Giao diện AIDL IPCs ổn định với máy chủ hệ thống
  • tetheroffload HIDL (được định nghĩa trong hardware/interfaces/tetheroffload/ )
  • Máy chủ DHCP (một phần của mô-đun Ngăn xếp Mạng)

Tùy biến

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

Thử nghiệm

Bộ kiểm tra tính tương thích của Android (CTS) xác minh chức năng của mô-đun Chia sẻ kết nối.