LoRa - IOT 5




LoRa - IOT 5


1. LoRaWAN MAC Message Format


MAC Message FormatRadio PHY layer는 Preamble , PHDR, PHDR_CRC, PHYPayload, CRC로 이루어 져있다. 
Preamble은 사설망인지 공개망인지를 결정한다. 그렇기에 이 부분을 교체함으로써 사설망을 만들 수도 공개망을 만들 수도 있다.
PHYPAYLoad은 MAC message이고 MACPayload, Join-Request , Join-Response 구분된다. 

2. LoRaWAN MAC Header 


MHDR는 size 1bytes이고 상위 세개의 비트가 MType(Mac Type)으로 구성된다. 하위 5비트는 RFUMajor 정보로 나누어져 있는데 다 영어로 세팅 되어 있어서 결국 상위 3개의 비트가 MAC Header의 값 결정한다. 
MType이 111인 Proprietary는 현재 폼에서 따르지 않는 message를 쓸 때 적용하는 field 값이다필드 값은 101 까지가 쓰인다라고 생각하면 되고 Mac Header를 다시 byte로 표현을 해 보면 다음과 같다.


3. MAC Frame Format - join Request


Join Request는 총 18 byte로 구성 되어 있다
mic 값은 MHDR 부터 Join Request 까지를 AppKey로 계산해서 4 바이트 mic 값을 뽑아낸다.
join request는 유일 하게 암호화가 되지 않는다.
인코딩 된 payload를 보면 전혀 인코딩 되어 있지 않고 mic 값만 인코딩 된 data값이 나온다.

 Join Request 예제

인코딩된 payload를 보면 전혀 인코딩 되어 있지 않고 mic 값만 인코딩 된 data값이 나오는 것을 확인 할 수 있다. 
35 8E 가 Device Nounce 되었다. (2byte)


4. MAC Frame Format - Join Accept


이것은 server에서 data를 내려주는 형태로 MHDR에는 20이 들어간다.
CFList는 사용할 수 있는 채널들의 정보들을 내려주는 것이다. 
MHDR 에서 Join Accept 까지 AppKey를 통해 MIC 값 뽑아내고 이 값들을 다시 암호화해서 데이터를 전송한다.

Join Accept 예제


전혀 알아 볼 수 없는 값으로 인코딩이 되어 데이터 전송 받는다.
                            

5. MAC Frame Format - MAC Data


제일 많이 쓰인다.
FRMPayload가 실질적인 data node라고 생각하면 된다.
FHDR에는 server에서 내려준 device 값이 들어간다.
FOpts : Mac commend를 따로 MAC 패킷을 이용해서 전송을 하는 것이 아니라 FHDR를 이용해서 전송을 할 수 있다.
FPort는 DF포트 까지 사용할 수 있다.
FRMPayload는 실질적으로 application datanetwork data가 들어가게 된다.



6. MAC Payload - FHDR


DevAddr은 서버에서 내려준 Device address 값 계속 이용한다.
FCtrluplinkdownlink가 서로 다른 포맷을 가지고 있다.
Uplink는 단말기에서 서버로 데이터를 올리는 것을 말한다. 
Downlink는 서버에서 단말기로 데이터를 내리는 것이다.

1) Uplink
ADR 은 "data rate를 언제든지 변경할 수 있다" 라는 field로 거의 항상 켜져 있다 그래서 1로 들어가 있다
AdrackReq field는 server와 통신이 제대로 잘 이루어 지지 않을 때 이부분에 AdrackReq를 열면 server가 data를 내려줘야 하는 request field 이다.
ACK fieldconfirmed data down을 받았을 때 "받았다"라는 ACK field를 세팅 해 준다.
Commend가 있을 경우에는 commendfOption field로 들어가면서 length가 몇인지를 bit를 통해서 알려주고 실질적으로 0이 아닌 경우에는 데이터가 있다고 생각하고 그부분을 해석을 해야한다.

2) Down link
단말기와 비슷하게 구성된다. 
ADR의 경우 영어로 세팅되고 RFU 또한 영어로 세팅된다. 
ACK 같은 경우는 단말기에서 confirm the data를 보냈을 때 서버에서 "잘 받았다" 라고 Ack field를 세팅해서 data를 내린다.
FPending 된 data가 많다. 즉 서버가 "너에게 보내줄 데이터가 많다" 라고 할 때는 이 FPending field를 세팅해서 단말기에서 수시로 RX Window를 열수 있도록 한다.
Mac commend가 따로 있을 경우에는 이 fOption field를 사용하여 length의 값을 지원해 주게 되어 있습니다.


7. FPort


FPort1bytes를 사용하며 0번부터 255번 까지 사용하고 있다.
0번의 경우는 network message만 사용하는 FPort이다.  -> MAC commend 들이다
Application layer에서 자유롭게 사용하면 되는데 센서들이 굉장히 다양한 경우 센서별로 port를 할당을 하여서 센서 구분을 쉽게 할 수 있는 장점들이 있고 이렇게 센서별로 할당을 하는 경우들이 굉장히 많다.
LoRaWAN Mac layer test protocol은 인증맵에서 사용하는 test protocol layer이고 인증 맵에서 지금 LoRaWAN이 제대로 만들어졌는지에 대한 규격검증은 244 번 포트를 통해 한다. 
225번부터는 아직 사용해선 안된다. 
1번부터 255 번까지는 다 어플리케이션 layer라고 생각하고 암호화는 어플리케이션 세션키로 한다. 
인코딩은 FRMPayload에 한해서만 된다. NwkSkey, AppSKey로 인코딩이 된 data가 들어가고 나머지는 인코딩 되지 않은 data가 들어간다. 



8. Unconfimed Data up (예제)


1234가 ASCII으로 변환되어 31 32 33 34 로 전송된다. 
Unconfirmed data 이기 때문에 MHDR에 40 들어간다. 
80이면 ADR은 켜지고 나머지는 다 0이다. è fOption이 없다.



참고 :

서울 IOT 워크숍 LoRA 강의 06강



댓글

이 블로그의 인기 게시물

LoRa - IOT4

LoRa - IOT 2