ZigBee Specification #3 김백규
Review @ Application Layer 의 구성요소(Application Framework, Application Object, ZDO, Application Support Sublayer) - Application Object : 사용자가 직접 작성하는 가장 상위의 어플리케이션 - Application Framework : Application Object 가 이것을 이용하여 데이터를 하위레이어로 보내거나 (APSDE-SAP이용) ZDO와 통신한다. - ZigBee Device Object : Application Framework 와 APS 중간에 위치하여 여러가지 정보들을 교환하는 통로, APS, NWK, Security Service Provider 를 초기화한다. - Application Support Sublayer : 바인딩테이블을 관리하고 바인딩된 디바이스간에 메시지 교환, 긴메시지를 Fragmentation 하고 assembling @Network Layer 의 목적 - IEEE 82.15.4 가 올바로 동작하도록 도와주는 기능을 제공, 상위레이어에 대한 인터페이스 제공 - NLDE 와 NLME 로 데이터의 이동과 management service 제공
Network(NWK) layer overview Ensure correct operation of the IEEE 802.15.4 MAC. Suitable service interface to the application layer. NLDE NLME @ NLDE 가 data transmission service 를 담당 @ NLME 가 management service 를 담당 - 자세한건 뒷장에
Network layer data entity(NLDE) Generation of the Network level PDU Topology specific routing Network Header APDU @ Application Layer 에서는 application level PDU 인 APDU 를 생성하였다. 이 패킷이 네트워크 레이어로 내려와서 필요한 헤더 정보를 붙이면 network level PDU 가 된다. @ NLDE 는 NPDU 를 최종 목적지까지 보내거나 또는 가까운 다음 노드로 보낼 수 있다. 이것은 네트워크 토폴로지의 구성에 따라 다른데 NLDE 는 이것에 따라 적절하게 패킷을 보내도록 도와 준다.
Network layer management entity (NLME) Configuring a new device Starting a network Joining and leaving a network Addressing Neighbor discovery Route discovery Reception control @ NLME 는 ZigBee stack 과 통신을 하기 위한 기능을 담당한다. @ Configuring a new device – 새로운 device 가 ZigBee Coordinator 로 동작할지 아니면 이미 있는 network 에 join 해야할지 에 대한 기능을 정의 @ Starting a network – 이 디바이스가 Coordinator 라면 새로운 네트워크를 시작할 수 있는 기능을 제공 @ Joining and leaving a network – 이 디바이스가 네트워크에 join 하거나 leave 할 수있는 기능을 제공, Coordinator 또는 Router 라면 어떤 디바이스를 network 에서 leave 할 수 있도록 요청하는 기능을 제공 @ addressing – Coordinator 나 router 가 network 에 join 하는 디바이스들에게 주소를 할당해 주는 기능을 제공 @ Neighbor discovery – one-hop 거리에 있는 디바이스들을 discover 하고 이에 대한 정보를 기록하고 보고할수있는 기능을 제공 @ Route discovery – message 가 효과적으로 길을 찾아 목적지까지 갈 수 있도록 도와주는 기능을 제공 @ Reception control – 메시지를 받는 측이 activate 되었을때 이 상황에서 어떻게 device 를 컨트롤 할건지 에 대한 기능을 제공 (얼마나 오랫동안 기다릴 것이냐..등등)
Service specification @ Network 레이어에서는 두가지 서비스를 제공한다. Network data service , Network Management Service - Network data service 는 NLDE-SAP 를 통해서 상위레이어에서 데이터를 전달받고(또는 전달하고) 이 데이터를 MCPS-SAP 를 통해 하위레이어로 전달 또는 수신) @Stack 에 어떤 기능을 변경시키거나 조작하고 싶을 경우 상위레이어에서 NLME-SAP 로 커맨드를 받아서 처리를 하고 필요하면 MLME-SAP 로 커맨드를 내려 보내준다. - 스택에 관한 여러가지 설정 정보들이 NWK IB 에 저장되어 있고 이것을 NLME 에서 변경할 수 있다. @ 이제부터 NLDE 와 NLME 의 기능을 이용할 수 있는 primitive 에 대해서 알아본다.
NWK data service Supports the transport of APDUs. Primitives NLDE-DATA.request NLDE-DATA.confirm NLDE-DATA.indication @NLDE-SAP 는 APDU 를 상대방 application entity 까지 전달해주는 기능을 한다. @NLDE-DATA.request : local APS 에서 상대편 APS 까지 data 를 전송하기 위해 요청하는 primitive - 이 primitive 는 데이터가 전송되어야 할 때 마다 local APS 에서 생성되고 NLDE 로 넘겨준다. @ NLDE-DATA.confirm - NLDE 에서 NLDE-DATA.request 를 받을 경우 이에대한 응답으로 이 primitive 를 상위 APS 레이어로 전송해준다. 성공적으로 data 가 전송되면 status 정보로 SUCCESS 를 리턴한다. @ NLDE-DATA.indication - Network 레이어에서 locap APS layer 로 올려보내질 데이터가 있음을 알리는 primitive - APS 에서 이 primitive 를 받으면 다른 node 에서 data 가 전송되었음을 알고 data 를 network 레이어에서 읽어오면 된다.
Network discovery(1/2) Supports the discovery of operating networks. Primitives NLME-NETWORK-DISCOVERY.request NLME-NETWORK-DISCOVERY.confirm @ Network discovery 서비스 는 현재 동작하고 있는 network 가 어떤것이 있는지 알아보기 위한 것이다. @ NLME-NETWORK-DISCOVERY.request - 이 디바이스가 접근할 수 있는 영역안에 현재 동작하고 있는 network 가 있는지 알아보기 위한 것 - 이 primitive 는 상위 레이어에서 만들어지고 NLME 로 전달된다. 이것은 data 와 관련된 service 가 아니므로 NLME 에서 관리한다. - primitive 가 담고있는 정보를 보면 명시된 채널을 정해진 시간동안 스캔해서 채널을 찾는다. @ NLME-NETWORK-DISCOVERY.confirm - 이 primitive 는 network discovery operation 의 결과를 알려준다. - 올라오는 정보로는 얼마나 많은 network 가 있느냐, 이런 network 들의 식별자(Network Descriptor) 가 무엇이냐 에 관한 정보가 있다.
Network discovery(2/2) <Network Descriptor> Beacon order : MAP sub layer 가 얼마나 자주 beacon 메시지를 보내는 가를 표시 SuperframeOrder : beacon 모드를 사용하는 network 에서 superframe 의 active period 가 얼마인지 명시(자세한건 MAC sub-layer 참고) PermitJoining : 이 값이 True 이면 현재 network 상에 join 을 허가하는 router 가 최소 한 개 이상이 있다는 뜻.
Network formation(1/2) Defines how the next higher layer of a device can initialize itself as the ZigBee coordinator Make changes to its superframe configuration. Primitives NLME-NETWORK-FORMATION.request NLME-NETWORK-FORMATION.confirm @ Network formation 관련 primitive 가 하는일 - Coordinator 의 주요 임무는 하나의 network 를 구성하는 것이다. - 이 Primitive 는 어떻게 ZigBee Coordinator 가 새로운 network 를 시작하는 가에 대한 정보를 제공 @ NLME-NETWORK-FORMATION.request - Coordinator 의 역할을 할 수 있는 상위레이어에서 생성하고 새로운 network 를 시작하겠다는 요청을 한다. - 이 primitive 를 network layer 가 받으면 다음과 같은 일을 한다. 1. NLME 는
Network formation(2/2) The procedure to start a network 1. NLME-NETWORK-FORMATION.request 2. MLME-SCAN.request 3. MLME-SCAN.confirm 4. NLME selects a suitable channel 5. MLME-SET.request 6. MLME-START.request 7. MLME-START.confirm 8. NLME-NETWORK-FORMATION.confirm 먼저 NLME-NETWORK-FORMATION.request로 Coordinator 가 새로운 network 를 구성하겠다고 network layer 에 알려준다. 그러면 network layer 에서는 MLME-SCAN.request primitive 를 MAC-sub layer 로 보내서 energe detection scan 을 수행하게 한다. 그래서 현재 동작하고 있는 network 에 대한 채널을 MLME-SCAN.confirm primitive 로 network layer 에 알려준다. Network layer 에서 mac sub layer 에서 찾은 몇 개의 채널과 중복되지 않는 적절한 채널을 고른다. (만약에 상위레이어에서 특정 채널을 사용하고 싶다고 명시를 했는데 이게 찾아진 채널리스트에 있을 경우 충돌이 되므로 다른걸 고른다.) MLME-SET.request 로 mac 주소를 설정해준다. MLME-START.request 로 mac sub layer 에서 network 를 시작할 수 있도록 BeaconOrder 정보와 superframeOrder 정보를 준다. 위의 과정이 성공할 경우 mac sub layer 에서 MLME-START.confirm 을 network layer 로 넘겨준다. NLME-NETWORK-FORMATION.confirm 로 MLME-START.confirm 의 결과를 그대로 상위레이어에 알려준다..
The procedure to start a network APS NWK MAC NLME-NETWORK-FORMATION.request MLME-SCAN.request MLME-SCAN.confirm Choose Channel MLME-SET.request MLME-START.request MLME-START. confirm NLME-NETWORK-FORMATION.confirm
Other primitives(1/2) Allowing devices to join Begin as a router NLME-PERMIT-JOINING.request NLME-PERMIT-JOINING.confirm Begin as a router NLME-START-ROUTER.request NLME-START-ROUTER.confirm
Other primitives(2/2) Joining a network Leaving a network NLME-JOIN.request NLME-JOIN.confirm NLME-JOIN.indication Leaving a network NLME-LEAVE.request NLME-LEAVE.confirm NLME-LEAVE.indication @ Joining a network - node 가 network 에 join 하기 위해서 필요한 primitive 들. @ Leaving a network - join 된 node 가 network 에서 떠나기 위해 필요한 primitive 들들
Resetting a device @ Network layer 에서는 Device 가 network 관련 정보들을 리셋할 수 있도록 하는 Primitive 를 제공해 준다. - NIB 에는 여러가지 내부 변수와 route discovery table 정보고 있는데 이것을 모두 리셋해준다.
Receiver synchronization @ 이 primitive 들은 어떻게 디바이스의 상위레이어가 coordinator 나 router 가 데이터를 받아올 수 있는 지에 대한 방법을 정의한다. 무선 네트워크에서 특정 데이터를 받아오기위해서 beacon 이라는 프레임을 사용한다. 이 프레임은 데이터의 시작부분에 삽입되며 여기서 부터 데이터가 시작된다는 것을 알려준다. 그래서 이 primitive 들을 이용하여 beacon mode 를 사용할 것인지 안할것인지 결정을 한다. @ beacon frame 을 사용하는 것과 안하는 것의 장단점 ?
Information base maintenance Defines how the next higher layer of a device can read and write attributes in the NIB. Primitives NLME-GET.request NLME-GET.confirm NLME-SET.request NLME-SET.confirm @ 이 primitives 들은 network layer 에 있는 NIB 의 정보를 읽어오고 세팅하기 위한 수단을 제공해준다. @ NIB attribute 에는 다음과 같은것들이 있다. 패킷의 시퀀스 넘버를 몇 부터 시작할 것이냐에 관한 정보 패킷을 재전송하기 위해 기다리는 시간 현재 네트워크가 가질수 있는 최대 노드수 현재 네트워크가 가질수 있는 최대 라우터수 인접한 노드가 어떤것이 있는지에 대한 정보를 가지고 있는 neighbor table 패킷을 어느곳으로 전송을 해야 하는지에 대한 정보를 가지고 있는 routing table 스택 프로파일 Group ID table
Next time… Frame formats Command frame Functional description @ 다음시간에는 네트워크 레이어에서 쓰이는 프레임 포맷이 어떤것이있고 커맨드 프레임은 어떤식으로 구성이 되어있으며 네트워크를 구성하는 과정에서 생길수 있는 여러가지 상황 즉, join 을 어떻게 하고 데이터 전송은 어떻게 하고 수신은 어떻게 하고 Routing 은 어떻게 하는 등등의 과정에 대해 알아본다.