از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
بارگذاری سختافزار 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های تخلیه بار اتصال اینترنت است.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Tethering hardware offload\n\nTethering offload enables devices to save power and improve performance by\noffloading the tethering traffic (over USB, Wi-Fi) to the hardware. The\ntethering traffic is offloaded by providing a direct path between the modem and\nthe peripherals, bypassing the app processor.\n\nSpecifications\n--------------\n\nStarting in Android 8.1, devices can use tethering offload to\noffload IPv4, IPv6, or IPv4+IPv6 forwarding to the hardware.\n\nThe offload feature doesn't need to offload all packets. The framework is\ncapable of handling any packet in software. Control packets are typically\nprocessed in software. Because IPv4 ports are shared between tethered traffic\nand device traffic, IPv4 session setup/teardown packets (for\nexample, SYN/SYN+ACK, FIN) must be processed in software so the kernel can\nconstruct the flow state. The framework provides the control plane and state\nmachines. It also provides the hardware with information on upstream and\ndownstream interfaces/prefixes.\n\nFor IPv4, the hardware allows IPv4 network address translation (NAT) session\nsetup packets to reach the CPU. The kernel creates NAT entries, and the HAL\nimplementation observes the entries from the framework-provided file descriptors\nand handles these flows in hardware. This means the HAL implementation doesn't\nrequire `CAP_NET_*` because the HAL gets opened `NF_NETLINK_CONNTRACK` sockets\nfrom the framework. Periodically, the hardware sends NAT state updates for\ncurrently active flows to the framework, which refreshes the corresponding\nkernel connection tracking state entries.\n\nFor IPv6, the framework programs a list of IPv6 destination prefixes to which\ntraffic must not be offloaded. All other tethered packets can be offloaded.\n\nFor data usage accounting, `NetworkStatsService` data usage polls causes the\nframework to request traffic stats from hardware. The framework also\ncommunicates data usage limits to the hardware via the HAL.\n\nHardware requirements\n---------------------\n\nTo implement tethering offload, your hardware must be capable of forwarding IP\npackets between the modem and Wi-Fi/USB without sending the traffic through the\nmain processor.\n\nImplementation\n--------------\n\nTo enable the tethering offload feature, you must implement the two following\nboth a config HAL (`IOffloadConfig`) and a control HAL (`IOffloadControl`).\n\n### Config HAL: IOffloadConfig\n\nThe\n[`IOffloadConfig`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/tetheroffload/config/1.0/IOffloadConfig.hal)\nHAL starts the tethering offload implementation. The framework provides the HAL\nimplementation with pre-connected `NF_NETLINK_CONNTRACK` sockets that the\nimplementation can use to observe the IPv4 flows. Only forwarded flows must be\naccelerated.\n\n### Control HAL: IOffloadControl\n\nThe\n[`IOffloadControl`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/tetheroffload/control/1.0/IOffloadControl.hal)\nHAL controls the offload implementation. The following methods must be\nimplemented:\n\n- Start/stop offload hardware: Use `initOffload/stopOffload` and exempt local IP addresses or other networks from offload with `setLocalPrefixes`.\n- Set upstream interface, IPv4 address, and IPv6 gateways: Use `setUpstreamParameters` and configure downstream IP address ranges with `addDownstream/removeDownstream`.\n- Data usage accounting: Use `getForwardedStats/setDataLimit`.\n\nYour vendor HAL must also send callbacks through the `ITetheringOffloadCallback`\ninterface, which informs the framework of:\n\n- Asynchronous events such as offload being started and stopped (OffloadCallbackEvent)\n- NAT timeout updates, which must be sent periodically to indicate that a specific IPv4 flow contains traffic and must not be closed by the kernel\n\nValidation\n----------\n\nTo validate your implementation of tethering offload, use manual or automated\ntesting to verify tethering and Wi-Fi hotspot work as expected. The\n[Vendor Test Suite (VTS)](/docs/core/tests/vts)\ncontains tests for the tethering offload HALs."]]