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

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

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

ภาพรวม

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

โมดูลการแชร์อินเทอร์เน็ตช่วยให้ 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 (ส่วนหนึ่งของโมดูลสแต็กเครือข่าย)

การปรับแต่ง

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

การทดสอบ

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