การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ

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

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

ภาพรวม

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

โมดูลการต่อฮอตสปอต Wi-Fi ช่วยให้ OEM ทั่วทั้งระบบนิเวศ Android ใช้การติดตั้งใช้งานตามมาตรฐานเดียวที่มีประโยชน์ดังต่อไปนี้

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

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

การสร้างอุโมงค์ข้อมูลแบบแยก

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

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

ลายเซ็นของ Split Tunneling API ใหม่คือ

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

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

แรงจูงใจข้ามอุปกรณ์

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

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

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

รูปแบบแพ็กเกจข้ามอุปกรณ์

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

ทรัพยากร Dependency ข้ามอุปกรณ์

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

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

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

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

กลยุทธ์การทดสอบหลายอุปกรณ์

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

การโอนการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือแบบ eBPF

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

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

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

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

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

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

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

  • สำหรับเครือข่าย IPv6 โมดูลจะใช้การกำหนดค่าที่อยู่ IP แบบไม่เก็บสถานะอัตโนมัติ (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+ ลงใน APEX ของการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ ขอบเขตของการเชื่อมต่อ Wi-Fi ฮอตสปอตจากมือถือจะขยายเป็นโมดูลการเชื่อมต่อ

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

โมดูลการต่อฮอตสปอต Wi-Fi มือถือมีการพึ่งพาต่อไปนี้

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

การปรับแต่ง

โมดูลการต่อฮอตสปอตจากมือถือไม่รองรับการปรับแต่ง

การทดสอบ

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