Lorawan-stack: ์ตœ์ข… ์žฅ์น˜ ์ƒ์„ฑ์„ ์œ„ํ•œ ๋งˆ๋ฒ•์‚ฌ ์‚ฌ์šฉ

์— ๋งŒ๋“  2019๋…„ 04์›” 28์ผ  ยท  38์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: TheThingsNetwork/lorawan-stack

์š”์•ฝ:
์žฅ์น˜ ์ถ”๊ฐ€ ์–‘์‹(#573์— ์ถ”๊ฐ€๋จ)์€ ํ˜„์žฌ ์ œ์•ฝ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ABP/OTAA ์„ ํƒ ์ œ์™ธ). ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • LoRaWAN ๋ฒ„์ „์—๋งŒ ๊ด€๋ จ๋œ ํ•„๋“œ๋ฅผ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ๊ทธ์— ๋”ฐ๋ผ ํ•„๋“œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: NwkSKey vs. FNwkSIntKey ).

์™œ ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?
๋” ๋‚˜์€ UX๋ฅผ ์œ„ํ•ด ์ž˜๋ชป๋œ ์ž…๋ ฅ์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค

์ด๋ฏธ ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ์žˆ์Šต๋‹ˆ๊นŒ?
OTAA/ABP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์กฐ๊ฑด๋ถ€ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ์žฅ์น˜ ์ถ”๊ฐ€ ์–‘์‹

์—†์–ด์ง„ ๋ฌผ๊ฑด ์žˆ์–ด์š”?
์–‘์‹์— ๋ณด๋‹ค ์ •๊ตํ•œ ๊ฒ€์‚ฌ ๋ฐ ์ œ์•ฝ์„ ์ ์šฉํ•˜์—ฌ ์ž˜๋ชป๋œ ์ž…๋ ฅ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ:
๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ˜์†”

์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?
ํ•„๋“œ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ์— ์—ฐ๊ฒฐํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ํ•„๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๊ณ  Pull Request๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋„ค.

console in progress uweb

๋ชจ๋“  38 ๋Œ“๊ธ€

์žฅ์น˜ ํ˜•ํƒœ์˜ ํ˜„์žฌ ๊ตฌํ˜„์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํ•จ๊ป˜ ๊ฒฐํ•ฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด

  1. ๋ณต์žกํ•˜๊ณ  ๊ธด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์Šคํ‚ค๋งˆ
  2. ์Šคํƒ ๊ตฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • ํ•„๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ• ์—†์Œ
  3. ์„ ํƒํ•œ ๊ฐ’์— ๋”ฐ๋ผ ์–‘์‹ ํ•„๋“œ/ํ•„๋“œ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ• ์—†์Œ
  4. ์ผ๊ด„ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ/์‚ญ์ œ ๋ฐ ์ƒ์„ฑ ๋กค๋ฐฑ ๋กœ์ง์„ ์œ„ํ•œ js sdk์˜ ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ

์žฅ์น˜ ํ˜•ํƒœ๋ฅผ ๋‹ค๋‹จ๊ณ„ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Screenshot 2019-08-26 at 11 29 16
Screenshot 2019-08-26 at 11 31 57
Screenshot 2019-08-26 at 11 34 16

์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  1. ํ•˜๋‚˜์˜ ๋ณต์žกํ•œ ์Šคํ‚ค๋งˆ ๋Œ€์‹  ๊ฐ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ์ž‘์€ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ํŠน์ • ์ฑ…์ž„ ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์Šคํƒ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ „์ฒด ๋‹จ๊ณ„๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์„ค๋ช…/์•Œ๋ฆผ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฅผ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด์ „์— ์ œ์ถœํ•œ ๊ฐ’์— ๋”ฐ๋ผ ๊ฐ ๋‹จ๊ณ„๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด lorawan ๋ฒ„์ „ 1.0.x ์˜ ๊ฒฝ์šฐ Join EUI ๋ ˆ์ด๋ธ”์„ App EUI ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  4. ์ผ๊ด„ ์š”์ฒญ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์žฅ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ผ๊ด„ ์‚ญ์ œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ ์žฅ์น˜๋Š” ์•„์ฝ”๋””์–ธ ์Šคํƒ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Screenshot 2019-08-26 at 11 56 36
๊ฐ ์•„์ฝ”๋””์–ธ์ด ๋…๋ฆฝํ˜• ํ˜•ํƒœ๋กœ ํ™•์žฅ๋˜๋Š” ๊ณณ.

์žฅ์น˜ ์–‘์‹ ์™ธ์—๋„ ์‹ ์ฒญ์„œ์— ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. is์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ
  2. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์Œ์œผ๋กœ ์—ฐ๊ฒฐ

cc @kschiffer @johanstokking @htdvisser

ํŠนํžˆ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ํ•„๋“œ๋ฅผ ํ•œ ๋‹จ๊ณ„์—์„œ ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/TheThingsNetwork/lorawan-stack/issues/1234 ๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. JS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ์ž๋Š” JS ํ•„๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋Ÿฌํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค.
device-wizard-diagram

๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค

  • ์ ์„  ์œค๊ณฝ์„ ์ด ์žˆ๋Š” ๋‹จ๊ณ„๋Š” ์–‘์‹์„ ์ œ์ถœํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•ด ๋กœ์ปฌ ์ƒํƒœ์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ œ์ถœ ์‹œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ ํ˜„์žฌ ๊ตฌํ˜„์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ/์ œ์ถœ/ํ•„๋“œ ๋งˆ์Šคํฌ ์ƒ์„ฑ ๋“ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ํ›จ์”ฌ ๋” ํฐ ์ƒํƒœ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ† ๋ก ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ดˆ๊ธฐ ์ œ์•ˆ์œผ๋กœ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

์ข‹์€ ์‹œ์ž‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • Join Server๊ฐ€ ๋จผ์ € ์˜ค๋ฉด ํ๋ฆ„์ด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์•„์ง ์ง„ํ–‰ํ•˜์ง€ ์•Š์€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ์žฅ์น˜ ์ €์žฅ์†Œ #263์— ์žˆ๋Š” ์žฅ์น˜ ํ…œํ”Œ๋ฆฟ์˜ ํ•„๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •๋ง ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ž‘์€ ๊ฒƒ๋“ค:

  • DevEUI ๋Š” ABP ์žฅ์น˜์— ๋Œ€ํ•ด ๊ธˆ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์„ ํƒ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ).
  • LoRaWAN 1.0.x ์žฅ์น˜์—๋Š” NwkKey ๊ฐ€ ์—†๊ณ  AppKey ์žˆ์Šต๋‹ˆ๋‹ค.
  • FNwkSIntKey ๋ฅผ NwkSKey ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์ชฝ).
  • Application Server๋Š” NwkKey ๋˜๋Š” AppKey ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ข‹์€ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.

  • Join Server๊ฐ€ ๋จผ์ € ์˜ค๋ฉด ํ๋ฆ„์ด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ OTAA์ด๊ณ  ํด๋Ÿฌ์Šคํ„ฐ JS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ JS ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๋Š” ๋ฃจํŠธ ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ JS์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— JS๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ NS๊ฐ€ JS ์กฐํšŒ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

  • "ํ™œ์„ฑํ™” ๋ชจ๋“œ"๋Š” ํŽ˜์ด๋กœ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ์‹ค์ œ๋กœ multicast bool ๋ฐ supports_join bool 2๊ฐœ์˜ ํ•„๋“œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. multicast && supports_join ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 3๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • frequency_plan -> frequency_plan_id
  • resets_f_cnt ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ false ์ž…๋‹ˆ๋‹ค.

  • FNwkSIntKey ๋Š” <1.1์— ๋Œ€ํ•ด์„œ๋งŒ NwkKey ๋กœ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • FNwkSIntKey >= 1.1์— ๋Œ€ํ•œ ABP NS ์„ค์ •์—์„œ ๋ˆ„๋ฝ๋จ
  • multicast ์žฅ์น˜์—๋Š” AppSKey ๋งŒ ํ•„์š” - NS๋Š” multicast ์žฅ์น˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ‚ค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ AS๋งŒ ๊ฐ€๋Šฅ

@htdvisser

Join Server๊ฐ€ ๋จผ์ € ์˜ค๋ฉด ํ๋ฆ„์ด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ์š”?

์•„์ง ์ง„ํ–‰ํ•˜์ง€ ์•Š์€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ์žฅ์น˜ ์ €์žฅ์†Œ #263์— ์žˆ๋Š” ์žฅ์น˜ ํ…œํ”Œ๋ฆฟ์˜ ํ•„๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •๋ง ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์€์ด ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

DevEUI๋Š” ABP ์žฅ์น˜์— ๋Œ€ํ•ด ๊ธˆ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์„ ํƒ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ).

ABP ์žฅ์น˜์—๋„ ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ํ•„๋“œ๊ฐ€ ์ ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FNwkSIntKey๋Š” NwkSKey๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์ชฝ).

๋”ฐ๋ผ์„œ ๋ ˆ์ด๋ธ”์€ 1.0.x ๋ฐ 1.1.x ๋ชจ๋‘์— ๋Œ€ํ•ด NwkSKey ์—ฌ์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ฝ˜์†”์— atm์ด ์žˆ๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Screenshot 2019-08-27 at 19 43 37

  • LoRaWAN 1.0.x ์žฅ์น˜์—๋Š” NwkKey๊ฐ€ ์—†๊ณ  AppKey๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์„œ๋ฒ„๊ฐ€ NwkKey ๋˜๋Š” AppKey๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณ ์ • ๐Ÿ‘Œ

@johanstokking

ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ OTAA์ด๊ณ  ํด๋Ÿฌ์Šคํ„ฐ JS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ JS ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๋Š” ๋ฃจํŠธ ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ JS์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— JS๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ NS๊ฐ€ JS ์กฐํšŒ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ๊ฐ€์ž… ์ œ์ถœ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๊นŒ? js์— ๋Œ€ํ•œ ์š”์ฒญ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๊นŒ?

https://github.com/TheThingsNetwork/lorawan-stack/issues/1134 ์™€ ๊ด€๋ จํ•˜์—ฌ ์ด ํ•„๋“œ๊ฐ€ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ์–ด๋””์— ์†ํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๊นŒ?

@rvolosatovs

ํ™œ์„ฑํ™” ๋ชจ๋“œ"๋Š” ํŽ˜์ด๋กœ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ์‹ค์ œ๋กœ 2๊ฐœ์˜ ํ•„๋“œ(๋ฉ€ํ‹ฐ์บ์ŠคํŠธ bool ๋ฐ support_join bool)์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ && support_join์ด ์œ ํšจํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 3๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด:

  1. supports_join=true - ์˜คํƒ€
  2. supports_join=false - ABP
  3. multicast=true && **no** supports_join - ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ
    ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€?

resets_f_cnt๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ false์ž…๋‹ˆ๋‹ค.

์•„์ง์€ ์œ ์ €๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ธฐ์—๋Š” ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์— ๋Œ€ํ•ด ์„ค์ •ํ•˜๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

FNwkSIntKey๋Š” <1.1์— ๋Œ€ํ•ด์„œ๋งŒ NwkKey๋กœ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

NwkSKey ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

frequency_plan -> frequency_plan_id
>= 1.1์— ๋Œ€ํ•œ ABP NS ์„ค์ •์—์„œ FNwkSIntKey๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์ • ๐Ÿ‘Œ

์—…๋ฐ์ดํŠธ๋œ ๋‹ค์ด์–ด๊ทธ๋žจ:

device-wizard-diagram2

@htdvisser

Join Server๊ฐ€ ๋จผ์ € ์˜ค๋ฉด ํ๋ฆ„์ด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ์š”?

๋„ค, ์ด๊ฒƒ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ ์ „์— MAC ๋ฒ„์ „์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ํ˜„์žฌ์˜ ํ๋ฆ„์„ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. MAC ๋ฒ„์ „์ด ์ž…๋ ฅ๋˜๋ฉด(NS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ) 1.1.x์ด๋ฏ€๋กœ NwkKey ๋ฅผ ์š”์ฒญํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์•„์ง ์ง„ํ–‰ํ•˜์ง€ ์•Š์€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ์žฅ์น˜ ์ €์žฅ์†Œ #263์— ์žˆ๋Š” ์žฅ์น˜ ํ…œํ”Œ๋ฆฟ์˜ ํ•„๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ„์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •๋ง ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์€์ด ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ฒ”์œ„ ๋ฐ–์ž…๋‹ˆ๋‹ค.

DevEUI๋Š” ABP ์žฅ์น˜์— ๋Œ€ํ•ด ๊ธˆ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์„ ํƒ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ).

ABP ์žฅ์น˜์—๋„ ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ํ•„๋“œ๊ฐ€ ์ ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์„ ํƒ์ ์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ์žฅ์น˜์— ๋Œ€ํ•œ ์‹๋ณ„ ์ •๋ณด๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ์ €์žฅ ์ˆ˜๋™ ๋กœ๋ฐ์—๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ DevEUI๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” DevEUI๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์งœ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

FNwkSIntKey๋Š” NwkSKey๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์ชฝ).

๋”ฐ๋ผ์„œ ๋ ˆ์ด๋ธ”์€ 1.0.x ๋ฐ 1.1.x ๋ชจ๋‘์— ๋Œ€ํ•ด NwkSKey ์—ฌ์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ฝ˜์†”์— atm์ด ์žˆ๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Screenshot 2019-08-27 at 19 43 37

1.0.x์˜ ๊ฒฝ์šฐ NwkSKey $์ด๊ณ  1.1.x์˜ ๊ฒฝ์šฐ FNwkSIntKey ์ž…๋‹ˆ๋‹ค.

ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ OTAA์ด๊ณ  ํด๋Ÿฌ์Šคํ„ฐ JS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ JS ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๋Š” ๋ฃจํŠธ ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ JS์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— JS๊ฐ€ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ NS๊ฐ€ JS ์กฐํšŒ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ๊ฐ€์ž… ์ œ์ถœ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๊นŒ? js์— ๋Œ€ํ•œ ์š”์ฒญ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๊นŒ?

๋ฌผ๋ก .

์˜ˆ๋Š” Semtech Join Server๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Semtech์˜ ๋ชจ๋Ž€์„ ๊ฐ–์ถ˜ ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ EUI๋งŒ ์•Œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

#1134์™€ ๊ด€๋ จํ•˜์—ฌ ์ด ํ•„๋“œ๊ฐ€ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ์–ด๋””์— ์†ํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋“ค์€ JS ๋‹จ๊ณ„์— ์†ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์—์„œ JS๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ JS์—์„œ ์žฅ์น˜๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ํ•„๋“œ๋Š” JS๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•„๋“œ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด:

  1. supports_join=true - ์˜คํƒ€
  2. supports_join=false - ABP
  3. multicast=true && **no** supports_join - ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ
    ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€?

์—„๊ฒฉํ•˜๊ฒŒ:

  1. ์˜คํƒ€: supports_join
  2. ABP: !supports_join && !multicast
  3. ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ: multicast

์œ ํšจํ•˜์ง€ ์•Š์Œ์€ supports_join && multicast ์ด์ง€๋งŒ NS์—์„œ ๊ฒ€์ฆ๋˜์—ˆ๊ฑฐ๋‚˜ ๊ฒ€์ฆ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

resets_f_cnt๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ false์ž…๋‹ˆ๋‹ค.

์•„์ง์€ ์œ ์ €๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ธฐ์—๋Š” ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์— ๋Œ€ํ•ด ์„ค์ •ํ•˜๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ์ด๊ฒƒ์€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์šฉ์ด ์•„๋‹™๋‹ˆ๋‹ค. resets_f_cnt ๋Š” ์—…๋งํฌ๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์—๋Š” ์—…๋งํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

FNwkSIntKey๋Š” <1.1์— ๋Œ€ํ•ด์„œ๋งŒ NwkKey๋กœ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

NwkSKey ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

์‹ค์ œ๋กœ NwkSKey ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@bafonins ๋Š” @johanstokking ์˜ ๋‹ต๋ณ€์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
multicast ๊ด€๋ จ - ์žฅ์น˜ ์ฃผ์†Œ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • https://github.com/TheThingsNetwork/lorawan-stack/issues/1134 ์—์„œ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • abp/multicast ์žฅ์น˜์— DevEUI ์ถ”๊ฐ€๋จ
  • ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์— Device Address ์ถ”๊ฐ€๋จ
    device-wizard-diagram4

multicast ์žฅ์น˜ ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„ ์„ค์ •์—์„œ ์žฅ์น˜ ์ฃผ์†Œ๊ฐ€ ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋จ

๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜ ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„ ์„ค์ •์—์„œ ์žฅ์น˜ ์ฃผ์†Œ๊ฐ€ ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋จ

์—…๋ฐ์ดํŠธ๋จ ๐Ÿ‘Œ

๋ฉ€ํ‹ฐ์บ์ŠคํŠธ๋Š” 1.0.x ๋ฐ 1.1.x์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ์ •๋ณด( DevAddr ๋ฐ ํ‚ค)๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ ABP์™€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์—์„œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ resets_join_nonces ๋Š” JS์—์„œ 1.1.x๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์น˜ ์ƒ์„ฑ์„ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ํ•„์š”ํ•˜๋ฉฐ ํ๋ฆ„๊ณผ ๊ตฌํ˜„์„ ๋ฐฑ์—”๋“œ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋” ๊ฐ€๊น๊ฒŒ ๋งŒ๋“œ๋Š” ๋™์‹œ์— ์‚ฌ์šฉ์ž์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณธ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ๊ณผ ๋„์ „:

  • ์ „์ฒด ํ๋ฆ„์„ ์ค‘๋‹จํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฏธ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ „ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์–‘์‹์„ "์—…๋ฐ์ดํŠธ ๋ชจ๋“œ"๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(IS๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋์ ์ด ๋™์ผํ•˜๋ฏ€๋กœ ๋น„๊ต์  ์‰ฌ์›Œ์•ผ ํ•จ).

  • ๋‚ด๊ฐ€ ๋ณด๋Š” ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” Application Server ๋‹จ๊ณ„๊ฐ€ ๋งค์šฐ ์–•๊ณ (๋‚˜์ค‘์— ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?) ๊ฑฐ๊ธฐ์— ํŽ˜์ด๋กœ๋“œ ํ˜•์‹ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • ์†”๋ฃจ์…˜์€ ๋‘˜ ๋‹ค ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ƒํ˜ธ ์˜์กด์ ์ด์ง€ ์•Š๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ AS ๋ฐ JS ๋‹จ๊ณ„๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ•œ ๋ถ„๋ฆฌ์— ๋ฐ˜๋Œ€๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ์ถ”์ƒํ™”๋กœ ์ „์ฒด ํ๋ฆ„์„ ๋‹จ์ˆœํ™”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹จ๊ณ„ ๋‚ด์—์„œ ๊ฐ ์Šคํƒ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ํ†ต์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ.

  • ์Šคํƒ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์œ„ํ•œ ์•ˆํ‹ฐ ํŒจํ„ด์ธ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋‹จ๊ณ„๋งŒ ์žˆ๋Š” ๋งˆ๋ฒ•์‚ฌ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋‹จ ํ•œ ๋‹จ๊ณ„์˜ ๊ฒฝ์šฐ ๋งˆ๋ฒ•์‚ฌ ์ธก๋ฉด์„ ๊ฐ„๋‹จํžˆ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • 2๋‹จ๊ณ„๋กœ ๋ฌธ์ œ๋ฅผ ์•ˆ๊ณ  ์‚ด์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ๐Ÿคทโ€โ™‚

  • ๋งˆ๋ฒ•์‚ฌ ์†”๋ฃจ์…˜์ด ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ์— ๋Œ€ํ•œ _์™„๋ฃŒ ์‹œ๊ฐ„_์„ ์ƒ๋‹นํžˆ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ๋งŽ์€ ์žฅ์น˜๋ฅผ ์†์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ผ๊ด„ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•˜๊ณ  CLI/์Šคํฌ๋ฆฝํŒ…๋„ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ทธ๋ž˜๋„ V2 ์ฝ˜์†” ์žฅ์น˜ ์ƒ์„ฑ๊ณผ์˜ ์ฐจ์ด์ ๊ณผ ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ธ์‹ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

  • ์ผ๋ฐ˜ ์„ค์ •์— ํ•ด๋‹นํ•˜๋Š” "๋ถ„ํ•  ํŽธ์ง‘" ์†”๋ฃจ์…˜์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.
  • ํ๋ฆ„๋„๋Š” ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์ผ๊ด„ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ/์‚ญ์ œ ๋ฐ ์ƒ์„ฑ ๋กค๋ฐฑ ๋กœ์ง์„ ์œ„ํ•œ js sdk์˜ ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ

์žฅ์น˜ ์š”์ฒญ์„ ๋ถ„ํ•  ๋ฐ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•œ SDK์˜ ๊ธฐ๋Šฅ์€ ์ด ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ์—ฌ์ „ํžˆ ๊ฝค ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์šฉ @johanstokking NS๋Š” MIC ๊ณ„์‚ฐ์„ ์œ„ํ•ด 1.1์˜ SNwkSIntKey ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. FNwkSIntKey ๋ฐ NwkSEncKey , ์‹ค์ œ๋กœ๋Š” IMO๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ „์ฒด ํ๋ฆ„์„ ์ค‘๋‹จํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฏธ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ „ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์–‘์‹์„ "์—…๋ฐ์ดํŠธ ๋ชจ๋“œ"๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(IS๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋์ ์ด ๋™์ผํ•˜๋ฏ€๋กœ ๋น„๊ต์  ์‰ฌ์›Œ์•ผ ํ•จ).

๋งˆ์นจ ์„ ๋ˆ„๋ฅด๊ธฐ ์ „์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ๋ฒ•์‚ฌ์—์„œ ์•ž๋’ค๋กœ ์ด๋™ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋‹ซ์•„๋„ ์žฅ์น˜๊ฐ€ ๋ฐ˜์ฏค ์ƒ์„ฑ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

  • ๋‚ด๊ฐ€ ๋ณด๋Š” ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” Application Server ๋‹จ๊ณ„๊ฐ€ ๋งค์šฐ ์–•๊ณ (๋‚˜์ค‘์— ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?) ๊ฑฐ๊ธฐ์— ํŽ˜์ด๋กœ๋“œ ํ˜•์‹ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์›๊ฒฉ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์„ค์ •, ์กฐ๊ฐํ™”๋œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก ์ „์†ก, Semtech ๋ชจ๋Ž€ ์˜ต์…˜ ๋“ฑ). ๊ทธ๋ž˜์„œ ์˜ˆ, ์ง€๊ธˆ์€ ์–•์ง€๋งŒ ํ™•์žฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์†”๋ฃจ์…˜์€ ๋‘˜ ๋‹ค ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ƒํ˜ธ ์˜์กด์ ์ด์ง€ ์•Š๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ AS ๋ฐ JS ๋‹จ๊ณ„๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ•œ ๋ถ„๋ฆฌ์— ๋ฐ˜๋Œ€๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ์ถ”์ƒํ™”๋กœ ์ „์ฒด ํ๋ฆ„์„ ๋‹จ์ˆœํ™”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹จ๊ณ„ ๋‚ด์—์„œ ๊ฐ ์Šคํƒ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ํ†ต์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ.

์šฐ๋ฆฌ์˜ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋”ฐ๋กœ ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋“ค์„ ๊ฒฐํ•ฉํ•˜๋ฉด ์ด๋ฏธ ๋ณต์žกํ•œ ํ๋ฆ„์— ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ€์šฉ์„ฑ์— ๋”ฐ๋ผ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง ํ•ญ๋ชฉ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

  • ์Šคํƒ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์œ„ํ•œ ์•ˆํ‹ฐ ํŒจํ„ด์ธ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋‹จ๊ณ„๋งŒ ์žˆ๋Š” ๋งˆ๋ฒ•์‚ฌ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋‹จ ํ•œ ๋‹จ๊ณ„์˜ ๊ฒฝ์šฐ ๋งˆ๋ฒ•์‚ฌ ์ธก๋ฉด์„ ๊ฐ„๋‹จํžˆ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • 2๋‹จ๊ณ„๋กœ ๋ฌธ์ œ๋ฅผ ์•ˆ๊ณ  ์‚ด์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ๐Ÿคทโ€โ™‚
  • ๋งˆ๋ฒ•์‚ฌ ์†”๋ฃจ์…˜์ด ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ์— ๋Œ€ํ•œ _์™„๋ฃŒ ์‹œ๊ฐ„_์„ ์ƒ๋‹นํžˆ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ๋งŽ์€ ์žฅ์น˜๋ฅผ ์†์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ผ๊ด„ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•˜๊ณ  CLI/์Šคํฌ๋ฆฝํŒ…๋„ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜๋„ V2 ์ฝ˜์†” ์žฅ์น˜ ์ƒ์„ฑ๊ณผ์˜ ์ฐจ์ด์ ๊ณผ ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ธ์‹ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ถ„๋ฆฌ์™€ ์œ ์—ฐํ•œ ๋ฐฐํฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” V2์™€ ๋น„๊ตํ•˜์—ฌ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด V3 ์ฝ˜์†”์—์„œ ํšจ๊ณผ์ ์ด๋ผ๋Š” ๊ฒƒ์€ ์ „์ ์œผ๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋งŽ์€ ์–‘์˜ ์žฅ์น˜๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์–ด์จŒ๋“  API์™€ CLI๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์—†์œผ๋ฉฐ ํ•ญ์ƒ ์ตœ์†Œ ๋‘ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ๋Œ€์‹  ํƒญ์„ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์—ฌ์ „ํžˆ ํ•œ ํŽ˜์ด์ง€์ด์ง€๋งŒ ๋‹จ๊ณ„๋ณ„๋กœ ์•ž๋’ค๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@johanstokking

๋งˆ์นจ์„ ๋ˆ„๋ฅด๊ธฐ ์ „์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ๋งŒ ์‹ค์ œ ์š”์ฒญ์„ ํ•˜๋ฉด 3-4 ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐ˜ํ™˜๋œ ์˜ค๋ฅ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋‹จ๊ณ„/์žฌ์„ค์ • ์ €์žฅ์†Œ ๋“ฑ์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ๊ฐ’์„ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์—ฐ์†์ ์ธ ๋‹จ๊ณ„๋Š” ์ œ์ถœ๋œ ๊ฐ’์ด ์œ ํšจํ•œ ๊ฒƒ์œผ๋กœ ์˜์กดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งˆ๋ฒ•์‚ฌ์—์„œ ์•ž๋’ค๋กœ ์ด๋™ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋‹ซ์•„๋„ ์žฅ์น˜๊ฐ€ ๋ฐ˜์ฏค ์ƒ์„ฑ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ๋ฒ•์‚ฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค(์ œ์ถœ๋กœ ์ด์–ด์ง€๋Š” ๋‹จ๊ณ„์— ๋Œ€ํ•ด). Mb, ๋‹จ์ผ ๊ตฌ์„ฑ ์š”์†Œ์— ์ €์žฅ๋œ ์„ ํƒ์  ํ•„๋“œ๋งŒ(๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Œ) name , description . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

@kschiffer

์Šคํƒ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์œ„ํ•œ ์•ˆํ‹ฐ ํŒจํ„ด์ธ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋‹จ๊ณ„๋งŒ ์žˆ๋Š” ๋งˆ๋ฒ•์‚ฌ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ๋Œ€์ฒด ์†”๋ฃจ์…˜์— ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ œ์•ˆ?

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ๋งŒ ์‹ค์ œ ์š”์ฒญ์„ ํ•˜๋ฉด 3-4 ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐ˜ํ™˜๋œ ์˜ค๋ฅ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋‹จ๊ณ„/์žฌ์„ค์ • ์ €์žฅ์†Œ ๋“ฑ์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ๊ฐ’์„ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์—ฐ์†์ ์ธ ๋‹จ๊ณ„๋Š” ์ œ์ถœ๋œ ๊ฐ’์ด ์œ ํšจํ•œ ๊ฒƒ์œผ๋กœ ์˜์กดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ข‹์•„์š”. ์ฝ˜์†”์ด ER์— ์žˆ์ง€๋งŒ ํ•ด๋‹น ๋‹จ๊ณ„๊ฐ€ ์‹คํŒจํ–ˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ํƒญ ๋“ฑ์„ ๋‹ซ์•˜๊ธฐ ๋•Œ๋ฌธ์— JS/NS/AS์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์žฅ์น˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ๋ฒ•์‚ฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค(์ œ์ถœ๋กœ ์ด์–ด์ง€๋Š” ๋‹จ๊ณ„์— ๋Œ€ํ•ด). Mb, ๋‹จ์ผ ๊ตฌ์„ฑ ์š”์†Œ์— ์ €์žฅ๋œ ์„ ํƒ์  ํ•„๋“œ๋งŒ(๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Œ) name , description . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋œป์ด์—์š”?

์˜ˆ๋ฅผ ๋“ค์–ด AS๋Š” ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์žฅ์น˜๊ฐ€ ์กด์žฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ AS๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ AS์— ๋Œ€ํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š๋”๋ผ๋„ AS์— (๋นˆ) ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋œป์ด์—์š”?

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ @kschiffer ์ œ์•ˆ์— ๋Œ€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ „ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์–‘์‹์„ "์—…๋ฐ์ดํŠธ ๋ชจ๋“œ"๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(IS๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋์ ์ด ๋™์ผํ•˜๋ฏ€๋กœ ๋น„๊ต์  ์‰ฌ์›Œ์•ผ ํ•จ).

๋งˆ๋ฒ•์‚ฌ์—์„œ ์•ž๋’ค๋กœ ์ด๋™ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋‹ซ์•„๋„ ์žฅ์น˜๊ฐ€ ๋ฐ˜์ฏค ์ƒ์„ฑ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฏธ๋ž˜์˜ ๊ฐœ์„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํ๋ฆ„์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์‚ฌ์šฉ์ž๋Š” ์ผ๋ฐ˜ ์„ค์ • ํŽ˜์ด์ง€์—์„œ ์žฅ์น˜๋ฅผ ํŽธ์ง‘/์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ๋Œ€์ฒด ์†”๋ฃจ์…˜์— ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ œ์•ˆ?

๊ธ€์Ž„, ๋‚˜๋Š” ์ด ํŠน์ •ํ•œ ์ƒํ™ฉ์˜ _edge-casiness_๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ์ด ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํ‘œํ˜„์€ ์ œ์•ˆ๋œ ์†”๋ฃจ์…˜ ์—†์ด ์šฐ๋ ค ์‚ฌํ•ญ์„ ๋งํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ œ์•ˆํ•˜์ง€๋งŒ, ์ฆ‰์‹œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ œ์•ˆํ•  ๊ธฐํšŒ๋ฅผ ์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ๋ฒ•์‚ฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค(์ œ์ถœ๋กœ ์ด์–ด์ง€๋Š” ๋‹จ๊ณ„์— ๋Œ€ํ•ด). Mb, ๋‹จ์ผ ๊ตฌ์„ฑ ์š”์†Œ์— ์ €์žฅ๋œ ์„ ํƒ์  ํ•„๋“œ๋งŒ(๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Œ) name , description . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งˆ๋ฒ•์‚ฌ ํŒจํ„ด์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋‹ค์‹œ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํŠนํžˆ ์ƒํ˜ธ ์˜์กด์ ์ธ ๊ฒฝ์šฐ ์ด์ „ ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ๊ฒ€์‚ฌํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ด ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ๊ฒฐ๊ตญ์—๋Š” ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋ฌธ์ œ์—์„œ ์ถ”์ ).

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณต์žกํ•œ ํ”„๋ก ํŠธ์—”๋“œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ์ด UX์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ์•ฝ์†์— ์˜ํ–ฅ์„ ๋ฏธ์ณ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฏธ๋ž˜์˜ ๊ฐœ์„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํ๋ฆ„์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์‚ฌ์šฉ์ž๋Š” ์ผ๋ฐ˜ ์„ค์ • ํŽ˜์ด์ง€์—์„œ ์žฅ์น˜๋ฅผ ํŽธ์ง‘/์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ถ๊ทน์ ์œผ๋กœ ์ด๊ฒƒ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ์€ ์•„๋‹ˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ๋Š” ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”„๋ผ์ธ์—์„œ ๋…ผ์˜ํ•œ ๋Œ€๋กœ ์ดˆ๊ธฐ ์ œ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋””๋ฐ”์ด์Šค ์ƒ์„ฑ

  1. ์ผ๋ฐ˜ ์„ค์ •

    • ํ•„๋“œ



      • ids


      • ์˜ต์…˜ name


      • ์˜ต์…˜ description


      • ์˜ต์…˜ attributes


      • ํ•„์ˆ˜ ํ™œ์„ฑํ™” ๋ชจ๋“œ: OTAA, ABP ๋˜๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ


      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ





        • lorawan_version



        • lorawan_phy_version






    • ์ด ๋‹จ๊ณ„๋Š” IS์—์„œ๋งŒ ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹๋ณ„์ž๊ฐ€ ๋ฌด๋ฃŒ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํ™œ์„ฑํ™” ๋ชจ๋“œ๋Š” ์„ธ์…˜ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

    • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋งˆ๋ฒ•์‚ฌ์˜ ๋‹จ์ˆœ์„ฑ์„ ์œ„ํ•ด ์„ธ์…˜ ์ƒํƒœ์—์„œ ์•Œ๋ ค์ง„ ๊ฐ€์žฅ ๋†’์€ ๋ฒ„์ „(์ฆ‰, ํ˜„์žฌ ๊ฐ๊ฐ 1.1.0 ๋ฐ 1.1.0-A)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. LoRaWAN ์„ค์ •

    • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: ํ•„๋“œ

      • lorawan_version (ํ•„์ˆ˜)

      • lorawan_phy_version (ํ•„์ˆ˜)

      • supports_join ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ OTAA์ธ ๊ฒฝ์šฐ ์„ค์ •(ํ•„์ˆ˜)

      • ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์ธ ๊ฒฝ์šฐ multicast ์„ค์ •

      • supports_class_b

      • supports_class_c

      • frequency_plan_id (ํ•„์ˆ˜)

      • mac_settings.supports_32_bit_f_cnt

      • mac_settings.factory_preset_frequencies

      • mac_settings.ping_slot_data_rate_index.value

      • mac_settings.ping_slot_frequency

      • mac_settings.ping_slot_periodicity.value

      • mac_settings.rx2_data_rate_index.value

      • min_frequency

      • max_frequency

    • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ OTAA์ธ ๊ฒฝ์šฐ ํ•„๋“œ

      • ์™ธ๋ถ€ JS ์‚ฌ์šฉ ์—ฌ๋ถ€ ์ฒดํฌ๋ฐ•์Šค(๊ธฐ๋ณธ ์„ ํƒ)

    • ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ ABP ๋˜๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์ธ ๊ฒฝ์šฐ ํ•„๋“œ

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS ๋˜๋Š” AS์ธ ๊ฒฝ์šฐ: session.dev_addr

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS ๋˜๋Š” AS์ธ ๊ฒฝ์šฐ: session.keys.session_key_id ์ƒ์„ฑ

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: session.keys.f_nwk_s_int_key.key - ํ•„์ˆ˜

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: session.keys.s_nwk_s_int_key.key (LW >= 1.1.0์ธ ๊ฒฝ์šฐ) - ํ•„์ˆ˜

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: session.keys.nwk_s_enc_key.key (LW >= 1.1.0์ธ ๊ฒฝ์šฐ) - ํ•„์ˆ˜

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ AS์ธ ๊ฒฝ์šฐ: session.keys.app_s_key.key - ํ•„์ˆ˜

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: session.last_conf_f_cnt_down

      • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: session.last_n_f_cnt_down

    • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ ABP์ธ ๊ฒฝ์šฐ ํ•„๋“œ

      • mac_settings.resets_f_cnt

    • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS ๋˜๋Š” AS์ธ ๊ฒฝ์šฐ: ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ ABP์ธ ๊ฒฝ์šฐ ํ•„๋“œ

      • session.last_f_cnt_up - ๋ณด์•ˆ์„ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: ํ™œ์„ฑํ™” ๋ชจ๋“œ๊ฐ€ ABP ๋˜๋Š” OTAA์ธ ๊ฒฝ์šฐ ํ•„๋“œ

      • mac_settings.adr_margin
      • mac_settings.class_b_timeout
      • mac_settings.class_c_timeout
      • mac_settings.desired_adr_ack_delay_exponent.value
      • mac_settings.desired_adr_ack_limit_exponent.value
      • mac_settings.desired_max_duty_cycle.value
      • mac_settings.desired_rx1_data_rate_offset
      • mac_settings.desired_rx1_delay.value
      • mac_settings.desired_rx2_data_rate_index.value
      • mac_settings.desired_rx2_frequency
      • mac_settings.max_duty_cycle.value
      • mac_settings.rx1_data_rate_offset
      • mac_settings.rx1_delay.value
      • mac_settings.status_count_periodicity
      • mac_settings.status_time_periodicity
      • mac_settings.supports_32_bit_f_cnt
      • mac_settings.use_adr
    • NS ๋ฐ AS(ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๊ฒฝ์šฐ)์˜ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. OTAA ์žฅ์น˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์‹œ์ ์—์„œ AS์— ์„ค์ •ํ•  ํ•ญ๋ชฉ์ด ์—†์ง€๋งŒ ์—ฌ์ „ํžˆ ์ผ๊ด€์„ฑ์„ ์š”๊ตฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  3. ํด๋Ÿฌ์Šคํ„ฐ์˜ AS์ธ ๊ฒฝ์šฐ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •

    • ํ•„๋“œ



      • payload_formatters



    • ์ด๊ฒƒ์€ ์žฅ์น˜๋ฅผ AS๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ํด๋Ÿฌ์Šคํ„ฐ์— JS๊ฐ€ ์žˆ๊ณ  OTAA์ธ ๊ฒฝ์šฐ ์™ธ๋ถ€ JS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ: ๋ณด์•ˆ ์„ค์ •

    • ํ•„๋“œ



      • root_keys.root_key_id ์ƒ์„ฑ


      • root_keys.app_key.key


      • root_keys.nwk_key.key (LW >= 1.1.0์ธ ๊ฒฝ์šฐ)


      • resets_join_nonces


      • home_net_id


      • network_server_kek_label


      • application_server_kek_label


      • application_server_id



    • ์ด๊ฒƒ์€ JS์—์„œ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๊ธฐ ์—…๋ฐ์ดํŠธ

์—ฌ๊ธฐ์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ๋ฒ•์‚ฌ ๋‹จ๊ณ„๋ฅผ ํƒญ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํƒญ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ ๋ฐ”๋กœ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ids , supports_join , multicast ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค.
  • ํ™œ์„ฑํ™” ๋ชจ๋“œ๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

    • OTAA: ํด๋Ÿฌ์Šคํ„ฐ์— NS๊ฐ€ ์—†๊ฑฐ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ์— NS๊ฐ€ ์žˆ๊ณ  NS์— supports_join ๋ผ๊ณ  ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ

    • ABP: ํด๋Ÿฌ์Šคํ„ฐ์— NS๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ์—๋งŒ ๊ด€๋ จ๋จ): !supports_join && !multicast

    • ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ: ํด๋Ÿฌ์Šคํ„ฐ์— NS ํ•„์š”(์ด ๊ฒฝ์šฐ์—๋งŒ ๊ด€๋ จ๋จ): !supports_join && multicast ( multicast ์ด๋ฉด ์ถฉ๋ถ„ํ•จ)

๊ธฐ๊ธฐ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • ์ฝ˜์†”์€ ํด๋Ÿฌ์Šคํ„ฐ์— NS, AS ๋ฐ JS๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์žฅ์น˜๋Š” NS, AS ๋˜๋Š” JS์— ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฝ˜์†”์€ 404๋ฅผ ์–ป์Œ). ์ด๊ฒƒ์€ ์œ ํšจํ•œ ๊ฒฝ์šฐ์ด๋ฉฐ ์ฝ˜์†”์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋ก€์˜ ์˜ˆ๋Š” ์žฅ์น˜๊ฐ€ ER ๋ฐ JS๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€๋งŒ NS ๋ฐ AS์—์„œ๋Š” (์•„์ง) ์„ค์ •๋˜์ง€ ์•Š์€ ์ฒญ๊ตฌ๋œ ์žฅ์น˜์ž…๋‹ˆ๋‹ค.
  • ์ด์ „์— ๊ตฌ์ถ•: ER ๋ฐ JS์—๋งŒ ์žˆ๋Š” ์žฅ์น˜์˜ LoRaWAN ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, NS ๋ฐ AS์— ์„ค์ •).
  • lorawan_version ๋ฐ lorawan_phy_version ๋ณ€๊ฒฝ(์ œ์•ฝ ์กฐ๊ฑด ๋ณ€๊ฒฝ)
  • "์™ธ๋ถ€ JS" ์˜ต์…˜ ๋ณ€๊ฒฝ ์ฆ‰, ๊ธฐ์กด ์žฅ์น˜๊ฐ€ ์žˆ์ง€๋งŒ cluster-JS์—์„œ ๋ฃจํŠธ ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ํ™•์ธ๋ž€์˜ ์„ ํƒ์„ ์ทจ์†Œํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์•ˆ ์„ค์ • ํƒญ์—์„œ ๋ฃจํŠธ ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€๋Ÿ‰ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ†ตํ•ด ์žฅ์น˜๋ฅผ JS์—์„œ ์ƒ์„ฑํ•˜๊ณ  ๋ฃจํŠธ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๋Š” ๋ฃจํŠธ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค( root_keys != nil ). ๊ทธ๋Ÿฌ๋‚˜ ๋…ธ์ถœ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค( root_keys.app_key == null ๋“ฑ). ์‚ฌ์šฉ์ž๋Š” ๋ฃจํŠธ ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘˜ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๋ฌผ๊ฑด

  • ํ‚ค์˜ ๊ฒฝ์šฐ ์ž…๋ ฅ ํ•„๋“œ ๋˜๋Š” ๋ฌด์ž‘์œ„ ๋ฒ„ํŠผ ์ƒ์„ฑ
  • ์™ธ๋ถ€ JS์™€ ๋…ธ์ถœ๋˜์ง€ ์•Š์€ ๋ฃจํŠธ ํ‚ค์˜ ์ฐจ์ด์ 

    • ์™ธ๋ถ€ JS๋Š” JS๊ฐ€ NS์™€ ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ์ง€ ์•Š์€ ๊ณณ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด OTAA ์žฅ์น˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ํ‚ค๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ์„ค์ •์„ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

    • ๋…ธ์ถœ๋˜์ง€ ์•Š์€ ๋ฃจํŠธ ํ‚ค๋Š” ์žฅ์น˜๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๋กœ์ปฌ JS์— ์žˆ์ง€๋งŒ JS๋Š” ๋ฃจํŠธ ํ‚ค๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ณด์•ˆ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, JS๊ฐ€ ๋ฃจํŠธ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š” ๋ณด์•ˆ ์š”์†Œ์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

https://github.com/TheThingsNetwork/lorawan-stack/issues/579#issuecomment -525719408์— NS์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  mac_settings ๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์žฅ์น˜์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์‚ฌํ•ญ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • "mac_settings.factory_preset_frequencies"
  • "mac_settings.ping_slot_data_rate_index.value"
  • "mac_settings.ping_slot_frequency"
  • "mac_settings.ping_slot_periodicity.value"
  • "mac_settings.rx2_data_rate_index.value"
  • "mac_settings.rx2_frequency"

์•„๋งˆ๋„ ๋ช…ํ™•ํžˆ ํ•  ๋ช‡ ๊ฐ€์ง€

๋งŒ๋“ค๋‹ค:

  1. ์ผ๋ฐ˜ ์„ค์ •
    ใ…. ER์—์„œ ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ NS/AS/JS ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ์น˜๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ ER ๋“ฑ๋ก์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ? ์™ธ๋ถ€ JS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด?
    ๋น„. ํ™œ์„ฑํ™” ๋ชจ๋“œ๋ฅผ ER์— ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?
    ์”จ. phy/mac ๋ฒ„์ „์„ ER์— ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?
  2. LoRaWAN ์„ค์ •
    ใ…. supports_class_b ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •
    ใ…. ์˜ˆ, ์ด๋Š” AS์— ์žฅ์น˜๋ฅผ ๋‘ ๋ฒˆ ์„ค์ •ํ–ˆ์Œ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ:

  • ํ™œ์„ฑํ™” ๋ชจ๋“œ: ์ด๊ฒƒ์„ ER์— ์ €์žฅํ•˜๋ฉด ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • 404๋งŒ ๋ณด๋‚˜์š” ์•„๋‹ˆ๋ฉด ER์˜ NS/AS/JS ์ฃผ์†Œ๋„ ๋ณด๋‚˜์š”?
  • ์˜ˆ๋ฅผ ๋“ค์–ด "external JS"๋ฅผ true ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ๋˜๋Š” NS์—์„œ ์žฅ์น˜ ์ƒํƒœ๋ฅผ ์žฌ์„ค์ •ํ•  ๋•Œ ๊ฐœ๋ณ„ NS/AS/JS ๋“ฑ๋ก์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๋ฌผ๊ฑด:

  • _"์™ธ๋ถ€ JS๋Š” JS๊ฐ€ NS์™€ ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ์ง€ ์•Š์€ ๊ณณ์ž…๋‹ˆ๋‹ค."_: "join_server_address๊ฐ€ ์ฝ˜์†” ๊ตฌ์„ฑ์˜ JS ์ฃผ์†Œ์™€ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ƒ์œ„ ํ•„๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ:
https://github.com/TheThingsNetwork/lorawan-stack/blob/375c82cc068bbadb72b887e25631f8f2dc03a366/api/end_device.proto#L395 -L418 ์ด ์ „์ฒด ์ฒญํฌ๋Š” NS์— ์†ํ•ฉ๋‹ˆ๋‹ค.

m{in,ax}_frequency ๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์— ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@rvolosatovs

#579(๋Œ“๊ธ€) ์—๋Š” NS์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  mac_settings ๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์žฅ์น˜์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์‚ฌํ•ญ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ๋ฌธ์ œ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋Œ“๊ธ€์— ๋ฌปํžŒ ์ •๋ณด์˜ ์–‘์ž…๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ํ•„๋“œ๋ฅผ _์ •ํ™•ํžˆ_ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ œ ์ „์ฒด ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ ๋ชฉ๋ก์„ ๋ณต์‚ฌํ•ด๋„ ๊ดœ์ฐฎ์œผ๋ฏ€๋กœ ์ตœ์ข… ๋ฒ„์ „์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์ ์ง„์ ์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.


@htdvisser

  1. ์ผ๋ฐ˜ ์„ค์ •
    ใ…. ER์—์„œ ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ NS/AS/JS ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ์น˜๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ ER ๋“ฑ๋ก์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ? ์™ธ๋ถ€ JS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด?

AS/NS/JS์—์„œ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ฃผ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋น„. ํ™œ์„ฑํ™” ๋ชจ๋“œ๋ฅผ ER์— ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ํ˜„์žฌ๋กœ์„œ๋Š” ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ์—†์œผ๋ฉฐ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ถˆ์ผ์น˜์˜ ์—ฌ์ง€๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

์”จ. phy/mac ๋ฒ„์ „์„ ER์— ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, API ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚˜๋Š” ํ•„์š”์„ฑ์„ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ ๋ถˆ์ผ์น˜์˜ ์—ฌ์ง€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ใ…. supports_class_b ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. #19๋ฅผ ๋ณด๋ฅ˜ ์ค‘์ž…๋‹ˆ๋‹ค. @rvolosatovs ๊ด€๋ จ๋˜๋Š” ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „์— ์ด๋ฅผ ํฌํ•จํ•˜์‹ญ์‹œ์˜ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •
    ใ…. ์˜ˆ, ์ด๋Š” AS์— ์žฅ์น˜๋ฅผ ๋‘ ๋ฒˆ ์„ค์ •ํ–ˆ์Œ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ๊ฒƒ์€ ์•„ํ”„์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์—…๋ฐ์ดํŠธ:

  • ํ™œ์„ฑํ™” ๋ชจ๋“œ: ์ด๊ฒƒ์„ ER์— ์ €์žฅํ•˜๋ฉด ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์‰ฝ๊ฒŒ ๊ฐ€์•ผ ํ•˜๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์™„์ „ํžˆ ์ ์šฉ๋˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ซ ํŒจ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๊นจ๋—ํ•œ ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ lorawan_version ๊ฐ€ ER์— ์—†์„ ๋•Œ ํœด๋ฆฌ์Šคํ‹ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  NS์—์„œ ์กฐ๊ฑด๋ถ€ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • 404๋งŒ ๋ณด๋‚˜์š” ์•„๋‹ˆ๋ฉด ER์˜ NS/AS/JS ์ฃผ์†Œ๋„ ๋ณด๋‚˜์š”?

์ฃผ์†Œ ์„ธํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ 404๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค "ํ•ด๋‹น ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—†์Œ"์œผ๋กœ ํ•ด์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IS ๋ฐ AS/NS/JS์—์„œ ์ƒ์„ฑ์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ˜์†”์—์„œ ์ƒ์„ฑ๋œ ๋ถˆ์ผ์น˜๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด "external JS"๋ฅผ true ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ๋˜๋Š” NS์—์„œ ์žฅ์น˜ ์ƒํƒœ๋ฅผ ์žฌ์„ค์ •ํ•  ๋•Œ ๊ฐœ๋ณ„ NS/AS/JS ๋“ฑ๋ก์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜ ๋‚˜์ค‘์— ํ•˜์ž

  • _"์™ธ๋ถ€ JS๋Š” JS๊ฐ€ NS์™€ ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ์ง€ ์•Š์€ ๊ณณ์ž…๋‹ˆ๋‹ค."_: "join_server_address๊ฐ€ ์ฝ˜์†” ๊ตฌ์„ฑ์˜ JS ์ฃผ์†Œ์™€ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ์‹ค์ œ๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. join_server_address ๋„ interop์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@bafonins ์•„์ง ๊ทธ๋ž˜ํ”„ ์†Œ์Šค๊ฐ€ ์žˆ๋‚˜์š”?
์ด๋ฏธ ๊ทธ๊ฒƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋งŽ์€ ์ž‘์—…์ด ๋“ค์–ด๊ฐ”๊ธฐ ๋•Œ๋ฌธ์— ๋ช…ํ™•ํ•œ ํ‘œํ˜„์„ ์œ„ํ•ด ์™„์„ฑ๋˜๋„๋ก ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ํ† ๋ก ์„ ๋ณต์žกํ•˜๊ฒŒ ํ•˜์ง€ ์•Š๋„๋ก NS ๋ถ€๋ถ„์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ž‘์—…๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

graph
๊ฐ€๋Šฅํ•œ ๋ชจ๋“  NS ํ•„๋“œ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋œ ํ•„๋“œ๋Š” ํ•„์ˆ˜ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

@rvolosatovs ๋Š” ์žฅ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์ฝ˜์†”์— ํ‘œ์‹œํ•  ํ๋ฆ„๊ณผ ํ•„๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด,

  • mac_state.lorawan_version ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ์ง€๊ธˆ์€ CLI๋ฅผ ํ†ตํ•ด mac_state.ping_slot_periodicity ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ supports_class_b , supports_class_c ๋ฐ mac_state.device_class ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ƒ์„ฑ์˜ ์ผ๋ถ€์ด๊ณ  ์—…๋ฐ์ดํŠธ์˜ ์ผ๋ถ€์ด๋ฉฐ ์„œ๋กœ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
  • ๊ฐœ๋ณ„ ์นด์šดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. "reset frame counters" ๋ฒ„ํŠผ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(afaik์€ ๋ณ„๋„์˜ ์ž‘์—…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. V2 ์ฝ˜์†”์—์„œ์™€ ๊ฐ™์ด ์นด์šดํ„ฐ๋ฅผ 0 ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค)
  • mac_settings ๋ฐ mac_state.desired_parameters ์ฝ˜์†”์—์„œ ์›ํ•˜๋Š” ์„ค์ •์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. @htdvisser ์—ฌ๊ธฐ ๊ฐ™์ด ์ƒ๊ฐํ•ด๋„ ๋ ๊นŒ์š”?

https://github.com/TheThingsNetwork/lorawan-stack/issues/579#issuecomment -553347858์—์„œ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ชฉ๋ก์—์„œ ์ ์ง„์ ์œผ๋กœ ์ž‘์—…ํ•˜์‹ญ์‹œ์˜ค.

์ •ํ™•ํ•œ ์œ„์น˜์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด ์งˆ๋ฌธ์— ๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, NS์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์„ค์ • ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์ ์–ด๋„ ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋‹น์‹ ์˜ ์งˆ๋ฌธ์„ ์ดํ•ดํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ฝ˜์†”์— ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ชจ๋“  mac_state ์€ ์•„๋งˆ๋„ CLI๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์„ค์ • ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ธฐ์กด ์„ธ์…˜์— ๋“ฑ๋ก ์ค‘์ธ ABP/๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜ ๋ฐ/๋˜๋Š” OTAA ์žฅ์น˜์— ๋Œ€ํ•ด ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MAC ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ ์นด์šดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. "reset frame counters" ๋ฒ„ํŠผ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(afaik์€ V2 ์ฝ˜์†”์—์„œ์™€ ๊ฐ™์ด ์นด์šดํ„ฐ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ณ„๋„์˜ ์ž‘์—…์ผ ์ˆ˜ ์žˆ์Œ)

ABP ๋ฐ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์— ๋Œ€ํ•œ ๋‹ค์šด๋งํฌ ํ”„๋ ˆ์ž„ ์นด์šดํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NS๊ฐ€ ๋‹ค์šด๋งํฌ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์—…๋งํฌ์˜ ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„ ์นด์šดํ„ฐ๋Š” ABP์˜ ๋ณด์•ˆ ๊ด€์ ์—์„œ๋„ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๊ธฐ ์—…๋ฐ์ดํŠธ

์—ฌ๊ธฐ์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ๋ฒ•์‚ฌ ๋‹จ๊ณ„๋ฅผ ํƒญ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํƒญ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@bafonins ์˜ ์ฒซ ๋ฒˆ์งธ ์˜๊ฒฌ์— ๋‚˜์™€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ๊ธฐ์—์„œ ์•„์ฝ”๋””์–ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
image

์ˆ˜ํ‰ ๊ณต๊ฐ„ ๋ฌธ์ œ๊ฐ€ ์ค„์–ด๋“ค๊ณ  Edit / Create ๋ฒ„ํŠผ์œผ๋กœ ๋ชจ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@rvolosatovs

ABP ๋ฐ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์— ๋Œ€ํ•œ ๋‹ค์šด๋งํฌ ํ”„๋ ˆ์ž„ ์นด์šดํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NS๊ฐ€ ๋‹ค์šด๋งํฌ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์—…๋งํฌ์˜ ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„ ์นด์šดํ„ฐ๋Š” ABP์˜ ๋ณด์•ˆ ๊ด€์ ์—์„œ๋„ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฐ„๋‹จํ•˜๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, 2/3๊ฐœ์˜ ์ž…๋ ฅ ์ƒ์ž๋Š” ํŠน์ • ์ž‘์—…์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์žฌ์„ค์ • ๋ฒ„ํŠผ๋ณด๋‹ค ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”์— ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ชจ๋“  mac_state ์€ ์•„๋งˆ๋„ CLI๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์„ค์ • ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ธฐ์กด ์„ธ์…˜์— ๋“ฑ๋ก ์ค‘์ธ ABP/๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜ ๋ฐ/๋˜๋Š” OTAA ์žฅ์น˜์— ๋Œ€ํ•ด ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MAC ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

์ดํ•ด ํ–ˆ์–ด์š”. "์ด๋ฏธ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ๊ธฐ์กด ABP ์žฅ์น˜"์—์„œ "์ƒˆ ABP ์žฅ์น˜ ๋ฐ ์žฌ์„ค์ • ABP ์žฅ์น˜"๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ „์ž๋Š” ์™„์ „ํ•ด์•ผ ํ•˜๋ฏ€๋กœ mac_state.desired_parameters ๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€ mac_state (์ฆ‰, ๊ณต์žฅ ์ดˆ๊ธฐํ™” ์ฃผํŒŒ์ˆ˜, RX1 ์ง€์—ฐ, RX2 ์„ค์ • ๋“ฑ)๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ›„์ž๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ ๋‚˜์ค‘์— ์ฝ˜์†”์—์„œ ๋ฏธ์„ธ ์กฐ์ • ์„ค์ •์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ CLI๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์—…๋ฐ์ดํŠธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

LoRaWAN ์„ค์ •

  • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: ํ•„๋“œ

    • mac_settings.factory_preset_frequencies

    • mac_settings.ping_slot_data_rate_index.value

    • mac_settings.ping_slot_frequency

    • mac_settings.ping_slot_periodicity.value

    • mac_settings.rx2_data_rate_index.value

์ด๊ฒƒ์ด OTAA์— ํ•„์š”ํ•œ๊ฐ€์š”? ABP์™€ Multicast์—๋งŒ ํ•ด๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@johanstokking

LoRaWAN ์„ค์ •

  • ํด๋Ÿฌ์Šคํ„ฐ์˜ NS์ธ ๊ฒฝ์šฐ: ํ•„๋“œ

    • mac_settings.factory_preset_frequencies

    • mac_settings.ping_slot_data_rate_index.value

    • mac_settings.ping_slot_frequency

    • mac_settings.ping_slot_periodicity.value

    • mac_settings.rx2_data_rate_index.value

์ด๊ฒƒ์ด OTAA์— ํ•„์š”ํ•œ๊ฐ€์š”? ABP์™€ Multicast์—๋งŒ ํ•ด๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  MAC ์„ค์ •์€ ์„ค๊ณ„์ƒ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด "ํ•„์ˆ˜"์ธ ์œ ์ผํ•œ ๊ฒฝ์šฐ๋Š” ํด๋ž˜์Šค B ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์ด๋ฉฐ, ์ด๋Š” ํด๋ž˜์Šค B ์ž‘๋™ ํŠน์„ฑ์œผ๋กœ ์ธํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ ์™ธ์—๋„ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ABP์— factory_preset_frequencies ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ OTAA ์žฅ์น˜๊ฐ€ ํ•ด๋‹น ์„ค์ •์„ ๊ฐ–๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  MAC ์„ค์ •์€ ์„ค๊ณ„์ƒ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด "ํ•„์ˆ˜"์ธ ์œ ์ผํ•œ ๊ฒฝ์šฐ๋Š” ํด๋ž˜์Šค B ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์žฅ์น˜์ด๋ฉฐ, ์ด๋Š” ํด๋ž˜์Šค B ์ž‘๋™ ํŠน์„ฑ์œผ๋กœ ์ธํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์•„์š”

๊ทธ ์™ธ์—๋„ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ABP์— factory_preset_frequencies ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ OTAA ์žฅ์น˜๊ฐ€ ํ•ด๋‹น ์„ค์ •์„ ๊ฐ–๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

OTAA์—๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์กฐ์ธ ์ฃผํŒŒ์ˆ˜๋Š” ์‚ฌ์–‘์— ๋”ฐ๋ผ ํ•„์š”ํ•˜๋ฉฐ ์ฑ„๋„์€ join-accept ๋ฐ MAC ๋ช…๋ น์„ ํ†ตํ•ด ๋“ค์–ด์˜ต๋‹ˆ๋‹ค. OTAA ์žฅ์น˜์— ๋Œ€ํ•œ ์‚ฌ์ „ ์„ค์ • ์ฃผํŒŒ์ˆ˜์˜ ๋Œ€์—ญ ์™ธ ๊ตฌ์„ฑ์ด ์žˆ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

@bafonins ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋ฐ ํƒ€์ž„๋ผ์ธ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

app_s_key ๋ฐ skip_payload_crypto ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • AS๋Š” ์ตœ์ข… ์žฅ์น˜์˜ skip_payload_crypto ํ•„๋“œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. true ์ด๋ฉด AS๋Š” ํŽ˜์ด๋กœ๋“œ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    • AS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์—์„œ๋„ skip_payload_crypto ๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉฐ(ํŽ˜์ด๋กœ๋“œ ํฌ๋งทํ„ฐ์™€ ๊ฐ™์€ ๋งํฌ๋ฅผ ํ†ตํ•ด) ์ตœ์ข… ์žฅ์น˜์˜ ์„ค์ •๋ณด๋‹ค ์šฐ์„  ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • AS์—๋Š” ํ•ญ์ƒ app_s_key ๊ฐ€ ์žˆ์ง€๋งŒ ๋ž˜ํ•‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, session.keys.app_s_key.key ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ encrypted_key ๋ฐ kek_label ๊ฐ€ ์„ค์ •๋จ).

    • AS์— KEK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ์•”ํ˜ธํ™”๋œ ํ‚ค๋ฅผ ํ’€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž, ๊ทธ ์˜ค๋ฅ˜. ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ์•”ํ˜ธํ™”๋œ app_s_key ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ฝ˜์†”์—์„œ skip_payload_crypto ๊ฐ€ true ๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด(์ตœ์ข… ์žฅ์น˜ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งํฌ์—์„œ) app_s_key ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰