1 / 26

임베디드 시스템상의 Lightweight TCP/IP 를 이용한 TCP/IP Offload Engine 의 구현

공학 석사 학위 논문. 임베디드 시스템상의 Lightweight TCP/IP 를 이용한 TCP/IP Offload Engine 의 구현. 컴퓨터구조 및 시스템 연구실 최 봉 식. 순서. 서론 관련 연구 소프트웨어 기반 TCP/IP Offload Engine (TOE) 의 구현 임베디드 운영체제를 이용한 TOE 구현 Lightweight TCP/IP(lwIP) 를 이용한 TOE 구현 lwIP 의 개선 실험 결론 및 향후 과제. 서론 (1/3).

Download Presentation

임베디드 시스템상의 Lightweight TCP/IP 를 이용한 TCP/IP Offload Engine 의 구현

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 공학 석사 학위 논문 임베디드 시스템상의 Lightweight TCP/IP를 이용한 TCP/IP Offload Engine의 구현 컴퓨터구조 및 시스템 연구실 최 봉 식

  2. 순서 • 서론 • 관련 연구 • 소프트웨어 기반 TCP/IP Offload Engine (TOE)의 구현 • 임베디드 운영체제를 이용한 TOE 구현 • Lightweight TCP/IP(lwIP)를 이용한 TOE 구현 • lwIP의 개선 • 실험 • 결론 및 향후 과제

  3. 서론(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의 부담을 줄이기 위한 방안이 활발히 연구 중

  4. 서론(2/3) • TCP/IP Offload Engine (TOE) • 호스트에서 이루어지던 TCP/IP 처리를 네트워크 어댑터가 담당 어플리케이션 어플리케이션 소켓 인터페이스 소켓 인터페이스 TCP 운영체제 IP TOE 하드웨어 TCP IP 일반 NIC MAC MAC PHY PHY TOE 를 이용한 TCP/IP 처리 일반 TCP/IP 처리

  5. 서론(3/3) • TOE의 구현 방법 • 하드웨어 기반 TOE • 성능은 우수한 반면 유연성이 떨어짐 • 새로운 응용 계층을 TOE상에 추가하기 힘듦 • iSCSI, HTTP, RDMA, … • 소프트웨어 기반 TOE • 하드웨어 방식보다 성능은 떨어지지만 유연성에서 장점 • 임베디드 운영체제를 사용하여 구현 • 구현은 용이하나, 성능이 낮음 • 운영체제 없이 전용 프로그램을 개발하여 구현 • 유연성과 성능상의 이점을 고려한 방식

  6. 관련연구(1/2) • 하드웨어 기반 TOE 구현 • ASIC을 이용한 전용 칩 개발 • Chelsio사의 T210 • 내장된 여러 개의 하드웨어 유닛들을 사용하여 TCP/IP를 병렬로 처리 • Alacritech사의 SEN2100 • TCP/IP를 fully offload하지 않고, 데이터 패스 부분만 offload • 소프트웨어 기반 TOE 구현 • ARM, Xscale등과 같은 임베디드 프로세서 사용 • Intel의 PRO1000T • 200MHz StrongARM • 전용 프로그램으로 TCP/IP 처리

  7. 관련연구(2/2) • 임베디드 시스템상에서 TCP/IP를 소프트웨어적으로 처리하는 방법 • 임베디드 운영체제에 내장된 TCP/IP 코드 사용 • 임베디드 리눅스, VxWorks, …… • 운영체제 없이 독자적으로 TCP/IP를 처리하는 프로그램 사용 • Lightweight TCP/IP(lwIP) 스택 • Adam Dunkels (Swedish Institute of Computer Science)에 의하여 개발 • 공개 소프트웨어 • 소형 임베디드 시스템을 위해 개발 • 메모리 사용을 최소화하도록 개발

  8. 소프트웨어 기반 TOE의 구현

  9. TOE 구현을 위한 호스트 커널의 수정 • 2.4.27 버전의 리눅스 커널을 수정 • 기존의 소켓 응용 프로그램들은 최소한의 수정만으로 TOE 기능을 이용 • socket() 함수의 인자로 TOE 정의 • 나머지 함수들은 수정할 필요 없음 • TOE를 이용하는 코드들은 디바이스 계층에 구현된 소켓 함수들을 직접 호출하고 그 결과를 돌려 받음

  10. TOE 구현을 위한 소켓 라이브러리 분류 • 소켓 라이브러리를 이루는 함수들을 분류 • 연결에 필요한 함수들 • socket(), bind(), ... • 데이터 전송에 필요한 함수들 • send(), recv(), ... • 두 종류의 소켓 라이브러리 함수들을 TOE에서 처리

  11. 임베디드 리눅스를 이용한 TOE 구현 (1/2) • 소켓 라이브러리에서 연결과 관련된 함수들의 처리

  12. 임베디드 리눅스를 이용한 TOE 구현 (2/2) • 소켓 라이브러리에서 데이터 전송 함수들의 처리

  13. 임베디드 리눅스를 이용한 TOE의 성능 • 임베디드 리눅스를 이용한 TOE의 성능 • 최소 지연시간: 533 s • 대역폭: 62Mbps • OS 사용으로 인한 오버헤드 • 임베디드 응용프로그램과 커널 모듈간의 context switch • 대기 상태로 진입, 대기 상태를 깨우는 작업 • OS를 사용하지 않고 전용 프로그램을 개발하여 TOE를 구현 • OS 사용으로 인한 오버헤드 문제를 해결 • Lightweight TCP/IP Stack (lwIP)

  14. lwIP를 이용한 TOE의 구현 (1/2) • 소켓 라이브러리에서 연결과 관련된 함수들의 처리

  15. lwIP를 이용한 TOE의 구현 (2/2) • 소켓 라이브러리에서 데이터 전송 함수들의 처리

  16. TOE의 성능 향상을 위한 lwIP의 개선 (1/3) • lwIP의 인자 설정의 수정 • lwIP는 메모리 사용량을 최소화하도록 개발 • 송수신 버퍼의 크기, 수신 윈도우의 크기, 세그먼트 크기 등의 인자들이 작은 값으로 설정이 되어있음 • 충분한 성능을 내기 위해서는 이러한 인자들을 상향 설정 필요가 있음

  17. TOE의 성능 향상을 위한 lwIP의 개선 (2/3) • 메모리 복사의 제거 • lwIP는 수신 패킷을 저장하고 있는 디바이스 드라이버 측의 버퍼에서 lwIP 전용 패킷 버퍼 구조체로 복사하도록 구현 됨 • 이더넷 칩에서 lwIP 전용버퍼로 DMA하도록 수정

  18. TOE의 성능 향상을 위한 lwIP의 개선(3/3) • ACK 전송 방식의 수정을 통한 개선 • 지연 ACK (Delyed ACK) 방식으로 수정

  19. 개발 환경 • Cyclone사의 PCI-730 PCI-730의 블록 다이어그램

  20. 실 험

  21. 실험 환경 • PCI-730 카드를 장착한 1.8GHz 펜티엄 IV 서버 2대 • 3COM의 SuperStack3 스위치로 이더넷을 연결 • send() 함수의 호출로부터 데이터가 원격 노드의 수신버퍼에 들어갈 때까지의 지연시간과 대역폭을 측정 • 측정치는 4byte~256KB의 데이터 전송을 1000회 반복한 평균치

  22. lwIP 개선을 통한 성능 향상 측정 (1/2)

  23. lwIP 개선을 통한 성능 향상 측정 (2/2) • 개선 사항 추가 때마다, 지연시간과 대역폭 측면에서 성능이 향상되는 것을 확인, 57MBps의 성능을 보임

  24. 임베디드 운영체제를 이용한 TOE와 비교 실험 • 64KB까지는 lwIP 이용한 TOE의 성능이 우수하나, 이후 점차 임베디드 리눅스를 이용한 TOE의 성능이 더 좋음 • 이더넷 디바이스 드라이버의 불안정성 • 임베디드 리눅스의 드라이버와 같이 하드웨어를 충분히 활용하고 있지 않음

  25. CPU 사용률 측정 • TCP/IP를 호스트에서 처리했을 때와 TOE에서 처리했을 때의 CPU 사용률 비교 • TOE를 사용하여 호스트 CPU의 TCP/IP 프로토콜 처리 오버헤드가 줄어든 것을 확인

  26. 결론 및 향후 과제 • 결론 • 임베디드 리눅스를 이용하여 TOE를 구현 • lwIP를 이용하여 TOE를 구현 • TOE의 성능 향상을 위하여 lwIP를 개선 • 성능 측정을 통하여 lwIP의 개선사항을 검증 • 임베디드 리눅스를 이용한 TOE와의 성능 비교 실험을 통하여 lwIP를 이용한 TOE의 가능성을 확인 • 향후 과제 • 이더넷 디바이스 드라이버의 안정화를 통한 lwIP를 이용한 TOE의 성능향상 • lwIP 분석을 통하여 얻은 기술을 바탕으로 독자적인 TCP/IP 처리 소프트웨어 개발

More Related