Lorawan-stack: تحسين مطابقة الجهاز

تم إنشاؤها على ٥ يونيو ٢٠٢٠  ·  5تعليقات  ·  مصدر: TheThingsNetwork/lorawan-stack

ملخص

تحسين مطابقة الجهاز في خادم الشبكة

لماذا نحتاج هذا؟

بالنسبة إلى Redis I / O ، واستخدام الذاكرة والأداء العام للحوسبة عند زيادة إعادة استخدام DevAddr وزيادة حجم DevAddr.

ما هو موجود بالفعل؟ ماذا ترى الآن؟

حاليًا ، يتراوح NS عبر الأجهزة بواسطة DevAddr ، ويفك تشفير البروتو. البروتوس كبيرة ، وتحتوي على حالة mac ورسائل الوصلة الصاعدة والهابطة الأخيرة ، بالإضافة إلى أنه يمكن أن يكون هناك العديد من البروتو (المئات) من DevAddr المكرر.

ما المفقود؟ ماذا تريد ان ترى؟

نحتاج إلى عرض ملموس في Redis لمطابقة الارتباطات الصاعدة بالأجهزة بواسطة UID ، قبل تحميل الجهاز المطابق.

كيف تقترح تنفيذ هذا؟

قم بتخزين المعلومات ذات الصلة للمطابقة في مفاتيح مخصصة ، لذلك بشكل أساسي DevAddr و FCnt و NwkSIntKeys و UID.

قد تكون المجموعة المصنفة و / أو خريطة التجزئة مفيدة لأن ذلك يتيح لـ Redis الفرز والاستعلام عن طريق FCnt والحصول على مفاتيح التكامل والمعرف الفريد العمومي (UID).

قم بتحديث هذا العرض المتحقق في كل ارتباط صاعد وقبول الانضمام.

يمكن أن يكون لدينا ترحيل متجدد مع الرجوع إلى مخطط المطابقة الحالي.

كيف تقترح اختبار هذا؟

اختبارات الوحدة ، مع تأكيد مفاتيح Redis وقيمها في الاختبار.

هل يمكنك القيام بذلك بنفسك وإرسال طلب سحب؟

يمكن المراجعة

network server performance in progress scalability

ال 5 كومينتر

أعتقد أن النهج الأفضل هو معالجة هذا بطريقة أخرى ، مما يؤدي أيضًا إلى زيادة الأداء في الحالة العامة - تقسيم البيانات التي تستهلك مساحة من البروتوس وتخزينها بشكل منفصل - على سبيل المثال recent_uplinks ، recent_downlinks وما إلى ذلك ، فمن المنطقي أيضًا تخزينها في قوائم بدلاً من البروتو المنظمة - وهذا يعني أننا لن نحتاج في الواقع إلى الاستعلام عن الرسائل الحالية ، ولكننا سنلحق رسالة جديدة فقط ، وهي طريقة أكثر كفاءة ، ولكن لنبدأ بالجزء الأولي فقط وننطلق من هناك.
بالنظر إلى أن لدينا أقنعة ميدانية ، فإن تقسيم البروتو سيكون واضحًا تمامًا ويتم التعامل معه بالكامل بواسطة تطبيقات تسجيل Redis.

لذا فإن الاقتراح هو أن يكون لديك:

  • ns:devices:uid:foo:bar:recent_uplinks
  • ns:devices:uid:foo:bar:recent_downlinks
  • ns:devices:uid:foo:bar:mac_state:recent_uplinks
  • ns:devices:uid:foo:bar:mac_state:recent_downlinks
  • ns:devices:uid:foo:bar:pending_mac_state:recent_uplinks
  • ns:devices:uid:foo:bar:pending_mac_state:recent_downlinks
    ...
  • ns:devices:uid:foo:bar - باقي البروتو

سيحدث الترحيل تلقائيًا ، وبالمثل يتم التعامل مع الحقول المهملة في السجلات بالفعل.

ما هو الوضع هنا؟

أتوقع أن يكون هذا جاهزًا للدمج بحلول نهاية الأسبوع المقبل.
يتم التنفيذ لأسابيع ، حيث يتم العمل على إعادة البناء ثم تكييف الاختبارات منذ ذلك الحين

يرجى التفكير في جعل الخطأ الذي تم إرجاعه أكثر وضوحًا إذا كان الجهاز لا يمكن مطابقته. انظر على سبيل المثال https://github.com/TheThingsNetwork/lorawan-stack/issues/2394.

لا يمكننا تقديم الكثير من المعلومات ، ولكن device_not_found يشير إلى أنه لا يمكن العثور على الجهاز ، في حين أنه من المحتمل أن DevAddr غير موجود على الإطلاق ، وأن MIC غير متطابق مع الإدخالات التي تم العثور عليها و / أو أن FCnt إعادة التعيين في حين أن ذلك غير مسموح به مع الإدخالات التي تم العثور عليها.

اقتراح جيد ، لكنني أعتقد أنه من الأفضل القيام بذلك كخطوة تالية ، لأنه سيكون بمثابة علاقات عامة ضخمة للمراجعة مع الكثير من الوظائف المعقدة نسبيًا

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات