센서네트워크임베디드소프트웨어기술동향 2004. 12
목차 Ⅰ. 서론 73 Ⅱ. 기술개발동향 74 1. 개요 74 2. 연구개발동향 76 가. TinyOS 76 나. TRON 92 다. 저전력멀티- 홉(multi-hop) 네트워크기술 39 라. 국내기술개발현황 97 Ⅲ. 기술특성분석 98 Ⅳ. 결론및전망 99 참고자료 101
73 센서네트워크임베디드소프트웨어기술동향 Ⅰ. 서론 센서네트워크기술은새로운컴퓨팅패러다임인유비쿼터스컴 퓨팅의진입기술로중요한의미를갖고이런새로운패러다임의 기술이성공적으로발전하기위해서는기반이되는진입기술의 확산이중요하다. 본문에서는센서네트워크를위한임베디드소 프트웨어기술의동향과오픈소스프로젝트로진행중인 TinyOS 내부구조를분석하고센서네트워크의특성과 TinyOS 에구현 된기능을분석한다. TinyOS 는새롭게떠오르고있는센서네 트워크에대한개념정립과실제구현을동시에진행하고, 그결 과를공개하여센서네트워크의확산을이끌고있다. 실제서비 스를진행한예가있기때문에가장앞서나가고있는센서네트 워크기술이라할수있다. 현재까지개발된 TinyOS 기술을중 심으로센서네트워크임베디드소프트웨어의주요요소를분석 하여지금까지의센서네트워크기술개발상황과향후산업화가 능성을파악한다.
74 유비쿼터스 1 Ⅱ. 기술개발동향 1. 개요 센서네트워크 (sensor network) 는물리공간의상태인빛, 소리, 온도, 움직임같은물리적데이터를센서노드에서감지하고측정 하여중앙의기본노드(base-station or sink) 로전달하는, 센서 노드들로구성되는네트워크이다. 센서네트워크는일반적으로멀 티- 홉(multi-hop) 무선네트워크형태의다수의분산센서노드 들로구성된다. 센서노드들은하나이상의센서( 온도, 소리, 빛, 가 속도, 자기장등), 액추에이터 (actuator), 마이크로컨트롤러, 수십 KB 크기의 EEPROM, 수 KB의 SRAM, 수백 KB 크기의플래 시메모리, 근거리무선통신모듈로구성된다. 센서네트워크기 술은센서와무선네트워크기능을이용하여물리공간에서측정 한아날로그데이터를디지털신호로변환하고, 인터넷같은전자 공간에연결된루트(root) 노드로전달하는입력시스템의역할을 한다. 물리적세계와사이버세계를연결할수있는특징때문에, 센서네트워크의개념은새롭게대두되고있는지능형서비스들 의지능형환경모니터링, 위치인지서비스, 지능형의료시스템, 지능형로봇시스템등다양한분야에적용되고있다. 센서네트워크의장점은낮은사양의하드웨어를이용하여무 선애드- 혹(ad-hoc) 네트워크를구성할수있는점이다. 예를들 어, 지금까지개발된블루투스 (bluetooth), 무선랜 (wireless LAN) 등의무선네트워크기술들은반드시컴퓨터, PDA 같은고급
센서네트워크임베디드소프트웨어기술동향 75 컴퓨팅장치를필요로하는데, 센서네트워크노드는독자적으로 네트워크를구성한다. 이런네트워크구성의용이성때문에유비 쿼터스 (ubiquitous) 컴퓨팅환경의기반기술로사용될수있을것 이다. 인텔도기술로드맵중에센서네트워크를기반기술로예 측하고있다 1). 근래센서네트워크와관련된칩과시스템들이상용화되기시작 했으나널리보급되고산업화되기위해서는해결되어야할문제들 이많이남아있다. 네트워크프로토콜, 적절한응용서비스등의 부재로인해빠른시간내에상용화되기힘들것으로예측되기도 한다. 다음장에서분석할 TinyOS 는새로운컴퓨팅패러다임인저 가의소형컴퓨터시스템, 즉네트워크임베디드시스템또는센 서네트워크에사용될수있는시스템기술이다. 버클리대학에서 주도적으로개발을추진하고있으며, 현재센서네트워크분야에 서실제구현및적용에가장빠르게대응하고있다. 인텔및크 로스보우등의회사가이기술의확산을위해지속적으로투자하 고있으며마이크로소프트사도관련기술을보유하기위해노력 중이다. TinyOS 의표면적인목표는지그비 (Zigbee) 표준과다르게보 일수도있지만, 주요요소기술들은동일한기능을지향하고있다. 이런이유로, 근래본격적인구현및산업화가시도되면서두기 술에대한업계의관심이높아지고있다. TinyOS 의장점은누구에게나공개되어사용할수있다는점 인데, 기존의공개소프트웨어와동일한장점을갖는다. 리눅스
76 유비쿼터스 1 (LINUX) 나비에스디 (BSD) 와비슷한기술공개의원칙은산업화및기술확산을가속화시킬것으로예측된다. 2. 연구개발동향 가. TinyOS TinyOS 의개발목적은세가지로설명할수있다 2). 첫째, 미래 의센서네트워크노드에사용될수있는소프트웨어구조를설 계, 둘째, 여러하드웨어플랫폼과소프트웨어라이브러리를사용 하여운영체제와서비스애플리케이션을구현할수있도록설계, 셋째, 제한된자원, 동시성, 강인성, 응용서비스별요구사항을만 족할수있는설계이다. 이런목표의달성을위해 TinyOS 는구성이모듈화되었으며, 제한된자원에서동작할수있는이벤트구동방식으로구현되었 다. 모듈구성에따라운영체제가다양한하드웨어에적용이가능 하며, 서비스애플리케이션도동일한추상화를유지할수있다. 센서네트워크노드들은무선통신데이터들을실시간으로처 리해야하기때문에높은동시성이지원되어야한다. 각센서네 트워크노드들은제한된저장용량의상황에서여러작업을동시에 처리해야하며강인한시스템의특성을유지하기위해, 이벤트기 반의동시성을지원해야한다. 일반적인컴퓨팅장치들과달리대부분의센서네트워크노드 들은유저의입력을필요로하지않기때문에, TinyOS에서센
센서네트워크임베디드소프트웨어기술동향 77 서노드를동작시키는것은하드웨어이벤트와태스크로볼수 있다. 하드웨어이벤트는인터럽트를의미하며, 이런인터럽트는 타이머, 센서, 통신장치로부터발생된다. 태스크들은일정시간의 지연을갖는프로시저호출을의미하고, 하드웨어이벤트또는 다른태스크를호출할수있다. 태스크는큐에등록된후실행되 는데, 태스크들이처리되는동안에도하드웨어인터럽트가실행될 수있으며높은우선순위를갖는다. 태스크큐에실행되어야할 태스크가존재하지않을경우, 시스템은새로운하드웨어인터럽 트가발생될때까지, 슬립모드로전환된다. 태스크큐를운영하 는방법은태스크호출되면태스크큐에해당태스크를등록하고 태스크가실행될때큐에서해당태스크를삭제한다. 태스크실 행후태스크큐에더이상실행할태스크가남아있지않으면 바로슬립(sleep) 모드로전환된다. TinyOS 는컴포넌트단위로시스템모듈화를구성한다. 컴포넌 트는몇몇상태와태스크로구성된다. 각컴포넌트는다른컴포넌 트들과인터페이스라는함수호출을통해동작을연결시키고인터 페이스는커맨드와이벤트로분류된다. 인터페이스를통해컴포넌 트는외부와연결된다. 커맨드는어떤동작에대한호출이며이 벤트는호출된어떤동작이나환경변화에의해실행되는것을의 미한다. 이벤트의리턴값으로는처음호출한동작의성공여부를 알수있다특정이벤트들은하드웨어인터럽트에직접연결되어 동작한다. 서비스애플리케이션개발자들은컴포넌트들을라이브러 리로사용하며, 인터페이스들을사용하여컴포넌트들을서로연결 하여애플리케이션을만든다.
78 유비쿼터스 1 TinyOS 의동시성모델은블로킹같은기법을지원하지않기때 문에, 결과적으로많은동작호출들이스플릿 - 페이즈 (split-phase) 로동작하게된다. 어떤동작에대한호출이커맨드를통해실행 되고, 이에대한성공여부를이벤트를통해회신한다. 일반적인반 응을필요로하는함수나하드웨어의제어에는이방법이적당하 지만, 상위애플리케이션개발을복잡하게만드는단점이있다. 순 차적인동작에따라애플리케이션을개발할때, 경우에따라상태 - 머신(state-machine) 기법을사용해야만하는경우가발생한다. 이런이유때문에매우제한된램자원환경에서하나의스택으로 동작이가능하고오류처리가정확해진다. TinyOS 에서는시스템과사용자부분을나누어놓지않았다. 그 러나대부분의애플리케이션에서자주사용되는모듈들이있는데, 타이머, 데이터수신, 전력제어, 네트워크모듈들이대표적인예 이다. 이모듈들의사용은센서네트워크노드가한정된전력으로 동작하고주기적으로데이터를수집하며, 간단한데이터처리와주 위노드로데이터를전송한다는주요동작에대한특징을나타내 고있으며, 다른센서네트워크플랫폼인맨티스 (MANTIS) 3), 센 서심 (SENSORSIM) 4), 엠스타 (EMSTAR) 5) 등도동일한특징을 갖고있다. (1) 센서네트워크프로그래밍언어 nesc 6) TinyOS 는애플리케이션개발을위해프로그래밍언어로 nesc 를사용한다. nesc는컴포넌트기반이며문법은 C 프로그래밍언 어와유사하다. nesc는일종의프리- 프로세서 (pre-processor) 방 식으로 nesc 컴파일러는소스코드를 C 프로그램파일로변환하
센서네트워크임베디드소프트웨어기술동향 79 < 그림 1> nesc 컴파일과정 고, 이파일을 GCC 컴파일러로컴파일과링크를담당한다. nesc 프로그래밍은컴포넌트 (component) 들로구성되며컨피규 레이션 (configuration) 과모듈(module) 로세분화된다. 컨피규레이 션은컴포넌트들의연결(wiring) 을담당하고모듈은메시지핸들 링, 시그널프로세싱같은특정서비스를제공한다. 컴포넌트가플 랫폼의세부기능을담당하는부분이라할수있고, 예를들면 시스템타이머를구현한부분이 Timer 컴포넌트로구현될수있 다. 복잡한기능의컴포넌트인경우에는여러컴포넌트가서로 연결될수도있다. nesc 컴포넌트는커맨드 (command) 와시그널 (signal) 을기반 으로동작한다. 커맨드는 C 프로그래밍언어의함수와같은기능 이며, 패러미터 (parameter) 전달, 호출에대한리터(return), 동작 명령을수행하는단위이다. 시그널은이벤트가발생했을때실행 되는함수이며일반적으로는하드웨어인터럽트와연결된함수이 다. 커맨드와반대로상위애플리케이션방향으로명령을수행한 다. TinyOS 의응용애플리케이션은이런컴포넌트들이서로연 결된형태이다. nesc 의인터페이스 (interface) 는서로다른컴포넌트들을연결 하기위한인터페이스를제공한다. 컴포넌트를구현할때는실제
80 유비쿼터스 1 < 그림 2> nesc 컴포넌트 동작들에각각에대해인터페이스를정의해주어야하며, 다른 컴포넌트에서이기능을사용할때에는인터페이스에연결한다. < 그림 3> 인터페이스 (interface) includes clock; //clock.h defines constants interface clock{ //Configure the clock event interval command result_t setrate(uint8_t interval, unit8_t scale); //Clock interval has elapsed async event result_t fire(); //end of interface
센서네트워크임베디드소프트웨어기술동향 81 nesc 로애플리케이션을구현할때는컨피규레이션 (configura- tion) 과모듈(module) 로구성된다. 컨피규레이션은사용되는라이 브러리들과모듈들을서로연결하는역할을하며, 모듈은특정기 능들을실제구현하는역할을한다. 컨피규레이션만으로하나의 애플리케이션을구현할수도있으며, 컨피규레이션의내용을보면 어떤동작을하는지알수있다. 아래의애플리케이션은 Blink Task이고 SingleTimer 와 LedsC라는두개의컴포넌트로구현 되었다. 세부적인동작을이해하기위해서는 SingleTimer.Timer 와 된다. LedsC.Leds 의인터페이스가실제로구현된부분을참조하면 nesc 는센서네트워크를위한새로운방식의프로그래밍언어 로써기존의 C 프로그래밍언어에비해다양한라이브러리의재 사용이가능한장점이있고실제코드의작성길이를줄일수있 < 그림 4> 컨피규레이션 (configuration) Configuration BlinkTask{ implementation{ components Main, BlinkTaskM, SingleTimer, LedsC; Main.StdControl->BlinkTaskM.StdControl; Main.StdControl->SingleTimer; BlinkTaskM.Timer ->SingleTimer.Timer; BlinkTaskM.Leds->LedsC;
82 유비쿼터스 1 < 그림 5> 모듈(module) module LedsC{ provides{ interface Leds; implementation Leds{ uint8_t ledson; async command result_t Leds.redOn() { atomic { TOSH_CLR_RED_LED_PIN(); ledson = RED_BIT; return SUCCESS; //implementation //module 으며, 하드웨어인터럽트처리를컴포넌트의시그널을이용하여쉽 게처리할수있는장점이있다. (2) TinyOS 애플리케이션구조 TinyOS 는일반적인컴퓨터운영체제와달리운영체제와애플 리케이션이분리되어설치되지않는다. < 그림 6> 와같이운영체 제부분과응용애플리케이션부분이함께컴파일되어하드웨어 플랫폼에다운로드된다. 그림에서 Application 부분을사용자가 직접만들게되며, 나머지부분은기존라이브러리를재사용할수 있다. 이런구조에서는메인(main) 함수가사용자에게직접보이지않 는다. < 그림 7> 에서 Main 컴포넌트가사용되고있다. 이컴포넌 트의구현부분이메인함수를포함하고있다. Main 컴포넌트는
센서네트워크임베디드소프트웨어기술동향 83 플랫폼의초기화, 사용되는모듈의기능호출, 태스크스케줄러의 실행을담당한다. 기능의실행은컨피규레이션에있는컴포넌트들 의실제구현부분에서확인할수있다. < 그림 7> 에서 Main. StdControl 에연결되어있는부분들이실제동작을위해사용되 는컴포넌트들이다. BlinkTask의기능은 1초에 1번씩붉은색 LED가점등하는것이고실제구현부분에는 Timer, LedsC 이사용되고있다. BlinkTaskM, Single 메인함수는리얼메인 (RealMain.nc) 컴포넌트에서호출된다. 메 인함수에서는먼저 hardwareinit ) 을호출하여하드웨어초기화 를하고, Pot.init 10) 으로무선통신에사용할세기를결정한다. TOSH_sched_init ) 로태스크스케줄러를초기화시키고, StdControl.init ) 와 StdControl.start ) 를통해사용자가생성한코드를초 기화한후실행된다. 마지막으로 Interrupt.enable ) 로인터럽트를사용 가능으로설정하고태스크스케줄러를무한루프로실행시킨다. < 그림 6> TinyOS 애플리케이션구조
84 유비쿼터스 1 (3) 태스크스케줄러 센서네트워크환경에서각노드가동작하도록할수있는이벤 트는하드웨어인터럽트이다. 센서노드는초기화후하드웨어인 터럽트의발생에따라동작한다. TinyOS 에서지원하는프로세스 (process) 는두가지로구분할수있다. 이벤트 (event) 는하드웨어인터럽트에의해발생하는것으로대 표적으로는타이머, 센서에의해발생한다. 실시간성을요구하는 데이터가발생하는것이기때문에가장우선순위가높으며짧은 시간동안동작을한다. 태스크 (task) 는데스크 - 탑컴퓨터에서실행되는쓰레드 (thread) 와비슷한개념으로센서노드에서함수실행에동시성을부여하 는것이다. 실시간으로처리되지않으며태스크스케줄러에의해 순차적으로실행된다. 또한실행중에발생하는이벤트에의해서 는실행이지연된다. 센서노드는대부분슬립(sleep) 상태에있고, 실제동작은한정 된짧은시간에이루어진다. 센서노드들은전원이충분하지않 은상태이기때문에전력소모를줄이기위해최대한슬립모드로 동작시킨다. TinyOS 태스크스케줄러는단순하게구현되어있다. 태스크 큐가존재하고코드실행중태스크가호출될때에해당함수의 주소를큐에입력한다. 태스크의실행은바로이루어지지않고 진행중이던루틴이모두끝난후에태스크큐에존재하는태스 크들을차례로호출한다. 하드웨어인터럽트는최우선순위를갖 는다.
센서네트워크임베디드소프트웨어기술동향 85 < 그림 7> RealMain.nc module RealMain{ uses{ command result_t hardwareinit(); interface Interrupt; interface StdControl; interface Pot; Implementation{ int main() attribute ((C, spontaneous)){ call hardwareinit(); call Pot.init(10); TOSH_sched_init(); call StdControl.init(); call StdControl.start(); call Interrupt.enable(); while(1){ TOSH_run_task(); 애플리케이션에서태스크를호출하는방법은함수를구현할때 task 라는타입을정해주고, 호출할때 post를사용하여호출한다. < 그림 9> 는태스크호출방법을나타낸다. 이그림의 ADC.data Ready(uint16_t data) 함수가호출될때, 동작순서는 putdata (data) 가실행되고 post processdata ) 에의해 processdata 함수 의포인터 (pointer) 가태스크큐에입력되고, 곧이어바로 return SUCCESS 가실행된다. 태스크큐에입력된 processdata 는모 든루틴이종료된후에실행된다. < 그림 10> 의 TOS_post(thread_ pointer) 가 post processdata() 와연결되는함수이다. 여기서확
86 유비쿼터스 1 인할수있듯이 post 인터만을태스크큐에입력시킨다. 호출은함수를실행시키지않고함수의포 태스크스케줄러는태스크큐에남아있는함수를계속실행시 키고, 태스크큐에실행할함수가남아있지않으면일정시간동 안슬립상태가되고, 이후에웨이트 (wait) 모드로상태가변경된다. 만일하드웨어인터럽트가전혀발생하지않는상태가지속된다 < 그림 8> TinyOS 태스크스케줄러
센서네트워크임베디드소프트웨어기술동향 87 면센서노드는계속해서슬립과웨이트상태를주기적으로반복 할것이다. 이런경우전력소모는최소화될것이다. TinyOS 스케줄러의특성이있는데, 스케줄러의운영원리에는 각태스크가반드시종료된다는것을가정하고있다. 만일태스크 가무한루프를실행하며종료되지않는다면센서노드는더이상 다른작업을실행하지못한다. 이는스케줄러가무한루프를강제 로종료할수있는기능이없기때문이다. 단일애플리케이션만을관리할수있도록설계되어있어서기 존운영체제보다기능이간략화되어있다. 앞으로하드웨어가더 발달되고복잡한데이터처리또는 GUI(graphic user Interface) 등많은사용자인터페이스를지원해야된다면 다양한기능을지원해야할것이다. TinyOS 커널은 < 그림 9> 태스크호출 SenseTaskM.nc // ADC data ready event handler async event result_t ADC.dataReady(uint16_t data) { putdata(data); post processdata(); return SUCCESS; task void processdata() { int16_t i, sum=0; atomic { for (i=0; i < size; i++) sum += (rdata[i] >> 7); display(sum >> log2size);
88 유비쿼터스 1 < 그림 10> 태스크스케줄러주요부분 /* * TOS_post (thread_pointer) * * Put the task pointer into the next free slot. * Return 1 if successful, 0 if there is no free slot. * * This function uses a critical section to protect TOSH_sched_free. * As tasks can be posted in both interrupt and non-interrupt context, * this is necessary. */ bool TOS_post(void (*tp) ()) attribute ((spontaneous)) { nesc_atomic_t finterruptflags; uint8_t tmp; finterruptflags = nesc_atomic_start(); tmp = TOSH_sched_free; if (TOSH_queue[tmp].tp == NULL) { TOSH_sched_free = (tmp + 1) & TOSH_TASK_BITMASK; TOSH_queue[tmp].tp = tp; nesc_atomic_end(finterruptflags); return TRUE; else { nesc_atomic_end(finterruptflags); return FALSE; void TOSH_run_task() { while (TOSH_run_next_task()) ; TOSH_sleep(); TOSH_wait(); (4) 하드웨어플랫폼 TinyOS 를지원하는플랫폼은 MOTE 가있다. MOTE 는 Tiny OS 가처음발표된이후로다양한형태로발전되어왔다. < 표 1> 에지금까지개발된 MOTE 의종류를정리하였다.
센서네트워크임베디드소프트웨어기술동향 89 < 표 7> Mote 하드웨어플랫폼종류 Mote WeC rene dot mica mica2 mica2dot imote btnode 년 도 1999 2000 2001 2002 2003 2003 2003 2003 프로세서속도 4 MH z 7 MH z 4 MH z 12 MH z 7 MH z 플래쉬 (KB) 8 8 16 128 128 128 512 128 램 (KB) 0.5 0.5 1 4 4 4 64 4 라디오 (kbaud) 10 10 10 40 40 40 460 460 라디오종류 RFM ChipCon ChipCon ZeevoBT EricsonBT 마이크로컨트롤러 Atmel ARM Atmel 확 장 불가능가능불가능가능 가능 가능 가능 가능 이다양한 MOTE 들은동일한마이크로컨트롤러제품군 (Atmel AVR) 을사용하지만, 무선통신모듈이나인터페이스등의다른 주요부분이다르다. TinyOS 가사용될수있는하드웨어중에는 인텔에서개발한 ARM 프로세서와블루투스통신모듈을이용하 는하드웨어플랫폼이있고, 유럽에서도블루투스를이용한센서 네트워크플랫폼을개발했다. 근래에는노르웨이의칩콘 (ChipCon) 7) 에서 2.4GH z 대역의통 신칩이판매시작되어, 이통신칩을이용한센서네트워크플랫 폼들이개발되어판매가시작되고있다. 칩콘에서는미국에 Moteiv 사를설립하여텔로스 (TELOS) 8) 플랫폼을개발하였다 < 그림 11>. Mica와 Mica2를상용화한미국의 Crosbow 9) 사에서도동일한 2.4GH z 통신칩을사용한제품인 MicaZ 을개발하였다 < 그림 12>. TinyOS 의최신버전에는 IEEE 802.15.4 MAC 프로토콜이지원 되며, 앞에언급한두가지 2.4GH z 하드웨어플랫폼에사용될수 있다. 지난 6 월버클리대학이산타크루즈 (Santa Cruz) 에서개최
90 유비쿼터스 1 < 그림 11> Telos < 그림 12> MicaZ 한 NEST retreat 10) 에서는 TinyOS 를이용한텔로스와 리고 CC2420DBK 7) 플랫폼간의통신시연이있었다. MicaZ그 TinyOS는 IEEE 802.15.4 규격을지원하기시작했고지속적으 로구현이진행되고있다. IEEE 802.15.4 는지그비 (Zigbee) 규격 에서도요구하는링크, 물리프로토콜규격이다. TinyOS 도지그 비와같은규격인 IEEE 802.15.4 를지원하게되어, 무선통신이 호환가능하다. 지그비제품을만들기위해 TinyOS 플랫폼을사 용할수있게되었다는것은향후지그비기술개발에많은가능 성이추가된것이다. TinyOS 는재사용이용이하도록컴포넌트기반으로소프트웨어 를구현하기때문에다양한하드웨어에대한추상화를지원한다. 상위응용소프트웨어는추상화레이어 (layer) 를이용하기때문에 하위하드웨어에상관없이다양한플랫폼에서동작할수있다. 텔 로스와 MicaZ 플랫폼은서로다른마이크로컨트롤러를사용하기 때문에무선통신프로토콜하위레이어는서로다르지만, 상위에 서는같은추상화레이어를사용한다.
센서네트워크임베디드소프트웨어기술동향 91 < 그림 13> 다양한플랫폼에서의 IEEE 802.15.4 11) < 그림 13> 은두개의플랫폼에사용된프로토콜스택을도식 화했다. 두플랫폼은하드웨어에의존적인하위부분을제외하고 는동일한컴포넌트를사용한다. HPLCC2420 컴포넌트는 CC2420 칩과마이크로컨트롤러사이의인터페이스가플랫폼별로다르기 때문에따로구현되어야한다. 그림아래부분에두플랫폼에서 서로다르게구현된부분을도식화했다. 하드웨어의구성이서로 다른플랫폼이지만 HPLCC2420C, TimerC 컴포넌트를사용하는 상위컴포넌트는하드웨어의변경에상관없이추상화되어있는동 일한기능을사용할수있다. 소형센서네트워크시스템의하드 웨어의종류가다양해질것이기때문에 TinyOS 의추상화지원 은큰장점으로보이며, 모토롤라 HCS08 마이크로컨트롤러도지
92 유비쿼터스 1 원할예정이라한다. TinyOS 에서는 IEEE 802.15.4 RFD(reduced function device) 구현이진행중이며, 텔로스와 MicaZ는 TinyOS 1.1.7 배포본부 터지원될예정이다. 나. TRON 일본에서는 TRON(The Real-time Operating system Nucleus) 을중심으로한임베디드플랫폼표준화가진행중이다. 1984년부 터시작한 TRON 프로젝트를통해 TRON VLSI 칩셋하드웨어 와운영체제인 ITRON(Industrial TRON) 에이르기까지실시간 임베디드소프트웨어규격을제정, 산업체에서는이를준수하는 제품을개발하는형태진행하였다. ITRON 의전략은원천기술에의한제품개발로시장경쟁력을 갖추려하고있으며, 일본시장의 40% 이상을점유하고있다. 또 한임베디드시스템미들웨어에대한요구사항을반영하여공개 표준개발플랫폼인 T- 엔진을발표하였다. PDA 및휴대폰을위 한표준 T 엔진, 낮은수준의인터페이스시스템을위한마이크로 T 엔진, 유비쿼터스컴퓨팅환경을위한나노 T- 엔진, 무선기능 을갖춘원칩컴퓨터를위한피코 T-엔진등의다양한규모의 T- 엔진개발을추진하고있다. 2003년에 T-엔진포럼은대표적 인임베디드리눅스업체인몬타비스타와제휴하여리눅스와의 접목을시도하고있다. 또한마이크로소프트와도협력하여 WinCE 가 T- 엔진위에서실행될수있도록추진중이다.
센서네트워크임베디드소프트웨어기술동향 93 다. 저전력멀티- 홉(multi-hop) 네트워크기술 무선멀티- 홉네트워크는현재산업화에가장장애가되는부분 이다. 많은기술개발이진행되어연구단계에서는많은결과물이 나오고있지만, 다양한실제환경에적용할수있는기술의구현 이아직많이진행되지않았다. 센서네트워크분야에는다양한애드- 혹(ad-hoc), 멀티- 홉라 우팅(routing) 알고리즘들이연구되고있다. TinyOS에도다양한 종류의라우팅소프트웨어들이제안되고있고, 특징에따라트리 방식, 인트라 - 네트워크 (intra-network) 방식, 선전(dissemination) 방식, 세가지로구분할수있다. 트리방식은센서노드들이데 이터를수집하여정해진루트(root) 노드로데이터를전송하는 방식이다. Habitat Monitoring 12) 애플리케이션구현은트리방식 의라우팅을사용한다. 선전방식의라우팅은대부분의애플리케이 션에사용되는데, 패킷을전체네트워크에퍼뜨리거나 (broadcast), 네트워크내의데이터프로세싱을위한커맨드, 컨트롤, 재구성패 킷의전송에사용된다. 지금까지구현된멀티- 홉알고리즘을분석 해보면공통부분이있는데, 주위노드에대한검색, 연결상태 계산과데이터패킷생성, 전달기능을사용한다. (1) 트리라우팅 트리방식라우팅은부모(parent) 노드정보와루트노드로부 터의홉(hop) 수로경로를결정한다. 경로결정을위해루트노 드는브로드캐스트방식을사용하며, 루트주위의노드들도계속 해서브로드캐스트를반복적으로수행하여네트워크의최종에위
94 유비쿼터스 1 치한노드까지전달되도록한다. 이렇게경로가결정되면데이터 를전송하려는노드들은자신의부모노드에게데이터를전송하 고, 같은방법으로데이터를수신한부모노들들은또다시부모 노드에게데이터를전송하여루트노드까지데이터가전송된다. 주위노드를검색하고유지하는방법, 데이터전달방법이트리 방식라우팅의주요특징을결정한다. 지금까지 TinyOS 에구현 되어있는트리방식의라우팅은 AMROUTE, BLess, Surge, mh6, MultiHopRouter 가있다 13). AMROUTE 는루트노드가주기적인비콘(beacon) 을전송하여 라우팅경로를구성한다. 단순히현재의부모노드정보만으로경 로를구성하며, 빠른시간안에회신하는노드가경로로구성된 다. 이와반대로 BLess 방식은주위노드의데이터전송경로를 참조하여자신의부모노드를결정하고데이터를재전송한다. 루 트노드는 BLess 패킷을주기적으로전송하지만이패킷이재전 송되지는않는다. Surge 도비콘을사용하지않으며부모가될가능성이있는노드 들의정보를이용하지만패킷의전송성공에따른링크상태 (link quality) 와홉의수를이용하여경로를결정한다. mh6 14) 와최근 MultiHopRouter 는주변노드들을기준에따라 1차선정한후그 노드들이루트까지전송하는데필요한코스트 (cost) 를계산하여 경로를구성한다. Surge와 MultiHopRouter 는근래에 802.11 네 트워크애드- 혹라우팅에제안된비대칭링크, 주변노드제어와 비슷한특징을갖는출력큐잉(output queuing) 과재전송기법을 추가했다 15).
센서네트워크임베디드소프트웨어기술동향 95 트리방식의라우팅이많은이유는네트워크구성과데이터전 송이알고리즘의복잡도가높지않기때문이다. 반면장기간안정 적으로동작하는네트워크를구성하기위해서는주의가필요하다. (2) 인트라-네트워크라우팅 DSDV, AODV, Directed Diffusion 같은애드- 혹방식의라우 팅알고리즘들이간략화되어 TinyOS 상에구현되었다. 인텔(Intel) 은인터넷의라우팅에사용하는방식을채용하여센서네트워크에 적용하였다 16). 기본알고리즘은비슷한방법으로사용하였으나, 최 종결과로구성되는네트워크형태는다르게구성된다. 주변검색 과관리는동일한방법이지만최종네트워크경로는트리방식처 럼한방향의경로만구성한다. TinyDiffusion 은데이터를요구한 노드중심으로네트워크경로를구성한다 17). GPSR 18) 은각노드의 물리적위치정보를이용하여주변노드에오류가발생했을때, 문 제없이라우팅이가능하도록네트워크를구성한다. 인트라 -네트워크방식은지금까지의 TinyOS 애플리케이션들에 서는많이고려되지않은방식이나, 다양한디지털가전기기로구 성되는미래홈네트워크에사용되기위해서는새로운알고리즘이 구현되어야한다. (3) 브로드캐스트라우팅 많은애플리케이션들은네트워크의모든노드들에게데이터가전 송될수있는신뢰성있는브로드캐스트가필요하다. 또한 TinyOS 에서는새로운소프트웨어를무선통신으로전송하는애플리케이션 이있는데이런경우에는신뢰성있는멀티- 홉통신이중요하다. 브로드캐스트의방법으로는단순한재전송방법과필요할때
96 유비쿼터스 1 전송하는두가지방법으로나누어진다. 단순한재전송방법은루 트노드에서데이터를전송하면수신한노드가재전송하는방법 으로빠른네트워크구성에는효과적이지만통신상태가좋지않 은곳에위치하거나무선통신충돌이많은노드는네트워크에 참여하기위해시간이걸리는단점이있다. 필요시에전송하는방 법은노드들이자신의정보를주기적으로주위노드와주고받으 며실제전송할데이터가발생했을때만전송하는방식이다. Tiny OS에구현되어있는 Mate 버추얼머신(virtual machine) 이새로 운코드를전송할때이런방식을사용한다. 이방식은불필요한 재전송을막을수있기때문에에너지효율이좋다 19). TinyDB 애플리케이션은혼합방식을사용했는데, 초기에는빠른 네트워크구성을위해서재전송방식을사용하고, 이후에는네트 워크에참여하지못한노드를네트워크에참여시키기위해방식 을전환한다. (4) 멀티-홉네트워크구현동향 MultiHopRouter, TinyDiffusion, GPSR, BVR등의멀티- 홉 네트워크알고리즘들은경로로정해질가능성이있는이웃노드 검색과관리테이블구성이공통적인동작이다. 이정보들은처음 라우팅경로를결정할때와주위노드의생성또는소멸등의 네트워크환경이변화했을때경로재설정에사용된다. 이웃노 드테이블에는노드의주소, 연결상태, 홉수같은라우팅메타 데이터를포함한다. 링크상태는라우팅경로를결정할때사용되 며, 홉수는테이블을관리하는데사용된다. TinyOS 에서초기에구현된멀티- 홉라우팅프로토콜들은전
센서네트워크임베디드소프트웨어기술동향 97 송오류가심했지만 20), 연결상태예측기 (link state estimator) 를 사용한 MultiHopRouter, BVR, TinyDiffusion, TinyOS DSDV 에서는이문제들이해결되었다 21). 그리고이들멀티- 홉라우팅 에서는 Send와 Intercept 인터페이스를사용하기시작했는데, 패 킷생성에효율적인 getbuffer 커맨드와재전송해야하는패킷을 수신했을때호출되는 Intercept 이벤트가포함되어있어서, 노드 들은데이터의재전송전에데이터처리가가능해졌다. 또한네 트워크스택하부에이웃노드의패킷을수신할수있는기능을 추가하여더정확한주변정보를수집할수있다. 전송큐, 출력 큐, 생성큐, 전달큐등을추가하여전송효율도높였다. TinyOS 에구현되어있는라우팅프로토콜들은초기와는달리주 변노드에대한테이블을생성, 자신의것이아닌패킷의수신, 메 시지큐의사용으로지연시간, 패킷손실등의단점을극복하였다. 라. 국내기술개발현황 국내는정부를중심으로한기술개발이진행중이다. 전자부품 연구원에서는무선센서네트워크칩을개발하고있으며, Zigbee 와 TinyOS 기술을지원할계획을갖고있다. 한국전자통신연구 소에서는센서네트워크기술을활용한유비쿼터스컴퓨팅서비 스및에이전트기술을개발중이며 nano-qplus 라는초소형운 영체제소프트웨어를개발하여기술이전하였다. 유비쿼터스컴퓨 팅네트워크프론티어사업단에서는미래형초소형센서네트워크 칩및관련서비스소프트웨어를개발중이다.
98 유비쿼터스 1 맥스포 (www.maxfor.co.kr) 는전자부품연구원에서 TinyOS 를지 원하는하드웨어플랫폼 (TIP30C) 기술을이전받아판매중이며, 한국전자통신연구원의기술을이전받은옥타콤 (www.octacomm.net/) 그리고라디오펄스 (www.radiopulse.co.kr), 오렌지로직등 의회사들이센서네트워크하드웨어를및솔루션을판매또는 계획중이다. Ⅲ. 기술특성분석 TinyOS 는센서네트워크전반에대한시스템기술을실제적 현을통해주도하고있다. TinyOS 에사용되는 nesc 프로그래밍 언어는새롭게개발하여프로그래밍난이도를낮출수있는기능 을제공하고컴포넌트기반으로기존모듈의재사용성을증가시 켰고, 저전력무선네트워크구성을요구사항에적합한아키텍처 및통신기법들을제안한것등은새로운기술이안정화되는데 많은기여를하였다. 유비쿼터스컴퓨팅네트워크환경에서는다양한기기와사물들 이서로네트워크를구성하고무선통신을하게된다. 지금까지와 는다른복잡한저전력네트워크통신을지원해야하는것이차 세대네트워크에대한중요한요구사항이다. TinyOS 프로젝트에 서는다양한네트워크프로토콜들이개발되었으며, 일부는원격 모니터링서비스에실제사용되었다. 지금까지의컴퓨팅기술과는 다르게 TinyOS 에서는무선네트워크를중요한요소로다루고 구
센서네트워크임베디드소프트웨어기술동향 99 있으며, 실제 TinyOS 내부에는무선통신, 네트워크프로토콜의 최적화가잘이루어져있다. 반면운영체제커널스케줄러는무 선네트워크를지원할수있도록만들어놓아서고급기능들이포 함되어있지는않으나, 저전력무선네트워크라는측면에서는효율 적으로사용될수있는장점이있다. 미국의많은기관에서 Tiny OS를이용한기술개발을추진하고있으며, 대부분무선네트워크, 서비스기술을개발하고있다. 일본의경우는가전제품등에사용할수있는여러등급의임베 디드운영체제기술을개발하고있다. 운영체제커널을제품에최 적화할수있도록규격을제정하였고, 실제많은기기들에적용되 고있다. 일본과미국에서의연구개발의차이점은미국은네트워크중심 으로, 일본은운영체제의최적화를중심으로진행된것으로보인 다. 미국은새로운무선네트워크시장창출이라는면에서는어느 정도가시적인결과를보여주고있고, 일본은여러분야에사용될 수있는더욱최적화된소프트웨어기술발전을보여주고있다. Ⅳ. 결론및전망 센서네트워크기술은, 작고단순한하드웨어를기반으로소형 소프트웨어개발을지향하고있기때문에고급기술창조를통한 신산업의창출이라는기술적기대를실현하기에는구현난이도에 대한회의적견해가많은것같다. 그러나기술적난이도와는상
100 유비쿼터스 1 관없이새로운컴퓨팅개념의도출과실제구현을지향하는기술 개발방향은매우긍정적으로평가받을수있는추진방향이다. 센서네트워크같은저전력무선네트워크가실제산업과생활 에적용되고상용화되기위해서는안정되고상호운용이가능한네 트워크프로토콜의실제구현이요구되는데, 이런요구사항을해 결할수있는방법은지그비규격의제품이개발되거나 TinyOS 를기반으로한기술구현등으로예상된다. IEEE 802.15.4 기반 의하드웨어를이용한무선통신프로토콜이 TinyOS 상에서구현 되었기때문에하위기술에대한호환성이보장되었으며, 지금 부터는네트워크부분의기술구현이본격적으로진행될것으로 보인다. TinyOS 도지그비얼라이언스 (Zigbee Alliance) 와비슷한성격 의 TinyOS 얼라이언스를구성할계획이다 22). 많은동일기술요소 를포함하는두진영의경쟁과상호보완은새로운기술의산업 화를가속화할것으로기대된다. 단기적으로는무선네트워크시 장의확대를가져올것이며, 장기적으로는유비쿼터스컴퓨팅에서 의끊김없는네트워크를구성할수있는기반기술로사용될것 이다.
센서네트워크임베디드소프트웨어기술동향 101 참고자료 1. http://www.intel.com/research/exploratory 2. J. Hill, R. Szewczyk, A. Woo, S. Hollar, D. E. Culler and K. S. J. Pister. System architecture directions for net worked sensors. In Proceedings of ASPLOS, pages 93-104, Boston, MA, USA, Nov. 2000. 3. H. Abrach, S. Bhatti, J. Carlson, H. Dai, J. Rose, A. Sheth, B. Shucker, J. Deng, and R. Han. MANTIS: system support for MultimodAl NeTworks of In-situ Sensors In Proceedings of the 2nd ACM International Conference on Wireless Sensor Networks and Applications, pages 50-59. ACM Press, 2003. 4. S. Park, A. Savvides, and M. B. Srivastava. SensorSim: a simulation framework for sensor networks In Proceedings of the 3rd ACM International Workshop on Modeling, Analysis and Simulation of Wireless and Mobile Systems, pages 104-111. ACM Press, 2000. 5. J. Elson, S. Bien, N. Busek, V. Bychkovskiy, A. Cerpa,
102 유비쿼터스 1 D. Ganesan, L. Girod, B. Greenstein, T. Schoellhammer, T. Stathopoulos, and D. Estrin. Emstar: An environment for developing wireless embedded systems software Technical Report 0009, CENS, Mar. 2003. 6. http://nescc.sourceforge.net 7. http://www.chipcon.com 8. http://www.moteiv.com 9. http://www.xbow.com 10. http://webs.cs.berkeley.edu/retreat-6-04 11. http://webs.cs.berkeley.edu/retreat-6-04/joep-nest-2004- springretreat-802154.ppt 12. A. Mainwaring, J. Polastre, R. Szewczyk, D. Culler, and J. Anderson. Wireless sensor networks for habitat monitoring In ACM International Workshop on Wireless Sensor Networks and Applications (WSNA 02), Atlanta, GA, USA, Sept. 2002. 13. http://www.tinyos.net 14. A. Woo, T. Tong, and D. Culler. Taming the underlying challenges for reliable multihop routing in sensor networks In SenSys 03, Los Angeles, California, Nov. 2003. 15. D. De Couto, D. Aguayo, J. Bicket, and R. Morris. A high-throughput path metric for multi-hop wireless routing In Proceedings of ACM MOBICOM, San Diego,
센서네트워크임베디드소프트웨어기술동향 103 California, Sept. 2003. 16. M. D. Yarvis, W. S. Conner, L. Krishnamurthy, A. Mainwaring, J. Chhabra, and B. Elliott. Real-World Experiences with an Interactive Ad Hoc Sensor Network In International Conference on Parallel Processing Workshops, 2002. 17. D. Ganesan. TinyDiffusion Application Programmer's Interface API 0.1. http://www.isi.edu/scadds/papers/tinydiffusion-v0.1.pdf. 18. B. Karp and H. T. Kung. GPSR: greedy perimeter stateless routing for wireless networks In Proceedings of ACM MOBICOM, pages 243-254, Boston, MA, USA, 2000. 19. P. Levis, N. Patel, D. Culler, and S. Shenker. Trickle: A self-regulating algorithm for code maintenance and propagation in wireless sensor networks In First USENIX /ACM Symposium on Network Systems Design and Implementation (NSDI 2004). 20. D. Ganesan, B. Krishnamachari, A. Woo, D. Culler, D. Estrin, and S. Wicker. Complex behavior at scale: An experimental study of low-power wireless sensor networks Technical Report 02-0013, UCLA Computer Science Division, Mar. 2002. 21. http://webs.cs.berkeley.edu/retreat-6-04/tinyosalliance.ppt