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