3.2차 중간 보고

                 종합설계 프로젝트 2차 중간보고서 요약

팀명

CLASS

제출일

2014 5 1

프로젝트 제목

Sendfile(2) :  

Improvement and Analysis of Energy Efficiency                      

                                                             over Linux web server

설계프로젝트 개요

프로젝트 수행 내용 및 중간 결과

프로젝트 요약문

본 프로젝트는 1차적인 목표로서 리눅스 커널을 수정하여, 리눅스 2.2 버전부터 활용 가능했던 sendfile() 함수의 향상된 버전인 sendfile(2)을 제작하고자 한다. 더 나아가 페이지 할당을 할 때의 문제점을 해결하는 방안을 모색 해보고, 각각의 페이지 수에 따른 개선 방안을 마련한다.

2차적으로, 본 프로젝트는 어플리케이션 형태의 제작이 아닌 시스템 향상에 관한 연구이므로, 이를 가시적으로 성능을 평가해 볼 수 있도록 하기 위한 개발이 추가적으로 이어진다. 여기에 현재까지의 웹 전송 시스템을 고려하여, 8bit 전송 방식의 웹 브라우저가 바이너리 코드로 8bit 단위의 이미지, 영상 등을 바로 전송하는 것과는 달리, SMTP 프로토콜로서 7bit 단위로 전송하는 웹 메일 시스템이 파일 첨부를 텍스트 안에 포함시켜 바이너리 상태로 전송하는 점에서 착안하여 이를 활용한다. 이는 sendfile(2)를 사용한 Base64 기반의 내부 인코딩 방식을 통해 웹 메일 상에 이미지, 영상, 음성 파일 등을 첨부하여 전송할 때와 일반적으로 웹 메일에 첨부파일을 전송하는 경우를 비교함으로써 시간 상의 성능 향상을 분석하는 과정으로 이어진다. 이 과정은 roundcube를 통해 web server를 구현하여 이루어질 수 있다. 프로그래밍 언어는 php와 c의 라이브러리를 배경으로 구성된다.

따라서 제작한 웹 메일 시스템 상에서 sendfile(2)를 활용한 MIME type의 base64를 바탕으로 한 이미지 등의 첨부파일이 전송 될 때의 효율성 여부를 판단함으로써 본 프로젝트의 연구적 의의를 갖는다.  


마일스톤 수행 내용

1) sendfile(2)의 구현

1-1 server - client 사이 text 전송

server.c와 client.c를 gcc 컴파일 하여 실행프로그램으로 만들고 이를 실행하면 전송이 완료된다. 전송이 완료되면 서버가 가지고 있는 input.txt의 내용이 클라이언트의 ouput.txt에 base64인코딩된 내용으로 전송된다. 즉 input.txt의 내용을 base64인코딩한 값이 output.txt에 들어오면 성공한 것이다.

1-2 web browser 상에서 image 전송

Webserver는 웹에 이미지를 띄우는 즉, 웹브라우저에 이미지를 전송하는 프로그램이다. 이 역시 webserver.c를 gcc 컴파일 하여 프로그램으로 만들었고 이 프로그램을 실행하면 웹브라우저에 이미지가 뜬다. 웹 브라우저에서 소스보기로 보면 base64인코딩 된 값을 볼 수 있다.

2) roundcube 를 통한 web mail server 구현

2-1 roundcube 구현

Roundcube는 여러 언어로 쓰인 IMAP 클라이언트를 기본으로 하는 브라우저이다.
많이 사용하는 SquirrelMail과 비교했을 때 많은 성능과 편리한 인터페이스를 제공한다. 현재 다른 webmail 서버보다 깔끔한 GUI를 제공하고, 한글지원이 0.2버전 이다. 또한, 한글번역 공식배포버전에 포함되어 배포되고 있다.

Roundcube와 SquirrelMail에 대해 조사해본 결과, 현재 SquirrelMail을 사용하는 국내 사용자들이 많으나, 오래된 인터페이스의 한계점 때문에 Roundcube로 변경되어가는 추세라고 한다. 따라서 본 프로젝트 또한 Webmail server로 Roundcube를 사용하기로 하였다.

2-2 php - c library를 통한 compile 환경 구축

PHP기반인 Roundcube에서 C언어로 이루어진 sendfile2를 사용하기 위해서 는 PHP library 컴파일이 필요하다. 본 프로젝트는 Roundcube 구축을 위한 PHP version과 동일한 php-5.4.6을 이용하여 사용자의 수정에 알맞은 PHP를 컴파일 할 예정이다.
현재 프로젝트 진행 과정에서 찾아낸 php-5.4.6/ext/standard 경로 상의 mail.c를 이용할 계획인데, 이를 통하여 sendfile(2)와의 접목이 원활히 이루어질 것으로 예상한다. 이 mail.c는 PHP_FUNCTION(mail)으로 되어있는데, 이 부분의 코드를 참조하여 Header를 세 부분으로 나누어 전송할 것이다.
그러나 상위의 해당 내용은 roundcube에 대한 분석과 함께 link를 진행하고 있으므로, 조금 더 유용한 파일을 찾는 경우 해당 파일을 통하여 개발에 활용하게 될 수도 있음을 명시한다.


동영상

YouTube 동영상


다음 마일스톤 일정

- 최종 보고서 제출까지는, 현재 작성한 Web mail server 상에서 첨부파일의 전송 시 Sendfile(2)를 이용하도록 수정하고 이를 통해 MIME type의 Base64가 적용된 효율성 여부를 분석한다. 또한, 1차와 2차에서 제출한 중간보고서를 바탕으로 초기의 계획서를 수정 및 보완하여 결과 보고서를 작성한다. 이에 대한 동영상 역시 제작하도록 한다. 더불어, 최종 보고서 제출 이후 프로젝트 전시회가 있으므로, 프로젝트 구성원 각자의 역할에 따라 이를 준비하도록 한다.

첨부화일 (아래 안내는 첨부 후에 삭제할 것)

Ċ
2조 캡스톤,
2014. 5. 1. 오전 8:08