การปล่อยสัญญาณ

การอัปเดตใน Android 13

อัปเดต ข้อมูลเพิ่มเติม
เปิดตัว CrossDevice CrossDevice
ขอแนะนำการแยกอุโมงค์ การแยกอุโมงค์

ภาพรวม

โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือจะแชร์การเชื่อมต่ออินเทอร์เน็ตของอุปกรณ์ Android กับอุปกรณ์ไคลเอ็นต์อื่นๆ ที่เชื่อมต่อ ซึ่งสามารถเชื่อมต่อกับอุปกรณ์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือผ่าน Wi-Fi, USB, บลูทูธ หรืออีเทอร์เน็ต โมดูลนี้ประกอบด้วยคอมโพเนนต์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ (USB, จุดเข้าใช้งาน Wi-Fi, บลูทูธ ฯลฯ) และการอ้างอิง (การโต้ตอบกับสิทธิ์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ IpServer และ offloadController) โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าสามารถรับการอัปเดตฟังก์ชันการทำงานภายนอกวงจรการเปิดตัว Android ปกติได้

โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่าน USB ช่วยให้ OEM ทั่วทั้งระบบนิเวศ Android ใช้ การติดตั้งใช้งานอ้างอิงมาตรฐานเดียว ซึ่งมีประโยชน์ดังนี้

  • ผู้ใช้จะได้รับประสบการณ์การใช้งานที่สอดคล้องกันในอุปกรณ์ Android และการแก้ไขปัญหา การทำงานร่วมกันผ่านการอัปเดตโมดูล

  • OEM สามารถปฏิบัติตามข้อกำหนดของผู้ให้บริการเครือข่ายได้ในขณะที่ลดต้นทุนสำหรับการปรับแต่งแต่ละรายการ (เนื่องจากไม่จำเป็นต้องใช้การติดตั้งใช้งานที่แตกต่างกันสำหรับข้อกำหนดเดียวกันในรูปแบบต่างๆ)

การแยกอุโมงค์

เราได้เพิ่ม API ใหม่ใน Android 13 เพื่อระบุเส้นทางที่ยกเว้นเพื่อรองรับ Use Case ของการแยกการรับส่งข้อมูล

การแยกอุโมงค์ข้อมูลหมายถึงการกำหนดค่าที่การรับส่งข้อมูลบางอย่างผ่าน VPN แต่การรับส่งข้อมูลอื่นๆ ไม่ผ่าน ตัวอย่างที่พบบ่อยคือกรณีที่องค์กรต้องการให้การท่องเว็บทั่วไป แอปพลิเคชันที่ใช้แบนด์วิดท์สูง (เช่น YouTube, Netflix) หรือแอปพลิเคชันที่ไวต่อเวลาในการตอบสนอง (เช่น Office 365) ข้าม VPN ก่อนที่จะมี Split Tunneling VpnService.Builder อนุญาตให้ไคลเอ็นต์ VPN ระบุว่าควรกำหนดเส้นทางเฉพาะบางเครือข่ายย่อยไปยังไคลเอ็นต์ (เส้นทางรวม) การแยกการรับส่งข้อมูลช่วยให้คุณระบุ ส่วนกลับ: เพื่อกำหนดเส้นทางการรับส่งข้อมูลทั้งหมดไปยัง VPN ยกเว้นเครือข่ายย่อยที่เฉพาะเจาะจง (เส้นทางยกเว้น)

ลายเซ็นของ Split Tunneling API ใหม่มีลักษณะดังนี้

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

CrossDevice ซึ่งเปิดตัวใน Android 13 มีเป้าหมาย เพื่อมอบเทคโนโลยีการสื่อสารข้ามอุปกรณ์โดยใช้โปรโตคอลมาตรฐาน โดยมี API และฟีเจอร์สำหรับการค้นพบอุปกรณ์ การเชื่อมต่อที่ผ่านการตรวจสอบสิทธิ์ และประสบการณ์การใช้งานแบบข้ามอุปกรณ์อื่นๆ

แรงจูงใจในการใช้หลายอุปกรณ์

  • ทำงานร่วมกับพาร์ทเนอร์ OEM อย่างใกล้ชิดยิ่งขึ้น OEM สามารถผสานรวมระบบคีย์บัญชีของตนเองกับการติดตั้งใช้งาน CrossDevice แทนที่จะต้องใช้โซลูชันของ Google
  • การติดตั้งใช้งานโปรโตคอลที่มองเห็นได้ชัดเจนยิ่งขึ้น โมดูล CrossDevice เป็นโอเพนซอร์ส ซึ่งให้ระดับการเข้าถึงรายละเอียดการติดตั้งใช้งานที่มากขึ้นและเรื่องราวความเป็นส่วนตัวที่ดีขึ้น สําหรับการติดตั้งใช้งานเทคโนโลยี CrossDevice

ขอบเขตของโมดูล CrossDevice

CrossDevice API ใน packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
บริการข้ามอุปกรณ์ ใน packages/modules/CrossDevice/service
  • NearbyService - API การสแกน

รูปแบบแพ็กเกจ CrossDevice

ฟังก์ชันหลักของโมดูลนี้รวมอยู่ในแพ็กเกจ APEX ระบบจะแพ็กเกจทรัพยากร ใน APK

ทรัพยากร Dependency ของ CrossDevice

CrossDevice จะขึ้นอยู่กับสิ่งต่อไปนี้

  • Wi-Fi
  • บลูทูธ
  • UWB
  • modules-utils-preconditions
  • ไลบรารี Proto

ตัวเลือกการปรับแต่งข้ามอุปกรณ์

เราวางแผนที่จะอนุญาตให้ OEM ปรับแต่ง UI สำหรับครึ่งแผ่นผ่าน RRO เราไม่มีแผนที่จะปรับแต่งฟังก์ชันการทำงาน

กลยุทธ์การทดสอบข้ามอุปกรณ์

เราวางแผนที่จะเพิ่มการทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android เพื่อยืนยันฟังก์ชันการทำงานแบบข้ามอุปกรณ์ และการทดสอบแบบข้ามอุปกรณ์ลงใน MTS

การลดภาระการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือด้วย eBPF

Android 11 มีโซลูชันการลดภาระซอฟต์แวร์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือที่เรียกว่าการลดภาระการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือของ eBPF สำหรับการดาวน์โหลด IPv6 (การรับส่งข้อมูลที่ไหลไปยังอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือ) เพื่อให้การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือความเร็วสูงโดยไม่ต้องอาศัยการลดภาระฮาร์ดแวร์

ตั้งแต่ Android 12 เป็นต้นไป ฟังก์ชันนี้ (รวมถึงโค้ดโปรแกรม eBPF) จะให้บริการโดยโมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือทั้งหมด ซึ่งรองรับสิ่งต่อไปนี้

  • การดาวน์โหลด IPv6 (การรับส่งข้อมูลไปยังอุปกรณ์ที่เชื่อมต่อ)
  • การอัปโหลด IPv6 (การรับส่งข้อมูลจากอุปกรณ์ที่เชื่อมต่อ)
  • การอัปโหลดและดาวน์สตรีม TCP/UDP ของ IPv4 (การรับส่งข้อมูลที่ไหลเข้า/ออกจากอุปกรณ์ที่เชื่อมต่อ)
  • การลดภาระ eBPF

ฟีเจอร์นี้เปิดใช้อยู่โดยค่าเริ่มต้น ผู้ใช้ สามารถลบล้างการกำหนดค่า config_tether_enable_bpf_offload เป็น "เท็จ" ได้โดยใช้ RRO ดูข้อมูลเพิ่มเติมได้ที่การปรับแต่ง

การรองรับ IPv4 และ IPv6

โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือรองรับ Dual Stack ของ IPv4 และ IPv6

  • สำหรับเครือข่าย IPv4 โมดูลจะตั้งค่าการเปลี่ยนค่าที่อยู่เครือข่าย (NAT) และใช้โปรโตคอลการกำหนดค่าโฮสต์แบบไดนามิก (DHCP) สำหรับการกำหนดที่อยู่ IP

  • สำหรับเครือข่าย IPv6 โมดูลจะใช้การกำหนดค่าที่อยู่ IP โดยอัตโนมัติแบบไร้สถานะ IPv6 (SLAAC) สำหรับการกำหนดที่อยู่ IP

ขอบเขตของโมดูล

สำหรับ Android 12 ขึ้นไป ไฟล์/โฟลเดอร์ทั้งหมด ใน packages/modules/Connectivity จะอยู่ในขอบเขตของโมดูลการแชร์อินเทอร์เน็ต

สำหรับ Android 11 และต่ำกว่า โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือมีไฟล์ Android 10 ต่อไปนี้ใน 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

รูปแบบโมดูล

โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ (com.android.tethering) อยู่ในรูปแบบ APEX และพร้อมให้บริการสำหรับอุปกรณ์ที่ใช้ Android 11 ขึ้นไป

รวม ConnectivityService

ตั้งแต่ Android 12 เป็นต้นไป ระบบจะเพิ่มConnectivityServiceโค้ดที่ ใช้คอมโพเนนต์ส่วนกลางของการเชื่อมต่อ L3+ ลงใน Tethering APEX ขอบเขตของการแชร์อินเทอร์เน็ตจะขยายไปสู่โมดูลการเชื่อมต่อ

ทรัพยากร Dependency ของโมดูล

โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือมีทรัพยากร Dependency ดังนี้

  • เมธอด API สาธารณะและระบบในเซิร์ฟเวอร์ระบบ
  • อินเทอร์เฟซ IPC ของ AIDL ที่เสถียรจะสื่อสารกับเซิร์ฟเวอร์ระบบ
  • tetheroffload HIDL (กำหนดไว้ใน hardware/interfaces/tetheroffload/)
  • เซิร์ฟเวอร์ DHCP (ส่วนหนึ่งของโมดูลสแต็กเครือข่าย)

การปรับแต่ง

โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือไม่รองรับการปรับแต่ง

การทดสอบ

ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android จะตรวจสอบฟังก์ชันการทำงานของ โมดูลการแชร์อินเทอร์เน็ต