פריקת חומרת קשירה

הורדת חיבור בין קשרים מאפשרת למכשירים לחסוך בחשמל ולשפר ביצועים על ידי הורדת תעבורת השיתוף (באמצעות USB, Wi-Fi) לחומרה. תעבורת הקשירה מוותרת על ידי מתן נתיב ישיר בין המודם לציוד ההיקפי, תוך עקיפת מעבד האפליקציה.

מפרטים

החל מ-Android 8.1, מכשירים יכולים להשתמש ב-Tethering Offload כדי להוריד העברת IPv4, IPv6 או IPv4+IPv6 לחומרה.

תכונת ההורדה אינה צריכה להוריד את כל החבילות. המסגרת מסוגלת לטפל בכל חבילה בתוכנה. מנות בקרה מעובדות בדרך כלל בתוכנה. מכיוון שיציאות IPv4 משותפות בין תעבורה קשורה ותעבורת מכשירים, יש לעבד מנות הגדרה/פירוק IPv4 (לדוגמה, SYN/SYN+ACK, FIN) בתוכנה כדי שהקרנל יוכל לבנות את מצב הזרימה. המסגרת מספקת את מטוס הבקרה ומכונות המדינה. הוא גם מספק לחומרה מידע על ממשקים/קידומות במעלה ובהמשך.

עבור IPv4, החומרה מאפשרת למנות הגדרת הפעלה של כתובות רשת IPv4 (NAT) להגיע למעבד. הקרנל יוצר ערכי NAT, והטמעת HAL צופה בערכים מתארי הקבצים שסופקו במסגרת המסגרת ומטפלת בזרימות הללו בחומרה. המשמעות היא שהטמעת HAL אינה דורשת CAP_NET_* מכיוון שה-HAL מקבל שקעי NF_NETLINK_CONNTRACK נפתחים מהמסגרת. מעת לעת, החומרה שולחת עדכוני מצב NAT עבור זרימות פעילות כעת למסגרת, מה שמרענן את ערכי מצב מעקב הליבה התואמים.

עבור IPv6, המסגרת מתכנתת רשימה של קידומות יעד של IPv6 שאסור להוריד אליהן תעבורה. ניתן להוריד את כל שאר החבילות הקשורות.

עבור חשבונאות שימוש בנתונים, סקרי שימוש בנתונים NetworkStatsService גורמים למסגרת לבקש סטטיסטיקות תנועה מחומרה. המסגרת גם מעבירה מגבלות שימוש בנתונים לחומרה באמצעות ה-HAL.

דרישות חומרה

כדי ליישם ביטול עומס של שיתוף אינטרנט בין קשרים, החומרה שלך חייבת להיות מסוגלת להעביר מנות IP בין המודם ל-Wi-Fi/USB מבלי לשלוח את התעבורה דרך המעבד הראשי.

יישום

כדי להפעיל את תכונת ההורדה של שיתוף אינטרנט בין קשרים, עליך ליישם את השניים הבאים גם אחרי תצורה HAL ( IOffloadConfig ) וגם HAL בקרה ( IOffloadControl ).

Config HAL: IOffloadConfig

ה- IOffloadConfig HAL מתחיל את יישום ה-Tethering Offload. המסגרת מספקת למימוש HAL שקעי NF_NETLINK_CONNTRACK מחוברים מראש שהמימוש יכול להשתמש בהם כדי לצפות בזרימות ה-IPv4. יש להאיץ רק זרימות מועברות.

בקרת HAL: IOffloadControl

IOffloadControl HAL שולט ביישום ההורדה. יש ליישם את השיטות הבאות:

  • התחל/עצור חומרת ביטול טעינה: השתמש ב- initOffload/stopOffload ופטור כתובות IP מקומיות או רשתות אחרות מהורדה באמצעות setLocalPrefixes .
  • הגדר ממשק במעלה הזרם, כתובת IPv4 ושער IPv6: השתמש setUpstreamParameters והגדר טווחי כתובות IP במורד הזרם עם addDownstream/removeDownstream .
  • חשבונאות שימוש בנתונים: השתמש getForwardedStats/setDataLimit .

הספק שלך HAL חייב גם לשלוח התקשרויות חוזרות דרך ממשק ITetheringOffloadCallback , המודיע למסגרת של:

  • אירועים אסינכרוניים כגון התחלה ועצירה של הורדה (OffloadCallbackEvent)
  • עדכוני פסק זמן של NAT, שיש לשלוח מעת לעת כדי לציין שזרימת IPv4 ספציפית מכילה תעבורה ואסור להיסגר על ידי הקרנל

מַתַן תוֹקֵף

כדי לאמת את ההטמעה שלך של ביטול טעינה של שיתוף אינטרנט בין ניידים, השתמש בבדיקות ידניות או אוטומטיות כדי לאמת שיתוף אינטרנט בין ניידים ונקודות חמות של Wi-Fi כצפוי. חבילת הבדיקה של הספקים (VTS) מכילה בדיקות עבור HALs offload של קשירה.