העברת תעבורת טת'רינג מאפשרת למכשירים לחסוך בחשמל ולשפר את הביצועים על ידי העברת תעבורת הטת'רינג (דרך USB או Wi-Fi) לחומרה. תנועת הגלישה בסלולר מועברת על ידי יצירת נתיב ישיר בין המודם לבין הציוד ההיקפי, תוך עקיפת מעבד האפליקציות.
על המוצר
החל מ-Android 8.1, מכשירים יכולים להשתמש בהעברת נתונים ממכשיר למחשב כדי להעביר את ההפניה של IPv4, IPv6 או IPv4+IPv6 לחומרה.
התכונה להעברת עומס לא צריכה להעביר את כל החבילות. המסגרת יכולה לטפל בכל חבילה בתוכנה. חבילות בקרה בדרך כלל מעובדות בתוכנה. מכיוון שיציאות IPv4 משותפות לתעבורת נתונים בחיבור קבוע ולתעבורת נתונים במכשיר, צריך לעבד בחבילות תוכנה של הגדרת סשן IPv4 או פירוק סשן IPv4 (לדוגמה, SYN/SYN+ACK, FIN) כדי שהליבה תוכל ליצור את מצב הזרימה. המסגרת מספקת את מישור הבקרה ואת מכונות המצב. הוא גם מספק לחומרה מידע על ממשקים או קידומות של העלאה והורדה.
ב-IPv4, החומרה מאפשרת לחבילות של הגדרת סשן של תרגום כתובות רשת (NAT) ב-IPv4 להגיע למעבד. הליבה יוצרת רשומות NAT, וההטמעה של HAL מתבססת על הרשומות מתיאורי הקבצים שסופקו על ידי המסגרת ומטפלת בזרימות האלה בחומרה. המשמעות היא שההטמעה של HAL לא דורשת CAP_NET_* כי HAL מקבל שקעי NF_NETLINK_CONNTRACK מהמסגרת. מדי פעם, החומרה שולחת עדכונים לגבי מצב ה-NAT של זרימות פעילות כרגע ל-framework, שמבצע רענון של הרשומות התואמות של מצב מעקב החיבורים בקרנל.
ב-IPv6, המסגרת מתכנתת רשימה של קידומות יעד של IPv6 שאליהן אסור להעביר תנועה. אפשר להעביר את כל החבילות האחרות שקשורות ל-tethering.
לצורך חישוב השימוש בנתונים, NetworkStatsService סקרים לגבי השימוש בנתונים גורמים למסגרת לבקש נתונים סטטיסטיים על התנועה מהחומרה. המסגרת גם מעבירה את מגבלות השימוש בנתונים לחומרה באמצעות HAL.
דרישות חומרה
כדי להטמיע העברה של נתוני tethering, החומרה צריכה להיות מסוגלת להעביר מנות IP בין המודם ל-Wi-Fi או ל-USB בלי לשלוח את התנועה דרך המעבד הראשי.
הטמעה
כדי להפעיל את התכונה של העברת נתונים ממכשיר אחד למכשיר אחר, צריך להטמיע את שני הממשקים הבאים של HAL: config HAL (IOffloadConfig) ו-control HAL (IOffloadControl).
Config HAL: IOffloadConfig
IOffloadConfig
ה-HAL מתחיל את ההטמעה של העברת הנתונים לחיבור לאינטרנט. המסגרת מספקת הטמעה של HAL
עם שקעי NF_NETLINK_CONNTRACK שמחוברים מראש, שההטמעה יכולה להשתמש בהם כדי לצפות בזרימות של IPv4. צריך להאיץ רק זרימות שהועברו.
שכבת הפשטת חומרה (HAL) של בקרה: IOffloadControl
HAL IOffloadControl שולט בהטמעה של העברת העומס. צריך להטמיע את השיטות הבאות:
- הפעלה או השבתה של העברת נתונים לחומרה: משתמשים ב-
initOffload/stopOffloadומוציאים כתובות IP מקומיות או רשתות אחרות מהעברת נתונים לחומרה באמצעותsetLocalPrefixes. - מגדירים את הממשק של השרת העליון, כתובת IPv4 ושערי IPv6: משתמשים ב-
setUpstreamParametersומגדירים טווחי כתובות IP של השרת התחתון באמצעותaddDownstream/removeDownstream. - ניהול חשבונות של שימוש בנתונים: משתמשים ב-
getForwardedStats/setDataLimit.
בנוסף, ה-HAL של הספק צריך לשלוח קריאות חוזרות דרך הממשק ITetheringOffloadCallback
כדי לעדכן את המסגרת לגבי:
- אירועים אסינכרוניים כמו התחלה והפסקה של העברה (OffloadCallbackEvent)
- עדכוני פסק זמן של NAT, שצריך לשלוח אותם מעת לעת כדי לציין שזרימת IPv4 ספציפית מכילה תנועה ואסור לסגור אותה על ידי ליבת המערכת
אימות
כדי לאמת את ההטמעה של העברת תעבורה משיתוף אינטרנט בין מכשירים, צריך להשתמש בבדיקות ידניות או אוטומטיות כדי לוודא ששיתוף האינטרנט בין מכשירים והנקודה לשיתוף אינטרנט ב-Wi-Fi פועלים כמצופה. Vendor Test Suite (VTS) מכיל בדיקות ל-HALs של העברת נתונים ל-Tethering.