330 likes | 1.26k Views
공학 석사 학위 논문. 임베디드 시스템상의 Lightweight TCP/IP 를 이용한 TCP/IP Offload Engine 의 구현. 컴퓨터구조 및 시스템 연구실 최 봉 식. 순서. 서론 관련 연구 소프트웨어 기반 TCP/IP Offload Engine (TOE) 의 구현 임베디드 운영체제를 이용한 TOE 구현 Lightweight TCP/IP(lwIP) 를 이용한 TOE 구현 lwIP 의 개선 실험 결론 및 향후 과제. 서론 (1/3).
E N D
공학 석사 학위 논문 임베디드 시스템상의 Lightweight TCP/IP를 이용한 TCP/IP Offload Engine의 구현 컴퓨터구조 및 시스템 연구실 최 봉 식
순서 • 서론 • 관련 연구 • 소프트웨어 기반 TCP/IP Offload Engine (TOE)의 구현 • 임베디드 운영체제를 이용한 TOE 구현 • Lightweight TCP/IP(lwIP)를 이용한 TOE 구현 • lwIP의 개선 • 실험 • 결론 및 향후 과제
서론(1/3) • 네트워크가 고속화될수록 CPU가 네트워크의 bottleneck이 되고 있음 • 네트워크의 대역폭은 12개월에 약 3배 증가 • CPU 성능은 18개월에 약 2배 증가 • 1 bps를 처리하기 위해서는 약 1 Hz CPU 클럭이 필요 • 10 Gbps를 full-duplex로 처리하려면 20 GHz CPU 클럭이 필요 • 고속 네트워크 환경에서, 호스트 CPU 자원의 대부분을 TCP/IP 처리에 사용 • 실제 사용자 응용 프로그램을 위한 CPU 자원 부족 • 호스트 CPU의 부담을 줄이기 위한 방안이 활발히 연구 중
서론(2/3) • TCP/IP Offload Engine (TOE) • 호스트에서 이루어지던 TCP/IP 처리를 네트워크 어댑터가 담당 어플리케이션 어플리케이션 소켓 인터페이스 소켓 인터페이스 TCP 운영체제 IP TOE 하드웨어 TCP IP 일반 NIC MAC MAC PHY PHY TOE 를 이용한 TCP/IP 처리 일반 TCP/IP 처리
서론(3/3) • TOE의 구현 방법 • 하드웨어 기반 TOE • 성능은 우수한 반면 유연성이 떨어짐 • 새로운 응용 계층을 TOE상에 추가하기 힘듦 • iSCSI, HTTP, RDMA, … • 소프트웨어 기반 TOE • 하드웨어 방식보다 성능은 떨어지지만 유연성에서 장점 • 임베디드 운영체제를 사용하여 구현 • 구현은 용이하나, 성능이 낮음 • 운영체제 없이 전용 프로그램을 개발하여 구현 • 유연성과 성능상의 이점을 고려한 방식
관련연구(1/2) • 하드웨어 기반 TOE 구현 • ASIC을 이용한 전용 칩 개발 • Chelsio사의 T210 • 내장된 여러 개의 하드웨어 유닛들을 사용하여 TCP/IP를 병렬로 처리 • Alacritech사의 SEN2100 • TCP/IP를 fully offload하지 않고, 데이터 패스 부분만 offload • 소프트웨어 기반 TOE 구현 • ARM, Xscale등과 같은 임베디드 프로세서 사용 • Intel의 PRO1000T • 200MHz StrongARM • 전용 프로그램으로 TCP/IP 처리
관련연구(2/2) • 임베디드 시스템상에서 TCP/IP를 소프트웨어적으로 처리하는 방법 • 임베디드 운영체제에 내장된 TCP/IP 코드 사용 • 임베디드 리눅스, VxWorks, …… • 운영체제 없이 독자적으로 TCP/IP를 처리하는 프로그램 사용 • Lightweight TCP/IP(lwIP) 스택 • Adam Dunkels (Swedish Institute of Computer Science)에 의하여 개발 • 공개 소프트웨어 • 소형 임베디드 시스템을 위해 개발 • 메모리 사용을 최소화하도록 개발
TOE 구현을 위한 호스트 커널의 수정 • 2.4.27 버전의 리눅스 커널을 수정 • 기존의 소켓 응용 프로그램들은 최소한의 수정만으로 TOE 기능을 이용 • socket() 함수의 인자로 TOE 정의 • 나머지 함수들은 수정할 필요 없음 • TOE를 이용하는 코드들은 디바이스 계층에 구현된 소켓 함수들을 직접 호출하고 그 결과를 돌려 받음
TOE 구현을 위한 소켓 라이브러리 분류 • 소켓 라이브러리를 이루는 함수들을 분류 • 연결에 필요한 함수들 • socket(), bind(), ... • 데이터 전송에 필요한 함수들 • send(), recv(), ... • 두 종류의 소켓 라이브러리 함수들을 TOE에서 처리
임베디드 리눅스를 이용한 TOE 구현 (1/2) • 소켓 라이브러리에서 연결과 관련된 함수들의 처리
임베디드 리눅스를 이용한 TOE 구현 (2/2) • 소켓 라이브러리에서 데이터 전송 함수들의 처리
임베디드 리눅스를 이용한 TOE의 성능 • 임베디드 리눅스를 이용한 TOE의 성능 • 최소 지연시간: 533 s • 대역폭: 62Mbps • OS 사용으로 인한 오버헤드 • 임베디드 응용프로그램과 커널 모듈간의 context switch • 대기 상태로 진입, 대기 상태를 깨우는 작업 • OS를 사용하지 않고 전용 프로그램을 개발하여 TOE를 구현 • OS 사용으로 인한 오버헤드 문제를 해결 • Lightweight TCP/IP Stack (lwIP)
lwIP를 이용한 TOE의 구현 (1/2) • 소켓 라이브러리에서 연결과 관련된 함수들의 처리
lwIP를 이용한 TOE의 구현 (2/2) • 소켓 라이브러리에서 데이터 전송 함수들의 처리
TOE의 성능 향상을 위한 lwIP의 개선 (1/3) • lwIP의 인자 설정의 수정 • lwIP는 메모리 사용량을 최소화하도록 개발 • 송수신 버퍼의 크기, 수신 윈도우의 크기, 세그먼트 크기 등의 인자들이 작은 값으로 설정이 되어있음 • 충분한 성능을 내기 위해서는 이러한 인자들을 상향 설정 필요가 있음
TOE의 성능 향상을 위한 lwIP의 개선 (2/3) • 메모리 복사의 제거 • lwIP는 수신 패킷을 저장하고 있는 디바이스 드라이버 측의 버퍼에서 lwIP 전용 패킷 버퍼 구조체로 복사하도록 구현 됨 • 이더넷 칩에서 lwIP 전용버퍼로 DMA하도록 수정
TOE의 성능 향상을 위한 lwIP의 개선(3/3) • ACK 전송 방식의 수정을 통한 개선 • 지연 ACK (Delyed ACK) 방식으로 수정
개발 환경 • Cyclone사의 PCI-730 PCI-730의 블록 다이어그램
실험 환경 • PCI-730 카드를 장착한 1.8GHz 펜티엄 IV 서버 2대 • 3COM의 SuperStack3 스위치로 이더넷을 연결 • send() 함수의 호출로부터 데이터가 원격 노드의 수신버퍼에 들어갈 때까지의 지연시간과 대역폭을 측정 • 측정치는 4byte~256KB의 데이터 전송을 1000회 반복한 평균치
lwIP 개선을 통한 성능 향상 측정 (2/2) • 개선 사항 추가 때마다, 지연시간과 대역폭 측면에서 성능이 향상되는 것을 확인, 57MBps의 성능을 보임
임베디드 운영체제를 이용한 TOE와 비교 실험 • 64KB까지는 lwIP 이용한 TOE의 성능이 우수하나, 이후 점차 임베디드 리눅스를 이용한 TOE의 성능이 더 좋음 • 이더넷 디바이스 드라이버의 불안정성 • 임베디드 리눅스의 드라이버와 같이 하드웨어를 충분히 활용하고 있지 않음
CPU 사용률 측정 • TCP/IP를 호스트에서 처리했을 때와 TOE에서 처리했을 때의 CPU 사용률 비교 • TOE를 사용하여 호스트 CPU의 TCP/IP 프로토콜 처리 오버헤드가 줄어든 것을 확인
결론 및 향후 과제 • 결론 • 임베디드 리눅스를 이용하여 TOE를 구현 • lwIP를 이용하여 TOE를 구현 • TOE의 성능 향상을 위하여 lwIP를 개선 • 성능 측정을 통하여 lwIP의 개선사항을 검증 • 임베디드 리눅스를 이용한 TOE와의 성능 비교 실험을 통하여 lwIP를 이용한 TOE의 가능성을 확인 • 향후 과제 • 이더넷 디바이스 드라이버의 안정화를 통한 lwIP를 이용한 TOE의 성능향상 • lwIP 분석을 통하여 얻은 기술을 바탕으로 독자적인 TCP/IP 처리 소프트웨어 개발