Lorawan-stack: μ΅œμ‹  업링크 λ©”μ‹œμ§€ 및 업링크 및 λ‹€μš΄λ§ν¬ 수 ν‘œμ‹œ

에 λ§Œλ“  2020λ…„ 03μ›” 17일  Β·  16μ½”λ©˜νŠΈ  Β·  좜처: TheThingsNetwork/lorawan-stack

https://github.com/TheThingsIndustries/lorawan-stack/issues/1971 원본 @laurensslats μ—μ„œ μ΄λ™λœ 문제

μš”μ•½

λ‚˜λŠ” ν˜„μž¬ V3에 μ—†λŠ” V2 μ½˜μ†”μ˜ 이 κΈ°λŠ₯을 μ’‹μ•„ν•©λ‹ˆλ‹€.
Screenshot 2020-02-20 at 15 17 34

...

μ™œ 이것이 ν•„μš”ν•©λ‹ˆκΉŒ?

μž₯μΉ˜κ°€ μž‘λ™ 쀑이고 λ„€νŠΈμ›Œν¬μ—μ„œ 데이터λ₯Ό μ„ νƒν•˜λŠ”μ§€ 여뢀에 λŒ€ν•œ 톡찰λ ₯을 μ œκ³΅ν•˜λ―€λ‘œ μ‰½κ²Œ 디버깅할 수 μžˆμŠ΅λ‹ˆλ‹€.

...

이미 거기에 무엇이 μžˆμŠ΅λ‹ˆκΉŒ? μ§€κΈˆ 무엇을 λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?

Screenshot 2020-02-20 at 15 10 54

...

없어진 물건 μžˆμ–΄μš”? 뭐λ₯Όλ³΄κ³  μ‹ΆμœΌμ„Έμš”?

이런 건 μ–΄λ•Œ? Kevin의 λ§ˆλ²• UI μ†ŒμŠ€μ™€ ν•¨κ»˜
Screenshot 2020-02-20 at 15 28 31

...

ν™˜κ²½

크둬

...

이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ–΄λ–»κ²Œ μ œμ•ˆν•©λ‹ˆκΉŒ?

μ½˜μ†”μ— 일뢀 ν•„λ“œ μΆ”κ°€
...

이 μž‘μ—…μ„ 직접 μˆ˜ν–‰ν•˜κ³  Pull Requestλ₯Ό μ œμΆœν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@kschiffer의 μˆœμˆ˜ν•œ λ‘λ‡Œκ°€ ν•„μš”ν•©λ‹ˆλ‹€.
...

console in progress uweb

λͺ¨λ“  16 λŒ“κΈ€

이것이 λ™μΌν•œμ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ NS의 session 쑴재, ν™œμ„±ν™” λ‚ μ§œ/μ‹œκ°„ 및 잠재적인 ν”„λ ˆμž„ μΉ΄μš΄ν„°λ₯Ό λΉ λ₯΄κ²Œ ν™•μΈν•˜λ©΄ 맀우 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

@rvolosatovs λŠ” NS에 "λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ" νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μœ μ§€ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

@rvolosatovs λŠ” NS에 "λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ" νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μœ μ§€ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ•„λ‹ˆμš”, ν•˜μ§€λ§Œ RecentUplinks ( RecentUplinks[len(RecentUplinks)-1].ReceivedAt )μ—μ„œ νŒŒμƒλ  수 μžˆμŠ΅λ‹ˆλ‹€.

@rvolosatovs λŠ” NS에 "λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ" νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μœ μ§€ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ•„λ‹ˆμš”, ν•˜μ§€λ§Œ RecentUplinks ( RecentUplinks[len(RecentUplinks)-1].ReceivedAt )μ—μ„œ νŒŒμƒλ  수 μžˆμŠ΅λ‹ˆλ‹€.

그게 λ‚΄κ°€ ν•œ μΌμ΄μ§€λ§Œ μ™„μ „ν•œ κΈ°λŠ₯을 μœ„ν•΄μ„œλŠ” 이벀트 μŠ€νŠΈλ¦Όμ— μ—°κ²°ν•˜μ—¬ 숫자λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ—…λ°μ΄νŠΈν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

그게 λ‚΄κ°€ ν•œ μΌμ΄μ§€λ§Œ μ™„μ „ν•œ κΈ°λŠ₯을 μœ„ν•΄μ„œλŠ” 이벀트 μŠ€νŠΈλ¦Όμ— μ—°κ²°ν•˜μ—¬ 숫자λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ—…λ°μ΄νŠΈν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

이런 μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜κΈ° 전에 @htdvisser μ ‘κ·Ό 방식이 μΆ©λΆ„νžˆ μ² μ €ν•˜λ‹€κ³  μƒκ°ν•˜μ‹­λ‹ˆκΉŒ? 업링크 λ‹€μš΄λ§ν¬ μ΄λ²€νŠΈμ—λŠ” ν˜„μž¬ ν”„λ ˆμž„ μˆ˜κ°€ ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ―€λ‘œ μ΅œμ’… μž₯치 λ‚΄λΆ€μ˜ μ„Έμ…˜ μ†Œν’ˆμ—μ„œ 얻은 초기 값을 기반으둜 이λ₯Ό μ¦κ°€μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.

κ·Έλ ‡κ²Œ 갈 길이 μ•„λ‹™λ‹ˆλ‹€.

ν”„λ ˆμž„ μΉ΄μš΄ν„°λ₯Ό ν•¨κ»˜ 보내지 μ•ŠμŠ΅λ‹ˆκΉŒ? 그것이 κ·Έλ•Œ μ§„μ§œ λ¬Έμ œκ°€ 될 κ²ƒμž…λ‹ˆλ‹€.

@rvolosatovs λŠ” NS에 "λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ" νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό μœ μ§€ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ•„λ‹ˆμš”, ν•˜μ§€λ§Œ RecentUplinks ( RecentUplinks[len(RecentUplinks)-1].ReceivedAt )μ—μ„œ νŒŒμƒλ  수 μžˆμŠ΅λ‹ˆλ‹€.

그게 λ‚΄κ°€ ν•œ μΌμ΄μ§€λ§Œ μ™„μ „ν•œ κΈ°λŠ₯을 μœ„ν•΄μ„œλŠ” 이벀트 μŠ€νŠΈλ¦Όμ— μ—°κ²°ν•˜μ—¬ 숫자λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ—…λ°μ΄νŠΈν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„, μ²«λˆˆμ— λ³΄μ΄λŠ” κ²ƒμ²˜λŸΌ κ°„λ‹¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  1. (ABP) ResetsFCnt==true κ°€ FCnt 자체λ₯Ό μž¬μ„€μ •ν•  수 μžˆλŠ” μž₯치
  2. (OTAA) μž₯치 μžμ²΄κ°€ FCnt 아직 μž¬μ„€μ •ν•˜μ§€ μ•Šκ³  μž¬κ²°ν•©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. FCnt λŠ” λ‹€μŒμ— μˆ˜μ‹ λœ 데이터 μ—…λ§ν¬μ—μ„œ μ‚¬μš©λ˜λŠ” μ„Έμ…˜ ν‚€ ID에 따라 μž¬μ„€μ •λ˜κ±°λ‚˜ μ¦κ°€λ©λ‹ˆλ‹€.
  3. 업링크 νŽ˜μ΄λ‘œλ“œμ˜ FCnt 값은 λ°˜λ“œμ‹œ μ‹€μ œ μž₯치 FCnt ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. μ—…λ§ν¬μ—μ„œ 16개의 LSB만 μ „μ†‘λ˜λŠ” 반면 ν”„λ ˆμž„ μΉ΄μš΄ν„°λŠ” 32λΉ„νŠΈ λ„ˆλΉ„μΌ 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

이 λͺ¨λ“  것은 NS에 μ˜ν•΄ 처리되며(2. λΆ€λΆ„μ μœΌλ‘œ AS에 μ˜ν•΄) μ½˜μ†”μ΄ λ™μΌν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  것이라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•žμœΌλ‘œμ˜ 방법은 (1.) - ns.device.reset 및 (2.) - ns.device.confirm_session (λ˜λŠ” ns.device.rejoin ?)에 λŒ€ν•œ 이벀트λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.
(3.)의 경우 전체 FCnt 값을 μ½˜μ†”μ— μ „λ‹¬ν•˜λŠ” 방법을 μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€. ns.up.data.match λ˜λŠ” ns.up.data.handle 와 같이 μ—…λ§ν¬μ˜ 성곡적인 처리λ₯Ό λ‚˜νƒ€λ‚΄λ©° 전체 FCnt (및 κ·Έ 이상)λ₯Ό ν¬ν•¨ν•˜λŠ” λ‹€λ₯Έ 이벀트λ₯Ό μ†Œκ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. ns.up.data.forward λŠ” μ—¬κΈ°μ—μ„œ 관련이 μ—†μœΌλ©° 단지 AS둜 μ „μ†‘λ˜λŠ” 업링크λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν˜„μž¬ 각 업링크에 잘λͺ» κ²Œμ‹œλ˜μ–΄ 있으며 이제 μ‹€μ œλ‘œ AS(PR μˆ˜μ‹ )둜 전달될 λ•Œλ§Œ κ²Œμ‹œλ©λ‹ˆλ‹€. , AS 업링크 νŽ˜μ΄λ‘œλ“œμ—λŠ” 전체 FCnt κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ§€λ§Œ μ—…λ§ν¬μ—μ„œ μ „μ†‘λœ FCnt (즉, 16LSB)

이λ₯Ό κ΅¬λ™ν•˜κΈ° μœ„ν•œ NS μ΄λ²€νŠΈμ— λŒ€ν•œ 결둠에 도달할 λ•ŒκΉŒμ§€ μ°¨λ‹¨λ˜λ©° μ΄λŠ” NSμ—μ„œ κ΅¬ν˜„λ©λ‹ˆλ‹€.

μ’‹μ•„, λ‚˜λŠ” 이것이 ν˜„μž¬λ‘œμ„œλŠ” μ‹€μ œλ‘œ μ‹€ν˜„ κ°€λŠ₯ν•˜μ§€ μ•Šλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. last seen 값은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ? μž₯치 λ ˆμ§€μŠ€νŠΈλ¦¬μ—μ„œ 초기 값을 얻은 λ‹€μŒ κ΄€λ ¨ μž₯치 이벀트(예: 업링크, ν™•μΈλœ λ‹€μš΄λ§ν¬ λ“±)λ₯Ό 톡해 μ—…λ°μ΄νŠΈλœ μƒνƒœλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•΄ μ €μž₯ν•©λ‹ˆκΉŒ?

μ’‹μ•„, λ‚˜λŠ” 이것이 ν˜„μž¬λ‘œμ„œλŠ” μ‹€μ œλ‘œ μ‹€ν˜„ κ°€λŠ₯ν•˜μ§€ μ•Šλ‹€λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. last seen 값은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ? μž₯치 λ ˆμ§€μŠ€νŠΈλ¦¬μ—μ„œ 초기 값을 얻은 λ‹€μŒ κ΄€λ ¨ μž₯치 이벀트(예: 업링크, ν™•μΈλœ λ‹€μš΄λ§ν¬ λ“±)λ₯Ό 톡해 μ—…λ°μ΄νŠΈλœ μƒνƒœλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•΄ μ €μž₯ν•©λ‹ˆκΉŒ?

예, ns.up.data.receive , ns.up.join.receive , ns.up.rejoin.receive 당신이 μ°Ύκ³  μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€

~ https ://github.com/TheThingsNetwork/lorawan-stack/pull/2221 #2222에 μ˜ν•΄ 차단됨~

NSλŠ” 이제 ns.up.data.process 이벀트λ₯Ό κ²Œμ‹œν•©λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” 전체 FCnt κ°€ νŽ˜μ΄λ‘œλ“œλ‘œ ν¬ν•¨λœ 업링크가 ν¬ν•¨λ©λ‹ˆλ‹€.
2020-04-09-23:30:32-screenshot

μ—…λ§ν¬μ˜ 값을 μž₯치의 μ‹€μ œ ν™œμ„± DevAddr 및 FCntUp 둜 μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

λ‹€μš΄λ§ν¬μ˜ 경우 ν˜„μž¬ μœ μ‚¬ν•œ κΈ°λŠ₯이 μ—†μ§€λ§Œ 이 문제의 μ΄ˆμ λ„ μ•„λ‹™λ‹ˆλ‹€. 업링크 FCnt둜 μ‹œμž‘ν•œ λ‹€μŒ λ‚˜μ€‘ λ‹¨κ³„μ—μ„œ λ‹€μš΄λ§ν¬λ₯Ό μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€(LoRaWAN 버전에 따라 μ‹€μ œλ‘œ 2개의 κ³ μœ ν•œ λ‹€μš΄λ§ν¬κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ ˆμž„ μΉ΄μš΄ν„° - ν•˜λ‚˜λŠ” NS용이고 ν•˜λ‚˜λŠ” ASμš©μ΄λ―€λ‘œ 업링크 ν”„λ ˆμž„ μΉ΄μš΄ν„°λ„ 훨씬 덜 μ€‘μš”ν•©λ‹ˆλ‹€.)

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ§ˆμ§€λ§‰ 업링크λ₯Ό μ•Œκ²Œ 되면 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄κΈ°μ—μ„œ Linked λ₯Ό Last seen 둜 λ°”κΎΈκ² μŠ΅λ‹ˆλ‹€(κ²Œμ΄νŠΈμ›¨μ΄ κ°œμš” νŽ˜μ΄μ§€μ™€ μœ μ‚¬).

Screenshot 2020-05-13 at 11 51 55

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ§ˆμ§€λ§‰ 업링크λ₯Ό μ•Œκ²Œ 되면 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³΄κΈ°μ—μ„œ Linked λ₯Ό Last seen 둜 λ°”κΎΈκ² μŠ΅λ‹ˆλ‹€(κ²Œμ΄νŠΈμ›¨μ΄ κ°œμš” νŽ˜μ΄μ§€μ™€ μœ μ‚¬).

Screenshot 2020-05-13 at 11 51 55

μ‘μš© ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ ν•΄λ‹Ή 정보λ₯Ό μ „μ—­μ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” 것은 ν™•μ‹€νžˆ μ’‹μ§€λ§Œ κ·Έλ ‡κ²Œ ν•˜λ©΄ μ½˜μ†”μ΄ μ‘μš© ν”„λ‘œκ·Έλž¨κ³Ό κ΄€λ ¨λœ λͺ¨λ“  μ΅œμ’… μž₯치λ₯Ό μ°¨λ‘€λ‘œ μ‘°μ‚¬ν•˜μ—¬ μ΄ˆκΈ°μ— λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ μƒνƒœλ₯Ό ν‘œμ‹œν•  수 μžˆμ–΄μ•Ό 함을 μ˜λ―Έν•©λ‹ˆλ‹€. 수백 λ˜λŠ” 수천 개의 μ΅œμ’… μž₯μΉ˜κ°€ μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°€μ •ν•΄μ•Ό ν•  λ•Œ 이것이 μ‹€ν–‰ κ°€λŠ₯ν•˜λ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 생각할 수 μžˆλŠ” 두 가지:

  1. μž₯치 λ©”μ‹œμ§€ 이벀트의 μˆ˜μ‹  μŠ€νŠΈλ¦Όμ„ 톡해 μ‚¬μš©ν•  수 있게 되면 λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ 정보λ₯Ό ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 섀정에 따라 μ μ‹œμ— μ΄λŸ¬ν•œ 이벀트λ₯Ό μ‚¬μš©ν•  수 μ—†μŒμ„ μ˜λ―Έν•  수 μžˆμŠ΅λ‹ˆλ‹€(1μ‹œκ°„λ§ˆλ‹€ λ˜λŠ” 덜 자주 λ‹€μš΄λ§ν¬λ₯Ό λ³΄λ‚΄λŠ” μ΅œμ’… μž₯치λ₯Ό 생각해 λ³΄μ‹­μ‹œμ˜€).
  2. μ²˜μŒμ— λ§ˆμ§€λ§‰μœΌλ‘œ λ³Έ κ°’ 계산을 μ€‘μ§€ν•œ ν›„ μž₯치 수의 μž„κ³„κ°’μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‘μš© ν”„λ‘œκ·Έλž¨μ— 100개 μ΄μƒμ˜ μž₯μΉ˜κ°€ μžˆλŠ” 경우 μ‘μš© ν”„λ‘œκ·Έλž¨ νŽ˜μ΄μ§€λ₯Ό λ‘œλ“œν•œ 직후에 ν•„μš”ν•œ μž₯치 μ΄λ²€νŠΈκ°€ 도착할 κ°€λŠ₯성도 맀우 λ†’μŠ΅λ‹ˆλ‹€.

@htdvisser @rvolosatovs μ œκ°€ κ°„κ³Όν•˜κ³  μžˆλŠ” 것이 μžˆμŠ΅λ‹ˆκΉŒ? λ˜λŠ” ν•΄λ‹Ή 데이터λ₯Ό μ§‘κ³„ν•˜κ³  API μ—”λ“œν¬μΈνŠΈλ₯Ό 톡해 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 방법을 생각할 수 μžˆμŠ΅λ‹ˆκΉŒ?

ApplicationLinkStats μ—λŠ” last_up_received_at 및 last_downlink_forwarded_at κ°€ μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/TheThingsNetwork/lorawan-stack/blob/develop/api/applicationserver.proto#L56 -L69

#2585λ₯Ό 톡해 폐쇄

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰