การอัปเดตใน 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
 | 
| บริการข้ามอุปกรณ์ | ใน packages/modules/CrossDevice/service
 | 
รูปแบบแพ็กเกจ 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 ที่เสถียรจะสื่อสารกับเซิร์ฟเวอร์ระบบ
- tetheroffloadHIDL (กำหนดไว้ใน- hardware/interfaces/tetheroffload/)
- เซิร์ฟเวอร์ DHCP (ส่วนหนึ่งของโมดูลสแต็กเครือข่าย)
การปรับแต่ง
โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือไม่รองรับการปรับแต่ง
การทดสอบ
ชุดเครื่องมือทดสอบความเข้ากันได้ของ Android (CTS) จะตรวจสอบฟังก์ชันการทำงานของ โมดูลการแชร์อินเทอร์เน็ต
