Lorawan-stack: تفشل رسائل الفئة C بشكل متقطع في الجدولة بوقت مطلق غير صالح

تم إنشاؤها على ١٧ نوفمبر ٢٠٢٠  ·  15تعليقات  ·  مصدر: TheThingsNetwork/lorawan-stack

ملخص

تفشل رسائل الفئة C بشكل متقطع في الجدولة مع "تعيين وقت مطلق غير صالح في الوصلة الهابطة للتطبيق" عند تباعدها عن كثب.

هل هناك حد أدنى للوقت بين الرسائل على نفس الجهاز؟ من الناحية المثالية ، سنقوم بجدولة 130 مللي ثانية على حدة ولكننا حاولنا زيادة التباعد إلى 1000 مللي ثانية للتخفيف من المشكلة

خطوات التكاثر

  1. جدولة الوصلة الهابطة في الوقت الحالي + 7 ثوانٍ للبوابة X.
  2. جدولة الوصلة الهابطة في الوقت الحالي + 8 ثوانٍ للبوابة X.
  3. انتظر لمدة 10 ثوان وراقب موضوع mqtt DowlinkFailed
  4. إذا لزم الأمر ، قم بالتشغيل في حلقة لزيادة فرصة تكرار الخطأ

نرى هذا ما يقرب من كل 15 dowlinks

ماذا ترى الآن؟

17/11/2020 14:09:30.783 +1300   Sending TTN V3 multicast. topic: v3/halter/devices/2704aee7-7c77-4c99-8d26-cf110b1a90a7/down/push. Payload: {"downlinks":[{"f_port":1,"frm_payload":"ChQKEgoQEg4IAxIFDbQiy10YASDjAQ==","priority":"ABOVE_NORMAL","class_b_c":{"absolute_time":"2020-11-17T01:09:37.000Z","gateways":[{"gateway_ids":{"gateway_id":"eui-00800000a0003582"}}]}}]}
17/11/2020 14:09:30.883 +1300   Sending TTN V3 multicast. topic: v3/halter/devices/2704aee7-7c77-4c99-8d26-cf110b1a90a7/down/push. Payload: {"downlinks":[{"f_port":1,"frm_payload":"ChQKEgoQEg4IAxIFDbQiy10YASDjAQ==","priority":"ABOVE_NORMAL","class_b_c":{"absolute_time":"2020-11-17T01:09:38.000Z","gateways":[{"gateway_ids":{"gateway_id":"eui-00800000a0005314"}}]}}]}
17/11/2020 14:09:37.068 +1300   Serial 2704aee7-7c77-4c99-8d26-cf110b1a90a7: Receiving DownlinkFailed. Payload: {"end_device_ids":{"device_id":"2704aee7-7c77-4c99-8d26-cf110b1a90a7","application_ids":{"application_id":"halter"},"dev_addr":"01415A3E"},"correlation_ids":["as:downlink:01EQ9VZT44AARKQ3V190WBSXZA","as:up:01EQ9W005A64G2W1Y3GQA9S3SR"],"received_at":"2020-11-17T01:09:37.066774351Z","downlink_failed":{"downlink":{"f_port":1,"f_cnt":56,"frm_payload":"ChQKEgoQEg4IAxIFDbQiy10YASDjAQ==","class_b_c":{"gateways":[{"gateway_ids":{"gateway_id":"eui-00800000a0005314"}}],"absolute_time":"2020-11-17T01:09:38Z"},"priority":"ABOVE_NORMAL","correlation_ids":["as:downlink:01EQ9VZT44AARKQ3V190WBSXZA"]},"error":{"namespace":"pkg/networkserver","name":"absolute_time","message_format":"invalid absolute time set in application downlink","code":3}}}
17/11/2020 14:09:37.068 +1300   Serial 2704aee7-7c77-4c99-8d26-cf110b1a90a7: Receiving DownlinkFailed. Payload: {"end_device_ids":{"device_id":"2704aee7-7c77-4c99-8d26-cf110b1a90a7","application_ids":{"application_id":"halter"},"dev_addr":"01415A3E"},"correlation_ids":["as:downlink:01EQ9VZT44AARKQ3V190WBSXZA","as:up:01EQ9W005A64G2W1Y3GQA9S3SR"],"received_at":"2020-11-17T01:09:37.066774351Z","downlink_failed":{"downlink":{"f_port":1,"f_cnt":56,"frm_payload":"ChQKEgoQEg4IAxIFDbQiy10YASDjAQ==","class_b_c":{"gateways":[{"gateway_ids":{"gateway_id":"eui-00800000a0005314"}}],"absolute_time":"2020-11-17T01:09:38Z"},"priority":"ABOVE_NORMAL","correlation_ids":["as:downlink:01EQ9VZT44AARKQ3V190WBSXZA"]},"error":{"namespace":"pkg/networkserver","name":"absolute_time","message_format":"invalid absolute time set in application downlink","code":3}}}

ماذا تريد ان ترى بدلا من ذلك؟

لا توجد أعطال في الوصلة الهابطة والرسائل المنبعثة من البوابة

بيئة

مكدس الأشياء لـ LoRaWAN: ttn-lw-stack
الإصدار: 3.9.4.2
تاريخ البناء: 2020-09-23T09: 56: 19Z
Git الالتزام: c4be55c
نسخة Go: go1.15.2
OS / Arch: لينكس / amd64

كيف تقترح تنفيذ ذلك؟

تحديد أسباب الوقت المطلق غير الصالح وحل ما إذا كان هناك خطأ

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

يسعدني اختبار العلاقات العامة في بيئتنا التطويرية

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

rvolosatovs ؟

bug gateway server

ال 15 كومينتر

virtualguy هل هذه المشكلة مستمرة؟

ما هو معدل البيانات وفي أي منطقة أنت؟

عندما تقول أنك تريد الإرسال بفاصل 130 مللي ثانية ، فهل تأخذ وقت البث في الحسبان؟

هل يمكنك الاشتراك في أحداث البوابة والجهاز النهائي ، عبر $ ttn-lw-cli events ... ، ولصق رسائل الخطأ الدقيقة التي يبلغ عنها خادم Gateway Server حول سبب فشل الجدولة؟

virtualguy لقد أضفت بعض سطور التصحيح الإضافية. اختر أيًا مما يلي:

  1. تطبيق فحص التصحيح
  2. اختيار الكرز https://github.com/TheThingsNetwork/lorawan-stack/commit/f9bbda5db5090dd7eb7bc2d798c92bed82efc2dd
  3. تحقق من https://github.com/TheThingsNetwork/lorawan-stack/tree/investigate/3487-abs-downlink-timing (بناءً على v3.10.7 )

يرجى إخراج grep بمقدار #3487 والنسخ هنا. إنه أيضًا الناتج الوحيد الذي ينتقل إلى stdout (حيث تنتقل السجلات إلى stderr ).

إذا ورد في ScheduleAt أن هناك عدد قليل جدًا من RTTs ، فقد ترغب في زيادة TTN_LW_EXP_RTT_TTL (المدة ، مثل 6h لمدة 6 ساعات ، الافتراضي هو 30m لمدة 30 دقيقة) و / أو خفض TTN_LW_EXP_SCHEDULE_MIN_RTT_COUNT إلى 3 أو شيء ما (الافتراضي هو 5). هذه هي علامات ميزة مؤقتة.

ccymgupta

لمعلوماتك ، نواجه بعض الثنائيات قيد التشغيل المزعجة التي أنشأناها محظورة جدًا على # 3736 قبل أن نتمكن من جمع السجلات من johanstokking

virtualguy johanstokking فيما يلي بعض السجلات من تشغيل الإصدار https://gist.github.com/kurtmc/75f4ecf93c2f7a1ee8373d3a9c7f181a

شكرا جزيلا. نعتذر عن تأخر الرد.

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

هل يمكنك تشغيل هذا مرة أخرى ، ببنية جديدة ، باستخدام https://github.com/TheThingsNetwork/lorawan-stack/tree/investigate/3487-abs-downlink-timing؟

إذا كنت تريد اختيار Cherry-pick على v3.10.x ، فإن cherry-pick 50f56055ba2c0172c002784d0ef22f140b60903c و d1e5305d2363aa8ce8dc485b36c9977857da6b66

أيضًا بالنسبة للإخراج ، أحتاج إلى التتبع الكامل ، من البداية.

لاحظ أننا نقوم الآن بطباعة معرف البوابة (أو EUI). إذا كانت هذه معلومات حساسة ، يرجى تنقيحها إلى قيمة أخرى ذات مغزى أو إرسال السجل عبر البريد الإلكتروني.

kurtmcvirtualguy اسمحوا لي أن أعرف كيف يمكننا أن نساعد هذا الإعداد هذا الأمر. إذا كنت بحاجة لإرسال صورة ثنائية من Docker إليك ، فقط أخبرني بذلك.

johanstokking السجلات المحدثة: https://gist.github.com/kurtmc/041dd593d24fd9f01784e56ec1deb325

شكرا @ kurtmc. لا أرى أخطاء "لا يوجد وقت مطلق" تظهر هنا ، فقط في البداية ولكن هذا أمر طبيعي. إذن هنا ، كل شيء يعمل كما هو متوقع ، أليس كذلك؟

adriansmares ، السباق الذي تم إصلاح التزامن فيه مع https://github.com/TheThingsNetwork/lorawan-stack/pull/3794 يحدث بالفعل هنا. هذا حقيقي ، انظر:

"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 1 ScheduleAt: median is 30.900256ms"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 1 ScheduleAt: median is 30.900256ms"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 1 ScheduleAt: relative time downlink"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 1 ScheduleAt: relative time downlink"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 1 ScheduleAt: scheduled"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 1 ScheduleAt: scheduled"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 Record: 30.629582ms at 2021-02-14 21:58:36.014795727 +0000 UTC m=+86.734546258"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 Stats: sorted items: [{30446978 {13835767378842655859 75767631763 0x3a7a1c0}} {30504816 {13835767372765423622 70132850448 0x3a7a1c0}} {30639590 {13835767387106897922 83515681039 0x3a7a1c0}} {30830194 {13835767336362635015 36237283864 0x3a7a1c0}} {30834436 {13835767341445058316 40950998050 0x3a7a1c0}} {30835582 {13835767336764530097 36639178949 0x3a7a1c0}} {30842181 {13835767341958726238 41464666012 0x3a7a1c0}} {30845267 {13835767320071738555 21052514770 0x3a7a1c0}} {30847416 {13835767323811969378 24571520108 0x3a7a1c0}} {30889585 {13835767369324628633 66913280952 0x3a7a1c0}} {30910927 {13835767324288677194 24974486184 0x3a7a1c0}} {30943729 {13835767344594801745 43879516001 0x3a7a1c0}} {30952793 {13835767349113727476 48103474433 0x3a7a1c0}} {30963569 {13835767326445257112 26983582371 0x3a7a1c0}} {30993783 {13835767329486798315 29803898110 0x3a7a1c0}} {31018584 {13835767328128331563 28592914998 0x3a7a1c0}} {31045641 {13835767318515021603 19643281462 0x3a7a1c0}} {31073394 {13835767334606151403 34628283902 0x3a7a1c0}} {31090774 {13835767382891657128 79595407630 0x3a7a1c0}} {31249183 {13835767338921164328 38648329532 0x3a7a1c0}}]"
"1613339916024","15/02/2021 10:58:36.024 +1300","stack_1  | #3487 Stats: sorted items: [{30446978 {13835767378842655859 75767631763 0x3a7a1c0}} {30504816 {13835767372765423622 70132850448 0x3a7a1c0}} {30639590 {13835767387106897922 83515681039 0x3a7a1c0}} {30830194 {13835767336362635015 36237283864 0x3a7a1c0}} {30834436 {13835767341445058316 40950998050 0x3a7a1c0}} {30835582 {13835767336764530097 36639178949 0x3a7a1c0}} {30842181 {13835767341958726238 41464666012 0x3a7a1c0}} {30845267 {13835767320071738555 21052514770 0x3a7a1c0}} {30847416 {13835767323811969378 24571520108 0x3a7a1c0}} {30889585 {13835767369324628633 66913280952 0x3a7a1c0}} {30910927 {13835767324288677194 24974486184 0x3a7a1c0}} {30943729 {13835767344594801745 43879516001 0x3a7a1c0}} {30952793 {13835767349113727476 48103474433 0x3a7a1c0}} {30963569 {13835767326445257112 26983582371 0x3a7a1c0}} {30993783 {13835767329486798315 29803898110 0x3a7a1c0}} {31018584 {13835767328128331563 28592914998 0x3a7a1c0}} {31045641 {13835767318515021603 19643281462 0x3a7a1c0}} {31073394 {13835767334606151403 34628283902 0x3a7a1c0}} {31090774 {13835767382891657128 79595407630 0x3a7a1c0}} {31249183 {13835767338921164328 38648329532 0x3a7a1c0}}]"

لاحظ أن هذه البيانات خارج الترتيب بسبب التدفق الأساسي ؛ يبدو أنه يتم مسح البيانات القصيرة على الفور وتأخر البيانات الأطول.


أعتقد أن المشكلة تكمن في أنه عندما يقوم (*rtts).Record() بتحرير قفل الكتابة ، فإن كلا من المكالمات المتزامنة (*rtts).Stats() تحصل على قفل قراءة ، وبالتالي فإن مكالمتين متزامنتين (*Scheduler).ScheduleAt() تصبحان متزامنتين تمامًا. نظرًا لأن هؤلاء يحصلون على قفل قراءة (آخر) ، فإنهم يحدثون بشكل متزامن ، مما يؤدي إلى الفساد في Scheduler state.

تم إصلاح ذلك من خلال https://github.com/TheThingsNetwork/lorawan-stack/pull/3794.

kurtmc هل هناك فرصة للحصول على سجلات مستوى DEBUG من The Things Stack أيضًا؟ قم بتعيين log.level: debug في تكوين YAML.

virtualguykurtmc هل يمكنك التحقق من أن هذا قد تم حله في آخر v3.11 ؟

لاحظ النتوء الصغير ، تحتاج إلى تشغيل عمليات ترحيل DB ، راجع https://github.com/TheThingsNetwork/lorawan-stack/blob/e56f7f70e60dba8c1ad584411fb63a8c35659e7c/CHANGELOG.md#3110 --- 2021-02-10

سنقوم بإصدار 3.11.1 اليوم.

مغلق برقم 3794

virtualguykurtmc FYI نحن backporting هذا 3.10.10 حتى نتمكن من تحديث البنية التحتية لدينا عاجلا. برجاء مراقبة # 3800 و / أو الاشتراك في إصدار الإخطارات هنا.

johanstokking فقط لإعلامك ، قمنا بترقية بيئة الإنتاج لدينا إلى 3.10.10 وما زلنا نرى خطأ الوقت المطلق في السجلات.

kurtmc متوقع في الحالة التالية:

  1. لا توفر البوابة طوابع زمنية لنظام تحديد المواقع العالمي (GPS) ، لذلك لا يوجد وقت مطلق على البوابة ويجب حسابها على البوابة
  2. لم ترسل البوابة أكثر من 5 رسائل للوصلة الهابطة
  3. لم تؤكد البوابة أكثر من 5 رسائل للوصلة الهابطة (عبر إقرار الإرسال)

نستخدم وقت الاستجابة بين جدولة رسالة الوصلة الهابطة وتلقي إقرار الإرسال كوقت ذهاب وإياب. نحتاج إلى 5 منهم على الأقل لأخذ القيمة المتوسطة بشكل موثوق. بعد ذلك ، عند جدولة رسالة الوصلة الهابطة من الفئة C مع الوقت المطلق ، يستخدم Gateway Server وقت الخادم ووقت الذهاب والإياب المتوسط ​​لحساب الوقت المطلق (الخادم) والطابع الزمني للمركز المقابل.


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

بالتأكيد لا تزال ترى هذه المشكلة في 3.10.10 ، يبدو أنها تحدث في عمليات الإرسال المتتالية (1000 مللي ثانية على نفس معرف الجهاز). لقد أرسلت من خلال سجلات DEBUG عبر دعم TTI

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