הורדת עומס מהחומרה לצורך שיתוף אינטרנט בין ניידים

הפחתת עומס של שיתוף אינטרנט מאפשרת למכשירים לחסוך בחשמל ולשפר את הביצועים על ידי העברת תעבורת הנתונים של שיתוף האינטרנט (דרך 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

ה-HAL‏ IOffloadConfig מתחיל את ההטמעה של הפחתת עומס שיתוף האינטרנט. המסגרת מספקת הטמעה של 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) מכיל בדיקות של מודולי HAL להפחתת עומס של שיתוף אינטרנט.