اتصال به اینترنت با تلفن همراه

به‌روزرسانی‌های Android 13

به‌روزرسانی اطلاعات بیشتر
«بین‌دستگاهی» معرفی شد CrossDevice
تونل‌سازی شکاف معرفی شد تونل‌سازی تقسیم‌شده

نمای کلی

واحد «اشتراک‌گذاری اینترنت» اتصال اینترنت دستگاه Android را با دیگر دستگاه‌های مشتری متصل هم‌رسانی می‌کند. این دستگاه‌ها می‌توانند ازطریق Wi-Fi،‏ USB، بلوتوث، یا اترنت به دستگاه‌های اشتراک‌گذاری اینترنت متصل شوند. این واحد شامل مؤلفه اتصال (USB، نقطه دسترسی Wi-Fi، بلوتوث، و غیره) و وابستگی‌های آن (تعامل با حق اتصال، IpServer، و offloadController) می‌شود. این واحد به‌روزرسانی‌پذیر است، یعنی می‌تواند خارج از چرخه انتشار عادی Android، به‌روزرسانی‌های عملکردی دریافت کند.

ماژول «اتصال به اینترنت ازطریق تلفن» به سازندگان اصلی تجهیزات در سراسر بوم‌سازگان Android امکان می‌دهد از یک پیاده‌سازی مرجع استاندارد استفاده کنند که مزایای زیر را به‌همراه دارد.

  • کاربران نهایی در دستگاه‌های Android تجربه یکسانی دارند و مشکلات قابلیت همکاری ازطریق به‌روزرسانی‌های واحد برطرف می‌شود.

  • تولیدکنندگان تجهیزات اصلی می‌توانند الزامات شرکت مخابراتی را برآورده کنند و درعین‌حال هزینه‌های سفارشی‌سازی‌های فردی را کاهش دهند (زیرا نیازی به پیاده‌سازی‌های مختلف از الزامات یکسان به روش‌های مختلف ندارند).

تونل تقسیم‌شده

برای پشتیبانی از موارد استفاده از تونل‌سازی تقسیم‌شده، میانای برنامه‌سازی کاربردی جدیدی به Android 13 اضافه شده است تا مسیرهای مستثنا را مشخص کند.

تونل‌زنی تقسیم‌شده به پیکربندی‌ای اشاره دارد که در آن ترافیک خاصی ازطریق وی‌پی‌ان منتقل می‌شود درحالی‌که ترافیک دیگر منتقل نمی‌شود. مثال رایج این است که سازمانی بخواهد برنامه‌هایی با مصرف پهنای باند بالا (برای مثال، YouTube،‏ Netflix) یا برنامه‌های حساس به تأخیر (برای مثال، Office 365) از وی‌پی‌ان عبور کنند و از وب‌گردی عمومی استفاده کنند. قبل‌از اینکه تونل تقسیم‌شده دردسترس قرار بگیرد، VpnService.Builder به کارخواه VPN اجازه می‌داد نشان دهد که فقط برخی‌از زیرشبکه‌ها باید به آن هدایت شوند (مسیرهای شامل). با تونل‌سازی تقسیم‌شده، می‌توانید معکوس را مشخص کنید: همه ترافیک را به وی‌پی‌ان هدایت کنید، به‌جز زیرشبکه‌های خاص (مسیرهای مستثنی).

امضای میانای برنامه‌سازی کاربردی جدید تونل‌سازی شکافته به‌صورت زیر است:

public Builder excludeRoute(@NonNull IpPrefix prefix)

بین‌دستگاهی

«بین‌دستگاهی» که در Android 13 معرفی شد، هدفش ارائه فناوری‌های ارتباط بین‌دستگاهی بااستفاده از پروتکل‌های استاندارد است. این سرویس میاناهای برنامه‌سازی کاربردی و ویژگی‌هایی برای کاوش دستگاه، اتصال اصالت‌سنجی‌شده، و دیگر تجربه‌های بین‌دستگاهی ارائه می‌دهد.

انگیزه بین‌دستگاهی

  • همکاری نزدیک‌تر با شرکای سازنده اصلی محصول. «تولیدکنندگان تجهیزات اصلی» می‌توانند سیستم کلید حساب خودشان را با پیاده‌سازی «بین‌دستگاهی» ادغام کنند و دیگر نیازی به استفاده از راهکار Google نداشته باشند.
  • پیاده‌سازی آشکارتر پروتکل. واحد «بین‌دستگاهی» منبع باز است و جزئیات پیاده‌سازی و داستان حریم خصوصی بهتری برای پیاده‌سازی فناوری‌های «بین‌دستگاهی» ارائه می‌دهد.

محدوده واحد «بین‌دستگاهی»

میاناهای برنامه‌سازی کاربردی بین‌دستگاهی در packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
خدمات بین‌دستگاهی در packages/modules/CrossDevice/service
  • NearbyService - scanning API

قالب بسته CrossDevice

عملکرد اصلی این واحد در بسته APEX قرار دارد. منابع در فایل APK بسته‌بندی شده‌اند.

وابستگی‌های بین‌دستگاهی

«چنددستگاهی» به موارد زیر بستگی دارد:

  • Wi-Fi
  • بلوتوث
  • باند فوق‌وسیع
  • modules-utils-preconditions
  • کتابخانه‌های Proto

گزینه‌های سفارشی‌سازی بین‌دستگاهی

قصد داریم به OEMS اجازه دهیم واسط کاربر را برای نیم‌برگ ازطریق RRO سفارشی‌سازی کند. برنامه‌ای برای سفارشی‌سازی عملکرد وجود ندارد.

راهبرد آزمایش بین‌دستگاهی

قصد داریم آزمایش‌های «مجموعه آزمون سازگاری Android» (CTS) را برای تأیید عملکرد «بین‌دستگاهی» و آزمایش بین‌دستگاهی به MTS اضافه کنیم.

انتقال بار اشتراک‌گذاری اینترنت eBPF

برای ارائه اینترنت‌بخشی با سرعت بالا بدون اتکا به تخلیه بار سخت‌افزاری، Android 11 راهکار تخلیه بار نرم‌افزاری اینترنت‌بخشی به‌نام تخلیه بار اینترنت‌بخشی eBPF برای بارگیری IPv6 (جریان ترافیک به دستگاه متصل‌شده) ارائه می‌دهد.

از Android 12، این عملکرد (ازجمله کد برنامه eBPF) به‌طور کامل توسط واحد «اشتراک‌گذاری اینترنت» ارائه می‌شود که از موارد زیر پشتیبانی می‌کند:

  • بارگیری IPv6 (جریان ترافیک به دستگاه متصل‌شده)
  • بارگذاری IPv6 (ترافیک جاری از دستگاه متصل‌شده)
  • بارگذاری و پایین‌دست IPv4 TCP/UDP (ترافیک جاری به/از دستگاه اتصال‌یافته)
  • انتقال بار eBPF

این ویژگی به‌طور پیش‌فرض فعال است، کاربران می‌توانند پیکربندی config_tether_enable_bpf_offload را با RRO به نادرست لغو کنند. برای اطلاعات بیشتر، سفارشی‌سازی را ببینید.

پشتیبانی از IPv4 و IPv6

ماژول «اتصال اینترنت» از پشته دوگانه IPv4 و IPv6 پشتیبانی می‌کند.

  • برای شبکه‌های IPv4، واحد ترجمه نشانی شبکه (NAT) راه‌اندازی می‌کند و از پروتکل پیکربندی میزبان پویا (DHCP) برای تخصیص نشانی IP استفاده می‌کند.

  • برای شبکه‌های IPv6، واحد از «پیکربندی خودکار نشانی بدون وضعیت IPv6» (SLAAC) برای تخصیص نشانی IP استفاده می‌کند.

مرز واحد

برای Android نسخه ۱۲ و بالاتر، همه فایل‌ها/پوشه‌های زیر packages/modules/Connectivity در محدوده ماژول «اتصال اینترنت» قرار دارند.

برای Android 11 و نسخه‌های پایین‌تر، واحد «اشتراک‌گذاری اینترنت» فایل‌های Android 10 زیر را در packages/modules/Tethering دارد.

  • frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
  • frameworks/base/services/core/java/com/android/server/connectivity/tethering/
  • frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
  • frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
  • frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
  • frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
  • frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
  • frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
  • frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
  • frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
  • frameworks/base/core/java/android/os/INetworkManagementService.aidl
  • frameworks/base/core/java/android/bluetooth/BluetoothPan.java
  • frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
  • packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
  • packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java

قالب واحد

واحد «اشتراک‌گذاری اینترنت» (com.android.tethering) در قالب APEX است و برای دستگاه‌های دارای Android 11 یا بالاتر دردسترس است.

افزودن ConnectivityService

از Android 12، کد ConnectivityService که مؤلفه مرکزی اتصال L3+‎ را پیاده‌سازی می‌کند به Tethering APEX اضافه شده است. دامنه «اتصال اینترنت» به واحد «اتصال‌پذیری» گسترش می‌یابد.

وابستگی‌های واحد

واحد «اشتراک‌گذاری اینترنت» وابستگی‌های زیر را دارد:

  • روش‌های میانای برنامه‌سازی کاربردی عمومی و سیستم در سرور سیستم
  • میانای IPCهای AIDL پایدار با سرور سیستم
  • ‫tetheroffload HIDL (تعریف‌شده در hardware/interfaces/tetheroffload/)
  • سرور DHCP (بخشی از واحد «پشته شبکه»)

سفارشی‌سازی

واحد «هم‌رسانی اینترنت» از سفارشی‌سازی پشتیبانی نمی‌کند.

آزمایش

«مجموعه آزمایش سازگاری Android»‏ (CTS) عملکرد ماژول «اتصال اینترنت» را تأیید می‌کند.