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

עדכונים ב-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 לציין שצריך לנתב אליו רק חלק מרשתות המשנה (הכללה). באמצעות מנהרה מפוצלת, אפשר לציין את ההיפך: לנתב את כל התנועה ל-VPN, מלבד תת-רשתות ספציפיות (מסלולים להחרגה).

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

public Builder excludeRoute(@NonNull IpPrefix prefix)

חוצה מכשירים

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

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

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

גבול המודול 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.

העברה של שיתוף אינטרנט בין מכשירים (tethering) באמצעות eBPF

כדי לאפשר שיתוף אינטרנט במהירות גבוהה בלי להגיב לעומסי חומרה, מערכת Android 11 מספקת פתרון להסרת עומס מתוכנה לשיתוף אינטרנט, שנקרא 'שיתוף אינטרנט בין מכשירים (tethering)' ב-eBPF, להורדת 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 ובגרסאות קודמות, מודול ה-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

פורמט המודול

המודול של הקישור (com.android.tethering) נמצא בפורמט APEX והוא זמין במכשירים עם Android מגרסה 11 ואילך.

הכללת ConnectivityService

החל מ-Android 12, הקוד ConnectivityService שמטמיע את הרכיב המרכזי של קישוריות L3+ מתווסף ל-APEX של הקישור. ההיקף של שיתוף אינטרנט בין מכשירים מתרחב למודול קישוריות.

יחסי תלות של מודולים

למודול של שיתוף האינטרנט יש את יחסי התלות הבאים:

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

התאמה אישית

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

בדיקה

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