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

به روز رسانی در اندروید 13

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

نمای کلی

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

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

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

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

تقسیم تونل

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

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

امضای Split Tunneling API جدید این است:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

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

انگیزه CrossDevice

  • همکاری بیشتر با شرکای OEM. OEM ها می توانند به جای نیاز به استفاده از راه حل گوگل، سیستم کلید حساب خود را با پیاده سازی CrossDevice یکپارچه کنند.
  • اجرای آشکارتر پروتکل. ماژول CrossDevice منبع باز است و دید بیشتر در جزئیات پیاده سازی و داستان حفظ حریم خصوصی بهتر برای پیاده سازی فناوری های CrossDevice فراهم می کند.

مرز ماژول CrossDevice

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

قالب بسته CrossDevice

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

وابستگی های CrossDevice

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

  • وای فای
  • بلوتوث
  • UWB
  • modules-utils-preconditions
  • کتابخانه های اولیه

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

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

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

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

بارگذاری اتصال به اینترنت eBPF

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

از اندروید 12، این قابلیت (از جمله کد برنامه 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 استفاده می‌کند.

مرز ماژول

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

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

فرمت ماژول

ماژول Tethering ( com.android.tethering ) در قالب APEX است و برای دستگاه‌های دارای Android 11 یا بالاتر در دسترس است.

شامل ConnectivityService

از اندروید 12، کد ConnectivityService که جزء مرکزی اتصال L3+ را پیاده سازی می کند به Tethering APEX اضافه شده است. دامنه Tethering به یک ماژول اتصال گسترش می یابد.

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

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

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

سفارشی سازی

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

تست کردن

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