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

העברת עומס (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 להעברת עומסים של חיבור לרשת.