การอัปเดตใน Android 13
| อัปเดต | ข้อมูลเพิ่มเติม |
|---|---|
| เปิดตัว CrossDevice | CrossDevice |
| เปิดตัวการทำ Split Tunneling | Split Tunneling |
ภาพรวม
โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือจะแชร์การเชื่อมต่ออินเทอร์เน็ตของอุปกรณ์ Android กับอุปกรณ์ไคลเอ็นต์อื่นๆ ที่เชื่อมต่อ ซึ่งสามารถเชื่อมต่อกับอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือได้ทาง Wi-Fi, USB, บลูทูธ หรืออีเทอร์เน็ต โมดูลนี้ประกอบด้วยคอมโพเนนต์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ (USB, จุดเข้าใช้งาน Wi-Fi, บลูทูธ ฯลฯ) และทรัพยากร Dependency (การโต้ตอบกับสิทธิ์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ, IpServer และ offloadController) โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าโมดูลจะได้รับการอัปเดตฟังก์ชันการทำงานนอกวงจรการเผยแพร่ Android ปกติ
โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือช่วยให้ OEM ทั่วทั้งระบบนิเวศ Android ใช้การใช้งานอ้างอิงมาตรฐานเดียวซึ่งให้ประโยชน์ดังต่อไปนี้
ผู้ใช้ปลายทางจะได้รับประสบการณ์การใช้งานที่สอดคล้องกันในอุปกรณ์ Android และการแก้ไขปัญหาความสามารถในการทำงานร่วมกันผ่านการอัปเดตโมดูล
OEM สามารถปฏิบัติตามข้อกำหนดของผู้ให้บริการเครือข่ายและลดค่าใช้จ่ายในการปรับแต่งแต่ละรายการ (เนื่องจากไม่จำเป็นต้องมีการใช้งานที่แตกต่างกันสำหรับข้อกำหนดเดียวกันในรูปแบบต่างๆ)
Split Tunneling
Android 13 ได้เพิ่ม API ใหม่เพื่อระบุเส้นทางที่ยกเว้นเพื่อรองรับ Use Case ของ Split Tunneling
Split Tunneling หมายถึงการกำหนดค่าที่การรับส่งข้อมูลบางอย่างผ่าน VPN ในขณะที่การรับส่งข้อมูลอื่นๆ ไม่ผ่าน ตัวอย่างที่พบบ่อยคือกรณีที่องค์กร
ต้องการให้การท่องเว็บทั่วไป แอปพลิเคชันที่ใช้แบนด์วิดท์สูง (เช่น YouTube, Netflix) หรือ
แอปพลิเคชันที่ไวต่อเวลาในการตอบสนอง (เช่น Office 365) ข้าม VPN ก่อนที่จะมี Split Tunneling
VpnService.Builder
อนุญาตให้ไคลเอ็นต์ VPN ระบุว่าควรกำหนดเส้นทางเฉพาะเครือข่ายย่อยบางรายการไปยังไคลเอ็นต์
(รวม เส้นทาง) เมื่อใช้ Split Tunneling คุณจะสามารถระบุสิ่งที่ตรงกันข้ามได้ นั่นคือ กำหนดเส้นทางการรับส่งข้อมูลทั้งหมดไปยัง VPN ยกเว้นเครือข่ายย่อยที่เฉพาะเจาะจง (ยกเว้น เส้นทาง)
ลายเซ็นของ API Split Tunneling ใหม่มีลักษณะดังนี้
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice ซึ่งเปิดตัวใน Android 13 มีเป้าหมายเพื่อมอบเทคโนโลยีการสื่อสารข้ามอุปกรณ์โดยใช้โปรโตคอลมาตรฐาน โดยมี API และฟีเจอร์สำหรับการค้นหาอุปกรณ์ การเชื่อมต่อที่ผ่านการตรวจสอบสิทธิ์ และประสบการณ์การใช้งานข้ามอุปกรณ์อื่นๆ
แรงจูงใจในการสร้าง CrossDevice
- การทำงานร่วมกันกับพาร์ทเนอร์ OEM อย่างใกล้ชิดยิ่งขึ้น OEM สามารถผสานรวมระบบคีย์บัญชีของตนเองกับการใช้งาน CrossDevice แทนที่จะต้องใช้โซลูชันของ Google
- การใช้งานโปรโตคอลที่มองเห็นได้ชัดเจนยิ่งขึ้น โมดูล CrossDevice เป็นโอเพนซอร์ส ซึ่งช่วยให้มองเห็นรายละเอียดการใช้งานได้ชัดเจนยิ่งขึ้นและให้เรื่องราวความเป็นส่วนตัวที่ดีขึ้นสำหรับการใช้งานเทคโนโลยี CrossDevice
ขอบเขตของโมดูล CrossDevice
| API ของ CrossDevice | ใน packages/modules/CrossDevice/framework
|
| บริการของ CrossDevice | ใน packages/modules/CrossDevice/service
|
รูปแบบแพ็กเกจของ CrossDevice
ฟังก์ชันหลักของโมดูลนี้รวมอยู่ในแพ็กเกจ APEX ส่วนทรัพยากรจะรวมอยู่ใน APK
ทรัพยากร Dependency ของ CrossDevice
CrossDevice มีทรัพยากร Dependency ดังต่อไปนี้
- Wi-Fi
- บลูทูธ
- UWB
- modules-utils-preconditions
- ไลบรารี Proto
ตัวเลือกการปรับแต่ง CrossDevice
เราวางแผนที่จะอนุญาตให้ OEM ปรับแต่ง UI สำหรับชีตครึ่งแผ่นผ่าน RRO โดยไม่มีแผนที่จะปรับแต่งฟังก์ชันการทำงาน
กลยุทธ์การทดสอบ CrossDevice
เราวางแผนที่จะเพิ่มการทดสอบชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android เพื่อตรวจสอบฟังก์ชันการทำงานของ CrossDevice และการทดสอบข้ามอุปกรณ์ลงใน 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 โมดูลจะใช้การกำหนดค่าที่อยู่แบบไม่มีสถานะอัตโนมัติ (SLAAC) ของ IPv6 สำหรับการกำหนดที่อยู่ IP
ขอบเขตของโมดูล
สำหรับ Android 12 ขึ้นไป ไฟล์/โฟลเดอร์ทั้งหมดใน packages/modules/Connectivity จะอยู่ในขอบเขตของโมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ
สำหรับ Android 11 ลงไป โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือจะมีไฟล์ Android 10 ต่อไปนี้ใน packages/modules/Tethering
frameworks/base/services/core/java/com/android/server/connectivity/Tethering.javaframeworks/base/services/core/java/com/android/server/connectivity/tethering/frameworks/base/services/core/java/com/android/server/NetworkManagementService.javaframeworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.javaframeworks/base/services/net/java/android/net/{netlink,dhcp}/*frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.javaframeworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidlframeworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.javaframeworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.javaframeworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.javaframeworks/base/core/java/android/os/INetworkManagementService.aidlframeworks/base/core/java/android/bluetooth/BluetoothPan.javaframeworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpppackages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.javapackages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java
รูปแบบโมดูล
โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ (com.android.tethering) อยู่ในรูปแบบ APEX และพร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Android 11 ขึ้นไป
รวม ConnectivityService
ตั้งแต่ Android 12 เป็นต้นไป ระบบจะเพิ่มโค้ด ConnectivityService ที่
ใช้คอมโพเนนต์กลางของการเชื่อมต่อ L3+ ลงใน APEX การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ
ขอบเขตของการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือจะขยายเป็นโมดูลการเชื่อมต่อ
ทรัพยากร Dependency ของโมดูล
โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือมีทรัพยากร Dependency ดังต่อไปนี้
- เมธอด API สาธารณะและระบบในเซิร์ฟเวอร์ระบบ
- อินเทอร์เฟซ AIDL IPC ที่เสถียรซึ่งโต้ตอบกับเซิร์ฟเวอร์ระบบ
tetheroffloadHIDL (กำหนดไว้ในhardware/interfaces/tetheroffload/)- เซิร์ฟเวอร์ DHCP (ส่วนหนึ่งของโมดูลสแต็กเครือข่าย)
การปรับแต่ง
โมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือไม่รองรับการปรับแต่ง
การทดสอบ
ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android จะตรวจสอบฟังก์ชันการทำงานของโมดูลการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ