Implement and Evaluate Advanced Power Efficient Gathering in Sensor Information System (개선된 센서 라우팅 방식 A-PEGASIS 구현 및 성능 평가)
정명수 박규영
(Myoungsoo Jung) (Gyuyoung Park)
본 기술 문서는 서창진과 양진웅에 의해서 구현된 개선된 센서 라우팅 방식(A-PEGASIS)을 구현하고 TyniOS와 TOSSIM을 이용하여 기존 LEACH 라우팅 방식과의 성능 비교를 위해 작성 되었다. 본 기술 문서에서는 단순히 A-PEGASIS 논문에 제시된 애매한 제한된 스패닝 체인 트리 메소드를 보다 명확히 기술하고 이에 대한 알고리즘과 동작방식을 구체적으로 제시한다. 본 기술 문서의 실험치는 TinyOS와 TOSSIM환경 위에서 구현된 A-PEGASIS 통신 방식은 기준 LEACH에 비해서 에너지 소비량(산술적 평균) 24% 향상, Base station과 통신을 위해 각 노드들의 생존량이 1.85~3배 정도되는 것을 보여 준다.
1. INTRODUCTION
최초 계층 구조 알고리즘인 LEACH는 Base station과 통신하기 위해 Figure 1에서처럼 전체 네트워크의 망을 특정한 개수 개의 센서 노드를 가진 클러스터로 나누고 그 중에서 클러스터 헤더 또는 coordinator로 불리는 대표자를 선출하여 이를 통하여 Base station과 통신을 한다. 통신을 할때는 해당 클러스터의 모든 측정값들을 하나의 패킷으로 Fusion하여 통신을 하게 되는데 그 결과 멀리 떨어져 있는 Base station과 집적 통신하는 노드의 수를 줄이고 클러스터 헤더에서 일괄적으로 퓨전하여 전송 되는 에너지 소비를 줄였다.
Figure 1클러스터의 구성 방법과 LEACH의 계층 구조
클러스터 헤더를 통한 LEACH의 통신 접근 방법은 무선 선서 네트워크의 가장 간단한 통신방법인Flooding이나 Gossiping 보다 훨씬 효율적인 동작을 수행 하지만 클러스터 헤더를 선출(Selection) 하는 과정에서 비효율적인 문제가 발생한다. 다시 말해서 각각의 클러스터 안에 분산적이며 확률적인 방법으로 선택된 클러스터 헤더의 센서 노드들은 클러스터가 중첩(Overlap)되는 특정 지역이 발생하여 클러스터 헤더가 밀집되는 현상이 발한다. 이러한 현상은 Base Station에게 측정값을 전달하는 토폴로지의 경로가 길어지게 되는 결과를 초래하며 이로 인해 성능 하락을 보이게 된다.
이에 반하여, 서창진과 양진웅에 의해서 제안된 A-PEGASIS는 기존 계층 구조 알고리즘들을 계선한 PEGASIS 알고리즘에 약간의 수정을 가하여 좀 더 효율적인 통신 알고리즘을 제안한다. 이 두 논문 다 Coordinator(PEGASIS군에서는 클러스터라는 의미가 존재 하지 않으므로 대표자라는 이름으로 대신하며 이는 클러스터의 헤더와 같은 역할을 한다)가 100% 퓨전을 하는 가정을 기반으로 하였기 때문에 Coordinator수가 하나로 축약된 계층 알고리즘으로 에너지 전달의 소비를 대폭 감소하였다. 다만 PEGASIS에서는 체인을 생성할 당시 Prim Algorithm을 사용하는데 이를 통하여 생성된 체인은 평균 길이가 길고 마지막으로 선정된 링크의 길이가 다른 노드들에 비하여 다소 긴 경향을 가지는 단점을 가지고 있다. 다소 긴 링크를 가지는 노드의 인접 노드들은 전송 에너지가 다른 노드들에 비하여 일찍 고갈 되는 경향이 존재 하는데 A-PEGASIS는 이러한 단점을 극복하기 위하여 Kruskal Algoritm의 유망집합(Promising set)을 사용하고 링크 스와핑 기법을 통해서 이를 조금 더 개선한 알고리즘이다.
본 기술 문서는 아래와 같은 순서로 구성되어 있다. 섹션 2에서는 A-PEGASIS를 실제 구현하고 평가 하기 위해서 문제가 되는 것들을 제시하고 이에 대한 해결 방법을 모색해본다. 섹션 3에서는 실제 문제가 되는 애매한 제한된 스패닝 체인 트리의 알고리즘을 명확하게 기술하고 TinyOS와 TOSSIM에서 A-PEGASIS를 구현하기 위한 기타 방법들을 기술한다. 섹션 4는, TinyOS와 TOSSIM위에서 구현된 A-PEGASIS의 Coordinator 선출 과 체인 변경에 실제 예를 제시하며 성능 결과치를 제공한다.
2. IMPLEMENTATION CHALLENGES
제안된 A-PEGISIS 알고리즘을 구현 하기 위해서 우리는 아래와 같은 몇 가지 문제를 해결 해야 했다.
- 슈퍼라운드 변경 시까지 생성된 체인을 모두 동기화 하기 위한 정보 공유.
- A-PEGASIS에서 제안된 제한된 스패닝 체인을 구성하기 위한 실제 알고리즘의 부재
- A-PAGASIS에서 사용되는 가중치를 구하기 위한 도출 식들의 가정을 실제 구현에 반영하는 문제
- 기존 LEACH를 변경 하는 것이 아니라 새로운 모듈을 작성 하는 수준의 구현사항
- 각 노드들의 위치 정보를 TinyOS가 제공하지 않음으로써 발생하는 환경 정보 가공 문제
첫째, TinyOS와 NesC의 구조상, 각 노드들은 하나의 코드를 공유하여 인스턴스를 생성한다. LEACH에 구현된 MHLeachPSM 모듈을 기반으로 구현을 되짚어보면 각 노드들은 다른 노드들의 정보를 하나의 전역 변수에 선언하여 이를 공유하게 되는데 이 정보들을 Advertise라는 커뮤니케이션 방식에 따라서 이를 공유한다. 여기서 공유하게 되는 것은 노드들의 에너지, 노드 주소, 클러스터헤더인지 아닌지, 노드가 살아 있는지 아닌지 정도를 공유하게 된다. A-PEGASIS와 본 기술 문서에서 제시된 변형된 Kruskal의 제한된 스패닝 체인 트리는 각 노드간의 edge정보, 방향성, 그리고 논문의 도출식에 의해서 계산된 가중치 정보들은 튜플 형태의 벡터로 구성되고 완전한 정보를 제공하기 위해 완전 그래프(Complete Graph)형태로 제시 되기 때문에 데이터 사이즈가 커서 advertise와 같은 프로토콜로 공유 될 수 없다. 따라서 TyniOS와 TOSSIM기반의 A-PEGASIS 구현에서는 매 노드에서 이를 공유하는 방법이 하나의 문제점으로 부각된다.
둘째, 제시된 A-PEGASIS의 알고리즘은 섹션 3의 구현과 해결책에서 다시 한번 제시 되겠지만 크게 3가지로 프로시저로 분류된다. 가중치 계산을 처음 진행하고 이에 따라 제한된 Kruskal 스패닝 체인 트리를 형성한 뒤 링크간 스와핑의 적용이 가능한 경우 이를 해결 해야 한다. 문제는 토폴로지를 형성에 핵심이 되는 제한된 스패닝 체인 트리의 형성에 있다. 우선적으로 Kruskal 알고리즘은 최소 가중치를 가지는 토폴로지를 형성하기 위해 유망 집합(Promising Set)을 사용하는데 Kruskal에 의해 원래 그래프와 완전이 서로소인 솔루션 유망 집합을 얻고 나면 이를 체인으로 변경하는데 문제가 발생한다. 왜냐하면 트리를 끊어내는 방식으로 체인을 형성하면 그래프간의 단절이 발생하고 이 때문에 하나의 coordinator로 base station과 통신할 수 없는 문제가 발생한다. 이 부분에 대해서 A-PEGASIS는 의사수준의 알고리즘도 제공하고 있지 않다. 이 문제에 대해서는 섹션 3에서 다시 좀 더 구체화 하여 토론 해보도록 하겠다.
마지막으로, A-PEGASIS는 가중치 계산과 Coordinator선출에 있어서 각 노드들의 위치를 기반으로 한 거리를 판단 할 수 있어야 하며 에너지 잔량을 측정 할 수 있어야 한다. TyniOS와 TOSSIM기반의 시뮬레이션에서 작성된 A-PEGASIS 모듈은 이러한 환경 정보를 읽어오는데 한계가 있다. 따라서 본 기술 문서의 프로젝트 코드에서는 TOSSIM의 네트워크 형성을 Grid로 가정하고 각 거리를 계산 하였으며 에너지는 모든 노드가 동일하게 가지고 시작하며 스패닝 체인 정보 공유를 위해 Coordinator가 변경 되는 순간에 일괄적으로 이를 반영하는 가정을 포함한다. 또한 본 프로젝트는 원래 LEACH 코드를 이해하고 이를 개선 방법을 공부하는 것과 함께 LEACH를 완전히 대체하는 A-PEGASIS 모듈을 따로 작성하였다.
3. DETAILED IMPLEMENTATION AND SOLUTIONS
3.1 Kruskal Spanning Tree
최소 신장 비용 트리(Minimum Spanning Tree)를 위하여 첫 번째로 구현된 Kruskal Algorithms은 구현 된 소스의 A-PEGASIS 모듈의 BuildMST() 인터페이스를 통해 이루어진다. 기존 PEGASIS 논문과 A-PEGASIS 논문에서 제시된 알고리즘은 모두 토폴로지 형성에 있어서 Node Degree와 Adjacent Node가 2인 특수 트리인 체인을 통해서 만들어진다. 기존 PEGASIS의 논문에서는 Prim Algorithms을 통해서 PEGASIS 체인을 형성하지만 서창진과 양진웅에 의해서 구현된 A-PAGASIS는 최소 신장 비용 트리를 형성하는 Kruskal Algorithm에 f가 2d인 제약사항을 가하여 토폴로지를 형성한다.
BuildMST(Graph, FinalGraph) 입력 그래프에 대하여 최소 비용 신장 토폴로지를 생성한다. |
Input : 가중치, 비 방향 간선들을 가진 complete Graph Output : 최소 신장 비용 토폴로지 |
Begin procedure 1: F = {공집합} 2: Edge들은 가중치로 sorting 3: 입력 Grape의 Vertex에 의 서로 소 부분 집합 구축 4: Graph에 속한 Edge을 가중치가 작은 것부터 차례로 정렬 5 : loop 모든 부분집합이 하나로 합쳐질 때 까지 6: if 서로 소 부분집합의 두 접점이 연결 되었는지 여부 // feasibility check 7: 두 부분집합을 Merge. 8: Edge를 F에 추가. End procedure |
Table 1 Kruskal 스패닝 트리 구현 알고리즘
Figure 2은 스타를 내포한 육각형 네트워크의 중심에 base station이 있고 설명의 편의를 위하여각 edge마다 에너지와 distance를 고려한 가중치가 숫자로 주어져 있다. Kruskal Algorithms은 Figure 2에서 볼 수 있듯이 우선적으로 가중치가 낮은 순서대로 edge를 소팅하여 가중치가 낮은 edge부터 최소 비용 신장 트리에 삽입을 고려한다. 이때 가중치로만 고려를 하기 때문에 base station을 포함한 edge임은 고려 대상이 아니다. 최소 비용 신장 트리에 삽입 되기전에 Kruskal Algorithms에서는 포리스트(Forest)로 불리는 유망집합(Promising set)들(Figure에는 회색으로 표기된 것들 것 각각의 유망 집합들이다)을 각각 구성하고 최소 가중치를 가진 edge부터 유망 집합에 병합하는 작업을 진행한다.(여기서 유망 집합은 생성 되기 전까지 node개수만큼 많은 독립된 집합으로 형성이 가능하다) 이렇게 유망 집합은 공집합으로 시작하여 Figure 2에 주어진 모든 노드들을 유망 집합에 삽입하고 기존 집합과 서로소가 될 때 이를 종료한다. Table 1는 A-pegasis 모듈을 BuildMST 인터페이스에 구현된 소스의 의사코드를 기술하고 있다.
3.2 Limited Spanning Chain Tree
A-PEGASIS에서는 제한된 스패닝 체인 트리를 형성한다. 서창진과 양진웅에 의해서 제시된 스패팅 체인 트리 절차는 대략적으로 아래와 같다.
- 거리와 남은 에너지를 가지고 각 edge마다 가중치를 계산
- 가중치를 바탕으로 Kruskal 알고리즘을 통하여 스패닝 트리를 형성
- 스패닝 트리의 링크 스와핑.
거리와 남은 에너지를 가지고 계산하는 가중치는 A-PEGASIS의 방식을 TyniOS와 TOSSIM에서 사용이 가능한 정보와 가정수준에서 새로 구성하였으며 에너지 도출 식(1,2)은 아래와 같다.
BuildChain(Graph, FinalGraph) 입력 그래프에 대하여 최소 비용은 스패닝 체인을 생성한다. |
Input : 가중치, 비 방향 간선들을 가진 complete Graph Output : 최소 신장 비용 스패닝 체인 |
Begin procedure 1: F = {공집합} 2: F' = {공집합} 3: 입력 Grape의 Vertex에 의 서로 소 부분 집합 구축 4: 시작 노드를 base station으로 설정 5 : loop 모든 부분집합이 하나로 합쳐질 때 까지 6: Graph에 속한 Edge을 가중치가 작은 것부터 차례로 정렬 7: 시작 노드에 인접한 노드중 가장 가중치가 적은 노드를 선정 8: If 방문하지 않았고 edge가 집합 F에 존재 하지 않는다면 9: 방문을 하여 방문한 노드의 인접 노드들이 어디 있는 지 임시 F'에 병합(Merge) 10: If 최소치를 구하지 못하거나 graph정보에 시작 노드의 정보를 가진 튜플이 없다면 11: 모든 그래프의 정보를 역으로 탐색하고 방문정보가 있는 지 확인 12: If 방문 하지 않고 역방향 간선이 존재한다면 13: 다시 가중치를 계산하여 소팅 14: 유효성 검사 후 F'에 병합 15: if 서로 소 부분집합의 두 접점이 연결 되었는지 여부 // feasibility check 16: 두 부분집합을 Merge. 17: F'을 F에 업데이트 18: 방문 정보 벡터 업데이트 19: 방문 노드를 시작노드로 재설정 20: 링크 연결 크로스시 스와핑. End procedure |
Table 2 본 기술문서에서 제시되고 작성된 제한된 스패닝 체인 트리 구성 알고리즘
에너지를 통한 가중치가 계산되면 스패팅 체인 트리를 형성 해야 하는데 여기에는 섹션 2에서 언급되었던 문제가 발생한다. 유망 집합과 원래 입력 그래프의 서로소 상태를 확인 하며 스패닝 트리를 형성한 뒤 다시 제한된 스페닝 체인을 형성하기 위하여 트리를 잘라 체인을 만들면 그래프가 분리되어 하나 이상의 Coordinator가 선출 되는 문제가 발생한다. 이 부분의 기술이 미흡한 관계로 우리는 Table 2에서 제시된 알고리즘 대로 방문 노드와 방문 노드로부터 인접한 노드들의 가중치를 고려하여 다시 스패닝 트리를 작성하였다.
Figure 3는 본 기술 문서에서 해결책으로 작성된 제한된 스패닝 체인 트리의 작성 세부 절차를 보여 준다.
4. EVALUATION
4.1 Coordinator 변경 실례
우리는 솔루션에 제시되고 논문이 기술 된 바대로 슈퍼 라운드마다 스패닝 체인을 형성하여 coordinator를 재선정한다. Figure XX는 TyniOS와 TOSSIM에서 실제 구현된 결과를 반영하여 슈퍼라운드시 마다 실제 체인 형성이 완전히 새로 구성되며 이를 통하여 새로 선정된 coordinator와 base station간의 통신 상태를 보여준다.
<Figure 4, 새로 생성되는 스패닝 체인과 Coordinator 변경 실례>
이러한 체인 재 형성과정과 재 선정된 coordinator는 이론적으로 A-PEGASIS의 100% 퓨전이 가능하다고 가정하면 LEACH에서 발생하는 문제인 특정 영역 밀집 현상과 클러스터마다 클러스터 헤더가 base station과 통신하는 비용 및 이로 인한 에너지 절감 효과가 충분히 가능하다는 사실을 보여준다.
4.2 데드 노드 빈도수
성능 결과치를 도출 하기 위해 우리는 각 edge간 거리를 기본 유닛을 1으로 설정하고 최소거리 1, 최대 거리가 3으로 가정하였다. 디스턴스 팩터(Distance Factor)는 거리 1일 때 40, 2일 때 80, 3일 때 120으로 설정하였다. 에너지를 구하는 식은 모든 노드가 초기 1000이라는 값으로 에서 시작을 하고 슈퍼라운드를 결정하는 각 라운드의 이전 노드가 가지고 있던 에너지에서 디스턴스 펙터를 감산한다.
<Figure 5, 데드노드 빈도수 – 1차 시도>
<Figure 6, 데드노드 빈도수 – 2차 시도>
Figure XX를 통한 결과치는 각각 1차 2차, 3차 시도를 표현하고 있다. LEACH의 경우 클러스터 헤더를 확률적 선택방법에 의존하여 랜덤하게 추출하기 때문에 하기 때문에 재선정 되고 전체 시뮬레이션 기간 동안 각 노드가 처리해야 하는 빈도수가 A-PEGASIS보다 높기 때문에 일찍 죽을 수 있다는 것을 설명한다. 반면에 A-PEGASIS는 coordinator는 클러스터가 아닌 전체 스패닝 체인에 따라 선출 기회가 균등하게 이루어 지기 때문에 시간이 지남에 따라 죽는 빈도가 낮다.
4.2 시간대 별 평균 잔존 에너지량.
평균 에너지는 총 노드에 잔존 에너지들의 합을 총 가정 노드 수(6)을 통해 산술적 평균으로 구해진다. Figure XX는 LEACH는 클러스터 헤더들이 A-PEGASIS 보다 많이 선출 되기 때문에 A-PEGASIS비하여 Base station과 통신을 하기 위해 에너지를 많이 소비하게 된다. 반면에 A-PEGASIS는 전체 체인에서 하나의 coordinator 를 균일하게 선출하기 때문에 좀 더 안정적인 결과를 보여준다.
<Figure 7, 시간대별 평균 잔존 에너지량>
시간대 별 죽은 노드 개수 - 1차 시도 |
|||||
sec. |
0 |
100 |
200 |
300 |
400 |
LEACH |
0 |
0 |
1 |
2 |
2 |
A-PEGASIS |
0 |
0 |
0 |
0 |
1 |
시간대 별 죽은 노드 개수 - 2차 시도 |
|||||
sec. |
0 |
100 |
200 |
300 |
400 |
LEACH |
0 |
1 |
2 |
2 |
3 |
A-PEGASIS |
0 |
0 |
0 |
0 |
1 |
시간대 별 남은 평균 에너지 양 |
|||||
sec. |
0 |
100 |
200 |
300 |
400 |
LEACH |
6000 |
5280 |
4460 |
3780 |
3040 |
A-PEGASIS |
6000 |
5440 |
4820 |
4140 |
3780 |
<Figure 6, 각 실험 별 통계 수치>
5. CONCLUSION
위에 기술한 결과를 통해서 보면 A-PEGASIS가 LEACH보다 모트들의 에너지 특성을 더 효율적으로 고려한다는 것을 알 수 있고더 나은 성능을 보여주었다. LEACH도 역시 WSN의 효율적인 이용을 위해 고안된 프로토콜이긴 하지만 각 클러스터의 헤더를 선출하는 방법에 있어서 Random하게 선출하기에 때문에 각 모트의 에너지 상태를 반영하지 못한다는 한계를 가지고 있다. 즉, 헤더가 자신의 클러스터에 속한 다른 모트들로부터 받은 데이터를 퓨징하여 베이스 스테이션으로 한꺼번에 전달하게 되는데 네트워크의 규모가 커질 수 록 클러스터의 개수가 늘어나게 되고 클러스터의 헤더들은 다른 모트들보다 더 많은 에너지를 소비하게 된다. 이 때 헤더의 선출에 남은 에너지량을 고려하지 않고 Random하게 헤더를 선출하게 되므로 직전 라운드에 헤더였던 노드가 다시 선택된다면 그 모트는 빨리 에너지가 고갈될 수 밖에 없다. 이러한 문제점을 A-PEGASIS가 해결해 주었다는 것을 본 문서의 결과를 통해 알 수 있었다. 네트워크의 체인을 형성하고 헤더를 선출하는 과정에 있어서 각 모트와 베이스 스테이션사이의 거리, 그리고 각 모트의 남은 에너지량을 통해서 가장 베이스 스테이션과의 비용이 적은 모트를 각 라운드마다 선출함으로써 전체적인 모트들의 평균 에너지량을 균일하게 맞출 수 있었고 각 모트들의 수명 또한 더 오래 지속될 수 있었다. 실험치는 TinyOS와 TOSSIM환경 위에서 구현된 A-PEGASIS 통신 방식은 기준 LEACH에 비해서 에너지 소비량(산술적 평균) 24% 향상, Base station과 통신을 위해 각 노드들의 생존량이 1.85~3배 정도되는 것을 보여 준다.
6. REFERENCE
[1] 서창진, 양진웅, "개선된 센서 라우팅 방식 : A-PEGASIS (A-PEGASIS : Advanced Power Efficient GAthering in Sensor Information Systems)", 2007 12, 정보 과학회
[2] Stephanie Lindsey, Cauligi S. Raghavendra,, "PEGASIS: Power-Efficient Gathering in Sensor
Information Systems"
[3] D. Estrin, R. Govindan, J. Heidemann, and Satish Kumar. "Next Century Challenges: Scalable Coordination in Sensor Networks. In Proceedings of Mobicom" 99, 1999.
[4] W. Heinzelman, A. Chandrakasan, and H. Balakrishnan." Energy-Efficient Communication Protocol for Wireless Microsensor Networks. In Proceedings of the Hawaii Conference on System Sciences", Jan. 2000.
'Drafts > Hardware(Trans)' 카테고리의 다른 글
| A-PEGASIS (0) | 2009/12/18 |
|---|---|
| Native Command Queue #2 (0) | 2007/10/14 |
| Native Command Queue #1 (0) | 2007/10/14 |