عملکرد نظارت و ردیابی مصرف داده در هر برنامه و واگذار شده به ماژول xt_qtaguid در هسته لینوکس Android-3.0 ( kernel/net/netfilter/xt_qtaguid
) متکی است. عملکرد برچسبگذاری سوکت در چارچوب ( system/core/libcutils/qtaguid.c
) عمدتاً به وجود رابط /proc/net/xt_qtaguid/ctrl
که توسط ماژول کرنل xt_qtaguid
صادر میشود متکی است.
ماژول netfilter quota2
(در اصل بخشی از xtables-addons
) به این قابلیت اجازه می دهد تا محدودیت های سهمیه نامگذاری شده را تنظیم کند و برای پشتیبانی از اطلاع رسانی فضای کاربران در هنگام رسیدن به محدودیت های خاص گسترش یافته است. پس از رسیدن به محدودیت سهمیه، ماژول quota2
تمام ترافیک شبکه بعدی را دور می زند. چارچوب همچنین میتواند قوانین اضافی را برای محدود کردن ترافیک داده پسزمینه برای یک برنامه مشخص کند (به com.android.server.NetworkManagementSocketTagger.setKernelCounterSet
و android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND
مراجعه کنید).
چگونه کار می کند؟
ماژول netfilter qtaguid
ترافیک شبکه را بر اساس هر سوکت برای هر برنامه با استفاده از UID منحصر به فرد برنامه مالک ردیابی می کند. دو جزء برچسب مرتبط با هر سوکت در سیستم وجود دارد. اولین مورد UID است که به طور منحصر به فرد برنامه ای را که مسئول انتقال داده است شناسایی می کند (لینوکس امکان نسبت دادن مالکیت هر سوکت شبکه را به UID برنامه تماس می دهد). مؤلفه تگ دوم برای پشتیبانی از خصوصیات اضافی ترافیک در دستههای مشخص شده توسعهدهنده برنامه استفاده میشود. با استفاده از این تگهای سطح برنامه، یک برنامه میتواند ترافیک را در چندین زیر مجموعه نمایه کند.
در مورد برنامههایی که انتقال دادههای شبکه را بهعنوان سرویس ارائه میدهند، مانند دانلود منیجر، سرویس پخش رسانه و غیره، میتوان با استفاده از TrafficStats.setThreadStatsUid()
مالکیت انتقال دادههای شبکه را به UID برنامه درخواستکننده نسبت داد. TrafficStats.setThreadStatsUid()
فراخوانی تابع. تماسگیرنده باید مجوز « android.permission.MODIFY_NETWORK_ACCOUNTING
» را برای تخصیص مجدد مالکیت ترافیک شبکه داشته باشد.
عملکرد نظارت و ردیابی مصرف داده در هر برنامه و واگذار شده به ماژول xt_qtaguid در هسته لینوکس Android-3.0 ( kernel/net/netfilter/xt_qtaguid
) متکی است. عملکرد برچسبگذاری سوکت در چارچوب ( system/core/libcutils/qtaguid.c
) عمدتاً به وجود رابط /proc/net/xt_qtaguid/ctrl
که توسط ماژول کرنل xt_qtaguid
صادر میشود متکی است.
ماژول netfilter quota2
(در اصل بخشی از xtables-addons
) به این قابلیت اجازه می دهد تا محدودیت های سهمیه نامگذاری شده را تنظیم کند و برای پشتیبانی از اطلاع رسانی فضای کاربران در هنگام رسیدن به محدودیت های خاص گسترش یافته است. پس از رسیدن به محدودیت سهمیه، ماژول quota2
تمام ترافیک شبکه بعدی را دور می زند. چارچوب همچنین میتواند قوانین اضافی را برای محدود کردن ترافیک داده پسزمینه برای یک برنامه مشخص کند (به com.android.server.NetworkManagementSocketTagger.setKernelCounterSet
و android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND
مراجعه کنید).
چگونه کار می کند؟
ماژول netfilter qtaguid
ترافیک شبکه را بر اساس هر سوکت برای هر برنامه با استفاده از UID منحصر به فرد برنامه مالک ردیابی می کند. دو جزء برچسب مرتبط با هر سوکت در سیستم وجود دارد. اولین مورد UID است که به طور منحصر به فرد برنامه ای را که مسئول انتقال داده است شناسایی می کند (لینوکس امکان نسبت دادن مالکیت هر سوکت شبکه را به UID برنامه تماس می دهد). مؤلفه تگ دوم برای پشتیبانی از خصوصیات اضافی ترافیک در دستههای مشخص شده توسعهدهنده برنامه استفاده میشود. با استفاده از این تگهای سطح برنامه، یک برنامه میتواند ترافیک را در چندین زیر مجموعه نمایه کند.
در مورد برنامههایی که انتقال دادههای شبکه را بهعنوان سرویس ارائه میدهند، مانند دانلود منیجر، سرویس پخش رسانه و غیره، میتوان با استفاده از TrafficStats.setThreadStatsUid()
مالکیت انتقال دادههای شبکه را به UID برنامه درخواستکننده نسبت داد. TrafficStats.setThreadStatsUid()
فراخوانی تابع. تماسگیرنده باید مجوز « android.permission.MODIFY_NETWORK_ACCOUNTING
» را برای تخصیص مجدد مالکیت ترافیک شبکه داشته باشد.
عملکرد نظارت و ردیابی مصرف داده در هر برنامه و واگذار شده به ماژول xt_qtaguid در هسته لینوکس Android-3.0 ( kernel/net/netfilter/xt_qtaguid
) متکی است. عملکرد برچسبگذاری سوکت در چارچوب ( system/core/libcutils/qtaguid.c
) عمدتاً به وجود رابط /proc/net/xt_qtaguid/ctrl
که توسط ماژول کرنل xt_qtaguid
صادر میشود متکی است.
ماژول netfilter quota2
(در اصل بخشی از xtables-addons
) به این قابلیت اجازه می دهد تا محدودیت های سهمیه نامگذاری شده را تنظیم کند و برای پشتیبانی از اطلاع رسانی فضای کاربران در هنگام رسیدن به محدودیت های خاص گسترش یافته است. پس از رسیدن به محدودیت سهمیه، ماژول quota2
تمام ترافیک شبکه بعدی را دور می زند. چارچوب همچنین میتواند قوانین اضافی را برای محدود کردن ترافیک داده پسزمینه برای یک برنامه مشخص کند (به com.android.server.NetworkManagementSocketTagger.setKernelCounterSet
و android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND
مراجعه کنید).
چگونه کار می کند؟
ماژول netfilter qtaguid
ترافیک شبکه را بر اساس هر سوکت برای هر برنامه با استفاده از UID منحصر به فرد برنامه مالک ردیابی می کند. دو جزء برچسب مرتبط با هر سوکت در سیستم وجود دارد. اولین مورد UID است که به طور منحصر به فرد برنامه ای را که مسئول انتقال داده است شناسایی می کند (لینوکس امکان نسبت دادن مالکیت هر سوکت شبکه را به UID برنامه تماس می دهد). مؤلفه تگ دوم برای پشتیبانی از خصوصیات اضافی ترافیک در دستههای مشخص شده توسعهدهنده برنامه استفاده میشود. با استفاده از این تگهای سطح برنامه، یک برنامه میتواند ترافیک را در چندین زیر مجموعه نمایه کند.
در مورد برنامههایی که انتقال دادههای شبکه را بهعنوان سرویس ارائه میدهند، مانند دانلود منیجر، سرویس پخش رسانه و غیره، میتوان با استفاده از TrafficStats.setThreadStatsUid()
مالکیت انتقال دادههای شبکه را به UID برنامه درخواستکننده نسبت داد. TrafficStats.setThreadStatsUid()
فراخوانی تابع. تماسگیرنده باید مجوز « android.permission.MODIFY_NETWORK_ACCOUNTING
» را برای تخصیص مجدد مالکیت ترافیک شبکه داشته باشد.