שיתוף אינטרנט בין מכשירים

עדכונים ב-Android 13

עדכון מידע נוסף
השקנו את CrossDevice במכשירים שונים
הוספת תמיכה במנהור מפוצל מנהור מפוצל

סקירה כללית

המודול של שיתוף האינטרנט בין מכשירים משתף את חיבור האינטרנט של מכשיר Android עם מכשירי לקוח מחוברים אחרים, שיכולים להתחבר למכשירי שיתוף האינטרנט דרך Wi-Fi,‏ USB,‏ Bluetooth או אתרנט. המודול הזה כולל את רכיב הקישור (USB,‏ נקודת Wi-Fi,‏ Bluetooth וכו') ואת יחסי התלות שלו (אינטראקציה עם ההרשאה לקישור, IpServer ו-offloadController). אפשר לעדכן את המודול הזה, כלומר הוא יכול לקבל עדכונים לפונקציונליות מחוץ למחזור ההשקות הרגיל של Android.

המודול של הקישור מאפשר ליצרני ציוד מקורי (OEM) בסביבת Android להשתמש בהטמעת עזרה רגילה אחת, שמציעה את היתרונות הבאים.

  • משתמשי הקצה מקבלים חוויה עקבית במכשירי Android ותיקונים לבעיות של יכולת פעולה הדדית באמצעות עדכוני המודולים.

  • יצרני ציוד מקורי יכולים לעמוד בדרישות של ספקי הסלולר, תוך הפחתת העלויות של התאמות אישיות ספציפיות (כי הם לא צריכים להטמיע את אותן הדרישות בדרכים שונות).

מנהור מפוצל

כדי לתמוך בתרחישי שימוש של מנהרה מפוצלת, נוספה ל-Android 13 ממשק API חדש לציון מסלולים להחרגה.

מנהור מפוצל מתייחס להגדרה שבה תנועה מסוימת עוברת דרך ה-VPN, בעוד שתנועה אחרת לא עוברת דרכו. דוגמה נפוצה היא ארגון שרוצה שגלישה כללית באינטרנט, אפליקציות עם רוחב פס גבוה (למשל, YouTube, ‏ Netflix) או אפליקציות רגישות לזמן אחזור (למשל, Office 365) יעקפו את ה-VPN. לפני שאפשר היה להשתמש בתעלות מנהרה מפוצלות, הערך VpnService.Builder איפשר ללקוח ה-VPN לציין שרק חלק מרשתות המשנה צריכות לעבור דרכו (include routes). באמצעות מנהרה מפוצלת, אפשר לציין את ההיפך: לנתב את כל התנועה ל-VPN, מלבד תת-רשתות ספציפיות (מסלולים להחרגה).

החתימה של ממשק ה-API החדש למנהור נתונים מפוצל היא:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

התכונה CrossDevice, שהוצגה ב-Android 13, נועדה לספק טכנולוגיות תקשורת במכשירים שונים באמצעות פרוטוקולים רגילים. הוא מספק ממשקי API ותכונות לגילוי מכשירים, לחיבור מאומת ולחוויות אחרות במכשירים שונים.

מוטיבציה במכשירים שונים

  • שיתוף פעולה הדוק יותר עם שותפי OEM. יצרני ציוד מקורי יכולים לשלב את מערכת מפתחות החשבון שלהם עם הטמעה במכשירים שונים, במקום להשתמש בפתרון של Google.
  • הטמעה גלויה יותר של הפרוטוקול. המודול 'מעקב בכמה מכשירים' הוא קוד פתוח, שמספק יותר שקיפות לגבי פרטי ההטמעה ותובנות טובות יותר לגבי פרטיות בהטמעת טכנולוגיות למעקב בכמה מכשירים.

גבול המודול CrossDevice

ממשקי API למכשירים שונים ב-packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
שירותים במכשירים שונים ב-packages/modules/CrossDevice/service
  • NearbyService – API לסריקה

פורמט החבילה של CrossDevice

הפונקציה העיקרית של המודול הזה כלולה בחבילת APEX. המשאבים נארזים בחבילת APK.

יחסי תלות בין מכשירים

התכונה 'צפייה במכשירים שונים' תלויה בגורמים הבאים:

  • Wi-Fi
  • Bluetooth
  • UWB
  • modules-utils-preconditions
  • ספריות Proto

אפשרויות התאמה אישית במכשירים שונים

אנחנו מתכננים לאפשר ליצרני ציוד מקורי להתאים אישית את ממשק המשתמש של חצי הדף באמצעות RRO. אין תוכנית להתאמה אישית של הפונקציונליות.

אסטרטגיית בדיקה במכשירים שונים

אנחנו מתכננים להוסיף בדיקות של חבילה לבדיקות תאימות (CTS) של Android כדי לאמת את הפונקציונליות במכשירים שונים, ובדיקות במכשירים שונים ל-MTS.

הפחתת עומס ב-eBPF בחיבור לשיתוף אינטרנט

כדי לספק חיבור מהיר ל-Wi-Fi בלי להסתמך על העברת עומסים בחומרה, ב-Android 11 יש פתרון להעברת עומסים בתוכנה שנקרא eBPF tethering offload להורדת IPv6 (תנועה זורמת למכשיר המחובר).

החל מ-Android 12, הפונקציונליות הזו (כולל קוד התוכנית של eBPF) מסופקת במלואה על ידי מודול הקישור, שתומך באפשרויות הבאות:

  • הורדה ב-IPv6 (תנועה זורמת למכשיר המחובר)
  • העלאה ב-IPv6 (תנועה שמגיעה ממכשיר המחובר)
  • העלאה ותנועה ב-downstream של IPv4 TCP/UDP (תנועה זורמת אל/מהמכשיר המחובר)
  • הורדת עומס מ-eBPF

התכונה הזו מופעלת כברירת מחדל, והמשתמשים יכולים לשנות את ההגדרה של config_tether_enable_bpf_offload ל-false באמצעות RRO. מידע נוסף זמין במאמר התאמה אישית.

תמיכה ב-IPv4 וב-IPv6

המודול של הקישור (tethering) תומך בשכבת 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.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 של הקישור. היקף הקישור מתרחב למודול קישוריות.

יחסי תלות בין מודולים

למודול הקישור יש את יחסי התלות הבאים:

  • שיטות API ציבוריות ושיטות API של המערכת בשרת המערכת
  • ממשק יציב של AIDL IPC עם שרת המערכת
  • tetheroffload HIDL (מוגדר ב-hardware/interfaces/tetheroffload/)
  • שרת DHCP (חלק מהמודול של סטאק הרשת)

התאמה אישית

המודול של שיתוף האינטרנט לא תומך בהתאמה אישית.

בדיקה

חבילה לבדיקות תאימות (CTS) של Android מאמתת את הפונקציונליות של מודול הקישור.