ربط

التحديثات في Android 13

تعديل مزيد من المعلومات
تم إطلاق CrossDevice CrossDevice
إتاحة ميزة "الأنفاق المقسّمة" الاتصال النفقي المجزَّأ

نظرة عامة

تتيح وحدة التوصيل مشاركة اتصال الإنترنت لجهاز Android مع أجهزة عميل أخرى متصلة، ويمكن لهذه الأجهزة الاتصال بأجهزة التوصيل عبر شبكة Wi-Fi أو USB أو البلوتوث أو إيثرنت. يتضمّن هذا الوحدة مكوّن الربط (الناقل التسلسلي العالمي (USB) ونقطة وصول لاسلكية والبلوتوث وما إلى ذلك) والتبعيات (التفاعل مع إذن الربط وIpServer وoffloadController). ويمكن تحديث هذه الوحدة، ما يعني أنّه يمكنها تلقّي تحديثات للوظائف خارج دورة إصدار Android العادية.

تتيح وحدة توصيل الإنترنت للمصنّعين الأصليين للأجهزة في جميع أنحاء منظومة Android المتكاملة استخدام تنفيذ مرجعي واحد وموحّد يحقّق المزايا التالية.

  • يحصل المستخدمون النهائيون على تجربة متّسقة على جميع أجهزة Android، كما يتم إصلاح مشاكل التشغيل التفاعلي من خلال تحديثات الوحدات.

  • يمكن لمصنّعي المعدات الأصلية تلبية متطلبات شركات الاتصالات مع خفض تكاليف التخصيصات الفردية (إذ لا يحتاجون إلى تنفيذ المتطلبات نفسها بطرق مختلفة).

الاتصال النفقي المجزَّأ

لإتاحة حالات استخدام النفق المقسّم، تمت إضافة واجهة برمجة تطبيقات جديدة إلى نظام التشغيل Android 13 لتحديد المسارات المستبعَدة.

يشير الاتصال النفقي المجزَّأ إلى الإعداد الذي تمر فيه بعض الزيارات عبر شبكة VPN بينما لا تمر الزيارات الأخرى عبرها. من الأمثلة الشائعة على ذلك أن تريد إحدى المؤسسات أن تتجاوز الشبكة الافتراضية الخاصة في تصفّح الويب العام أو التطبيقات التي تستهلك نطاقًا تردديًا كبيرًا (مثل YouTube وNetflix) أو التطبيقات التي تتطلّب سرعة استجابة عالية (مثل Office 365). قبل توفّر ميزة "الأنفاق المقسّمة"، كانت VpnService.Builder تسمح لبرنامج الشبكة الافتراضية الخاصة بالإشارة إلى أنّه يجب توجيه بعض الشبكات الفرعية فقط إليها (مسارات التضمين). باستخدام ميزة "الأنفاق المنقسمة"، يمكنك تحديد العكس، أي توجيه كل عدد الزيارات إلى شبكة VPN، باستثناء الشبكات الفرعية المحددة (مسارات الاستبعاد).

توقيع واجهة برمجة التطبيقات الجديدة لتجزئة الأنفاق هو:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

تهدف CrossDevice، التي تم طرحها في Android 13، إلى توفير تقنيات اتصال بين الأجهزة باستخدام بروتوكولات عادية. توفّر هذه الخدمة واجهات برمجة تطبيقات وميزات لرصد الأجهزة والاتصال المصادق عليه وتجارب أخرى تعمل من خلال جهاز آخر.

CrossDevice motivation

  • تعاون أوثق مع شركاء المصنّعين الأصليين للأجهزة يمكن لمصنّعي المعدات الأصلية دمج نظام مفاتيح الحسابات الخاص بهم مع عملية تنفيذ CrossDevice بدلاً من الحاجة إلى استخدام حلّ Google.
  • تنفيذ البروتوكول بشكل أكثر وضوحًا وحدة CrossDevice هي وحدة مفتوحة المصدر، ما يوفّر المزيد من الشفافية بشأن تفاصيل التنفيذ ويحسّن الخصوصية عند تنفيذ تقنيات CrossDevice.

حدود وحدة CrossDevice

CrossDevice APIs في packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
خدمات CrossDevice في packages/modules/CrossDevice/service
  • NearbyService - واجهة برمجة التطبيقات للمسح الضوئي

تنسيق حزمة CrossDevice

يتم تضمين الوظيفة الرئيسية لهذه الوحدة في حزمة APEX. يتم تجميع الموارد في حزمة APK.

CrossDevice dependencies

تعتمد CrossDevice على ما يلي:

  • Wi-Fi
  • بلوتوث
  • النطاق الفائق العرض (UWB)
  • modules-utils-preconditions
  • مكتبات Proto

خيارات التخصيص على الأجهزة المختلفة

نخطّط للسماح لمصنّعي المعدات الأصلية بتخصيص واجهة المستخدم للوحة النصفية من خلال RRO. ولا نخطّط لتخصيص هذه الوظيفة.

استراتيجية الاختبار على جميع الأجهزة

نخطّط لإضافة اختبارات "مجموعة أدوات اختبار التوافق" (CTS) لنظام التشغيل Android للتحقّق من وظائف CrossDevice، وإضافة اختبارات CrossDevice إلى MTS.

eBPF tethering offload

لتوفير توصيل بالإنترنت عالي السرعة بدون الاعتماد على عمليات تخفيف الحِمل للأجهزة، يوفّر نظام التشغيل Android 11 حلاً لتخفيف الحِمل لبرامج التوصيل بالإنترنت يُعرف باسم تخفيف الحِمل لبرامج التوصيل بالإنترنت المستند إلى eBPF لعملية تنزيل الإصدار السادس من بروتوكول الإنترنت (IPv6) (حركة البيانات المتدفقة إلى الجهاز المتصل بالإنترنت).

بدءًا من Android 12، يتم توفير هذه الوظيفة (بما في ذلك رمز برنامج eBPF) بالكامل من خلال وحدة الربط، التي تتيح ما يلي:

  • تنزيل IPv6 (حركة البيانات المتدفقة إلى الجهاز المرتبط)
  • تحميل IPv6 (الزيارات الواردة من جهاز مرتبط)
  • تحميل وتنزيل بيانات TCP/UDP عبر IPv4 (الزيارات المتدفقة من/إلى الجهاز المرتبط)
  • تخفيف حِمل eBPF

تكون هذه الميزة مفعّلة تلقائيًا، ويمكن للمستخدمين إلغاء إعداد config_tether_enable_bpf_offload وضبطه على "خطأ" باستخدام RRO. لمزيد من المعلومات، يُرجى الاطّلاع على التخصيص.

التوافق مع الإصدار الرابع من بروتوكول الإنترنت (IPv4) والإصدار السادس من بروتوكول الإنترنت (IPv6)

تتيح وحدة الربط دعم الإصدار الرابع من بروتوكول الإنترنت (IPv4) والإصدار السادس من بروتوكول الإنترنت (IPv6) في الوقت نفسه.

  • بالنسبة إلى شبكات الإصدار الرابع من بروتوكول الإنترنت (IPv4)، تعمل الوحدة على إعداد ترجمة عناوين الشبكة (NAT) وتعتمد بروتوكول التهيئة الآلية للمضيفين (DHCP) لتحديد عناوين IP.

  • بالنسبة إلى شبكات IPv6، تعتمد الوحدة نمط IPv6 SLAAC لضبط عناوين IP.

حدود الوحدة

في نظام التشغيل Android 12 والإصدارات الأحدث، تندرج جميع الملفات والمجلدات ضمن packages/modules/Connectivity في نطاق وحدة الربط.

في الإصدار 11 من نظام التشغيل Android والإصدارات الأقدم، يحتوي وحدة الربط على الملفات التالية من الإصدار 10 من نظام التشغيل Android في 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، وهي متاحة للأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث.

تضمين ConnectivityService

بدءًا من Android 12، تتم إضافة رمز ConnectivityService الذي ينفّذ المكوّن المركزي لوظيفة الاتصال من المستوى 3 وما فوق إلى حزمة APEX الخاصة بميزة "ربط الإنترنت". يتوسّع نطاق ميزة "ربط الإنترنت" ليشمل وحدة "الاتصال".

المهام التابعة للوحدة

تتضمّن وحدة "الربط" الاعتمادات التالية:

  • طُرق واجهات برمجة التطبيقات العامة والمتعلّقة بالنظام في خادم النظام
  • تتفاعل واجهة AIDL IPC المستقرة مع خادم النظام
  • tetheroffload HIDL (محدّد في hardware/interfaces/tetheroffload/)
  • خادم DHCP (جزء من وحدة "حزمة الشبكة")

التخصيص

لا يتيح تطبيق "التوصيل" إمكانية التخصيص.

الاختبار

تتحقّق "مجموعة أدوات اختبار التوافق" (CTS) لنظام التشغيل Android من وظائف وحدة الربط.