قابلیت تترینگ آفلود (Tethering Offload) دستگاهها را قادر میسازد تا با تخلیه ترافیک تترینگ (از طریق USB، Wi-Fi) به سختافزار، در مصرف برق صرفهجویی کرده و عملکرد را بهبود بخشند. ترافیک تترینگ با ارائه یک مسیر مستقیم بین مودم و لوازم جانبی و با دور زدن پردازنده برنامه، تخلیه میشود.
مشخصات
از اندروید ۸.۱ به بعد، دستگاهها میتوانند از قابلیت tethering offload برای انتقال IPv4، IPv6 یا IPv4+IPv6 به سختافزار استفاده کنند.
ویژگی آفلود نیازی به آفلود کردن همه بستهها ندارد. این چارچوب قادر به مدیریت هر بستهای در نرمافزار است. بستههای کنترلی معمولاً در نرمافزار پردازش میشوند. از آنجا که پورتهای IPv4 بین ترافیک تترینگ و ترافیک دستگاه به اشتراک گذاشته میشوند، بستههای راهاندازی/حذف جلسه IPv4 (به عنوان مثال، SYN/SYN+ACK، FIN) باید در نرمافزار پردازش شوند تا هسته بتواند وضعیت جریان را بسازد. این چارچوب، صفحه کنترل و ماشینهای حالت را فراهم میکند. همچنین اطلاعاتی در مورد رابطها/پیشوندهای بالادست و پاییندست را در اختیار سختافزار قرار میدهد.
برای IPv4، سختافزار به بستههای تنظیم جلسه ترجمه آدرس شبکه (NAT) IPv4 اجازه میدهد تا به CPU برسند. هسته ورودیهای NAT را ایجاد میکند و پیادهسازی HAL ورودیها را از توصیفگرهای فایل ارائه شده توسط چارچوب مشاهده کرده و این جریانها را در سختافزار مدیریت میکند. این بدان معناست که پیادهسازی HAL نیازی به CAP_NET_* ندارد زیرا HAL سوکتهای NF_NETLINK_CONNTRACK باز شده را از چارچوب دریافت میکند. سختافزار به صورت دورهای بهروزرسانیهای وضعیت NAT را برای جریانهای فعال فعلی به چارچوب ارسال میکند که ورودیهای وضعیت ردیابی اتصال هسته مربوطه را بهروزرسانی میکند.
برای IPv6، این چارچوب فهرستی از پیشوندهای مقصد IPv6 را برنامهریزی میکند که ترافیک نباید به آنها منتقل شود. سایر بستههای متصل میتوانند منتقل شوند.
برای حسابداری مصرف داده، نظرسنجیهای مصرف داده NetworkStatsService باعث میشود که چارچوب، آمار ترافیک را از سختافزار درخواست کند. این چارچوب همچنین محدودیتهای مصرف داده را از طریق HAL به سختافزار اطلاع میدهد.
الزامات سختافزاری
برای پیادهسازی آفلود تترینگ، سختافزار شما باید قادر به ارسال بستههای IP بین مودم و Wi-Fi/USB بدون ارسال ترافیک از طریق پردازنده اصلی باشد.
پیادهسازی
برای فعال کردن ویژگی tethering offload، باید این دو مورد را در پیکربندی HAL ( IOffloadConfig ) و کنترل HAL ( IOffloadControl ) پیادهسازی کنید.
پیکربندی HAL: IOffloadConfig
IOffloadConfig HAL پیادهسازی tethering offload را آغاز میکند. این چارچوب، پیادهسازی HAL را با سوکتهای NF_NETLINK_CONNTRACK از پیش متصل شده فراهم میکند که پیادهسازی میتواند از آنها برای مشاهده جریانهای IPv4 استفاده کند. فقط جریانهای ارسالی باید شتابدهی شوند.
کنترل HAL: کنترل IOoffload
IOffloadControl HAL پیادهسازی offload را کنترل میکند. متدهای زیر باید پیادهسازی شوند:
- شروع/توقف تخلیه سختافزاری: از
initOffload/stopOffloadاستفاده کنید و آدرسهای IP محلی یا سایر شبکهها را باsetLocalPrefixesاز تخلیه معاف کنید. - تنظیم رابط بالادست، آدرس IPv4 و دروازههای IPv6: از
setUpstreamParametersاستفاده کنید و محدوده آدرسهای IP پاییندست را باaddDownstream/removeDownstreamپیکربندی کنید. - حسابداری مصرف داده:
getForwardedStats/setDataLimitاستفاده کنید.
فروشنده شما HAL همچنین باید از طریق رابط ITetheringOffloadCallback ، callbackهایی ارسال کند که موارد زیر را به چارچوب اطلاع میدهد:
- رویدادهای غیرهمزمان مانند شروع و توقف آفلود (OffloadCallbackEvent)
- بهروزرسانیهای زمانبندی NAT، که باید بهصورت دورهای ارسال شوند تا نشان دهند که یک جریان خاص IPv4 حاوی ترافیک است و نباید توسط هسته بسته شود.
اعتبارسنجی
برای اعتبارسنجی پیادهسازی tethering offload، از تست دستی یا خودکار برای تأیید عملکرد tethering و Wi-Fi hotspot مطابق انتظار استفاده کنید. مجموعه تست فروشنده (VTS) شامل تستهایی برای HALهای tethering offload است.