Lorawan-stack: Pesan Kelas C sebentar-sebentar gagal dijadwalkan dengan waktu absolut yang tidak valid

Dibuat pada 17 Nov 2020  ·  15Komentar  ·  Sumber: TheThingsNetwork/lorawan-stack

Ringkasan

Pesan Kelas C sebentar-sebentar gagal menjadwalkan dengan "waktu absolut tidak valid yang disetel dalam tautan aplikasi turun" ketika berjarak dekat.

Apakah ada waktu minimum antara pesan ke perangkat yang sama? Idealnya kami akan menjadwalkannya terpisah 130 md tetapi telah mencoba meningkatkan jarak menjadi 1000 md untuk mengurangi masalah

Langkah-langkah untuk Reproduksi

  1. Jadwalkan downlink pada waktu saat ini + 7 detik ke gateway X
  2. Jadwalkan downlink pada waktu saat ini + 8 detik ke gateway X
  3. Tunggu 10 detik dan amati topik mqtt DowlinkFailed
  4. Jika diperlukan, jalankan dalam satu lingkaran untuk meningkatkan kemungkinan mereproduksi kesalahan

Kami melihat ini kira-kira setiap 15 dowlinks

Apa yang kamu lihat sekarang?

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}}}

Apa yang ingin Anda lihat sebagai gantinya?

Tidak ada kegagalan downlink dan pesan yang dipancarkan dari gateway

Lingkungan

The Things Stack untuk LoRaWAN: ttn-lw-stack
Versi: 3.9.4
Tanggal pembuatan: 2020-09-23T09:56:19Z
Git komit: c4be55c
Pergi versi: go1.15.2
OS/Arch: linux/amd64

Bagaimana Anda mengusulkan untuk menerapkan ini?

Tentukan penyebab waktu absolut yang tidak valid dan atasi jika ada bug

Bagaimana Anda mengusulkan untuk menguji ini?

Senang menguji PR di lingkungan pengembang kami

Bisakah Anda melakukannya sendiri dan mengajukan Permintaan Tarik?

@rvolosatovs ?

bug gateway server

Semua 15 komentar

@virtualguy apakah masalah ini tetap ada?

Berapa kecepatan data dan di wilayah mana Anda?

Ketika Anda mengatakan ingin mengirim dengan jarak 130 ms, apakah Anda memperhitungkan waktu siaran?

Bisakah Anda berlangganan gateway dan acara perangkat akhir, melalui $ ttn-lw-cli events ... , dan menempelkan pesan kesalahan persis yang dilaporkan Server Gateway tentang mengapa penjadwalan gagal?

@virtualguy saya menambahkan beberapa baris debug tambahan. Pilih salah satu dari:

  1. Terapkan tambalan menyelidiki-3487.txt
  2. Cherry-pick https://github.com/TheThingsNetwork/lorawan-stack/commit/f9bbda5db5090dd7eb7bc2d798c92bed82efc2dd
  3. Check-out https://github.com/TheThingsNetwork/lorawan-stack/tree/investigate/3487-abs-downlink-timing (berdasarkan v3.10.7 )

Silakan ambil output dengan #3487 dan salin di sini. Itu juga satu-satunya keluaran yang masuk ke stdout (saat log masuk ke stderr ).

Jika dikatakan di ScheduleAt bahwa ada terlalu sedikit RTT, Anda mungkin ingin meningkatkan TTN_LW_EXP_RTT_TTL (durasi, seperti 6h selama 6 jam, defaultnya adalah 30m selama 30 menit) dan/atau kurangi TTN_LW_EXP_SCHEDULE_MIN_RTT_COUNT menjadi 3 atau lebih (default adalah 5). Ini adalah tanda fitur sementara.

cc @ymgupta

fyi kami mengalami beberapa masalah menjalankan binari yang telah kami buat sehingga diblokir pada #3736 sebelum kami dapat mengumpulkan log dari tambalan Anda @johanstokking

@virtualguy @johanstokking Berikut adalah beberapa log dari menjalankan versi yang ditambal: https://Gist.github.com/kurtmc/75f4ecf93c2f7a1ee8373d3a9c7f181a

Terima kasih banyak. Mohon maaf atas keterlambatan respon.

Ini akan sangat membantu. Untuk menemukan akar penyebabnya, saya menambahkan beberapa entri log lagi.

Bisakah Anda menjalankan ini lagi, dengan build baru, menggunakan https://github.com/TheThingsNetwork/lorawan-stack/tree/investigate/3487-abs-downlink-timing?

Jika Anda ingin cherry-pick di v3.10.x, cherry-pick 50f56055ba2c0172c002784d0ef22f140b60903c dan d1e5305d2363aa8ce8dc485b36c9977857da6b66

Juga untuk output, saya perlu jejak penuh, dari awal.

Perhatikan bahwa kami sekarang sedang mencetak ID gateway (atau EUI). Jika itu adalah informasi sensitif, harap edit itu menjadi nilai lain yang bermakna atau kirim log melalui email.

@kurtmc @virtualguy beri tahu saya bagaimana kami dapat membantu pengaturan ini. Jika saya perlu mengirimkan biner gambar Docker, beri tahu saya.

Terima kasih @kurtmc. Saya tidak melihat kesalahan "tidak ada waktu absolut" muncul di sini, hanya di awal tetapi itu normal. Jadi di sini, semuanya bekerja seperti yang diharapkan, bukan?

@adriansmares balapan yang sinkronisasinya diperbaiki dengan https://github.com/TheThingsNetwork/lorawan-stack/pull/3794 sebenarnya terjadi di sini. Jadi itu nyata, lihat:

"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}}]"

Perhatikan bahwa pernyataan ini rusak karena pembilasan yang mendasarinya; sepertinya pernyataan pendek segera dihapus dan pernyataan yang lebih panjang ditunda.


Saya pikir masalahnya adalah ketika (*rtts).Record() melepaskan kunci tulis, kedua panggilan (*rtts).Stats() bersamaan memperoleh kunci baca, dan dua panggilan (*Scheduler).ScheduleAt() bersamaan menjadi benar-benar sinkron. Saat mereka memperoleh kunci baca (lain), mereka terjadi secara bersamaan, yang mengarah ke korupsi di negara bagian Scheduler .

Ini diperbaiki dengan https://github.com/TheThingsNetwork/lorawan-stack/pull/3794 .

@kurtmc apakah ada kemungkinan kita bisa mendapatkan log level DEBUG dari The Things Stack juga? Setel log.level: debug di konfigurasi YAML.

@virtualguy @kurtmc dapatkah Anda memverifikasi bahwa ini diselesaikan pada v3.11 ?

Perhatikan benjolan kecil, Anda perlu menjalankan migrasi DB, lihat https://github.com/TheThingsNetwork/lorawan-stack/blob/e56f7f70e60dba8c1ad584411fb63a8c35659e7c/CHANGELOG.md#3110 ----2021-02-10

Kami akan meluncurkan rilis 3.11.1 hari ini.

Ditutup oleh #3794

@virtualguy @kurtmc FYI kami

@johanstokking Sekadar memberi tahu Anda, kami telah meningkatkan lingkungan produksi kami ke 3.10.10 dan kami masih melihat kesalahan waktu absolut di log.

@kurtmc diharapkan dalam kasus berikut:

  1. Gateway tidak menyediakan stempel waktu GPS, jadi tidak ada waktu absolut di gateway dan harus dihitung di gateway
  2. Gateway belum mengirimkan lebih dari 5 pesan downlink
  3. Gateway belum mengkonfirmasi lebih dari 5 pesan downlink (melalui pengakuan TX)

Kami menggunakan latency antara penjadwalan pesan downlink dan menerima pengakuan TX sebagai waktu pulang pergi. Kami membutuhkan setidaknya 5 dari mereka untuk dapat diandalkan mengambil nilai median. Kemudian, ketika menjadwalkan pesan downlink kelas C dengan waktu absolut, Server Gateway menggunakan waktu server dan waktu perjalanan pulang pergi rata-rata untuk menghitung waktu absolut (server) dan stempel waktu konsentrator yang sesuai.


Jika Anda masih melihat kesalahan waktu absolut, di luar kasus di atas, berikan log server tingkat DEBUG.

Pasti masih melihat masalah ini di 3.10.10, sepertinya itu terjadi pada transmisi back to back (terpisah 1000ms pada id perangkat yang sama). Saya telah mengirim melalui log DEBUG melalui dukungan TTI

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

w4tsn picture w4tsn  ·  6Komentar

thinkOfaNumber picture thinkOfaNumber  ·  4Komentar

kschiffer picture kschiffer  ·  4Komentar

johanstokking picture johanstokking  ·  3Komentar

johanstokking picture johanstokking  ·  6Komentar