고성능 Hybrid TCP/IP Offload Engine 구현을 위한 TCP/IP 프로토콜 분석 Analysis of TCP/IP Protocol for Implementing a High-Performance Hybrid TCP/IP Offload Engine원문보기
기존의 컴퓨터 시스템에서는 인터넷의 대표적인 프로토콜인 TCP/IP가 호스트 CPU에서 처리되는데, 이는 호스트 CPU에 많은 부하(load)를 발생시켜 전체 시스템의 성능을 저하시키는 문제를 야기한다. 최근 이러한 문제점을 해결하는 방안으로서 네트워크 어댑터에서 TCP/IP를 처리하는 TCP/IP Offload Engine(TOE)에 대한 연구가 활발히 진행되고 있다. 본 논문에서는 Linux 운영체제에 내장된 TCP/IP 프로토콜 스택의 구조를 분석하고, 통신을 수행할 때 프로토콜 스택의 각 함수에서 소모되는 시간을 측정하여 호스트 CPU에 부하를 발생시키는 주 요인을 분석하였다. 이러한 분석을 바탕으로 CPU에 많은 부하를 발생시키는 기능은 하드웨어로 구현하고 나머지 기능들은 소프트웨어로 구현하는 Hybrid TOE 구조를 제안한다.
기존의 컴퓨터 시스템에서는 인터넷의 대표적인 프로토콜인 TCP/IP가 호스트 CPU에서 처리되는데, 이는 호스트 CPU에 많은 부하(load)를 발생시켜 전체 시스템의 성능을 저하시키는 문제를 야기한다. 최근 이러한 문제점을 해결하는 방안으로서 네트워크 어댑터에서 TCP/IP를 처리하는 TCP/IP Offload Engine(TOE)에 대한 연구가 활발히 진행되고 있다. 본 논문에서는 Linux 운영체제에 내장된 TCP/IP 프로토콜 스택의 구조를 분석하고, 통신을 수행할 때 프로토콜 스택의 각 함수에서 소모되는 시간을 측정하여 호스트 CPU에 부하를 발생시키는 주 요인을 분석하였다. 이러한 분석을 바탕으로 CPU에 많은 부하를 발생시키는 기능은 하드웨어로 구현하고 나머지 기능들은 소프트웨어로 구현하는 Hybrid TOE 구조를 제안한다.
TCP/IP, the most popular communication protocol, is processed on a host CPU in traditional computer systems and this imposes enormous loads on the host CPU. Recently TCP/IP Offload Engine (TOE) technology, which processes TCP/IP on a network adapter instead of the host CPU, becomes an important way ...
TCP/IP, the most popular communication protocol, is processed on a host CPU in traditional computer systems and this imposes enormous loads on the host CPU. Recently TCP/IP Offload Engine (TOE) technology, which processes TCP/IP on a network adapter instead of the host CPU, becomes an important way to solve the problem. In this paper we analysed the structure of a TCP/IP protocol stack in the Linux operating system and important factors, which cause a lot of loads on the host CPU, by measuring the time spent on processing each function in the protocol stack. Based on these analyses, we propose a Hybrid TOE architecture, in which functions imposing much loads on the host CPU are implemented using hardware and other functions are implemented using software.
TCP/IP, the most popular communication protocol, is processed on a host CPU in traditional computer systems and this imposes enormous loads on the host CPU. Recently TCP/IP Offload Engine (TOE) technology, which processes TCP/IP on a network adapter instead of the host CPU, becomes an important way to solve the problem. In this paper we analysed the structure of a TCP/IP protocol stack in the Linux operating system and important factors, which cause a lot of loads on the host CPU, by measuring the time spent on processing each function in the protocol stack. Based on these analyses, we propose a Hybrid TOE architecture, in which functions imposing much loads on the host CPU are implemented using hardware and other functions are implemented using software.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
분석 결과에 따르면, TCP/IP의 전체 기능들 중에서 일부 주요 기능들이 전체 통신 시간의 70~90%를 차지하였다. 따라서, 이러한 분석을 바탕으로 하여 하드웨어 구현과 소프트웨어 구현의 장점을 조합한 Hybrid TOE 구조를 제안한다. Hybrid TOE 구조는 TCP/IP 프로토 콜을 사용한 송수신에서 시간을 많이 차지하는 기능들 을 하드웨어로 구현함으로써 통신을 보장하고, 통신의.
본 논문에서는 Linux 운영체제에 내장된 TCP/IP 프 로토콜 스택의 구조를 분석하고, 통신을 수행할 때 프로 토콜 스택의 각 함수에서 소모되는 시간을 측정하여 호 스트 CPU에 부하를 발생시는 주 요인을 분석하였다. 분석 결과에 따르면, TCP/IP의 전체 기능들 중에서 일부 주요 기능들이 전체 통신 시간의 70~90%를 차지하였다.
본 논문에서는 실험을 통해 TCP/IP를 사용한 송수신 과정의 각 함수에서 소요되는 시간을 측정하였다. 시간의 단위로는 CPU 클럭수를 사용하였고, 작은 데이타부터 큰 데이타까지 통신에서 소요되는 시간을 비교하기 위해 1.
TOE는 네트워크 어댑터 상에서 TCP/IP를 처리함으 로써 호스트 CPU에 가해지는 작업 부하를 줄이고 통신 의 성능을 높이는 기술이다. 본 논문에서는 효율적인 TOE 구조를 개발하기 위해 Linux 운영체제에 내장된 TCP/IP 프로토콜 스택을 분석하였고, 함수들의 수행시간을 측정한 실험을 통해 TCP/IP 내부에서 많은 부하 를 발생시키는 주요한 요소들을 분석하였다. 실험 결과에 따르면 송신 과정에서는 소켓 버퍼를 확보하는 과정, 사용자의 데이타를 소켓 버퍼로 복사하는 과정, 그리고 프로세스 스케줄링 과정에서 호스트 CPU에 많은 부하 가 발생하였다.
수신 과정에서는 TCP 헤더를 검사하고 처리하는 과정, ACK 처리 과정, 수신 데이타를 사용자 영역으로 복사하는 과정, 그리고 소켓 버퍼를 해제하는 과정에서 많은 부하가 발생하였다. 이러한 실험결과를 바탕으로 본 논문에서는 하드웨어 기반 TOE 구현과 소 프트웨어 기반 TOE 구현의 장점들을 취합한 Hybrid TOE 구조를 제안하였다. Hybrid TOE 구조에서는 통 신의 성능에 큰 영향을 끼치는 기능들은 하드웨어로 구 현하고 나머지 기능들은 소프트웨어로 구현함으로써 통 신의 성능과 개발의 효율성을 동시에 제공할 수 있다.
제안 방법
먼저 TCP 계층에서 생성할 패킷의 크기를 결정하기 위해 MSS (Maximum Segment Size) 를 조사하는데, 이는 일반적으로 네트워크 어댑터의 MTU (Maximum Transfer Unit) 크기에 따라 결정된다. MSS가 결정되면 tcp_alloc_j)skb0 함수를 통해 소 켓 버퍼의 생성을 요구하며, 이를 위해 TCP 연결 (connection) 이 설정될 때 64KB씩 할당받은 송신 버퍼 영역에서 소켓 버퍼를 생성할 여유 공간이 있는지 확인 한다. 만약 데이타의 크기가 사용 가능한 송신 버퍼의 크기보다 큰 경우에는 확보된 버퍼 용량만큼의 데이타 를 먼저 처리한 후 송신 프로세스의 진행을 멈추고 송 신 버퍼가 확보되기를 기다린다.
초기의 TCP/IP는 프로토콜의 각 계층을 지날 때마다 이전 계 층에서 만들어진 패킷 전체를 먼저 복사한 후 헤더를 덧붙이는 과정을 반복하는 비효율적인 구조로 구현되었 고, 이는 통신의 성능을 저하시키는 주요 요인이 되었다. 반면 Linux에서는 TCP/IP를 효율적으로 운용하기 위해 소켓 버퍼 구조체를 통해 불필요한 복사를 제거하는 등의 연구가 활발하게 진행되었고, 그 결과 운영체제 들 중에서 비교적 우수한 네트워크 성능을 제공하기 때문에 본 논문에서 TCP/IP 프로토콜 스택읜 분석을 위한 운영체제로 선택하였다.
본 논문에서 제안하는 Hybrid TOE 구조에서는 표 4에서 제시한 기능들 중 ③을 제외한 나머지 6개의 기능 들을 하드웨어로 구현하고, ③은 두 개의 내장형 프로세 서 코어 (core) 를 사용하여 소프트웨어로 구현한다. Hybrid TOE 구조에서는 소켓 버퍼가 컴퓨터의 주메모리가 아닌 TOE 어댑터 상의 버퍼 메모리에서 유지되므 로, Hybrid TOE 전용의 최적화된 소켓 버퍼 관리 알 고리즘이 필요하다.
본 장에서는 Linux의 TCP/IP 프로토콜 스택을 사용한 통신에서 주요 함수를 통과하는데 걸리는 시간을 측정하고, 이를 분석하여 효율적인 TOE 구현 방안을 제안한다. 본 실험에 사용된 두 대의 컴퓨터 노드는 각각 Int이 SE7500CBW2 메인보드 상에 한 개의 L8GHz Int 이 Xeon CPU 와 주 메모리로 512MB 용량의 registered DDR SDRAM을 장착하였다.
표 4에 정리된 기능들은 TCP/IP를 사용한 통신 시간 에서 70~90%를 차지하지만, TCP/IP를 구성하는 전체 기능들 중에서는 일부분에 불과하다. 본 절에서는 이러한 분석을 바탕으로 하여, 통신의 성능에 큰 영향을 끼 치는 기능들을 하드웨어로 구현하고 통신의 성능에 영향이 적은 나머지 기능들은 소프트웨어로 운용하는 Hybrid TOE 구조를 제안한다. 본 논문에서 제안하는 Hybrid TOE 구조는 처리에 시간이 많이 걸리는 주요 기능들을 하드웨어로 구현함으로써 통신의 성능을 보장 할 수 있고, 수행 시간의 비중이 높지 않은 기능들은 소 프트웨어로 쉽게 구현할 수 있을 것으로 기대된다.
따라서, 효율적인 TOE 구조를 개발하기 위해서는 TCP 계층에 대한 최적화가 필수적이다. 이를 위해 본 논문의 4.2절과 4.3절에서는 송신 과정과 수신 과정에서 TCP 계충 내부의 소요 시간을 분석하였다.
표 2에서는 TCP 계충의 송신 과정에서 많은 시간을 소모하는 주요 함수들의 수행 시간과 함께, TCP 계층 에서 송신을 처리하는 시간(TCP 송신 시간에 대한 각 함수의 수행 시간의 비율을 제시하였다.
대상 데이터
본 장에서는 Linux의 TCP/IP 프로토콜 스택을 사용한 통신에서 주요 함수를 통과하는데 걸리는 시간을 측정하고, 이를 분석하여 효율적인 TOE 구현 방안을 제안한다. 본 실험에 사용된 두 대의 컴퓨터 노드는 각각 Int이 SE7500CBW2 메인보드 상에 한 개의 L8GHz Int 이 Xeon CPU 와 주 메모리로 512MB 용량의 registered DDR SDRAM을 장착하였다. 네트워크 어댑 터는 Int이 PRO/IOOOMT Gigabit Ethernet Server Adapted 사용하였다.
본 논문에서는 실험을 통해 TCP/IP를 사용한 송수신 과정의 각 함수에서 소요되는 시간을 측정하였다. 시간의 단위로는 CPU 클럭수를 사용하였고, 작은 데이타부터 큰 데이타까지 통신에서 소요되는 시간을 비교하기 위해 1.4 KB, 14 KB, 140 KB, 1 MB 크기의 데이타를 사용하였다.
네트워크 어댑 터는 Int이 PRO/IOOOMT Gigabit Ethernet Server Adapted 사용하였다. 운영체제로는 247T0 버전의 커널을 기반으로 하는 RedHat 7.2 Linux package# 채택하였고, 네트워크 어댑터의 디바이스 드라이버로는 Int이에서 제공하는 攻000-5.2.20 버전을 사용하였다. 2 대의 컴퓨터 노드는 스위치를 거치지 않고 직접 연결하였다.
성능/효과
수신 과정에서도 송신 과정과 마찬가지로 데이타의 크기에 따라 주요 함수들의 비중이 달라졌다. 1.4 純의 데이타를 수신할 때에는 tcp_copy_to_iovec0 함수의 비중이 35%로 가장 컸고, 다음으로 ACK 처리 함수들 과 tcp_D4_rcv0 함수의 비중은 22~27% 정도로 비슷 하였다. 14 KB 크기의 데이타를 수신하는 경우 tcp_ copy_to_iovec0 함수와 ACK 처리 함수들의 비중은 큰 변화가 없었지만, _J折喝_skb0 함수의 비중은 높아 졌고 tcp_u4_rcv0 함수의 비중이 낮아졌다.
반면에 전송할 데이타의 크기가 140 KB~1 MB로 비교적 클 경우에는 tcpjilloc_pskb0 함수와 skbjidd_ dataO 함수에서 소요되는 시간에 비해 waitjor_tcpe memory0 함수에서 소요되는 시간이 급격히 증가하여 TCP 송신 시간에서 70% 이상의 비중을 차지하였다. 이는 3.
본 논문에서는 Linux 운영체제에 내장된 TCP/IP 프 로토콜 스택의 구조를 분석하고, 통신을 수행할 때 프로 토콜 스택의 각 함수에서 소모되는 시간을 측정하여 호 스트 CPU에 부하를 발생시는 주 요인을 분석하였다. 분석 결과에 따르면, TCP/IP의 전체 기능들 중에서 일부 주요 기능들이 전체 통신 시간의 70~90%를 차지하였다. 따라서, 이러한 분석을 바탕으로 하여 하드웨어 구현과 소프트웨어 구현의 장점을 조합한 Hybrid TOE 구조를 제안한다.
송신 과정에서 가장 많은 시간을 소모하는 함수는 [그림 2]의 tcp_sendmsg0 함수였으며, 특히 tcp_ sendmsgO 함수 내부에서 소켓 버퍼를 생성하는 tcp_alloc_pskb0 함수, 사용자 영역의 데이타를 소켓 버퍼로 복사하는 s*idkdb _d (血0 함수, 그리고 TCP 송 신버퍼 영역에서 소켓 버퍼를 위한 공간이 확보되기를 기다리는 waitjorj:cp_memory0 함수의 수행시간들을 합친 것이 전체 TCP 처리 시간의 85~95%를 차지하였다. 송신 과정에서 주요한 3개의 함수들이 TCP 송신 시 간에서 차지하는 비중은 전송할 데이타의 크기에 따라 양상이 달라졌다.
수신 과정에서는 TCP 헤더 검사와 처리를 담당하는 tcpjo4_rcv0 함수와 tcp_rcv_established0 함수 내부 에서 호출되는 3 종류의 함수들을 수행하는데 가장 많은 시간을 소모하였으며, TCP 수신 시간에서 85% 이상의 비중을 차지하였다. tcpercv_established0 함수 내부에서 호출되는 3 종류의 함수는 데이타를 INET 소 켓으로 복사하는 tcp_copy_tojovec0 함수, tcp_send_ ack0 함수를 포함한 ACK 처리 함수들, 그리고 처리가 끝난 소켓 버퍼를 해제하는 —审源—・skb0 함수이다.
14 KB 크기의 데이타를 수신하는 경우 tcp_ copy_to_iovec0 함수와 ACK 처리 함수들의 비중은 큰 변화가 없었지만, _J折喝_skb0 함수의 비중은 높아 졌고 tcp_u4_rcv0 함수의 비중이 낮아졌다. 수신 데이 타의 크기가 140 KB~1 MB 정도로 더 커지면 tcp_ copy_to_iovec0 함수와 __kfree_skb0 함수의 수행 시간이 차지하는 비율이 급격히 높아졌고, ACK 처리 함 수들과 tcp_v4_rcu0 함수의 비중이 크게 떨어졌다.
본 논문에서는 효율적인 TOE 구조를 개발하기 위해 Linux 운영체제에 내장된 TCP/IP 프로토콜 스택을 분석하였고, 함수들의 수행시간을 측정한 실험을 통해 TCP/IP 내부에서 많은 부하 를 발생시키는 주요한 요소들을 분석하였다. 실험 결과에 따르면 송신 과정에서는 소켓 버퍼를 확보하는 과정, 사용자의 데이타를 소켓 버퍼로 복사하는 과정, 그리고 프로세스 스케줄링 과정에서 호스트 CPU에 많은 부하 가 발생하였다. 수신 과정에서는 TCP 헤더를 검사하고 처리하는 과정, ACK 처리 과정, 수신 데이타를 사용자 영역으로 복사하는 과정, 그리고 소켓 버퍼를 해제하는 과정에서 많은 부하가 발생하였다.
데이타의 크기가 커질 때 tcp_°4-丁以乂) 함수와 ACK 처리 함수들의 비중은 크게 떨어지고 대산 tcp_ copy_to_iovec0 함수의 비중이 높아지는 이유는 캐쉬 효과에 의해 크기가 작은 TCP 헤더와 ACK 패킷을 처 리하는 오버헤드가 데이타 전체를 복사하는 오버헤드에 비해 작기 때문인 것으로 분석된다. 즉, TCP 패킷의 헤 더 영역과 ACK 패킷은 크기가 작을 뿐만 아니라 패킷 을 만드는 과정에서 빈번한 접근이 발생하여 캐쉬의 활 용도가 높은 데 반해 데이타는 크기가 비교적 크고 사 용 빈도도 낮아 캐쉬 효과가 거의 발생하지 않기 때문 인 것으로 판단된다, 데이타의 크기가 커질 때 소켓 버 퍼를 해제하는 _kfree_skb0 함수의 비중이 높아지는 이유는 이 함수에서 메모리를 커널에 반납하고 버퍼 리 스트를 설정하는 등의 복잡한 처리 과정을 거치는 오버 헤드가 데이타의 크기에 비례하여 증가하는 것이 원인 으로 파악된다.
후속연구
Hybrid TOE 구조에서는 소켓 버퍼가 컴퓨터의 주메모리가 아닌 TOE 어댑터 상의 버퍼 메모리에서 유지되므 로, Hybrid TOE 전용의 최적화된 소켓 버퍼 관리 알 고리즘이 필요하다. 따라서, ①과 ⑦을 담당하는 소켓 버퍼 관리 모듈을 하드웨어로 구현하면 프로토콜 처리 시간을 줄이는 데 중요한 역할을 담당할 것으로 기대된다. ②와 ⑥은 주메모리에 위치하는 사용자 영역과 TOE 어댑터 상에 존재하는 소켓 버퍼 사이의 데이타 복사에 관련된 기능으로, PCI 버스에서 DMA(Direct Memory Access)를 통해 효율적으로 처리할 수 있다.
또한, 성능에 큰 영향을 주는 기능들을 하드웨어로 구현하였 으므로 하드웨어 기반 TOE에 근접하는 성능을 보일 것으로 예상된다. 또한, TCP/IP를 기반으로 하는 RDMA, iSCSI 등의 상위 프로토콜과 차세대 인터넷 프로토콜인 IPv6 등을 소프트웨어로 신속히 구현할 수 있을 것이다.
Hybrid TOE는 하드웨어 및 소프트웨어 구현을 함께 적용하였으므로, 대역폭 측면에서 소프트웨어 기반 TOE에 비해서는 우수한 성능을 나타낼 것이다. 또한, 성능에 큰 영향을 주는 기능들을 하드웨어로 구현하였 으므로 하드웨어 기반 TOE에 근접하는 성능을 보일 것으로 예상된다. 또한, TCP/IP를 기반으로 하는 RDMA, iSCSI 등의 상위 프로토콜과 차세대 인터넷 프로토콜인 IPv6 등을 소프트웨어로 신속히 구현할 수 있을 것이다.
본 절에서는 이러한 분석을 바탕으로 하여, 통신의 성능에 큰 영향을 끼 치는 기능들을 하드웨어로 구현하고 통신의 성능에 영향이 적은 나머지 기능들은 소프트웨어로 운용하는 Hybrid TOE 구조를 제안한다. 본 논문에서 제안하는 Hybrid TOE 구조는 처리에 시간이 많이 걸리는 주요 기능들을 하드웨어로 구현함으로써 통신의 성능을 보장 할 수 있고, 수행 시간의 비중이 높지 않은 기능들은 소 프트웨어로 쉽게 구현할 수 있을 것으로 기대된다. Hybrid TOE의 내부 구조는 그림 4와 같다.
향후 과제로는 본 논문에서 제안한 Hybrid TOE 구조를 구현하고, 이를 탑재한 네트워크 어댑터를 개발하여 Hybrid TOE의 동작과 성능을 검증할 계획이다.
참고문헌 (15)
Bierbaum, N., 'MPI and Embedded TCP/IP Gigabit Ethernet Cluster Computing,' Proceedings of 27th Annual IEEE Conference on Local Computer Networks 2002 (LCN 2002), pp. 733-734, Nov. 2002
Kay, J. and Pasquale, J., 'Profiling and reducing processing overheads in TCP/IP,' IEEE/ACM Transactions on Networking, Vol. 4, No.6, pp. 817-828, Dec. 1996
Camarda, P., Pipio, F. and Piscitelli, G., 'Performance evaluation of TCP/IP protocol implementations in end systems,' IEE Proceedings of Computers and Digital Techniques, Vol. 146, No. 1, pp. 32-40, Jan. 1999
Zec, M., Mikuc, M. and agar, M., 'Estimating the Impact of Interrupt Coalescing Delays on Stedy State TCP Throughput, Interrupt Coalescing,' Proceedings of International Conference on Software, Telecommunications and Computer Networks, Oct. 2002
Intel PRO/1000T IF Storage Adapter,' Data Sheet, http://www.intel.com/networklconnectivity/resources/ doclibrary/data_sheets/pro1000_T_IF_SApdf, Intel, 2003
Satran, JI., Meth, K., Sapuntzakis, C., Chadalapaka, M. and Zeidner, E., 'Internet Small Computer Systems Interface (iSCSI),' IETF RFC 3720, http://www.ietf.org/rfc/rfc3720.txt, April 2004
Aiken, S., Grunwald, D., Pleszkun, A. R. and Willeke, J., 'A Performance Analysis of the iSCSI Protocol,' Proceedings of the 20th IEEE/11th NASA Goddard Conference on Mass Storage Systems and Technologies (MSS '03), 2003
※ AI-Helper는 부적절한 답변을 할 수 있습니다.