עדכונים ב-Android 13
עדכון | מידע נוסף |
---|---|
הוספנו את CrossDevice | CrossDevice |
הוספנו פיצול מנהרות | מנהור מפוצל |
סקירה כללית
מודול שיתוף האינטרנט בין מכשירים מאפשר לשתף את החיבור לאינטרנט של מכשיר Android עם מכשירי לקוח מחוברים אחרים, שיכולים להתחבר למכשירים שמשתפים אינטרנט באמצעות Wi-Fi, USB, Bluetooth או אתרנט. המודול הזה כולל את רכיב ה-Tethering (שיתוף אינטרנט באמצעות USB, נקודת גישה ל-Wi-Fi, Bluetooth וכו') ואת התלויות שלו (אינטראקציה עם הרשאת ה-Tethering, IpServer
ו-offloadController
). אפשר לעדכן את המודול הזה, כלומר הוא יכול לקבל עדכונים לפונקציונליות שלו מחוץ למחזור הרגיל של מהדורות Android.
מודול ה-Tethering מאפשר ליצרני ציוד מקורי (OEM) בכל אקוסיסטם Android להשתמש בהטמעה סטנדרטית יחידה שמספקת את היתרונות הבאים.
משתמשי הקצה מקבלים חוויה עקבית במכשירי Android, ועדכוני המודולים פותרים בעיות של פעולה הדדית.
יצרני ציוד מקורי יכולים לעמוד בדרישות של ספקי הסלולר וגם להפחית את העלויות של התאמות אישיות ספציפיות (כי הם לא צריכים ליישם את אותן דרישות בדרכים שונות).
מנהור מפוצל
כדי לתמוך בתרחישי שימוש של פיצול מנהור, נוסף ל-Android 13 API חדש שמאפשר לציין מסלולים להחרגה.
פיצול מנהור הוא הגדרה שבה תנועת גולשים מסוימת עוברת דרך ה-VPN, ותנועת גולשים אחרת לא עוברת דרכו. דוגמה נפוצה היא מצב שבו ארגון רוצה שגלישה כללית באינטרנט, אפליקציות שצורכות רוחב פס רב (למשל YouTube, Netflix) או אפליקציות שרגישות לזמן האחזור (למשל Office 365) יעקפו את ה-VPN. לפני שהיה אפשר להשתמש בפיצול מנהרות, VpnService.Builder
אפשר ללקוח ה-VPN לציין שרק חלק מרשתות המשנה צריכות להיות מנותבות אליו (מסלולי include). באמצעות פיצול מנהרות, אתם יכולים לציין את ההפך: לנתב את כל התנועה ל-VPN, למעט רשתות משנה ספציפיות (מסלולי החרגה).
החתימה של ממשק ה-API החדש לפיצול תעבורה היא:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
התכונה 'שירותים מרכזיים למכשירים שלך', שהושקה ב-Android 13, נועדה לספק טכנולוגיות תקשורת בין מכשירים באמצעות פרוטוקולים סטנדרטיים. הוא מספק ממשקי API ותכונות לחיפוש מכשירים, לחיבור מאומת ולחוויות שימוש אחרות במכשירים שונים.
CrossDevice motivation
- שיתוף פעולה הדוק יותר עם שותפי OEM. יצרני ציוד מקורי יכולים לשלב את מערכת מפתחות החשבון שלהם בהטמעה של CrossDevice במקום להשתמש בפתרון של Google.
- הטמעה בולטת יותר של הפרוטוקול. מודול CrossDevice הוא קוד פתוח, ולכן הוא מספק שקיפות רבה יותר לגבי פרטי ההטמעה וסיפור פרטיות טוב יותר לגבי הטמעה של טכנולוגיות CrossDevice.
CrossDevice module boundary
CrossDevice APIs | ב-packages/modules/CrossDevice/framework
|
שירותים למכשירים מקושרים | ב-packages/modules/CrossDevice/service
|
פורמט חבילה של CrossDevice
הפונקציה העיקרית של המודול הזה כלולה בחבילת APEX. המשאבים נארזים ב-APK.
יחסי תלות בין מכשירים
התכונה 'המשך פעילות במכשיר אחר' תלויה בגורמים הבאים:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- ספריות Proto
אפשרויות להתאמה אישית בין מכשירים
אנחנו מתכננים לאפשר ליצרני ציוד מקורי (OEM) להתאים אישית את ממשק המשתמש של הדף בגודל חצי גיליון באמצעות RRO. אין תוכנית להתאמה אישית של הפונקציונליות.
אסטרטגיית בדיקה בין מכשירים
אנחנו מתכננים להוסיף בדיקות של חבילת הבדיקות לתאימות (CTS) של Android כדי לאמת את הפונקציונליות של CrossDevice, ובדיקות של CrossDevice ל-MTS.
הפחתת עומס של שיתוף אינטרנט ב-eBPF
כדי לספק שיתוף אינטרנט מהיר בלי להסתמך על העברות נתונים בחומרה, ב-Android 11 יש פתרון להעברת נתונים בשיתוף אינטרנט שנקרא eBPF tethering offload for IPv6 download (העברת נתונים למכשיר שמחובר לשיתוף אינטרנט).
מגרסה Android 12, הפונקציונליות הזו (כולל קוד התוכנית eBPF) מסופקת במלואה על ידי מודול ה-Tethering, שתומך בפעולות הבאות:
- הורדה ב-IPv6 (תנועה שזורמת למכשיר שמחובר באמצעות שיתוף אינטרנט)
- העלאה ב-IPv6 (תנועה שזורמת ממכשיר שמחובר באמצעות tethering)
- העלאה והורדה של IPv4 TCP/UDP (תנועה שזורמת אל המכשיר המחובר או ממנו)
- הורדת עומס של eBPF
התכונה הזו מופעלת כברירת מחדל, והמשתמשים יכולים לבטל את ההגדרה config_tether_enable_bpf_offload
באמצעות RRO.
מידע נוסף זמין במאמר בנושא התאמה אישית.
תמיכה ב-IPv4 וב-IPv6
מודול ה-Tethering תומך ב-IPv4 וב-IPv6 dual stack.
ברשתות IPv4, המודול מגדיר תרגום כתובות רשת (NAT) ומאמץ פרוטוקול להקצאת כתובות IP באופן דינמי (DHCP) להקצאת כתובות IP.
ברשתות IPv6, המודול מאמץ הקצאת כתובות IP באמצעות IPv6 stateless address autoconfiguration (SLAAC).
גבול המודול
ב-Android מגרסה 12 ואילך, כל הקבצים והתיקיות ב-packages/modules/Connectivity
נמצאים בהיקף של מודול ה-Tethering.
ב-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 ואילך.
הכללת ConnectivityService
החל מ-Android 12, קוד ConnectivityService
שמטמיע את הרכיב המרכזי של קישוריות L3+ נוסף ל-Tethering APEX. ההיקף של Tethering מתרחב למודול Connectivity.
יחסי תלות בין מודולים
למודול Tethering יש את יחסי התלות הבאים:
- שיטות API ציבוריות ומערכתיות בשרת המערכת
- ממשקי AIDL IPC יציבים מתקשרים עם שרת המערכת
-
tetheroffload
HIDL (מוגדר ב-hardware/interfaces/tetheroffload/
) - שרת DHCP (חלק ממודול Network Stack)
התאמה אישית
אי אפשר להתאים אישית את מודול שיתוף האינטרנט בין מכשירים.
בדיקה
חבילת הבדיקות לתאימות (CTS) של Android מאמתת את הפונקציונליות של מודול ה-Tethering.