Tail 시간들의 중첩 방식은 tail 시간을 결정하는 모뎀의 파라미터들은 표준 설정 값을 그대로 사용하고 tail 시간을 발생시키는 상황을 조절한다. 이를 위해 tail 시간을 야기하는 패킷들의 전송 시점을 조절하여 두 개 이상의 패킷들에 의해 시작되는 tail 시간들이 가능한 많이 중첩되도록 만든다. 이 기법들은 다시 패킷 전송 시점을 조절하는 방법에 따라 다음 세 종류로 나눌 수 있다.
(1)전송 지연 기법(delaying mechanism) (2)선행 전송 기법(prefetching mechanism) (3)묶음 전송 기법(batching mechanism)
전송 지연 기법은 모바일 장치의 응용이 어떤 패킷의 전송을 요청했을 때, 해당 패킷의 실제 전송을 지연시켰다가 나중에 전송 요청된 패킷과 함께 내보내는 것이다. 선행 전송 기법은 향후 응용이 전송할 것으로 예상되는 패킷을 사전에 다른 패킷 전송이 있을 때 미리 전송한다. 그리고 그 결과를 보관하고 있다가 실제로 응용의 해당 패킷 전송 요청이 발생하면 결과를 돌려준다. 마지막으로 묶음 전송 기법은 주기적으로 깨어나서 패킷을 전송하는 응용들의 깨어나는 시점을 동기화한다. 일반적으로, 주기적으로 동작하는 응용들은 깨어났을 때 짧은 시간 내에 필요한 작업을 마치고 다시 대기한다. 따라서 주기적인 응용들이 동시에 깨어나서 수행된다면, 이들이 모뎀에게 전달하는 패킷 전송 요청들은 전체가 짧은 시간 내에 발생하게 된다.
29
이러한 다양한 방식의 기법들은 서로의 동작을 방해하지 않는 경우도 많이 존재한다. 실제로 패킷 전송에 의한 tail 시간들의 중첩을 최대화하기 위해 두 가지 이상의 패킷 전송 시점 조절 기법들을 동시에 적용한 연구들도 많이 존재한다. 따라서 본 절의 남은 부분에서는 기존 연구들을 사용한 방식 별로 순서대로 분류하여 설명하는 대신, 각 연구의 핵심 아이디어를 설명하고 어떤 방식들을 사용한 것인지 정리한다. 본 연구에서 제안할 기법 역시 여기서 설명할 기존 연구들 중, 다른 방식을 사용하는 기법들과 함께 적용하는 것이 가능하다.
N. Balasubramanian은 [17]에서 TailEnder를 제안했다. 이 기법은 전송 지연 기법과 선행 전송 기법을 동시에 사용한다. TailEnder의 전송 지연 기법은 사전에 선정된 delay-tolerant 응용들에 대해서 적용된다.
이 연구에서 정의한 delay-tolerant 응용은 해당 응용이 전송하는 패킷이 지연되어도 정확히 동작하는 응용이다. 논문의 저자들은 E-mail 이나 RSS(Rich Site Summary) 뉴스 피드를 delay-tolerant 응용으로 선정하였다. 이들 응용이 전송 요청한 패킷은 우선 TailEnder가 보유한 큐(queue)에 들어가서 대기하게 된다. 이 때, 패킷의 전송 기한이 설정된다. 그리고 큐에서 대기중인 패킷들 중 하나의 전송 기한에 도달하면, TailEnder는 큐에 있는 모든 패킷들을 한꺼번에 꺼내서 전송한다. TailEnder의 선행 전송 기법은 Web search 응용과 Web browsing 응용에 적용된다. 이 기법은 다음과 같이 동작한다. 먼저 모바일 장치의 사용자가 이들 응용을 통해 내리는 검색 명령이나 Web page 로딩 명령의 통계를 구한다. 이를 바탕으로 향후 사용자가 검색할 키워드나 방문할 Web page를 미리 요청하여 전달받은 결과를 장치에 저장해 둔다. 예를 들어, 특정 검색 키워드에 대한 최상위 10개의 결과를 미리 모바일 장치로 받아 둔다. 이후 사용자가 예상된 명령을
30
내리면 실제 모뎀을 통한 패킷 전송 없이 저장되어 있던 결과를 돌려준다. 이 기법은 delay-tolerant 응용들과 그렇지 않은 응용들이 함께 동작하는 실제 모바일 장치의 멀티태스킹 환경을 고려하지 않고 있다는 한계를 가지고 있다. 또한, 모뎀의 상태 변화를 향후 시점까지 치밀하게 고려하지 않고 패킷 전송을 지연하기 때문에 예기치 못한 전력 낭비를 가져올 수 있다.
H. A. Lagar-Cavilla는 [52]에서 전송 지연 기법으로 분류되는 traffic backfilling 기법을 제안했다. 이 기법은 모바일 장치의 응용이 생성하는 트래픽을 interactive 트래픽과 delay-tolerant 트래픽으로 분류한다. 그리고 delay-tolerant 트래픽을 커널에게 명시적으로 알려줄 수 있는 API를 제공한다. 구체적으로, Linux 커널의 소켓 인터페이스를 관리하기 위한 setsockopt() 시스템 콜을 수정하여 소켓에 표식을 할 수 있게 하였다. 커널은 표식이 달린 소켓으로 전송되는 모든 패킷들을 delay-tolerant 트래픽으로 간주한다. 이들 패킷은 우선 전송이 지연되었다가, 표식이 달리지 않은 소켓을 통한 패킷 전송이 일어난 직후에 전송된다. 이 기법은 사용자의 모바일 장치 사용 상황에 따라 동적으로 패킷의 특성이 달라질 수 있다는 사실을 고려하지 않고 있다.
그리고 연구에서 제안된 API를 사용하여 개발된 응용들에 대해서만 적용이 가능하다. 뿐만 아니라, TailEnder에서 언급한 예기치 못한 전력 낭비가 마찬가지로 발생할 수 있다.
이와 유사하게, H. Liu 역시 모바일 장치 응용을 위해 TailTheft() API를 새롭게 제안하였다[53]. 이 API는 인자로 전달되는 t_delay 값에 따라 전송 지연 기법과 선행 전송 기법을 동시에 지원한다. 이 값으로 양수가 전달되면 패킷이 전송 지연 기법의 대상이라는 의미이며, 음수가 전달되면 선행 전송 기법의 대상이다. 이 연구에서 제안된 기법을
31
사용해 모뎀 전력 소모량 절감 효과를 얻기 위해서는 응용 개발자가 패킷 별로 최대 전송 지연 가능 시간이나 선행 전송 가능 시간을 명확히 판단하고, TailTheft()를 적재적소에 사용해야만 한다. 그러나 서드 파티 개발자들은 일반적으로 모뎀의 동작을 정확하게 이해하고 있지 않기 때문에 효과적인 API 사용을 기대하기 매우 어려운 것이 현실이다.
또한 이 연구 역시 치밀하지 못한 전송 지연으로 인해 발생할 수 있는 전력 낭비 문제를 그대로 가지고 있다.
F. Qian은 [49]에서 주기적으로 전송되는 패킷들을 분석한 결과 이들이 일반적으로 delay-tolerant 패킷이라는 것을 발견했다. 이 연구에서 delay-tolerant 패킷은 모바일 장치의 사용자에 요청되지 않은 패킷들이다. 이를 바탕으로 [49]에서는 주기적으로 전송되는 패킷을 위한 Piggyback 기법과 Batching 기법을 제안했다. Piggyback은 주기적으로 전송되는 패킷에 대해 전송 지연과 선행 전송을 적용하는 기법이다. 이 때, 각 패킷은 사전에 설정된 시간만큼 지연 또는 선행 전송이 가능하다. Batching은 묶음 전송 기법으로 분류된다. 이 기법은 먼저 모바일 장치의 주기적인 전송 시점들을 설정한다. 그리고 응용에 의해 주기적으로 전송되는 패킷들의 실제 전송을 사전에 설정된 모바일 장치의 전송 시점들 중 가장 가까운 시점에 수행한다. 이 연구에서는 OSI 7계층 중 네트워크 계층인 IP(Internet Protocol) 단의 정보를 사용하여 주기적으로 전송되는 패킷들을 검출하는 알고리즘을 제안했다.
하지만 이 방법은 실제 모바일 장치의 멀티태스킹 환경에서 제안된 기법들의 효율성을 크게 제안한다. 그 이유는 IP 단의 정보만 사용하기 때문에 서로 다른 주기로 패킷을 전송하는 응용들이 섞여서 동작하는 상황에서 종종 각각의 주기들을 검출해내지 못하기 때문이다. 또한 이 연구의 패킷 전송 지연 기법은 주기적인 패킷의 전송을 무조건 지연하기
32
때문에 앞서 언급한 연구들과 마찬가지로 예기치 못한 전력 낭비를 야기할 수 있다.
V. Könönen은 주기적으로 수행되는 응용들의 깨어나는 시점을 일치시키기 위한 타이머 정렬 알고리즘을 두 가지 제시했다[54]. 하나는 응용이 다음 번 깨어나야 하는 시간 구간이 명확하게 주어질 때 사용하는 알고리즘이다. 이 알고리즘은 어떤 응용이 다음 깨어날 시점을 결정하기 위해 타이머를 설정할 때, 이전에 다른 응용들이 설정해둔 시간 구간들과 비교하여 중첩되는 시점으로 타이머를 설정한다. 이때, 다른 응용들도 이 시점에 함께 깨어나도록 해당 응용들의 타이머가 재설정된다. 다른 하나는 응용이 특정 시점 전에는 언제든지 깨어나도 될 때 사용하는 알고리즘이다. 이 알고리즘은 먼저 k-means clustering을 사용하여 응용이 설정한 타이머 값들을 몇 개의 클러스터들로 묶는다.
그리고 각 클러스터에 소속된 타이머들이 동시에 만료되도록 값을 재설정한다.
앞서 언급한 것처럼, 모바일 장치는 다양한 기법들을 동시에 적용하면서 모뎀의 전력 소모를 줄이기 위한 최대한의 노력을 기울인다.
하지만 패킷 전송 지연 방식을 사용하는 기법들은 특정 패킷 전송 시퀀스가 발생하는 상황에서 오히려 모뎀의 전력 소모량이 증가하는 부작용을 가지고 있다. 그 결과, 패킷 전송 지연 방식의 기법이 실제로 적용되기 어렵게 만든다. 이어지는 3장과 4장에서는 이 문제를 자세히 설명하고, 이를 해소하는 실용적인 패킷 전송 지연 기법을 제안한다. 본 연구에서 제안하는 기법은 다른 종류의 모뎀 전력 소모량 절감 기법과 함께 적용할 수 있다.
33
제 3 장 문제 설명과 해결 방안 개관
본 장은 본 연구에서 풀고자 하는 문제를 명확하게 기술하고, 제안하는 해결 방안을 간략히 설명한다. 앞서 언급한 것처럼 본 연구는 기존 패킷 전송 지연 기법들의 한계를 해결한 새로운 모뎀 전력 소모량 절감 기법을 제안한다. 기존 기법들의 한계는 특정 패킷 전송 상황에서 예기치 못한 전력 낭비가 발생하는 것임을 기억하자. 이 문제는 최신 모바일 장치의 소프트웨어와 모뎀의 복잡한 상호 작용에 의해 발생한다.
따라서 문제를 설명하기 위해서는 먼저 모바일 장치의 패킷 전송을 정확하게 모델링할 필요가 있다. 본 장은 다음과 같이 구성된다.
1절에서는 대상 시스템에서의 패킷 전송을 모델링한다. 2절에서는 본 연구가 해결하고자 하는 문제를 상세히 설명한다. 마지막으로 3절에서는 제안하는 기법에 대하여 간략히 개관한다.
제 1 절 시스템 모델
모바일 장치가 점차 복잡하고 다양한 기능을 제공하게 되면서 최신의 계층화된 소프트웨어 아키텍처를 사용하기 시작했다. 이러한 시스템에서 어떤 현상을 명확히 분석하기 위해서는 각 계층별 동작 방법 뿐만 아니라 전체가 어떻게 연동하는지도 이해해야 한다. 본 절에서는 이어지는 연구의 논의를 위하여 시스템 모델을 설명한다. 먼저 최신 모바일 장치의 계층화된 구조를 설명한다. 이어서 모바일 장치에서의