ปล่อยสัญญาณ

อัปเดตใน Android 13

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

ภาพรวม

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

โมดูล Tethering ช่วยให้ OEM ทั่วทั้งระบบนิเวศของ Android สามารถใช้การใช้งานอ้างอิงมาตรฐานเดียวซึ่งให้ประโยชน์ดังต่อไปนี้

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

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

อุโมงค์แยก

เพื่อรองรับกรณีการใช้งาน Split Tunneling API ใหม่จะถูกเพิ่มลงใน Android 13 เพื่อระบุเส้นทางที่ยกเว้น

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

ลายเซ็นของ API การแยกช่องสัญญาณใหม่คือ:

public Builder excludeRoute(@NonNull IpPrefix prefix)

ครอสดีไวซ์

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

การพึ่งพา CrossDevice

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

  • อินเตอร์เน็ตไร้สาย
  • บลูทู ธ
  • UWB
  • โมดูล-utils-เงื่อนไขเบื้องต้น
  • ไลบรารีโปรโต

ตัวเลือกการปรับแต่ง CrossDevice

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

กลยุทธ์การทดสอบ CrossDevice

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

ออฟโหลดการเชื่อมต่ออินเทอร์เน็ตผ่าน eBPF

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

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

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

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

รองรับ IPv4 และ IPv6

โมดูล Tethering รองรับ IPv4 และ IPv6 dual stack

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

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

ขอบเขตโมดูล

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

สำหรับ Android 11 และต่ำกว่า โมดูล Tethering มีไฟล์ 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

รูปแบบของโมดูล

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

รวมบริการการเชื่อมต่อ

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

การพึ่งพาโมดูล

โมดูล Tethering มีการขึ้นต่อกันดังต่อไปนี้:

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

การปรับแต่ง

โมดูล Tethering ไม่รองรับการปรับแต่ง

การทดสอบ

ชุดทดสอบความเข้ากันได้ของ Android (CTS) ตรวจสอบการทำงานของโมดูล Tethering