임베디드 시스템상의 lightweight tcp/ip 를 이용한 tcp/ip offload engine 의 구현

26
임임임임 임임임임임 Lightweight TCP/IP 임 임임임 TCP/IP Offload Engine 임 임임 컴컴컴컴컴 컴 컴컴컴 컴컴컴 컴 컴 컴 컴컴 컴컴 컴컴 컴컴

Upload: sebastian-ramirez

Post on 01-Jan-2016

154 views

Category:

Documents


15 download

DESCRIPTION

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

TRANSCRIPT

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

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

컴퓨터구조 및 시스템 연구실 최 봉 식

공학 석사 학위 논문

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

2

PNU Computer Architecture & Systems Lab

순서

서론

관련 연구

소프트웨어 기반 TCP/IP Offload Engine (TOE) 의 구현 임베디드 운영체제를 이용한 TOE 구현 Lightweight TCP/IP(lwIP) 를 이용한 TOE 구현 lwIP 의 개선

실험

결론 및 향후 과제

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

3

PNU Computer Architecture & Systems Lab

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

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

4

PNU Computer Architecture & Systems Lab

운영체제

서론 (2/3)

TCP/IP Offload Engine (TOE) 호스트에서 이루어지던 TCP/IP 처리를 네트워크 어댑터가 담당

일반 TCP/IP 처리 TOE 를 이용한 TCP/IP 처리

TCPTCP

TCPTCP

소켓 인터페이스소켓 인터페이스

어플리케이션어플리케이션

하드웨어

MACMAC

어플리케이션어플리케이션

IPIP

IPIP일반 NIC

TOE

소켓 인터페이스소켓 인터페이스

PHYPHY

MACMAC

PHYPHY

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

5

PNU Computer Architecture & Systems Lab

서론 (3/3)

TOE 의 구현 방법

하드웨어 기반 TOE 성능은 우수한 반면 유연성이 떨어짐

새로운 응용 계층을 TOE 상에 추가하기 힘듦 iSCSI, HTTP, RDMA, …

소프트웨어 기반 TOE 하드웨어 방식보다 성능은 떨어지지만 유연성에서 장점 임베디드 운영체제를 사용하여 구현

구현은 용이하나 , 성능이 낮음 운영체제 없이 전용 프로그램을 개발하여 구현

유연성과 성능상의 이점을 고려한 방식

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

6

PNU Computer Architecture & Systems Lab

관련연구 (1/2)

하드웨어 기반 TOE 구현 ASIC 을 이용한 전용 칩 개발 Chelsio 사의 T210

내장된 여러 개의 하드웨어 유닛들을 사용하여 TCP/IP 를 병렬로 처리 Alacritech 사의 SEN2100

TCP/IP 를 fully offload 하지 않고 , 데이터 패스 부분만 offload

소프트웨어 기반 TOE 구현 ARM, Xscale 등과 같은 임베디드 프로세서 사용 Intel 의 PRO1000T

200MHz StrongARM 전용 프로그램으로 TCP/IP 처리

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

7

PNU Computer Architecture & Systems Lab

관련연구 (2/2)

임베디드 시스템상에서 TCP/IP 를 소프트웨어적으로 처리하는 방법

임베디드 운영체제에 내장된 TCP/IP 코드 사용 임베디드 리눅스 , VxWorks, ……

운영체제 없이 독자적으로 TCP/IP 를 처리하는 프로그램 사용 Lightweight TCP/IP(lwIP) 스택

Adam Dunkels (Swedish Institute of Computer Science) 에 의하여 개발

공개 소프트웨어 소형 임베디드 시스템을 위해 개발 메모리 사용을 최소화하도록 개발

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

소프트웨어 기반 TOE 의 구현

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

9

PNU Computer Architecture & Systems Lab

TOE 구현을 위한 호스트 커널의 수정

2.4.27 버전의 리눅스 커널을 수정

기존의 소켓 응용 프로그램들은 최소한의 수정만으로 TOE 기능을 이용 socket() 함수의 인자로 TOE 정의 나머지 함수들은 수정할 필요 없음 TOE 를 이용하는 코드들은 디바이스 계층에

구현된 소켓 함수들을 직접 호출하고 그 결과를 돌려 받음

사용자 영역

사용자 응용 프로그램

(소켓 라이브러리 사용)

BSD 소켓 계층

INET 소켓 계층

TCP 계층

IP 계층

디바이스 계층

수정 전

수정 후

커널 영역

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

10

PNU Computer Architecture & Systems Lab

TOE 구현을 위한 소켓 라이브러리 분류

소켓 라이브러리를 이루는 함수들을 분류 연결에 필요한 함수들

socket(), bind(), ... 데이터 전송에 필요한 함수들

send(), recv(), ...

두 종류의 소켓 라이브러리 함수들을 TOE 에서 처리

연결 요청

데이터 전송

서버 측

socket()

bind()

listen()

accept()

recv()

send()

……

클라이언트 측

socket()

connect()

send()

recv()

……

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

11

PNU Computer Architecture & Systems Lab

임베디드 리눅스를 이용한 TOE 구현 (1/2)

소켓 라이브러리에서 연결과 관련된 함수들의 처리

호스트 영역 임베디드 시스템 영역

socket()

사용자 응용 프로그램

toe_socket() {

인터럽트 송신

대기

결과값 반환

}

인터럽트 핸들러 {

대기중인 프로세스 깨움

} 디바이스 드라이버

인터럽트 핸들러 {

top half:

인터럽트 수신

bottom half:

대기중인 프로세스 깨움

}

ioctl() {

인터럽트 송신

}

임베디드 커널 모듈

poll()

대기

socket() 처리 코드

ioctl() 호출

임베디드 응용 프로그램

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

12

PNU Computer Architecture & Systems Lab

임베디드 리눅스를 이용한 TOE 구현 (2/2)

소켓 라이브러리에서 데이터 전송 함수들의 처리

호스트 영역 임베디드 시스템 영역

send()

사용자 응용 프로그램

toe_send() {

주소 변환 코드

인터럽트 송신

대기

결과값 반환

}

인터럽트 핸들러 {

대기중인 프로세스 깨움

} 디바이스 드라이버

인터럽트 핸들러 {

top half:

인터럽트 수신

DMA 엔진 동작

bottom half:

대기중인 프로세스 깨움

}

ioctl() {

인터럽트 송신

} 임베디드 커널 모듈

poll()

대기

send() 처리 코드

ioctl() 호출

임베디드 응용 프로그램

사용자 영역 메모리 네트워크 버퍼

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

13

PNU Computer Architecture & Systems Lab

임베디드 리눅스를 이용한 TOE 의 성능

임베디드 리눅스를 이용한 TOE 의 성능 최소 지연시간 : 533 s 대역폭 : 62Mbps

OS 사용으로 인한 오버헤드 임베디드 응용프로그램과 커널 모듈간의 context switch 대기 상태로 진입 , 대기 상태를 깨우는 작업

OS 를 사용하지 않고 전용 프로그램을 개발하여 TOE 를 구현 OS 사용으로 인한 오버헤드 문제를 해결 Lightweight TCP/IP Stack (lwIP)

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

14

PNU Computer Architecture & Systems Lab

lwIP 를 이용한 TOE 의 구현 (1/2)

소켓 라이브러리에서 연결과 관련된 함수들의 처리

socket()

사용자 응용 프로그램

toe_socket() {

인터럽트 송신

대기

결과값 반환

}

인터럽트 핸들러 {

대기중인 프로세스 깨움

}

디바이스 드라이버

while(1) {

switch(operation) {

case SOCKET:

lwIP의 tcp_new( ) 호출

인터럽트 송신

}

}

인터럽트 핸들러 {

인터럽트 수신

operation = SOCKET

} 인터럽트 핸들러 수행 종료

임베디드 응용프로그램

호스트 영역 임베디드 시스템 영역

(1)

(2)

(4)

(5)

(3)

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

15

PNU Computer Architecture & Systems Lab

lwIP 를 이용한 TOE 의 구현 (2/2)

소켓 라이브러리에서 데이터 전송 함수들의 처리

while(1) {

switch (operation)

case SEND:

lwIP의 tcp_write()

write return value

interrupt

}

interrupt handler()

{

인터럽트 수신

DMA 엔진 동작

operation = SEND

} 인터럽트 핸들러의 종료

임베디드 응용 프로그램

toe_send() {

주소 변환 코드

인터럽트 송신

대기

결과값 반환

}

인터럽트 핸들러{

대기중인 프로세스 깨움

}

디바이스 드라이버

사용자 영역 메모리

send()

사용자 응용 프로그

네트워크 버퍼

(1)

(2)

(3)

(5)

(6)

호스트 영역 임베디드 시스템 영역

(4)

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

16

PNU Computer Architecture & Systems Lab

TOE 의 성능 향상을 위한 lwIP 의 개선 (1/3)

lwIP 의 인자 설정의 수정

lwIP 는 메모리 사용량을 최소화하도록 개발

송수신 버퍼의 크기 , 수신 윈도우의 크기 , 세그먼트 크기 등의 인자들이 작은 값으로 설정이 되어있음

충분한 성능을 내기 위해서는 이러한 인자들을 상향 설정 필요가 있음

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

17

PNU Computer Architecture & Systems Lab

TOE 의 성능 향상을 위한 lwIP 의 개선 (2/3)

메모리 복사의 제거

lwIP 는 수신 패킷을 저장하고 있는 디바이스 드라이버 측의 버퍼에서 lwIP 전용 패킷 버퍼 구조체로 복사하도록 구현 됨

이더넷 칩에서 lwIP 전용버퍼로 DMA하도록 수정

Gigabit

Ethernet MAC

디바이스 드라이버

DMA 전송

lwIP 스택

lwIP 전용 버퍼

구조체

DMA 전송

패킷 수신 버퍼

수정 전의 데이터 흐름

수정 후의 데이터 흐름

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

18

PNU Computer Architecture & Systems Lab

TOE 의 성능 향상을 위한 lwIP 의 개선 (3/3)

ACK 전송 방식의 수정을 통한 개선 지연 ACK (Delyed ACK) 방식으로 수정

송신 측 수신 측 송신 측 수신 측

lwIP의 ACK 전송 방식 지연 ACK 전송 방식

ACK

Data, ACK

한 노드가 여러 번 연속적으로 데이터 패킷을 보낼 경우

노드1 노드2 노드1 노드2

lwIP의 ACK 전송 방식 지연 ACK 전송 방식

ACK

Data, ACK

두 노드가 하나의 데이터 패킷을 번갈아 주고 받을 경우

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

19

PNU Computer Architecture & Systems Lab

개발 환경

Cyclone 사의 PCI-730

PCI-730 의 블록 다이어그램

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

실 험

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

21

PNU Computer Architecture & Systems Lab

실험 환경

PCI-730 카드를 장착한 1.8GHz 펜티엄 IV 서버 2 대

3COM 의 SuperStack3 스위치로 이더넷을 연결

send() 함수의 호출로부터 데이터가 원격 노드의 수신버퍼에 들어갈 때까지의 지연시간과 대역폭을 측정 측정치는 4byte~256KB의 데이터 전송을 1000회 반복한 평균치

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

22

PNU Computer Architecture & Systems Lab

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

① 아무런 수정을 하지 않은 lwIP

② 인자 수정

③ 메모리 복사 제거

④ 지연 ACK

최소 지연 시간 측정 그래프

485.58 484.11

391.15

242.81

0

100

200

300

400

500

600

① ①+② ①+②+③ ①+②+③+④

개선 사항

(us

)최

소지

연시

지연 시간 측정 그래프

0

200000

400000

600000

800000

1000000

1200000

4 8 16 32 64 128

256

512

1024

2048

4096

8192

1638

4

3276

8

6553

6

1310

72

2621

44

(bytes)데이터 크기

(

us)

지연

시간

lwIP아무런 수정을 하지 않은lwIP + 인자 수정lwIP + + 인자 수정 메모리 복사 제거lwIP + + + ACK인자 수정 메모리 복사 제거 지연

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

23

PNU Computer Architecture & Systems Lab

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

대역폭 측정 그래프

0

10

20

30

40

50

60

4 8 16 32 64 128

256

512

1024

2048

4096

8192

1638

4

3276

8

6553

6

1310

72

2621

44

(bytes)데이터 크기

(M

bps)

대역

lwIP아무런 수정을 하지 않은lwIP + 인자 수정lwIP + + 인자 수정 메모리 복사 제거lwIP + + + ACK인자 수정 메모리 복사 제거 지연

개선 사항 추가 때마다 , 지연시간과 대역폭 측면에서 성능이 향상되는 것을 확인 , 57MBps 의 성능을 보임

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

24

PNU Computer Architecture & Systems Lab

임베디드 운영체제를 이용한 TOE와 비교 실험

대역폭 측정 그래프

0

10

20

30

40

50

60

70

4 8 16 32 64 128

256

512

1024

2048

4096

8192

1638

4

3276

8

6553

6

1310

72

2621

44

(bytes)데이터 크기

(M

bps)

대역

TOE임베디드 리눅스를 이용한 lwIP TOE를 이용한

64KB 까지는 lwIP 이용한 TOE 의 성능이 우수하나 , 이후 점차 임베디드 리눅스를 이용한 TOE 의 성능이 더 좋음

이더넷 디바이스 드라이버의 불안정성 임베디드 리눅스의 드라이버와 같이 하드웨어를 충분히 활용하고

있지 않음

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

25

PNU Computer Architecture & Systems Lab

CPU 사용률 측정

TCP/IP 를 호스트에서 처리했을 때와 TOE 에서 처리했을 때의 CPU 사용률 비교

TOE 를 사용하여 호스트 CPU 의 TCP/IP 프로토콜 처리 오버헤드가 줄어든 것을 확인

CPU 사용률 측정

0

10

20

30

40

50

60

70

80

(bytes)데이터 크기

CPU

(%

))사

용률

TCP/IP 호스트에서의 처리 TOE임베디드 운영체제를 이용한

lwIP TOE를 이용한

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

26

PNU Computer Architecture & Systems Lab

결론 및 향후 과제

결론 임베디드 리눅스를 이용하여 TOE 를 구현 lwIP 를 이용하여 TOE 를 구현 TOE 의 성능 향상을 위하여 lwIP 를 개선 성능 측정을 통하여 lwIP 의 개선사항을 검증 임베디드 리눅스를 이용한 TOE와의 성능 비교 실험을 통하여

lwIP 를 이용한 TOE 의 가능성을 확인

향후 과제 이더넷 디바이스 드라이버의 안정화를 통한 lwIP 를 이용한 TO

E 의 성능향상 lwIP 분석을 통하여 얻은 기술을 바탕으로 독자적인 TCP/IP

처리 소프트웨어 개발