ربط

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

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

نظرة عامة

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

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

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

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

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

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

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

تخفيف الحِمل عن عملية الربط عبر eBPF

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

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

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

تكون هذه الميزة مفعّلة تلقائيًا، ويمكن للمستخدمين إلغاء إعداد 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 الخاصة بالتوصيل عبر الربط. يتوسّع نطاق Tethering ليشمل وحدة Connectivity.

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

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

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

التخصيص

لا يتيح تطبيق Tethering تخصيص الإعدادات.

الاختبار

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