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

به‌روزرسانی‌ها در اندروید ۱۳

به‌روزرسانی اطلاعات بیشتر
کراس دیوایس معرفی شد کراس دیوایس
تونل سازی شکاف دار معرفی شد تونل سازی اسپلیت

نمای کلی

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

ماژول Tethering به تولیدکنندگان اصلی تجهیزات (OEM) در سراسر اکوسیستم اندروید این امکان را می‌دهد که از یک پیاده‌سازی مرجع واحد و استاندارد استفاده کنند که مزایای زیر را به همراه دارد.

  • کاربران نهایی تجربه‌ای یکپارچه در دستگاه‌های اندروید دریافت می‌کنند و از طریق به‌روزرسانی‌های ماژول، مشکلات مربوط به قابلیت همکاری برطرف می‌شود.

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

تونل سازی اسپلیت

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

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

امضای API تونل‌سازی اسپلیت جدید عبارت است از:

public Builder excludeRoute(@NonNull IpPrefix prefix)

کراس دیوایس

CrossDevice که در اندروید ۱۳ معرفی شد، با هدف ارائه فناوری‌های ارتباطی بین دستگاه‌ها با استفاده از پروتکل‌های استاندارد ارائه شده است. این پلتفرم APIها و ویژگی‌هایی را برای کشف دستگاه، اتصال احراز هویت شده و سایر تجربیات بین دستگاه‌ها فراهم می‌کند.

انگیزه کراس دیوایس

  • همکاری نزدیک‌تر با شرکای تولیدکننده تجهیزات اصلی (OEM). تولیدکنندگان تجهیزات اصلی می‌توانند سیستم کلید حساب خود را با پیاده‌سازی CrossDevice ادغام کنند، به جای اینکه نیاز به استفاده از راهکار گوگل داشته باشند.
  • پیاده‌سازی قابل مشاهده‌تر پروتکل. ماژول CrossDevice متن‌باز است و امکان مشاهده جزئیات پیاده‌سازی و حفظ حریم خصوصی بهتری را برای پیاده‌سازی فناوری‌های CrossDevice فراهم می‌کند.

مرز ماژول CrossDevice

رابط‌های برنامه‌نویسی کاربردی (API) کراس‌دیوایس در packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
خدمات کراس دیوایس در packages/modules/CrossDevice/service
  • NearbyService - اسکن API

قالب بسته CrossDevice

تابع اصلی این ماژول در یک بسته APEX گنجانده شده است. منابع در یک APK بسته‌بندی شده‌اند.

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

CrossDevice به موارد زیر بستگی دارد:

  • وای فای
  • بلوتوث
  • اینترنت پرسرعت (UWB)
  • ماژول‌ها-کاربردها-پیش‌شرط‌ها
  • کتابخانه‌های اولیه

گزینه‌های سفارشی‌سازی CrossDevice

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

استراتژی تست CrossDevice

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

اتصال اینترنت eBPF به صورت آفلود

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

از اندروید ۱۲، این قابلیت (شامل کد برنامه eBPF) کاملاً توسط ماژول Tethering ارائه می‌شود که از موارد زیر پشتیبانی می‌کند:

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

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

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

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

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

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

مرز ماژول

برای اندروید ۱۲ و بالاتر، تمام فایل‌ها/پوشه‌های موجود در packages/modules/Connectivity در محدوده ماژول Tethering قرار دارند.

برای اندروید ۱۱ و پایین‌تر، ماژول Tethering فایل‌های اندروید ۱۰ زیر را در 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

قالب ماژول

ماژول Tethering ( com.android.tethering ) با فرمت APEX است و برای دستگاه‌هایی که اندروید ۱۱ یا بالاتر دارند، در دسترس است.

شامل سرویس اتصال

از اندروید ۱۲، کد ConnectivityService که مؤلفه مرکزی اتصال L3+ را پیاده‌سازی می‌کند، به Tethering APEX اضافه شده است. دامنه Tethering به یک ماژول Connectivity گسترش می‌یابد.

وابستگی‌های ماژول

ماژول Tethering وابستگی‌های زیر را دارد:

  • متدهای API عمومی و سیستمی در سرور سیستم
  • رابط کاربری پایدار AIDL IPCها با سرور سیستم
  • tetheroffload HIDL (تعریف شده در hardware/interfaces/tetheroffload/ )
  • سرور DHCP (بخشی از ماژول Network Stack)

سفارشی‌سازی

ماژول Tethering از شخصی‌سازی پشتیبانی نمی‌کند.

آزمایش

مجموعه تست سازگاری اندروید (CTS) عملکرد ماژول Tethering را تأیید می‌کند.