بارگذاری سخت‌افزار Tethering

تخلیه بار به اینترنت به دستگاه‌ها امکان می‌دهد با تخلیه ترافیک اتصال اینترنت (از طریق USB، Wi-Fi) به سخت‌افزار، در مصرف برق صرفه‌جویی کرده و عملکرد را بهبود بخشند. ترافیک تترینگ با ایجاد یک مسیر مستقیم بین مودم و دستگاه‌های جانبی و دور زدن پردازنده برنامه تخلیه می‌شود.

مشخصات فنی

با شروع Android 8.1، دستگاه‌ها می‌توانند از بارگذاری اینترنت برای بارگذاری IPv4، IPv6 یا IPv4+IPv6 به سخت‌افزار استفاده کنند.

ویژگی Offload نیازی به تخلیه همه بسته ها ندارد. این فریم ورک قادر است هر بسته ای را در نرم افزار مدیریت کند. بسته های کنترلی معمولاً در نرم افزار پردازش می شوند. از آنجایی که پورت‌های IPv4 بین ترافیک متصل و ترافیک دستگاه به اشتراک گذاشته می‌شوند، بسته‌های راه‌اندازی/تحلیل جلسه IPv4 (به عنوان مثال، SYN/SYN+ACK، FIN) باید در نرم‌افزار پردازش شوند تا هسته بتواند وضعیت جریان را بسازد. این چارچوب، صفحه کنترل و ماشین‌های حالت را فراهم می‌کند. همچنین اطلاعات مربوط به رابط ها/پیوندهای بالادستی و پایین دستی را در اختیار سخت افزار قرار می دهد.

برای IPv4، سخت افزار به بسته های تنظیم جلسه ترجمه آدرس شبکه IPv4 (NAT) اجازه می دهد تا به CPU برسند. هسته ورودی‌های NAT را ایجاد می‌کند و اجرای HAL ورودی‌ها را از توصیف‌گرهای فایل ارائه‌شده در چارچوب مشاهده می‌کند و این جریان‌ها را در سخت‌افزار مدیریت می‌کند. این بدان معناست که اجرای HAL به CAP_NET_* نیاز ندارد زیرا HAL سوکت‌های NF_NETLINK_CONNTRACK را از چارچوب باز می‌کند. به صورت دوره‌ای، سخت‌افزار به‌روزرسانی‌های وضعیت NAT را برای جریان‌های فعال فعلی به چارچوب ارسال می‌کند، که ورودی‌های وضعیت ردیابی اتصال هسته مربوطه را تازه می‌کند.

برای IPv6، چارچوب فهرستی از پیشوندهای مقصد IPv6 را برنامه‌ریزی می‌کند که ترافیک نباید به آن‌ها تخلیه شود. تمام بسته های متصل دیگر را می توان بارگذاری کرد.

برای حسابداری مصرف داده، نظرسنجی های استفاده از داده NetworkStatsService باعث می شود که چارچوب آمار ترافیک را از سخت افزار درخواست کند. این چارچوب همچنین محدودیت های استفاده از داده را از طریق HAL به سخت افزار منتقل می کند.

الزامات سخت افزاری

برای پیاده سازی تترینگ تخلیه، سخت افزار شما باید قادر باشد بسته های IP را بین مودم و Wi-Fi/USB بدون ارسال ترافیک از طریق پردازنده اصلی ارسال کند.

پیاده سازی

برای فعال کردن ویژگی offload کردن اینترنت، باید دو مورد زیر را اجرا کنید: یک پیکربندی HAL ( IOffloadConfig ) و یک کنترل HAL ( IOffloadControl ).

پیکربندی HAL: IOffloadConfig

IOffloadConfig HAL پیاده سازی تخلیه بار اتصال اینترنت را شروع می کند. این چارچوب، اجرای HAL را با سوکت‌های NF_NETLINK_CONNTRACK از قبل متصل شده ارائه می‌کند که پیاده‌سازی می‌تواند برای مشاهده جریان‌های IPv4 از آنها استفاده کند. فقط جریان های ارسالی باید تسریع شوند.

کنترل HAL: IOffloadControl

IOffloadControl HAL اجرای offload را کنترل می کند. روش های زیر باید اجرا شوند:

  • Start/stop offload hardware: از initOffload/stopOffload استفاده کنید و آدرس های IP محلی یا سایر شبکه ها را از بارگیری با setLocalPrefixes معاف کنید.
  • تنظیم رابط بالادست، آدرس IPv4 و دروازه های IPv6: از setUpstreamParameters استفاده کنید و محدوده آدرس IP پایین دستی را با addDownstream/removeDownstream پیکربندی کنید.
  • حسابداری مصرف داده: از getForwardedStats/setDataLimit استفاده کنید.

HAL فروشنده شما همچنین باید از طریق واسط ITetheringOffloadCallback تماس‌های برگشتی ارسال کند، که چارچوب موارد زیر را به شما اطلاع می‌دهد:

  • رویدادهای ناهمزمان مانند شروع و توقف بارگیری (OffloadCallbackEvent)
  • به‌روزرسانی‌های زمان‌بندی NAT، که باید به‌طور دوره‌ای ارسال شوند تا نشان دهند که یک جریان IPv4 خاص حاوی ترافیک است و نباید توسط هسته بسته شود.

اعتبار سنجی

برای تأیید اعتبار اجرای تخلیه بارگذاری اینترنت با اینترنت، از آزمایش دستی یا خودکار برای تأیید عملکرد اتصال اینترنت و نقطه اتصال Wi-Fi همانطور که انتظار می‌رود استفاده کنید. مجموعه تست فروشنده (VTS) شامل آزمایش‌هایی برای HAL‌های تخلیه بار اتصال اینترنت است.