티스토리 뷰
센서 네트워크 설계에 필요한 것들.
1.사람이 들여다보고 있지 않아도 노드들끼리 알아서 동작해야 한다. (self-configuring)
- 백만개의 노드에 IP 주소를 할당하기 힘들다. 따라서 알아서 주변 노드들을 찾아서 통신해야 한다.
2.In-network processing(네트워크 내에서 처리 가능하도록 프로그래밍 해야한다)
- 수많은 수집된 데이터들을 원본 그대로 넘기면 아주 많은 통신량이 필요하므로, 적절히 노드들이 가공해서 전송해야 한다.
- 노드들 각자가 알아서 필요한 데이터만 골라 수집하는 알고리즘을 개발 해야 한다.
- 노드들이 배터리로 움직인다고 할때, 배터리를 자주 교체 해줘야 하면, unattended system이 아니다.
3.환경 적응적으로 설계 되어야 한다(Adaptive localized algorithm)
- 센서는 자로 잰듯이 10m마다 존재할수 없는데, 알고리즘이 10m내에 존재하는 센서의 데이터를 수집한다고 했을때 오류가 발생하므로 이런것들을 미리 예측해서 알고리즘을 설계해야 한다.
이런것이 가능하게끔 새로운 시스템 디자인 방식이 필요하다.
Adaptive Self - Organization
숲속의 센서가 동물 또는 자연환경에 의해 없어질수가 있다. 이런 지속적으로 변하는 환경에 적응하며 동작해야 한다.
Collaborative, multi-modal, processing
여러개의 신호들을 한 노드가 처리하는게 아니라 분산적으로 처리하는 새로운 알고리즘이 필요하다.
여러개의 노드들이 동시에 수신한 데이터를 가지고 필요한 정보를 뽑아낼수있게 하는 알고리즘. -> collaborative signal processing
센서들이 사람의 관리를 받지 않고 알아서 동작하려면 모든 부분이 저전력으로 동작해야 한다(하드웨어,소프트웨어)
소프트 웨어가 효율적으로 설계되려면 어플리케이션이 어떻게 동작해야 되는지를 알아야 한다.
컴퓨터 부품의 대부분의 동작이 주기적으로 동작한다. 이것을 알면 효율적인 프로그래밍이 가능하다.
위처럼 동작하는걸 duty-cycling이라고 한다.
저전력 모드로 진행하다가 필요한 경우 파워를 잠시 쓰고 다시 저전력 모드로 간다. 대부분의 하드웨어에는 저전력 모드가 지원된다.
소프트웨어 적으로 wakeup,sleep을 조절한다.
802.11에서도 저전력소모를 위해 필요할때만 깨어났었다.(동작의 주기성을 이용한 duty-cycling)
센서 네트워크를 위해서 프로토콜을 설계할때 어떻게 해야 될까?
Directed Diffusion
Diffusion(확산) + Directed(방향이 있는) =>확산의 방향을 제어한다.
센서 네트워크의 특성상 어플리케이션을 알아야 통신이 효율적으로 이루어진다. 그래서 어플리케이션의 특성을 반영할수 있는 방법을 제시한다.
named data -> 어플리케이션이 내가 필요한것이 뭐다라고 통신 레이어에 알려준다. 이것을 통해 통신이 어떻게 이루어질지 결정됨.
센서 네트워크의 주된 목적 -> data collection(특정 위치에 어떤 값이 측정 되었는지에 대한 모든 정보)
어떤 데이터를 원하느냐(어플리케이션이)를 통신 레이어에 요청함. -> application aware communication
어플리케이션이 필요한 데이터를 획득할수 있도록 커뮤니케이션 라우팅을 수행하게 된다.
directed diffusion에서는 어떤 data를 달라고 요청한다.(data중심) vs 일반 인터넷에서는 특정 노드에게 데이터를 요청한다.(노드중심)
센서 네트워크에서는 어떤 측정치에 대한 관심을 네트워크 전체에 표시한다.
데이터를 원하는 사용자(consumer,sink)는 원하는게 무엇인지(interest) 표현해서 네트워크 전체에 퍼져 나가게 만든다.
모든 노드들이 특정 노드의 interest가 뭔지 파악이 되었고, 만약 자신이 그 interest에 해당하는 data가 있으면 그 사용자에게 전달되게끔 해준다.
(interest가 네트워크 전체에 쭉 확산되는걸 diffussion이라고 한다. -> flooding방식으로 흘러감)
diffussion과정을 통해서 gradient라고 한다.
gradient는 수학적으로 어떤 방향을 나타낸다. interest가 어떤 방향으로 전달 되어야 하는지를 나타내는게 gradient이다.
AODV에서 RREQ(interest)가 퍼져나가면서 소스가 어딘지 포인터로 표시한다.
어떤 data가 어떤 방향으로 흘러가야 하는것을 센서 네트워크에선 gradient로 표현한다.
네트워크의 많은 경로중에 일부 경로만 사용하겠다 -> reinforcement(강화)라고 한다. vs negative reinforcement(약화)
중간 노드들은 interest들을 혼합,결합,연관 지어서 최소한의 communication이 이루어 지도록 한다.
Communication in Sensor Network
DATA CENTRIC - 통신 프로그래밍을 할때 지정하는게 노드가 아니라 데이터이다.(기존의 네트워크와 다름)
센서들은 IP주소를 가질 필요는 없지만, 관리 차원에서 실제로는 IP를 갖긴 갖는다.
특정 노드에게 데이터를 보내는게 아니라 네트워크 전체에 내가 필요로 하는 데이터가 무엇이다라고 interest를 보낸다.
예를들어, 현재 센서중 30도가 넘는 센서노드가 무엇이냐?
IP로 프로그래밍 하려면 전체 센서가 몇개인지 알고 각 센서에게 데이터를 보내야 하지만 센서 네트워크에선 네트워크 전체에 30도가 넘는 노드의 정보를 알려줘 라고 하면 각 노드들이 알아서 보내준다.
application specific - ip의 경우 어플리케이션에 상관없이 모두 동작하도록 만들어져 있다.
하지만 센서 네트워크에선, 응용프로그램에 종속적이다. 지진 탐사를 위한 센서 네트워크, 해양 센서 네트워크 등.. 특정 목적을 위해서 협력할 준비가 되어있는 노드를 가지고 센서 네트워크를 구성한다. (범용 목적으로 시스템을 만들 필요도 운영할 필요도 없다)
필요로 하는 data가 무엇이고 버려도 되는 data가 무엇인지 알수있다.
30도가 넘는 지역을 알려 달라했을때, 어떤 지역의 양 끝만 알려주면 된다. 중간 노드들의 위치는 알려 줄 필요가 없다.
어플리케이션의 목적에 맞게 중간에서 데이터를 가공할수 있도록 프로그램을 짜면 통신 데이터량을 줄일수 있고, 센서 네트워크를 더 오래 지속시킬수 있다.
data를 네이밍 한것이 interest이다. 내가 필요한 data가 무엇인지 기술한것이 네이밍이다.
동물 탐지에 필요한 어플리케이션에 종속적인 센서 네트워크를 만든다고 했을때
Attribute - Value Pair - 초원에서 어떤 동물의 유형이 탐지 되는지 알고싶을때,
type=four-legged animal(4발달린 동물의 정보만 알고싶을때),
20ms동안 한번씩 작동하고 총 10초동안 작동하고 특정 지역에서만 탐지된 내용을 나한테 달라(rect)
속성-값 쌍을 나열하는 방법으로 내가 필요한 데이터를 표현한다 (이것을 네이밍 이라고 한다)
위의 그림처럼 속성-값의 집합을 interest라고 한다. interest를 확산 시킨 노드를 sink라고 한다. interest의 확산 과정에서 gradient가 생기고 그걸 따라서 interest가 sink 에게 전달된다. 센서 네트워크가 수행할 작업을 지정 하는 노드를 sink라고 한다.
interest가 퍼져 나가는 순간 센서 네트워크가 동작하기 시작한다. interest가 없으면 감지해야될 작업이 없는것이다.
interest는 주기적으로 퍼져 나간다. 한번해서 끝나는게 아니다.
주변 노드들에게 sink가 interest를 flooding한다. AODV의 RREQ에서는 RREQ가 확산될때 누구에게 받았는지 한번만 표시 되었지만, 센서 네트워크에선 interest를 받은 모든 노드를 표시한다. 누구로 부터 받았는지 모두 표시해 놓고 품질이 좋은(두꺼운 링크) 링크를 표시해둔다.
소스까지 interest가 퍼져나가는 과정에서 Gradient가 생성된다. interest를 누구에게 받았는지 포인터로 표시해둔다. rreq에서는 포인터 하나만 사용했지만 여기서는 interest를 나에게 전송한 모든 노드들을 포인터로 표시해둔다.
interest가 소스(interest에 부합한 데이터가 생성된 노드,소스는 여러개가 될수있다.)까지 전달된경우, 소스는 data를 gradient를 따라서 전송한다.
일반적으로 하나의 path만 따라서 데이터가 소스에서 sink까지 전송 되는게 아니라
굵은 링크를 통해 데이터를 많이, 얇은 링크를 따라 데이터의 일부를 전송한다.
sink는 여러 경로를 따라 데이터를 수신하지만, 지속적으로 데이터가 잘 수신되는 링크를 reinforcement해서 그 링크만 앞으로 계속 사용한다.
중복 데이터가 수신되면 불필요한 통신이 발생한다고 판단한다.
Reinforcement하는 방법
특정 노드에게만 interest를 보낸다. 그 노드만 gradient가 생긴다.
만약 reinforcement했는데 중간 노드가 동작 하지 않는 경우 다른 경로에 있는 노드에게 reinforcement를 보내서 경로를 바꿔서 소스로 부터 데이터를 받을수 있도록 한다.
센서 네트워크를 위해서는 어떤 방법으로 통신 해야하는지가 더 중요하다.
Data Centric(필요한 데이터가 무엇인지 네이밍해서 interest로 표현해서 센서 네트워크 전체로 확산시킨다.)
interest에 부합한 노드가 생기면 gradient를 따라서 소스에서 sink에게 전달 하도록 하는 방식
이런 방식 자체가 더 중요하다. 기존의 아이피 통신 패러다임이 아니라 새로운 통신 패러다임을 제공했다는데에 더 의미가 있다.
Reinforcement 혹은 Negative Reinforcement가 에너지 효율에 도움을 주긴 했지만, 크게 고려는 안되었다.
모든 노드가 probabilistic forwarding을 통해서 중복된 데이터를 보내고 있다. 에너지 효율이 크게 고려 되어 있지 않다.
에너지 효율성은 어디서 해결 해야 하는가?
Mac protocol에서 해결해야 한다. SMAC이라고 한다.(Sensor mac)
통신 가능한 컴퓨터가 장착 되어있는 센서들의 집합을 센서 네트워크라고 정의한다.
많은 수의 센서들이 아주 촘촘히 분산 되어 있다. 센서 네트워크의 목적을 달성하기 위해서 멀티 홉 통신(ad hoc network)를 형성한다.
비료 농도가 떨어질때마다 비료가 나오게끔 한다면, 센서 네트워크에 감지된 데이터를 기반으로 어떤 동작을 수행한다(actuation)
Sensor Actuate Network라고도 한다.
CPS(Cyber Phisical Sensor) - 센싱을 하고 어떤 동작을 수행하는 두가지 기능이 합해져 있는것을 4차 산업혁명과 관련해서 CPS라고 부른다.
CPS는 다양한 방식으로 정의 하기도 하는데, Cyber-> 가상세계, phisical -> 물리 세계 가 합쳐짐) 가상세계와 물리세계가 분리 되어 있지만, 가까운 미래에 이 두가지가 모든 사람이 인식하기에 통합된 것으로 인식하게끔 하겠다 해서 연구가 이루어 지는 중이고, 시스템을 구축해 나가는 중이다.
'컴퓨터 공학과 졸업 > 무선 네트워크' 카테고리의 다른 글
Wireless LAN(IEEE 802.11) - 1 (2) | 2017.12.09 |
---|---|
Sensor Network - 2 (SMAC-에너지 효율) (0) | 2017.12.09 |
중간 Q&A (0) | 2017.12.04 |
wireless ad hoc network - 3 (OLSR,GPSR) (0) | 2017.12.02 |
wireless ad hoc network - 2 (DSDV,AODV) (0) | 2017.12.01 |
- Total
- Today
- Yesterday
- reducer
- async
- typescript
- mobx
- server side rendering
- atomic design
- return type
- storybook
- design system
- webpack
- props
- Next.js
- Action
- react hooks
- Polyfill
- rendering scope
- useEffect
- react
- javascript
- type alias
- promise
- await
- reactdom
- reflow
- hydrate
- useRef
- Babel
- es6
- state
- computed
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |