컴퓨터활용능력시험 1급 필기 - 1과목 컴퓨터일반 (2018개정)
RTOS를 위한 TCP/IP 프로토콜 스택의 구현
RTOS를 위한 TCP/IP 프로토콜 스택의 구현 요 약 내장형 시스템 및 RTOS에 대한 관심이 늘어나면서 낮은 성능의 하드웨어상에서의 네트워킹 기능이 중요한 이슈로 떠오르고 있다. 그러나 기존의 BSD기반의 TCP/IP는 않은 메모리를 필요로하고 실제로 RTOS에서 자주 사용되지 않는 기능들도 않이 있기 때문에 기존의 TCP/IP 프로토콜 i 택의 수정이 불가피하다. 본 는문에서는 낮은 성능의 하드웨어에 적합하게 TCP/IP프로토콜 스택을 있는 프로토콜 스택몰 구헌하고자 한다. 경량화 하고 메모리 사용에 대한 오버헤드畜 중일 수 1 . 서론 최근들어 디지털 TV 및 IMT-2000 서비스의 개시로 유.무선 # 네트워크와 기존에 존재하는 인터넷을 서로 연동하여 홈 시어터. 원격 가전기기 및 정보 기기를 제어•활各이 가능하도 록 하는 인터넷 정보가전에 대한 수요가 빠르게 증가하고 있 다[1]. 정보가전이 인터넷과 연결되기 위해서는 TCP/IP 프로 토콜 스택이 필수적이다. 하자만 기존의 전형적인 TCP/iP 프 로토콜 스택은 구조가 복잡하고 많은 양의 메모리플 요구하기 때문에 8bit나 16bit처럼 성능이 낮은 CPU를 사용하고 메모리 양이 제한적인 정보가전용 RTOS에는 적합하지않다. 때문에 저 사양의 하드웨어에서도 원활하게 동작할 수 있는 소형 TCP/IP 프로토콜스택이 요구되고 있다[2]. 따라서 본 연구의 목적은 기존의 BSD기반의 TCP/IP 프로토 콜 스택에서 벗어나 정보가전에 사용되는 비교적 낮은 성능의 하드웨어와 이에 탑재되는 RTOS에 최적화된 소형 TCP/IP B 로토콜을 구현하는데 있다. 본 논문의 구성은 다음과 같다. 2장에서는 RTOS를 위한 소 형 TCP/IP 프로토콜 스택들에 대하여 기술하고 실시간성을 지 원하기 위한 소형 TCP/IP의 요구사항에 대해서 알아보겠고, 3 장에서는 2장에서 제시한 요구사항을 만족시키기 위한 TCP/IP 프로토콜을 설계하고 4장에서는 이에 대한 구현사항에 대해서 기술한다. 그리고 5장에서 결론을 맺는다^ 기반 연구 2-1. RTOS풀 위한 TCP/IP 프로토콜 스택의 동향 인터넷 정보가전에 대한 수요가 증가함에 따라 않■은 국내외 연구기관 및 기업에서 RTOS용 TCP/IP 프로토营을 지원하기 위해 많은 노력을 기물이고 •있다. 국내외적으로 개발된 RTOS 용 TCP/IP둘에 대해 간략히 기술하면 다음과 같다. ► NexGenIP : NEXGEN이 개발한 NexGenIP는 소형 TCP/IP 프로토콜스택으로 대부문의 RTOS틀 지원하나 실시간 운영체 제가 없어도 동작이 가능하다. 지원하는 프로토콜은 TCP, UDPp IP, ICMP, IGWP. ARP, 그리고 이더^ 등이 있으며, 코 드의 크기는 50KB 이하이고 17*40K日로 코드가 최적화 되어 있다 [6L ► NETX : Expressᄂogic에 의해서 개발된 TCP/IP 스택으로 ThreadX라는 마이에서 동작한신. 기본적으로 IP, ICMP, ARP, RARP, UDP/TCP 프로토콜을 포함하고 있다[7]. ► RTIP'32 : OnTime이 개발한 프로토콜 스택으로 보편적인 유닉스 소켓 API롤 이용하여 시리얼 통신을 가농하게 해주는 RTOS-32 시스템에서 TCP/IP를 지원한다[8L ► IwSP : SICS에서 개발된 프로토콜 스택으로 8비트의 x86고 6502 CPU등을 지원하고 있으며 t FreeBSD와 리눅스 상에서 동작한다. 코드의 크기가 작아서 4KB 램보다도 작은 환경에서 도 동작 가능하다[이 . ► smxNet : MicroDiaitaf이 개발한 프로토콜 스택으로 대형 호스트둘에서 뿐 아니라 ROM에서 동작하는 작은 호스트들에 서도 작동하며. 디스크 서비스를 요구하지 않는다. 이로 인해 호스트는 BOOTP를 이용하여 호스트의 네트워크 정보를 자동 설정할 수 있는 기능이 지원된다[10ᄂ ► 솔내시스템 : 솔내시스템에서는 ATOS 커널고t TCP/iP 스택 기술을 하드웨어 형태로 제공하기 위해 ezTCP를 개발하였다. CDMA 무선명■에서 사용될 수 있는 PPP용 제품과 유선앙에서 사용될 수 있는 이더넷용 제품이 있다[11]. ► 세나테 크놀로지 : 세나테 크놀로지는 AS232 프로토콜을 TCP/IP 프로토콜로 변환해주는 접속장치로 기존 기기를 시리 얼 포트와 연결하여, 이더넷 상에서 丁CP/IP툴 이용할 수 있도 록 하였다[12】. 2-2, TCP/IP 프로토콜 스택의 요구사항 정보가전에서 실시간 처리기능이 제공되기 위해. RTOS용 TCP/IP 프로토콜 스택은 다음과 같은 요구사항들을 만족시켜 야 한다, ► 버퍼 관리 : 효율적인 버퍼관리普 위해서는 실행 시에 힘 (H d p )으로부터 버퍼들을 할당하는 것보다는 미리 할당된 버 퍼들율 사용하는 것이 성능향상을 위해 핌요하다[3]. ► 타이머 관리 : 프로토콜들이 연결 관리,타임아웃, 재시도 시어! 사용되는 타이머기• CPU 대역폭을 소모하거나 동기화 문 제듈을 일으키는 것을 방지하기 위해서 문영체제에서 타이머 를 관리하여야 한다[3]. ► 지연시간 : 프레임의 물리적인 송/수신 시에 필요한 인터 럽트둘을 처리하는 과정에서 운영체제에 의한 지연시간이 발 생하면 안 된다[3]. ► 동시성 제어 : 세마포어를 이용한 보호 메커니즘을 사용하 여 RT0S으t 성능을 향상시켜야 한다* 세마포어를 이용한 보호 메커니즘은 타이머에서의 동시성 문제 해결에도 이용될 수 있 다 [3ᄂ ► 데이터 복사의 최소화 : 효율적인 TCP/!P를 위해서는 데아 427 Copyright (C) 2005 NuriMedia Co., Ltd. 2002년도 한국정보과학회 가을 학술발표논문집 Vol. 29. No.2 터 복사를 최소화해야 한다. 각 프레임 내부의 데이터는 같은 버퍼 안에 유지될 수 있기 때문에 각 프로토콜 단계에서 CPU 에 의한 복사 및 재 복사 51수물 줄일 수 있다[3]. ► 링크 계층의 멀티플랙심(Link Layer Multiplexing) : PPP와 같은 시리얼 점대점(Serial Point-to-Point) 프로토콜이 IP 터 널링이나 가상 사설망(Virtual Private Networks: VPN)을 지원 하도록 확장되어야 하기 때문에 프로토콜은 유연한 장치 드라 이버 인터페이스와 멀티플택성 작업을 지원해야한다[3】. ► CPU 대역폭 : CPU대역폭의 요구량은 해당 어플리케이션 마다 서로 다르다. 대부분 인터넷 장비의 경우 TCP/IP' 스택은 실시간적인 요소가 고려되지 않기 때문에 많욘 대역폭이 요구 되지 않■는다. 반면, 스트리잉 비디오와 같은 실시간 애플리케 이션의 경우, 때킷의 빠른 실시간 처리를 위해 많은 CPU 대역 폭을 필요로 하게 된다[3]. 3. TCP/IP 프로토콜 스택의 설계 본 연구는 TCP/IP를 경량화하면서도 실시간성에 충실한 프로 토콜 스택을 구현하는 것을 목표로 하고 있다. 적은양의 메모 리를 사용하기위해 되도록 데이터 카피普 줄이기 위한 방법으 로 범용 프레임(General Frame)을 이용하여 TCP나 어플리케 이션계층어1서 직접 데이터에 접근할 수 있도록 하고 있으며 이콜 관리하기 위해서 네트워크 매니저(Network Manager)와 버퍼 매니저(Buffer Manager)라는 모돌을 만들어서 사용한다. 전반적으로 낮은 성능의 하드웨어에서 TCP/IP으ᅵ 성능을 개선 하기 위해 기존의 계층구조톨 대폭 축소하여 계층간의 데이터 교환에 대한 비용을 최소화 하였다. 성능을 개선한 TCP/IP 프 로토콜 스택의 구조를 살펴보연 {그림 1)과 같다■ APP APP APP APP APP Socket UOP ARP Network Demon Network Manager Network Device Buffer Manager TCP ICMP General Buffer 6 태지 6 1 * 씬qmc 주소 l iU E J S 46-1500 的터 (그림 2) 이더넷 프려임의 구조 I f 물9 그 주* IE ! Ff V 1 5 벼 ( a 소 i m m s a o r 터 (그림 3 > p r p 프레임의 구조 범용 프레임에는 데이터 길이, 이 프레임이 도착한 디바이스 의 핸들과 단편화를 지원하기 위한 프래그언트 오프셋을 포함 하고 있다(그림 4). 이렇게 각 링크 계층의 프리ᅵ임을 범용화시 킹으로써t 상위 오둘에서는 링크 계층고卜 상관없이 동일한 프레 임으로 처리하게 되어 링크계층과 독립성을 유지할 수 있다. Q0ICJ 깊 0I-OJIW 스 質 (그림 4) 범용 프레임(GENERAT._FRAME) 구조 3-2. 네트워크 매니저 네트워크 매니저는 네트워크 디바이스와 네트워크 데몬 사이 에서 패깃을 중개한다. 정확하게 말하자연 상위 계픙과 하위 계층의 디바이스 계층간의 통신물 위해 버퍼 매니저롤 통하여 범용화된 프레임율 만들 수 있는 기능을 제공하고 있다. 네트 워크 데몬에서는 송수신되는 패킷이 어떠한 계층으로 전달될 패킷인자콜 판단하여 해당 계층에서 패킷에 접근할 수 있도록 한다이렇게 네트워크 매니저는 각 링크 계층의 프레임을 상위 모 둘에서 링크 계층과 상관없이 동일한 프레임으로 처리하도록 하여 링크계층과의 독립성을 유지하도록 하였다. 3-3. 버퍼 매니처 버퍼 매니저는 송/수신하기 위한 프레임 버퍼音 관리하고 하 부 링크 계충에서 전달된 프레임을 상위 프로토콜에 전달하기 전에. 링크 계충의 특성을 제거하고 범용화시키는 작업을 한 다. 일반적인 버퍼관리는 FIFO(First In First Out)을 이용한 원 형 버퍼가 이용된다. 하지안 본 연구에서는 물필요한 데이터의 목사를 중이기 위하여 일반적인 FIFO대신 FlTO(Fisrt In Trial Out)을 기반으로 힌■ 원형 버퍼를 이용하였다(그림 5). (그립 1) 프로토큼 스택의 구조 2 U— ^_ _ ^ _ _ 3-1. 범용 프레임 링크 계층고ᅡ 상관없는 상위 계층에서 프레임을 동일한 로 처리하면 패킷처리에 대한 오버헤드를 줄일 수 있다. 에 우리는 어떤 동일한 형태가 필요하다 이 형태가 바로 프레임이다. 이더넷의 프레임 구조(그림 2)와 PPP으I 프레임 구조{그립 3) 형 때 범 틀 비교해보면 사용하는 링크의 특성에 따라 헤더오卜 트레일러 안 다를 뿐 , 저장하고 있는 데이터는 상위 프로토콜에서 동일 하게 보인다, 태 문 용 -1 버퍼크:기 tHW ᅵn S인f j 버 JM ouSeJF.I 버 면u (그림 5 > F IT O # 이용한 버퍼의 구조 R F 0기반 원형 버퍼에서는 버퍼에서 데이터普 인출할 때 인 출한 값안큼 out 포인터가 증가된다. 그러나 FIT0구조를 이용 한 원형 버퍼에서는 데이터 인출 시 trial 포인터를 우선적으로 증가 시킨 후. 데이터의 인출이 올바르게 이루어진 것이 확인 될 때 out 포인터를 증가 시킨다. 이 방법을 통하여 재전송을 위해 데이터콜 다른 공간에 복사할 필요 없어지고 대신 trial 포인터를 이용해 재전송이 필요한 값의 위치릍•걸정할 수 있 어 재전송을 고려한 버퍼관리콜 간단히 할 수 있다. 428 Copyright (C) 2005 NuriMedia Co., Ltd. . y , J 1 2 j CRC K CSC 서 T 2002년도 한국정보과학회 가을 학술발표논문집 Vol. 29. No. 2 에률 들어 'ABCDEP:나 버퍼에 존재하고 이를 전송한다고 가 정하고 우선 'ABC '# 전송하면서 trial포인터는 T)■普 가리킨 다. 그리고 나서 'DE1 풀 다시 전송하고 다시 trial 포인터콜 ᅲ 로 옮겨진다. 상대방으로부터 ACK:가 수신되었다연 out 포인터 튤 C 로 옮겨진다. 이후에 'DE■의 전송에 대한 ACK;가 도착하 지 않은채 타임아웃(Timeout)이 발생하면 ᅲ를 가리키던 trial 포인터는 다시 현재의 out 포인터로 이동되어 데이터 'DE 플 재전송하게 된다(그림 6). 시작 A 0COEFG 삽입 ABC a 金 D 전 E 6 ABC 전송 확인 타임아뭇 1 a 1 e 1 c 1 0 ▼oo 1 1 a _ L s I c 매니저로 전달시키는 에소드들이 구현되어 있다. 또한 버퍼톨 통하여 교한되는 프레임을 범용 프레임으로 전환시길 수 있는 메소드, 그리고 재전송시에 trial 포인터를 되돌리는 메소드도 구현되어 있다, 4-3 TCP/IP에서의 기능 구현 IP프로토署에서는 단편화 기능을 수정하여 코드를 간략화 하 I 1 1 1 1 1 1 ____ a j e 1 c 1 D 1 E 1 F 1 G Inal -?u' ■ ri.si A l e I c 1 0 ▼out A 1 8 1 c T£ > ul »lnal Wn 0 1 e i F Trial G fn 1 E j F j G ▼lr+al ᄀL 니 F \ G 《그림 6) F IT O # 이용한 버퍼의 동작과정 4. TCP/IP의 구현 4-1. 네트워크 매니저의 구현 네트워크 •매니저는 디바이스 계충과 범용화된 프레임으로 네 트워크 데몬율 연결시켜 주기 때문에 우선 데이터가 디바이스 로 전송되연 범용 프레임형태로 버퍼에서 얻어온다. 이후에 상 위 프로토콜 계충과 연결된다. 그리고 전송함 데이터가 있으면 이를 네트워크 데몬이 시그널(signal)울 이용하여 범용화된 프 레임을 버퍼에 넣는다, 앞에서 살펴보았던 것처럼 범용화된 프레임의 구조 < 표 1 > 는 프레임의 길이, 장치핸들 및 단편화 오프셋으로 구성된 헤더오卜 데이터로 이루어져 있다. // (lenenil Header tyix-def struct INTIfiU wLen; INTlfiU wOeviceHandle'. /* General Frame Lenjjih ■/ /* Device Handle */ IJsn'l6lJ wJ'ragOffset; A Fmgment Offset */ IGeneralJirader // General hYame typedef struct, ('.ENERAL^HKADKll sfienHeader;/* General Frame Heiider */ tNI«U aDiitalMAX_(;ENEllAL_DA*[kA|;/* (kiienil Frame Dutu )(;eneryl_Framc < 표 1 > 범용 프책임 (General F r am e d 자료구조 fn ( E j F 1 G 5. 결론 본 프로토콜 스택은 주로 버퍼 및 계층간 데이터 교환에 대 한 성능을 개선하는 것에 주안점을 두고 설계되었다. 이렇게 하여 낮은 성능의 하드웨어에서도 동직■할 수 있도톡 특히 실 시간성을 지원 ,할 수 있는 TCP/IP 프로토콜 스택을 구현하였 다. 프로토클 스택의 크기를 20KB정도 줄여서 경량화 시켰고 계충간의 데이터 복사콜 최소화하여 NIC를 제외하고는 에모리 복사 횟수鲁 중일 수 있었다. 하지안 아직 TCP 혹은 UDP오f 같은 각각의 프로토콜들도 RT0S에 적용하기 위해서는 개선사 항들이 많이 있다. 특히 실시간성을 지원하기 우[해서는 TCP으I 혼잡제어기능이 정보가전에 사용되는 RT0S에 알맞게 설계되 어야 할 것이다, 이러한 사항들이 개선된다면 RT0S에서 더욱 더 향상된 실시간성을 지원할 수 있을 것이다.