KR100723879B1 - Hardware acceleration apparatus for iscsi target system using toe and method for handling read/write command using the apparatus - Google Patents

Hardware acceleration apparatus for iscsi target system using toe and method for handling read/write command using the apparatus Download PDF

Info

Publication number
KR100723879B1
KR100723879B1 KR1020060038330A KR20060038330A KR100723879B1 KR 100723879 B1 KR100723879 B1 KR 100723879B1 KR 1020060038330 A KR1020060038330 A KR 1020060038330A KR 20060038330 A KR20060038330 A KR 20060038330A KR 100723879 B1 KR100723879 B1 KR 100723879B1
Authority
KR
South Korea
Prior art keywords
data
tcp
local memory
iscsi
controller
Prior art date
Application number
KR1020060038330A
Other languages
Korean (ko)
Inventor
정병권
김영균
김준
김명준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US11/636,046 priority Critical patent/US7676607B2/en
Application granted granted Critical
Publication of KR100723879B1 publication Critical patent/KR100723879B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 TOE를 이용한 iSCSI 타겟 시스템 상의 하드웨어 가속 장치 및 그 장치를 이용한 읽기/쓰기 명령 수행방법에 관한 것으로, 발명인 iSCSI(internet Small Computer System Interface) 타겟 시스템 상의 하드웨어 가속 장치는 I/O 연산 처리기, TOE(TCP/IP Offload Engine) 제어기, 디스크 제어기, 네트워크 제어기를 하나의 로컬 PCI 버스를 통하여 연결하고, 대용량의 메모리를 I/O 연산 처리기 통하여 장착한 구조를 가지고 있다. 각 내부 하드웨어의 가속 기능이 조합되어 본 하드웨어 가속 장치는 iSCSI 타겟 시스템 상의 복잡하고 오랜 시간이 걸리는 데이터 처리 작업들을 수행함에 있어, iSCSI 타겟 시스템의 처리 성능을 향상시키고 CPU 부하를 감소시킨다.The present invention relates to a hardware acceleration device on an iSCSI target system using a TOE and a method of performing a read / write command using the device. The inventors of the present invention provide a hardware acceleration device on an iSCSI (Internet Small Computer System Interface) target system. TCP / IP Offload Engine (TOE) controller, disk controller, and network controller are connected through one local PCI bus, and large memory is installed through I / O processor. Combining the acceleration capabilities of each internal hardware, the hardware accelerator improves the processing performance of the iSCSI target system and reduces the CPU load in performing complex and time-consuming data processing tasks on the iSCSI target system.

Description

TOE를 이용한 iSCSI 타겟 시스템 상의 하드웨어 가속 장치 및 그 장치를 이용한 읽기/쓰기 명령 수행방법{Hardware acceleration apparatus for iSCSI target system using TOE and method for handling read/write command using the apparatus}Hardware acceleration apparatus for iSCSI target system using TOE and method for handling read / write command using the apparatus}

도 1은 본 발명의 기반이 되는 iSCSI 프로토콜의 계층 모델,1 is a hierarchical model of the iSCSI protocol on which the present invention is based;

도 2는 본 발명의 바람직한 일실시예에 따른 네트워크상의 iSCSI 프로토콜을 통한 읽기/쓰기 명령의 전송 흐름도,2 is a flowchart illustrating transmission of a read / write command through an iSCSI protocol on a network according to an embodiment of the present invention;

도 3는 본 발명의 바람직한 일실시예에 따른 iSCSI 타겟 시스템 상의 하드웨어 가속 장치 내부 구성도,3 is an internal configuration diagram of a hardware accelerator on an iSCSI target system according to an embodiment of the present invention;

도 4는 도3에서 iSCSI 타겟 시스템 상의 읽기 명령 수행시 데이터의 이동 경로를 나타내는 도면,4 is a diagram illustrating a movement path of data when a read command is performed on an iSCSI target system in FIG. 3;

도 5는 도3에서 iSCSI 타겟 시스템 상의 쓰기 명령 수행시 데이터의 이동 경로를 나타내는 도면,FIG. 5 is a diagram illustrating a movement path of data when a write command is performed on an iSCSI target system in FIG. 3. FIG.

도 6은 본 발명의 바람직한 일실시예에 따른 iSCSI 타겟 시스템 상의 읽기/쓰기 명령 수행 방법에 대한 흐름도이다.6 is a flowchart illustrating a method of performing a read / write command on an iSCSI target system according to an embodiment of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

301: 메인 CPU 302: 메인 메모리 301: main CPU 302: main memory

303: 메인 PCI 버스 304: I/O 연산 처리기 303: main PCI bus 304: I / O processor

305: 네트워크 제어기 306: TOE 제어기305: network controller 306: TOE controller

307: 로컬 메모리 308: 로컬 PCI 버스 307: local memory 308: local PCI bus

309: 디스크 제어기 310: 디스크 스토리지 장치309: disk controller 310: disk storage device

311: iSCSI 타겟 시스템 상의 하드웨어 가속 장치311: Hardware Accelerator on iSCSI Target System

본 발명은 네트워크를 통한 스토리지 시스템 상의 하드웨어 가속 장치 및 그 장치를 통한 데이터 처리방법에 관한 것으로, 더욱 상세하게는 TOE를 이용한 iSCSI 타겟 시스템 상의 하드웨어 가속 장치와 이를 이용한 읽기/쓰기 명령에 대한 수행방법을 포함한다. The present invention relates to a hardware acceleration device on a storage system via a network and a data processing method through the device, and more particularly, to a hardware acceleration device on an iSCSI target system using a TOE and a method of performing a read / write command using the same. Include.

컴퓨터 시스템이 발전한 이래로 서버에 저장되는 데이터 양은 기하급수적으로 증가하였고 이에 따른 데이터 저장장치에 대한 성능 요구도 끊임없이 증가하여왔다. 이에 따라 종전 서버가 직접 연결된 저장장치에만 데이터를 저장하는 것으로는 한계가 있기 때문에, 이에 네트워크를 통한 여러가지 저장장치 연결 방법들이 고안 되어 왔다.Since computer systems have evolved, the amount of data stored on servers has increased exponentially, and the performance demands on data storage devices have steadily increased. As a result, there is a limit to storing data only in a storage device directly connected to a conventional server. Therefore, various storage connection methods through a network have been devised.

현재까지 널리 사용되고 있는 네트워크를 이용한 저장장치와 서버의 연결방법에는 전통적인 NFS(Network File System), NAS(Network Attached Storage), SAN(Storage Area Network) 등이 존재한다.Conventional network storage methods and server connection methods that are widely used up to now include a network file system (NFS), a network attached storage (NAS), a storage area network (SAN), and the like.

NFS는 예전부터 사용되어온 네트워크 저장장치 연결방법으로서 일반적인 서버와 서버 사이에 TCP연결을 통해 파일 단위로 데이터를 저장하는 방법이다. 하지만, 이는 파일 시스템에서의 부하가 커져 전송성능이 떨어진다.NFS is a network storage device connection method that has been used in the past, and stores data in file units through a TCP connection between a general server and a server. However, this increases the load on the file system and degrades transmission performance.

NAS는 NFS와 비슷하게 TCP연결을 통하여 파일 단위로 저장하지만, 전용의 하드웨어를 사용함으로써 서버에 걸리는 부하를 줄여준 방법이다. 하지만, 이도 파일 단위 저장방법의 한계로 인해 파일 시스템의 부하가 타겟 시스템 상의 저장 성능 향상에 방해가 되는 것이 사실이다.Similar to NFS, NAS stores files on a TCP connection, but reduces the load on the server by using dedicated hardware. However, it is true that the load of the file system interferes with the improvement of the storage performance on the target system due to the limitation of the file unit storage method.

이에 SAN은 NAS나 NFS와 달리, 전용 네트워크를 통하여 저장장치와 서버를 연결하고, 파일 단위가 아닌 블록단위의 저장을 통해 파일시스템의 부하를 서버쪽에서 담당하게 함으로써 저장장치의 부하를 줄여 입출력 성능을 향상시킨 방법이다. 하지만, 이것도 전용 네트워크 구성에 비용이 많이 들고, 광대역에 걸쳐서 연결망을 구성하기가 어렵다는 것이 단점으로 존재한다.Thus, unlike NAS or NFS, SAN connects storage and server through a dedicated network and reduces the load of storage devices by reducing the load on storage devices by storing the file system on the server side through block-by-block storage rather than file. It is an improved method. However, this also has a disadvantage in that it is expensive to construct a dedicated network and it is difficult to form a connection network over a broadband.

이에 눈을 돌린 것이 네트워크 프로토콜에 대한 접근법이다. 특히 친숙하고 상대적으로 가격이 훨씬 저렴한데다가 라우팅이 가능하여 거리제한이 전혀 없는 IP 네트워크를 이용하고자 하는 다양한 시도가 있었으며 이와 함께 등장한 것이 바로 iSCSI(internet Small Computer System Interface) 프로토콜이다. 이는 인터넷 상에서의 TCP/IP 프로토콜 상위에 iSCSI 프로토콜을 두고 이를 이용하여 데이터를 송수신하는 방법이라고 할 수 있다.It is the approach to network protocol that turns to this. In particular, there have been various attempts to use IP networks that are familiar, relatively inexpensive, and routable, and therefore have no distance limitations, and have emerged with the iSCSI (Internet Small Computer System Interface) protocol. This is a method of placing an iSCSI protocol on top of the TCP / IP protocol on the Internet and transmitting and receiving data using the same.

단, 이러한 iSCSI는 IP네트워크를 통하여 연결되기 때문에 TCP/IP 프로토콜 처리에서 많은 부하를 발생시키는 면이 있다. 다만 이 부하를 적절히 조절할 수 있 는 방법이 있다면 iSCSI 프로토콜을 유용하게 사용할 수 있는 바, 이하 이와 관련된 선행 발명들을 살펴보고 이에 대해 논의하도록 하겠다.However, since such iSCSI is connected through an IP network, there is a side that generates a lot of load in the TCP / IP protocol processing. However, if there is a way to appropriately control this load can be useful to use the iSCSI protocol, the following will be discussed and discussed the related inventions.

먼저, Yoshihiro Saito이 발명하고 NEC corporation에 의해 미국 특허청에 2004년 2월 23일자로 출원되어 2004년 9월 9일자로 공개된 미국 특허청 공개번호 제 2004-0174893번 발명에는 iSCSI 장치 및 그 통신 제어 방법에 대한 기술이 개시되어 있다. First, the invention of U.S. Patent Application Publication No. 2004-0174893, filed on February 23, 2004 by Yoshihiro Saito and filed with US Patent Office by NEC Corporation on September 23, 2004, includes an iSCSI device and a communication control method thereof. A technique is disclosed.

이 발명은, iSCSI 타겟 시스템 상의 분별력 있는 네트워크 제어기를 사용하여 들어오는 패킷을 분류한 다음 iSCSI 패킷인 경우와 아닌 경우에 따른 각각의 분산 처리를 위한 두 개의 연산처리기를 둠으로써 일반 패킷이 많이 들어올 경우에도 iSCSI 입출력성능이 저하되지 않도록 함므로써 성능을 향상시키고 있다.The present invention classifies incoming packets using a discreet network controller on an iSCSI target system and then places two computation processors for each distributed process in the case of iSCSI packets and not in case of large packets. By improving the iSCSI input / output performance, the performance is improved.

이 공개특허에서는 두 개의 네트워크 프로토콜 처리를 위한 연산처리기를 둠으로써 IP트래픽의 양이 많아지더라도 iSCSI 입출력 처리성능이 저하되지 않도록 하고 있으나 서버의 또 다른 중요한 부분인 CPU의 부하 경감을 위한 별도의 TCP/IP 프로토콜 처리부분에 대하여는 별다른 방법을 제시하지 않고 있다. In this publication, the operation processor for processing two network protocols is provided so that iSCSI input / output processing performance is not degraded even if the amount of IP traffic increases. However, another important part of the server is a separate TCP for reducing the CPU load. There is no special method for the / IP protocol processing part.

다음은 John Shigeto Minami외 다수가 발명하고 미국 특허청에 2003년 6월 5일자로 출원하여 2004년 4월1일자로 공개된 미국 특허청 공개번호 제 2004-0062267번의 발명으로 이는 iSCSI와 IPSec프로토콜을 지원하는 기가비트 이더넷 어댑터에 대한 내용이 개시되어 있다. 이 공개특허에서는, 기가비트 이더넷 제어기에 연산처리기와 메모리, 프로그램을 추가하여 TCP/IP프로토콜 처리 방법을 포함하고 있으며 특히 iSCSI나 IPSec과 같은 프로토콜 처리를 내장된 연산처리기와 메모리 상에서 수행함으로써 성능 향상에 기여하고 있다. The following is an invention of U.S. Patent Application Publication No. 2004-0062267 filed by John Shigeto Minami et al., Filed with the U.S. Patent Office on June 5, 2003, and published on April 1, 2004, which supports the iSCSI and IPSec protocols. Gigabit Ethernet adapters are disclosed. In this patent, a TCP / IP protocol processing method is added to a Gigabit Ethernet controller by adding a processor, a memory, and a program, and in particular, a protocol processing such as iSCSI or IPSec is performed on a built-in processor and memory to improve performance. Doing.

전체적으로 상기 공개발명은, 프로토콜 처리과정을 네트워크 제어기에 내장된 일반 프로세서에 의해 수행케 함으로써 성능을 향상시키는 지능적인 네트워크 어댑터와 그 처리 구조에 관한 것이라고 할 수 있다.In general, the present disclosure relates to an intelligent network adapter and its processing structure that improve performance by having a protocol processing performed by a general processor embedded in a network controller.

다만, TCP/IP프로토콜 처리시, 일반 연산처리기와 프로그램을 사용하여 처리할 경우에는 전용 TOE 제어기에 비해 성능이 저하되는 문제가 있고, 만약 상기 발명에서 제안하고 있는 모든 프로토콜에 대한 처리 프로그램이 이더넷 제어기 내부에 포함될 경우에는 성능이 더 떨어질 가능성도 있다. 또한, iSCSI 타겟 시스템에 사용되는 경우에는 프로토콜의 처리과정 못지 않게, 데이터의 이동 경로 최적화가 중요한데 단순히 이 공개발명에서와 같이 일반적인 연산처리기의 사용으로는 전용화된 TOE 제어기나 네트워크 제어기, 디스크 제어기 및 I/O 연산처리기 등을 사용하여 경로를 최적화하는데 미치지 못하는 단점이 있다.However, when processing TCP / IP protocols using a general operation processor and a program, there is a problem that performance is reduced compared to a dedicated TOE controller. If the processing program for all protocols proposed in the present invention is an Ethernet controller, If it is included internally, there is a possibility of further deterioration. Also, when used in an iSCSI target system, the movement path optimization of data is just as important as the processing of a protocol. The use of a general processing processor, as in this disclosure, is simply a dedicated TOE controller, a network controller, a disk controller, There is a shortcoming to fall short of optimizing paths using I / O processors.

따라서, 본 발명은 상술한 문제점들을 해결하기 위하여, TOE(TCP/IP Offload Engine)제어기를 비롯한 I/O 연산 처리기, 디스크 제어기 및 네트워크 제어기의 특성화된 제어기들과 자체 메모리를 집적하여 구성된 하드웨어 가속 장치를 사용한다. Accordingly, in order to solve the above problems, the present invention provides a hardware acceleration device configured by integrating its own memory with specialized controllers of an I / O operation processor, a disk controller, and a network controller, including a TCP / IP offload engine (TOE) controller. Use

특히 본 하드웨어 가속 장치는 네트워크 시스템을 통해 송수신되는 데이터를 메인 CPU 대신 TCP/IP 오프로딩(Offloading)함으로써 iSCSI 프로토콜 상의 읽기/쓰기 명령을 효과적으로 처리하게 된다.In particular, the hardware accelerator device effectively processes read / write commands on the iSCSI protocol by TCP / IP offloading data transmitted and received through a network system instead of the main CPU.

본 발명의 일실시예로 상기 TOE(TCP/IP Offload Engine)를 이용한 iSCSI(internet Small Computer System Interface) 타겟 시스템 상의 하드웨어 가속 장치는, 디스크 스토리지 장치와 네트워크 시스템 사이에 전송되는 데이터를 저장하기 위한 로컬 메모리, 상기 로컬 메모리에 저장된 데이터의 TCP/IP 패킷을 메인 CPU 대신 처리하여 TCP/IP 스택 오프로딩(offloading)을 수행하는 TOE(TCP/IP Offload Engine)제어기,상기 로컬 메모리에서 오프로딩된 데이터를 iSCSI 프로토콜을 사용하여 상기 네트워크 시스템으로 전송하거나, 상기 네트워크 시스템으로부터 전송받은 데이터를 상기 로컬 메모리에 저장하도록 제어하는 네트워크 제어기, 상기 디스크 스토리지 장치와 상기 로컬 메모리 간에 데이터 저장 및 인출을 수행하는 디스크 제어기, 상기 로컬 메모리로의 데이터 입출력을 제어하는 I/O 연산처리기 및 상기 각 장치들을 연결하여 데이터 전송로 역할을 수행하는 로컬 PCI 버스를 포함하여 구성된다.According to an embodiment of the present invention, a hardware accelerator device on an iSCSI target system using the TCP / IP Offload Engine (TOE) may be configured to store data transmitted between a disk storage device and a network system. A TCP / IP Offload Engine (TOE) controller that performs TCP / IP stack offloading by processing TCP / IP packets of data stored in the memory and the local memory on behalf of the main CPU, and the data offloaded from the local memory. a network controller which transmits data to the network system by using an iSCSI protocol or controls to store data received from the network system in the local memory, a disk controller which stores and retrieves data between the disk storage device and the local memory; I / O for controlling data input and output to the local memory It is configured to include a processor and a local PCI bus that connects each of the devices to serve as a data transmission path.

그리고 이러한 하드웨어 가속 장치에서 iSCSI 타겟 시스템 상의 읽기/쓰기 명령을 수행하는 방법에 대한 일실시예는 다음과 같은 단계를 거치는 것으로 한다.In addition, an embodiment of a method of performing a read / write command on an iSCSI target system in such a hardware accelerator device is performed through the following steps.

iSCSI 타겟 시스템 상의 읽기 명령 수행 방법에 관하여는, 읽기 원하는 데이터를 디스크 스토리지 장치로부터 인출하여 로컬 메모리로 저장하는 단계, 상기 저장된 데이터의 TCP/IP 패킷을 메인 CPU 대신 처리하여 TCP/IP 스택 오프로딩(offloading)을 수행하는 단계, 상기 오프로딩된 데이터를 체크섬 오프로딩(Checksum-offloading) 및 스캐더/개더(Scatter/Gather)전송기능을 사용하여 네 트워크 시스템으로 전송하는 단계로 구성된다.Regarding a method of performing a read command on an iSCSI target system, the method may include: extracting desired data from a disk storage device and storing the read data in a local memory, and processing TCP / IP packets of the stored data instead of the main CPU to offload the TCP / IP stack. performing offloading, and transmitting the offloaded data to a network system using a checksum offloading and a scatter / gather transmission function.

iSCSI 타겟 시스템 상의 쓰기 명령 수행 방법에 관하여는, 네트워크 시스템으로부터 전송받은 데이터를 로컬 메모리로 저장하는 단계, 상기 저장된 데이터의 TCP/IP 패킷을 메인 CPU 대신 처리하여 TCP/IP 스택 오프로딩을 수행하는 단계, 상기 오프로딩된 데이터를 디스크 스토리지 장치로 저장하는 단계로 구성되는 것으로 한다.As to a method of performing a write command on an iSCSI target system, storing the data received from a network system to a local memory, and processing TCP / IP packets of the stored data instead of the main CPU to perform TCP / IP stack offloading. And storing the offloaded data in a disk storage device.

이하에서, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예에 대하여 상세히 설명하기로 한다.Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the present invention.

도 1은 본 발명의 기반이 되는 iSCSI 프로토콜의 계층 모델이다. TCP/IP는 인터넷에서 컴퓨터들 사이에 데이터 전송을 위한 표준 프로토콜이며 기본적으로 4개의 층으로 이루어진다. 이는 데이터 링크 층, 네트워크 층, 트랜스포트 층 그리고 애플리케이션 층으로 구분된다. 도1의 iSCSI 프로토콜 계층 모델은 이러한 TCP/IP 계층을 기반으로 한 모델로서 데이터 링크(Data Link) 계층(105) 외에 네트워크 계층으로 IP 계층(104)을, 트랜스포트 계층으로 TCP 계층(103)과 함께 상위에 iSCSI 프로토콜 계층(102)을 두고 있음을 알 수 있다. 즉 iSCSI 프로토콜은 네트워크 상의 데이터 송수신을 위한 신뢰성 있는 방법으로서 TCP/IP 프로토콜을 사용하는 것을 알 수 있다. 1 is a hierarchical model of the iSCSI protocol on which the present invention is based. TCP / IP is a standard protocol for transferring data between computers on the Internet and basically consists of four layers. It is divided into data link layer, network layer, transport layer and application layer. The iSCSI protocol layer model of FIG. 1 is a model based on the TCP / IP layer, and in addition to the data link layer 105, the IP layer 104 as the network layer and the TCP layer 103 as the transport layer. It can be seen that the iSCSI protocol layer 102 is placed on top of each other. In other words, it can be seen that the iSCSI protocol uses the TCP / IP protocol as a reliable method for transmitting and receiving data on the network.

그러나 이러한 iSCSI 프로토콜을 이용한 스토리지 통합 시스템을 위해서는 세 가지 구성 요소가 필요한데 첫째는 iSCSI target(타겟 시스템)으로 디스크통합의 최종 주체가 되는 스토리지를 말하며 둘째는 iSCSI 네트워크로서 일반적으로 ㅅ 사상기 언급한 TCP/IP 네트워크(106)를 말한다. 마지막으로 셋째는 iSCSI Initiator(=서버)로서, 이는 iSCSI 프로토콜이 기본적으로 서버의 이더넷 랜 카드를 통하여 작동하기 때문에, 여타의 드라이버들처럼 iSCSI 패킷을 이해할 수 있는 iSCSI 드라이버가 있어야 한다. However, three components are required for a storage consolidation system using the iSCSI protocol. First, an iSCSI target (target system) refers to storage that is the final subject of disk consolidation, and second, an iSCSI network is generally referred to as TCP / S. IP network 106 is referred to. Finally, the third is the iSCSI Initiator (= server), which is essentially an iSCSI protocol that works through the server's Ethernet LAN card, so there must be an iSCSI driver that can understand the iSCSI packets like any other driver.

특히 이는 기존의 랜카드에 iSCSI 드라이버만 설치해서 사용하는 경우에는 소프트웨어 이니시에이터라고 하며, iSCSI와 관련된 연산을 하는 전용 카드(iSCSI HBA)를 사용하는 경우는 하드웨어 이니시에이터라고 한다. In particular, this is called a software initiator when only the iSCSI driver is installed and used in an existing LAN card, and a hardware initiator when using a dedicated card (iSCSI HBA) that performs iSCSI-related operations.

또한 iSCSI는 TCP/IP에 대한 SCSI 명령 세트의 직렬화를 규정한 표준 규격인 만큼 상기 모델 구조하에서, iSCSI 프로토콜을 통해 서버인 iSCSI 이니시에이터로부터 받은 SCSI 명령(command)들을 타겟 시스템으로 전송하게 되는데 이때 상기 명령들은 암호화하여 다른 데이터들과 함께 전송된다.In addition, since iSCSI is a standard standard that defines the serialization of the SCSI command set for TCP / IP, under the model structure, SCSI commands received from the iSCSI initiator as a server are transmitted to the target system through the iSCSI protocol. They are encrypted and sent with other data.

도 2는 네트워크상의 iSCSI 프로토콜을 통한 읽기/쓰기 명령의 전송 흐름도이다. 이는 읽기 또는 쓰기 등의 SCSI 상의 명령들이 iSCSI 이니시에이터(201)로부터 타겟 시스템(203)으로 전달되고, 이에 따른 명령 수행 후의 최종 응답이 타겟 시스템(203)에서 이니시에이터(201)로 전송되는 과정을 보여준다. 2 is a flow chart of a read / write command via an iSCSI protocol on a network. This shows how commands on the SCSI, such as read or write, are passed from the iSCSI initiator 201 to the target system 203 and the final response after the command execution is transmitted from the target system 203 to the initiator 201.

이는 읽기/쓰기의 대상이 되는 데이터의 전송 과정이 포함되어 있는 것으로, 본 발명과 관련하여서는 실제 iSCSI 프로토콜을 통해 읽기/쓰기 명령이 타겟 시스템(203)에 도달하게 되는 과정이나 타겟 시스템(203)이 이니시에이터(201)에게 최종 응답을 보내는 과정을 제외한, 읽기/쓰기 명령(204)에 대한 타겟 시스템의 명령 수행 과정(205)을 중점적으로 논의하게 된다.This includes a process of transmitting data to be read / write. In the present invention, a process in which a read / write command reaches the target system 203 through an actual iSCSI protocol or the target system 203 Except for sending a final response to the initiator 201, the focus of the command execution process 205 of the target system on the read / write command 204 will be discussed.

도 3은 본 발명의 바람직한 일실시예에 따른 iSCSI 타겟 시스템 상의 하드웨어 가속 장치 내부 구성도로서 메인보드의 PCI버스에 본 하드웨어 가속 장치를 연결하였을 경우 각 하드웨어 가속 장치의 연결상태 및 그 내부 구조를 도시한 것이다.3 is a diagram illustrating an internal configuration of a hardware accelerator device on an iSCSI target system according to an exemplary embodiment of the present invention, and illustrates a connection state of each hardware accelerator device and its internal structure when the hardware accelerator device is connected to a PCI bus of a main board. It is.

본 하드웨어 가속 장치(311)는 메인 PCI 버스(303)를 통하여 시스템에 연결되도록 구성되어 있다. 또 상기 하드웨어 가속 장치(311)는 하나의 PCI카드 형태로 구현되었으며, 내부의 각 장치들은 로컬 PCI 버스(308)에 의하여 상호 연결되도록 구성되어 진다.The hardware accelerator 311 is configured to be connected to the system via the main PCI bus 303. In addition, the hardware acceleration device 311 is implemented in the form of a single PCI card, each device inside is configured to be interconnected by a local PCI bus (308).

상기 하드웨어 가속 장치(311)은 메인보드와의 PCI버스 연결을 담당하는 PCI 브리지 기능과 메모리 제어기로서의 역할을 수행하는 I/O 연산처리기(304), 데이터 입출력시 버퍼 역할 및 데이터 저장 공간으로 사용되는 로컬 메모리(307), 외부 네트워크 시스템과의 연결을 담당하고 TCP/IP/UDP 체크섬(checksum) 및 스캐터/개더(Scatter/Gather) 전송을 지원하는 네트워크 제어기(305), TCP/IP 스택을 오프로딩하여 메인 CPU의 부하를 경감시키는 TOE 제어기(306), 그리고 디스크 스토리지 장치(310)로의 입출력을 수행하는 디스크 제어기(309)로 구성된다. The hardware accelerator 311 is an I / O processor 304 that functions as a PCI bridge function and a memory controller that manages a PCI bus connection with a main board, and serves as a buffer and data storage space when data is input and output. Local memory 307, network controller 305 that is responsible for connecting to external network systems and supports TCP / IP / UDP checksum and scatter / gather transfers, TCP / IP stack off The controller includes a TOE controller 306 for loading and reducing a load of the main CPU, and a disk controller 309 for performing input / output to the disk storage device 310.

복수의 디스크 스토리지 장치가 있는 경우 RAID(Redundant Array of Inexpensive Disks)에서 즉, 여러 개의 하드 디스크를 하나의 Virtual Disk로 구성하여 사용하는 대용량 저장 장치에서 사용되며 특히 이러한 시스템에서는 데이터 분산 저장 및 인출을 위해서는 데이터의 중복 저장과 기록된 데이터의 중복된 인출을 방지하기 위한 XOR(Exclusive OR)연산의 수행이 필수적이다. When there are multiple disk storage devices, they are used in redundant array of inexpensive disks (RAID), that is, in mass storage devices that consist of multiple hard disks as one virtual disk. It is essential to perform an XOR (Exclusive OR) operation to prevent redundant storage of data and duplicate withdrawal of recorded data.

이에 I/O 연산처리기(304)는 전용의 XOR(Exclusive OR) 엔진을 사용하므로써 이를 수행할 수 있도록 한다. 또 상기 XOR 엔진을 사용하는 경우, iSCSI 이니시에이터와 타겟 시스템 사이의 데이터 송수신시 오류 검출을 위한 패리티 체크(parity check)도 고속으로 수행할 수 있게 된다.In response, the I / O processor 304 can perform this by using a dedicated XOR (Exclusive OR) engine. In addition, when the XOR engine is used, parity check for error detection during data transmission and reception between the iSCSI initiator and the target system can be performed at high speed.

도 3에서 상기 로컬 메모리(307)는 I/O 연산처리기(304)의 내부 버스에 접속되어 있으나, 상기 네트워크 제어기(305) 및 TOE 제어기(306)와 디스크 제어기(309)등의 장치에 의해 I/O 연산처리기(304)를 통하여 직접 상기 로컬 메모리(307)에 접근하여 데이터를 저장, 인출할 수 있도록 한다.In FIG. 3, the local memory 307 is connected to an internal bus of the I / O processor 304, but is connected to an I / O processor 304 by an apparatus such as the network controller 305 and the TOE controller 306 and the disk controller 309. The local memory 307 is directly accessed through the / O operation processor 304 to store and retrieve data.

저장 공간 상의 데이타가 연속적이지 않은 경우 이를 하나의 완결된 데이터로 저장 및 인출하기 위한 다양한 방법들이 존재한다. 그 중에서 특히 데이터 블록들을 직접 수집하여 사용가능케 하는 개더(Gather)기능과 실제 이러한 개더 기능의 전제 하에, 연속적이지 못하는 저장공간상에 데이터를 분산하여 저장하는 스캐터(Scatter)기능이 존재한다. If the data on the storage space is not contiguous, there are various ways to store and retrieve it as one complete data. Among them, in particular, a gathering function for directly collecting and using data blocks and a scattering function for distributing and storing data in non-contiguous storage space under the premise of such gathering function.

네트워크 시스템에서도 IP 헤더,TCP 헤더, UDP 헤더 및 페이로드(payload)가 메모리상에 연속적이지 않는 경우에 상기 네트워크 제어기(305)는 상기의 스캐터/개더(Scatter/Gather)기능을 사용하여 데이터를 전송할 수 있다.Even in a network system, when the IP header, the TCP header, the UDP header and the payload are not contiguous in memory, the network controller 305 uses the scatter / gather function to send data. Can transmit

또, 정확한 데이터 전송을 위한 체크섬 기능을 따로 네트워크 제어기(305)가 분리하여 담당하는 경우, CPU의 부하를 줄일 수 있다. 체크섬이라 함은 네트워크 시스템 상의 데이터 이동이 있었을 경우, 그 데이터의 변경여부를 검사하기 위한 것으로, 송신 측에서는 전송될 데이터에 대해 체크섬을 계산하여, 헤더에 저장 하면, 수신측에서는 수신된 데이터에 대해 체크섬을 계산하여, 헤더에 저장된 체크섬과 비교하여 일치할 경우 정상적으로 수신되었다는 것으로 인정하고, 그렇지 않을 경우 수신된 데이터를 폐기하는 것을 말한다. In addition, when the network controller 305 separately takes charge of the checksum function for accurate data transmission, the CPU load can be reduced. The checksum is used to check whether there is a change in data when there is a movement of data on the network system.The sender calculates a checksum for the data to be transmitted and stores it in a header. It calculates, compares with the checksum stored in the header, and if it matches, acknowledges that it was received normally, otherwise discards the received data.

상기 네트워크 제어기(305)는 데이터 전송시에 IP 헤더, TCP 헤더, UDP 헤더 및 페이로드(payload)가 로컬 메모리(307) 내에서 연속적이지 않더라도 이를 전송할 수 있는 스캐터/개더(Scatter/Gather)기능을 수행할 수 있는 전용화된 하드웨어로서 TCP, IP 또는 UDP 계층에서 수행되는 체크섬 계산을 CPU 대신 담당하여 처리하는 TCP/IP/UDP 체크섬 오프로드(Checksum offloading) 기능을 수행할 수 있는 것으로 한다.The network controller 305 has a scatter / gather function that can transmit an IP header, a TCP header, a UDP header, and a payload even when the data is not contiguous in the local memory 307. It is assumed that the dedicated hardware capable of performing this function can perform the TCP / IP / UDP checksum offloading function which handles the checksum calculation performed in the TCP, IP or UDP layer instead of the CPU.

TOE 제어기(306)와 관련하여 먼저 TOE(TCP/IP Offloading Engine)에 대하여 설명하면 다음과 같다. 현재 TCP/IP는 가장 널리 사용되는 컴퓨터 간의 통신 프로토콜이나 불행히도 TCP/IP는 시스템의 타겟 CPU의 가장 큰 부하로서 작용하고 있다. 일반적으로 1bit/sec의 TCP/IP 데이터를 처리하는데 1Hz의 CPU 사이클이 필요하다. 종전의 10/100Mbps 네트워크 속도에서는 CPU 혼자서 TCP/IP를 처리하는데 큰 어려움이 없었다. 그러나 기가비트 이더넷의 출현으로 타겟 CPU는 TCP/IP 처리에 대부분의 사이클을 소모하게 되어 버린 것이다.The TOE / TCP Offloading Engine (TOE) will first be described with reference to the TOE controller 306. Currently TCP / IP is the most widely used communication protocol between computers, but unfortunately TCP / IP is acting as the largest load on the system's target CPU. Generally, 1Hz CPU cycles are required to process 1bit / sec TCP / IP data. At the previous 10 / 100Mbps network speeds, there was no significant difficulty in handling TCP / IP by the CPU alone. But with the advent of Gigabit Ethernet, the target CPU spent most of its cycles processing TCP / IP.

이에 개발된 TCP/IP Offload Engine(TOE)는, CPU의 TCP/IP 패킷 처리의 부하를 NIC(Network Interface Card)에서 처리토록 하여 CPU의 부하를 크게 감소시킬 수 있게 된다.The TCP / IP Offload Engine (TOE) developed in this way allows the CPU / IP packet processing load to be processed by the NIC (Network Interface Card), thereby greatly reducing the CPU load.

현재 TCP/IP 프로토콜의 의해 데이터를 송수신 하는 과정은 데이터를 MTU(Maximum Transmission Unit)사이즈에 맞게 분할하고 TCP/IP 헤더를 추가하여 송신하면, 수신하는 측에서 상기 헤더들을 제거하고 MTU들을 다시 결합하는 것으로 이루어지는데 이러한 TCP/IP 스택 처리에는 많은 부하가 걸리게 되는 것이다. 이를 개선하기 위한 방법으로, 이러한 TCP/IP 스택 처리를 CPU의 처리와 분리시켜 전용의 하드웨어(Engine)에게 맡긴 것이 TOE이며 본 발명에서는 상기 TOE 제어기(306)로 구성되는 것이다.The process of transmitting / receiving data by the current TCP / IP protocol divides the data according to the MTU (Maximum Transmission Unit) size and adds a TCP / IP header to transmit the data, thereby removing the headers and combining the MTUs again. This TCP / IP stack processing is very expensive. In order to improve this, the TCP / IP stack processing is separated from the processing of the CPU and assigned to dedicated hardware (Engine), and in the present invention, the TOE controller 306 is configured.

즉 TOE 제어기(306)는 메인 CPU(301) 대신 TCP/IP 스택 오프로딩을 수행하므로써 메인 CPU(301)의 TCP/IP 패킷 처리의 부하를 하드웨어적으로 처리하게 된다.That is, the TOE controller 306 hardwarely handles the load of TCP / IP packet processing of the main CPU 301 by performing TCP / IP stack offloading instead of the main CPU 301.

MAC(Media Access Control)은 하드웨어의 물리적 계층과 데이터 링크 계층에 존재하는 네트워크 계층의 하나로서 물리적 주소 및 프레임 동기화(frame synchronization), 에러 검출(error checking)을 담당한다. 상기 TOE 제어기(306)는 이러한 MAC 계층을 직접 다룰 수 있도록 하여 물리적 주소 등을 직접 핸들링하여 메인 CPU에게 부하를 줄이고 고속으로 데이터를 처리할 수 있게 된다.Media access control (MAC) is one of the network layers existing in the physical layer and the data link layer of the hardware, and is responsible for physical address, frame synchronization, and error checking. The TOE controller 306 can directly handle this MAC layer to directly handle the physical address to reduce the load on the main CPU and to process data at high speed.

일반적인 OS(Operating System) 서버 등에서 디스크 장치로부터 파일을 읽어 네트워크로 전송하는 과정은 디스크 장치로부터 커널(kernel) 내 버퍼로 데이터를 읽어들이는 과정, 커널 내 버퍼에서 사용자 프로그램이 지정한 사용자 메모리 영역으로 데이터를 복사하는 과정, 사용자 메모리 영역에서 커널 내 소켓 버퍼로 데이터를 복사하는 과정 및 네트워크 제어기가 소켓 버퍼의 내용을 DMA(Direct Memory Access)로 가져가서 전송하는 과정으로 구성된다.In general OS (Operating System) server, the process of reading file from disk device and transferring it to network is the process of reading data from disk device to kernel buffer in kernel, data from kernel buffer to user memory area designated by user program. Copying the data from the user memory area to the socket buffer in the kernel, and transferring the contents of the socket buffer to the direct memory access (DMA) by the network controller.

전술한 과정에서 두 번의 메모리간 복사가 발생하게 된다. 이러한 메모리 간 복사는 메모리 대역폭을 점유할 뿐만 아니라, 메인 CPU를 사용하여 복사하기 때문에 스트리밍 서비스와 같이 전송량이 많은 응용의 경우 특히, CPU 점유율이 절대적으로 높아지게 된다. 또한, 데이터는 SCSI 컨트롤러로부터 메인 메모리로, 다시 메인 메모리로부터 네트워크 인터페이스로 전송되기 때문에, 실제 데이터 전송량의 2배 이상이 메인 PCI 버스의 대역폭을 차지하게 된다.In the above-described process, two inter-memory copies occur. This copy-to-memory copy not only occupies memory bandwidth, but also uses the main CPU to copy, resulting in an absolutely high CPU share, especially for high-transmission applications such as streaming services. In addition, since data is transferred from the SCSI controller to main memory and back from the main memory to the network interface, more than twice the actual data transfer occupies the bandwidth of the main PCI bus.

이러한 메모리 간 복사를 줄이기 위한 방법으로, 사용자 버퍼 영역을 사용하지 않고 커널 버퍼를 사용하여 다른 메모리 간 복사 없이 직접 데이터를 전송하기 위한 제로 카피(Zero-Copy) 기능이 존재한다.As a way to reduce such inter-memory copying, there is a zero-copy function for directly transferring data without using a user buffer area and using a kernel buffer without copying between other memories.

상기 네트워크 시스템 상에서 신속한 데이터 전송을 위하여 본 발명의 네트워크 제어기(305)는 앞에서 설명한 것과 같은 다른 메모리 복사과정을 거치지 않고 상기 로컬 메모리(307)를 통하여 데이터를 바로 전송하는 제로 카피(Zero-Copy)기능을 구현할 수 있는 것으로 한다.In order to quickly transmit data on the network system, the network controller 305 of the present invention has a zero copy function for directly transmitting data through the local memory 307 without going through another memory copying process as described above. It is assumed that can be implemented.

도 4는 도 3의 내부 구성도에서 본 발명의 바람직한 일실시예에 따른 iSCSI 타겟 시스템 상의 읽기 명령 수행시 데이터의 이동 경로를 도시화한 것이다.4 is a diagram illustrating a movement path of data when a read command is performed on an iSCSI target system according to an exemplary embodiment of the present invention in the internal configuration diagram of FIG. 3.

간단히 iSCSI 타겟 시스템에 읽기 명령이 전달되면, iSCSI 타겟 시스템은 연결된 디스크 저장 장치에서 데이터를 읽어 네트워크 시스템으로 이를 전송하므로써 읽기 명령을 수행하게 된다. 이 과정을 자세히 살펴 보면 다음과 같다.When a read command is simply sent to the iSCSI target system, the iSCSI target system reads data from the connected disk storage device and transmits the data to the network system to perform the read command. A closer look at this process follows.

도 4를 참조하면 먼저, 흐름 401을 따라 디스크 제어기(309)는 디스크 스토리지 장치(310)에서 요청된 데이터를 읽어 I/O 연산처리기(304)의 로컬 메모 리(307)에 저장한다. 다음으로 흐름 402에 따라 TOE 제어기(306)는 상기 데이터를 읽어 들여 메인CPU(301)의 간섭 없이 TCP/IP 스택의 전부를 오프로딩한 후, 다시 I/O 연산처리기(304)의 로컬 메모리(307)에 저장한다. 마지막으로 흐름 403에 따라 네트워크 제어기(305)가 상기 오프로딩된 데이터를 TCP/IP/UDP 체크섬(checksum) 기능 및 스캐터/개더(Scatter/Gather)기능을 사용하여 네트워크 시스템으로 전송한다.Referring to FIG. 4, first, the disk controller 309 reads data requested from the disk storage device 310 and stores the data requested in the disk storage device 310 in the local memory 307 of the I / O processor 304. Next, according to the flow 402, the TOE controller 306 reads the data, offloads the entire TCP / IP stack without interference from the main CPU 301, and then returns the local memory of the I / O processor 304. 307). Finally, according to flow 403, the network controller 305 transmits the offloaded data to the network system using the TCP / IP / UDP checksum function and the scatter / gather function.

도 5는 도 3의 내부 구성도에서 본 발명의 바람직한 일실시예에 따른 iSCSI 타겟 시스템 상의 쓰기 명령 수행시 데이터의 이동 경로를 도시화한 것이다.FIG. 5 illustrates a movement path of data when a write command is performed on an iSCSI target system according to an exemplary embodiment of the present invention in the internal configuration diagram of FIG. 3.

간단히, iSCSI 타겟 시스템에 쓰기 명령이 내려지면 타겟 시스템은 네트워크 시스템으로부터 데이터를 수신받아 iSCSI 타겟 시스템에 부착된 디스크 스토리지 장치에 이를 저장하므로써 쓰기 명령을 수행하게 된다. 이 과정을 자세히 살펴 보면 다음과 같다.Simply, when a write command is issued to an iSCSI target system, the target system receives data from the network system and executes the write command by storing the data in a disk storage device attached to the iSCSI target system. A closer look at this process follows.

도 5를 참조하면 먼저,흐름 501에 따라 네트워크 제어기(305)는 TCP/IP/UDP 체크섬(checksum) 및 스캐터/개더 (Scatter/Gather)되어 전송되어진 데이터를 I/O 연산처리기(304)의 로컬 메모리(307)에 저장한다. 다음으로 흐름 502에 따라 TOE 제어기(306)는 I/O 연산처리기(304)의 로컬 메모리(307)에 저장된 상기 데이터를 읽어 메인 CPU의 간섭 없이 TCP/IP 스택의 전부를 오프로딩한 후 이를 다시 I/O 연산처리기(304)의 로컬 메모리(307)에 저장한다. 마지막으로 흐름 503에 따라 디스크 제어기(309)가 상기 오프로딩된 데이터를 해당 디스크 스토리지 장치(310)에 저장한다.Referring to FIG. 5, first, according to the flow 501, the network controller 305 transmits data transmitted by TCP / IP / UDP checksum and scatter / gather to the I / O processor 304. Store in the local memory 307. Next, according to flow 502, the TOE controller 306 reads the data stored in the local memory 307 of the I / O processor 304, offloads the entire TCP / IP stack without interference from the main CPU, and then reloads it. It is stored in the local memory 307 of the I / O processor 304. Finally, according to flow 503, the disk controller 309 stores the offloaded data in the corresponding disk storage device 310.

도 6은 본 발명의 바람직한 일실시예에 따른 iSCSI 타겟 시스템 상의 읽기/쓰기 명령 수행 방법에 대한 흐름도이다. 즉, iSCSI 읽기/쓰기 명령에 대한 데이터 처리 방법에 대한 플로우 차트로서, 상기 도 4와 도 5의 데이터 이동 경로를 함께 플로우 차트로서 표현한 것이다.6 is a flowchart illustrating a method of performing a read / write command on an iSCSI target system according to an embodiment of the present invention. That is, as a flowchart of a data processing method for an iSCSI read / write command, the data movement paths of FIGS. 4 and 5 are expressed together as a flowchart.

도 6을 참조하면 상기 iSCSI 타겟 시스템은 iSCSI 이니시에이터로부터 내려온 iSCSI 명령(command)이 무엇인지 체크한다.(S601) Referring to FIG. 6, the iSCSI target system checks what an iSCSI command is issued from the iSCSI initiator (S601).

그 결과, 상기 명령이 읽기 명령인 경우는, 읽기 원하는 데이터를 디스크 스토리지 장치(310)로부터 인출하여 로컬 메모리(307)에 저장한다(S602). 그 다음상기 로컬 메모리(307)로부터 상기 저장된 데이터를 다시 인출한다(S603). 상기 인출된 데이터의 TCP/IP 스택 오프로딩이 TOE 제어기(306)에 의해 수행된다(S604). 다음으로 상기 오프로딩된 데이터를 다시 로컬 메모리(307)에 저장한다(S605). 마지막으로 로컬 메모리(307)로부터 상기 저장된 데이터를 인출하여 네트워크 시스템으로 전송한다(S606).As a result, when the command is a read command, the data desired to be read out is extracted from the disk storage device 310 and stored in the local memory 307 (S602). Next, the stored data is retracted from the local memory 307 (S603). The TCP / IP stack offloading of the retrieved data is performed by the TOE controller 306 (S604). Next, the offloaded data is stored in the local memory 307 again (S605). Finally, the stored data is extracted from the local memory 307 and transmitted to the network system (S606).

상기 명령이 쓰기 명령인 경우는, 네트워크 시스템으로부터 전송받은 데이터를 로컬 메모리(307)에 저장한다(S607). 그 다음 상기 로컬 메모리(307)로부터 상기 저장된 데이터를 인출한다(S608). 상기 인출된 데이터의 TCP/IP 스택 오프로딩이 TOE 제어기(306)에 의해 수행된다(S609). 다음으로 상기 오프로딩된 데이터를 다시 로컬 메모리(307)에 저장한다(S610). 마지막으로 로컬 메모리(307)로부터 상기 데이터를 인출하여 디스크 스토리지 장치(310)에 저장한다(S611).If the command is a write command, the data received from the network system is stored in the local memory 307 (S607). Next, the stored data is extracted from the local memory 307 (S608). The TCP / IP stack offloading of the retrieved data is performed by the TOE controller 306 (S609). Next, the offloaded data is stored in the local memory 307 again (S610). Finally, the data is extracted from the local memory 307 and stored in the disk storage device 310 (S611).

이와 같은 과정에서 각 구성부분들이 메인 CPU의 부하를 경감하기 위해 수 행하는 작업을 구체적으로 살펴 보면 다음과 같다.In this process, the components performed by each component to reduce the load of the main CPU will be described in detail.

읽기 명령 수행시 도 6의 S606 단계에서 상기 읽은 데이터를 네트워크 시스템으로 전송하는 경우 스캐터/개더(Scatter/Gather) 기능 및 TCP/IP/UDP 체크섬 오프로딩(checksum offloading) 기능을 지원하여 전송하는 것으로 한다.When the read command is transmitted to the network system in step S606 of FIG. 6, a scatter / gather function and a TCP / IP / UDP checksum offloading function are supported. do.

또 로컬 메모리(307)내의 상기 데이터는 다른 메모리간 복사를 배제한 채 네트워크 시스템으로 전송하는 제로카피(Zero-Copy) 기능이 수행되는 것으로 한다. In addition, a zero-copy function of transmitting the data in the local memory 307 to the network system without excluding an inter-memory copy is performed.

도 6의 상기 S604와 S609 단계에서 상기 TOE 제어기(306)는 로컬 메모리(307)로부터 상기 데이터를 읽어 들인 후 MAC(Media Access Control)을 직접 핸들링하여 데이터를 처리하여 메인 CPU(301)의 간섭없이 TCP/IP 스택 전부를 오프로딩할 수 있는 것으로 한다.In steps S604 and S609 of FIG. 6, the TOE controller 306 reads the data from the local memory 307 and directly handles a MAC (Media Access Control) to process the data without interfering with the main CPU 301. It is assumed that the entire TCP / IP stack can be offloaded.

다수의 디스크 스토리지 장치(310)의 RAID 시스템 상에서는 데이터의 안정적인 저장 및 성능 향상을 위하여 XOR 연산 구현이나 패리티 연산 계산시 전용의 XOR 엔진을 사용하여 처리하는 것으로 한다. In a RAID system of a plurality of disk storage devices 310, in order to stably store data and improve performance, a dedicated XOR engine is used to implement an XOR operation or calculate a parity operation.

본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프, 플로피디스크 및 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽 을 수 있는 코드로 저장되고 실행될 수 있다.The invention can also be embodied as computer readable code on a computer readable recording medium. The computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include ROM, RAM, CD_ROM, magnetic tape, floppy disks, and optical data storage, and may also include those implemented in the form of carrier waves (eg, transmission over the Internet). . The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, optimal embodiments have been disclosed in the drawings and the specification. Although specific terms have been used herein, they are used only for the purpose of describing the present invention and are not intended to limit the scope of the present invention as defined in the claims or the claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible from this. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

상기와 같은 TOE를 이용한 iSCSI 타겟 시스템의 상의 하드웨어 가속 장치를 사용하게 되면, iSCSI 타겟 시스템의 구현에 있어서 병목이 되는 TCP/IP 스택을 오프로딩하여 처리함으로써 TCP/IP 프로토콜 처리, RAID기능 지원, 패리티 연산 등에 있어서 하드웨어적인 기능의 가속을 가져와, 메인 CPU의 부하를 경감시키고 고속으로 데이터를 입출력 할 수 있게 된다. When using the hardware accelerator on the iSCSI target system using the TOE as described above, TCP / IP protocol processing, RAID function support, parity by offloading and processing the TCP / IP stack, which is the bottleneck in the implementation of the iSCSI target system Acceleration of hardware functions in operations and the like reduces the load on the main CPU and enables data input and output at high speed.

또한, iSCSI 프로토콜 처리시에 메모리간 복사의 회수를 최소화하여 PCI버스에서 발생할 수 있는 병목 현상을 제거하게 되어 데이터의 처리 속도를 향상시킨다.In addition, it minimizes the number of copy-to-memory copies during iSCSI protocol processing, eliminating bottlenecks that can occur in the PCI bus, thereby improving data processing speed.

Claims (13)

디스크 스토리지 장치와 네트워크 시스템 사이에 전송되는 데이터를 저장하는 로컬 메모리;A local memory for storing data transferred between the disk storage device and the network system; 상기 로컬 메모리에 저장된 데이터의 TCP/IP 패킷을 처리하여 TCP/IP 스택 오프로딩(offloading)을 수행하는 TOE(TCP/IP Offload Engine)제어기;A TCP / IP Offload Engine (TOE) controller that processes TCP / IP packets of data stored in the local memory to perform TCP / IP stack offloading; 상기 로컬 메모리에서 오프로딩된 데이터를 iSCSI 프로토콜을 사용하여 상기 네트워크 시스템으로 전송하거나, 상기 네트워크 시스템으로부터 전송받은 데이터를 상기 로컬 메모리에 저장하도록 제어하는 네트워크 제어기; 및A network controller configured to transmit data offloaded from the local memory to the network system using an iSCSI protocol, or to store data received from the network system in the local memory; And 상기 디스크 스토리지 장치와 상기 로컬 메모리 간에 데이터 저장 및 인출을 수행하는 디스크 제어기;를 포함하는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 하드웨어 가속 장치. And a disk controller for performing data storage and retrieval between the disk storage device and the local memory. 제 1항에 있어서,The method of claim 1, 상기 로컬 메모리로의 데이터 입출력을 제어하는 I/O 연산처리기; 및An I / O processor for controlling data input / output to the local memory; And 상기 각 구성요소들을 연결하여 데이터 전송로 역할을 수행하는 로컬 버스;를 더 포함하는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 하드웨어 가속 장치.And a local bus connecting each of the components to serve as a data transmission path. 제 2항에 있어서, The method of claim 2, 상기 로컬 버스는 PCI 버스인 것을 특징으로 하는 iSCSI 타겟 시스템 상의 하드웨어 가속 장치.And the local bus is a PCI bus. 제 2항에 있어서,The method of claim 2, 상기 I/O 연산 처리기는 XOR 엔진을 사용하여, 복수의 디스크 스토리지 장치(RAID)에서 상기 데이터의 분산 처리를 위한 XOR 연산 및 iSCSI 프로토콜의 패리티 연산 수행을 특징으로 하는 iSCSI 타겟 시스템 상의 하드웨어 가속 장치.The I / O processor is an XOR engine, the hardware acceleration device on the iSCSI target system, characterized in that performing a XOR operation and a parity operation of the iSCSI protocol for distributed processing of the data in a plurality of disk storage devices (RAID). 제 1항에 있어서, The method of claim 1, 상기 네트워크 제어기는 상기 데이터 전송시에 IP 헤더, TCP 헤더, UDP 헤더 및 페이로드(payload)가 상기 로컬 메모리 내에서 연속적이지 않더라도 이를 전송할 수 있는 스캐터/개더(Scatter/Gather) 기능 및/또는 TCP, IP 또는 UDP 레이어에서 수행되는 체크섬 계산을 CPU 대신 처리하는 TCP/IP/UDP 체크섬 오프로딩(Checksum Offloading) 기능을 포함하는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 하드웨어 가속 장치.The network controller may have a scatter / gather function and / or TCP that may transmit IP headers, TCP headers, UDP headers and payloads in the local memory even if they are not contiguous in the local memory. And a TCP / IP / UDP checksum offloading function for processing a checksum calculation performed on an IP or UDP layer on behalf of a CPU. 제 1항에 있어서, The method of claim 1, 상기 TOE 제어기는 메인 CPU의 간섭없이 네트워크 상의 물리적 계층(MAC)을 다루어 TCP/IP 오프로딩을 수행하는 것을 특징으로 하며,The TOE controller performs TCP / IP offloading by handling a physical layer (MAC) on a network without interference of the main CPU. 상기 네트워크 제어기는 다른 메모리 복사과정을 거치지 않고 상기 로컬 메모리를 통하여 상기 데이터를 바로 전송하는 제로 카피(Zero-Copy) 구현을 특징으 로 하는 iSCSI 타겟 시스템 상의 하드웨어 가속 장치.And the network controller implements a zero-copy implementation of directly transmitting the data through the local memory without going through another memory copy process. (a) 읽기 원하는 데이터를 디스크 스토리지 장치로부터 인출하여 로컬 메모리로 저장하는 단계; (a) retrieving desired data from the disk storage device and storing the data in local memory; (b) 상기 저장된 데이터의 TCP/IP 패킷을 처리하여 TCP/IP 스택 오프로딩 (offloading)을 수행하는 단계; 및(b) processing TCP / IP packets of the stored data to perform TCP / IP stack offloading; And (c) 상기 오프로딩된 데이터를 네트워크 시스템으로 전송하는 단계;를 포함하는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 읽기 명령 수행 방법. (c) transmitting the offloaded data to a network system. 제 7항에 있어서, 상기 (b) 단계는The method of claim 7, wherein step (b) (b1) 상기 로컬 메모리부터 상기 저장된 데이터를 인출하는 단계;(b1) extracting the stored data from the local memory; (b2) TOE 제어기에 의해, 상기 인출된 데이터의 TCP/IP 패킷을 처리하여 TCP/IP 스택 오프로딩(offloading)을 수행하는 단계; 및(b2) performing a TCP / IP stack offloading by processing a TCP / IP packet of the retrieved data by a TOE controller; And (b3) 상기 오프로딩된 데이터를 상기 로컬 메모리로 다시 저장하는 단계;로 이루어지는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 읽기 명령 수행 방법.(b3) storing the offloaded data back into the local memory; and executing the read command on the iSCSI target system. 제 8항에 있어서,  The method of claim 8, 상기 (b2) 단계는 상기 TOE 제어기에 의해, 메인 CPU의 간섭없이 상기 네트워크 상의 물리적 계층(MAC)을 다루면서, 상기 인출된 데이터의 TCP/IP 패킷을 처리하여 TCP/IP 스택 오프로딩을 수행하는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 읽기 명령 수행 방법.In the step (b2), the TCP controller processes the TCP / IP packet of the retrieved data and performs TCP / IP stack offloading while handling the physical layer (MAC) on the network without interference of the main CPU by the TOE controller. Method of performing a read command on the iSCSI target system, characterized in that. 제 9항에 있어서, 상기 (c) 단계에서 The method of claim 9, wherein in step (c) 데이터 전송시에 프로토콜 헤더 및 페이로드(payload)가 상기 로컬 메모리 내에서 연속적이지 않더라도 전송할 수 있는 스캐터/개더(Scatter/Gather) 기능,Scatter / Gather function that can transmit data header even if protocol header and payload are not continuous in the local memory, TCP, IP 또는 UDP 레이어에서 수행되는 체크섬 계산을 CPU 대신 처리하는 TCP/IP/UDP 체크섬 오프로딩(Checksum Offloading) 기능 그리고, TCP / IP / UDP Checksum Offloading, which handles checksum calculations performed on the TCP, IP or UDP layer on behalf of the CPU, and 상기 네트워크 시스템으로 데이터 전송시 다른 메모리 복사과정을 거치지 않고 상기 로컬 메모리를 통해 데이터를 바로 전송하는 제로 카피(Zero-Copy) 기능 중 적어도 어느 하나 이상을 가지는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 iSCSI 읽기 명령 수행 방법.ISCSI read command on the iSCSI target system, characterized in that it has at least one or more of the zero-copy (Zero-Copy) function to directly transfer data through the local memory without going through another memory copying process when transmitting data to the network system How to do it. (a) 네트워크 시스템으로부터 전송받은 데이터를 로컬 메모리로 저장하는 단계;(a) storing the data received from the network system into a local memory; (b) 상기 저장된 데이터의 TCP/IP 패킷을 처리하여 TCP/IP 스택 오프로딩 (offloading)을 수행하는 단계; 및(b) processing TCP / IP packets of the stored data to perform TCP / IP stack offloading; And (c) 상기 오프로딩된 데이터를 디스크 스토리지 장치로 저장하는 단계;를 포함하는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 쓰기 명령 수행 방법. (c) storing the offloaded data on a disk storage device. 제 11항에 있어서, 상기 (b) 단계는 The method of claim 11, wherein step (b) (b1) 상기 로컬 메모리부터 상기 데이터를 인출하는 단계; (b1) fetching the data from the local memory; (b2) TOE 제어기에 의해, 상기 인출된 데이터의 TCP/IP 패킷을 처리하여 TCP/IP 스택 오프로딩(offloading)을 수행하는 단계; 및 (b2) performing a TCP / IP stack offloading by processing a TCP / IP packet of the retrieved data by a TOE controller; And (b3) 상기 데이터를 상기 로컬 메모리에 다시 저장하는 단계;로 이루어지는 것을 특징으로 하는 iSCSI 타겟 시스템 상의 쓰기 명령 수행 방법.(b3) storing the data in the local memory again. 제 12항에 있어서, The method of claim 12, 상기 (c)단계는 데이터 저장시 XOR 엔진을 사용하여 복수의 디스크 스토리지 (RAID) 장치에서의 데이터 분산 처리를 위한 XOR 연산 및 iSCSI 프로토콜의 패리티연산의 수행을 특징으로 하는 iSCSI 타겟 시스템 상의 쓰기 명령 수행 방법.Step (c) is a write command performed on the iSCSI target system, characterized in that the XOR operation and the parity operation of the iSCSI protocol for data distribution processing in a plurality of disk storage (RAID) devices using the XOR engine during data storage. Way.
KR1020060038330A 2005-12-08 2006-04-27 Hardware acceleration apparatus for iscsi target system using toe and method for handling read/write command using the apparatus KR100723879B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/636,046 US7676607B2 (en) 2005-12-08 2006-12-08 Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050119578 2005-12-08
KR20050119578 2005-12-08

Publications (1)

Publication Number Publication Date
KR100723879B1 true KR100723879B1 (en) 2007-05-31

Family

ID=38278816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060038330A KR100723879B1 (en) 2005-12-08 2006-04-27 Hardware acceleration apparatus for iscsi target system using toe and method for handling read/write command using the apparatus

Country Status (1)

Country Link
KR (1) KR100723879B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101470857B1 (en) * 2012-11-13 2014-12-12 주식회사 유투앤 Network distributed file system and method using iSCSI storage system
KR101531564B1 (en) * 2013-11-27 2015-06-26 주식회사 유투앤 Method and System for load balancing of iSCSI storage system used network distributed file system and method
WO2022257587A1 (en) * 2021-06-08 2022-12-15 中兴通讯股份有限公司 Data processing method, toe hardware and computer-readable storage medium
CN116996592A (en) * 2023-09-27 2023-11-03 网络通信与安全紫金山实验室 Network card, data transmission processing method and data receiving processing method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050060801A (en) * 2003-12-17 2005-06-22 한국전자통신연구원 Socket compatibility layer for toe
KR20050065133A (en) * 2003-12-24 2005-06-29 한국전자통신연구원 Network card having zero-copy transmission function, server and method thereof
US20050281280A1 (en) 2004-03-10 2005-12-22 Zur Uri E Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney
KR20060066596A (en) * 2004-12-13 2006-06-16 한국전자통신연구원 An apparatus and method of data i/o acceleration for high speed data i/o

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050060801A (en) * 2003-12-17 2005-06-22 한국전자통신연구원 Socket compatibility layer for toe
KR20050065133A (en) * 2003-12-24 2005-06-29 한국전자통신연구원 Network card having zero-copy transmission function, server and method thereof
US20050281280A1 (en) 2004-03-10 2005-12-22 Zur Uri E Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney
KR20060066596A (en) * 2004-12-13 2006-06-16 한국전자통신연구원 An apparatus and method of data i/o acceleration for high speed data i/o

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101470857B1 (en) * 2012-11-13 2014-12-12 주식회사 유투앤 Network distributed file system and method using iSCSI storage system
KR101531564B1 (en) * 2013-11-27 2015-06-26 주식회사 유투앤 Method and System for load balancing of iSCSI storage system used network distributed file system and method
WO2022257587A1 (en) * 2021-06-08 2022-12-15 中兴通讯股份有限公司 Data processing method, toe hardware and computer-readable storage medium
CN116996592A (en) * 2023-09-27 2023-11-03 网络通信与安全紫金山实验室 Network card, data transmission processing method and data receiving processing method
CN116996592B (en) * 2023-09-27 2023-12-22 网络通信与安全紫金山实验室 Network card, data transmission processing method and data receiving processing method

Similar Documents

Publication Publication Date Title
US7676607B2 (en) Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus
US7664892B2 (en) Method, system, and program for managing data read operations on network controller with offloading functions
US7177912B1 (en) SCSI transport protocol via TCP/IP using existing network hardware and software
US8010707B2 (en) System and method for network interfacing
US9292209B2 (en) Multiple I/O request processing in a storage system
KR100823734B1 (en) Data acceleration apparatus for iSCSI and iSCSI storage system using the same
US7934021B2 (en) System and method for network interfacing
US8099470B2 (en) Remote direct memory access for iSCSI
US7475167B2 (en) Offloading data path functions
US20040210584A1 (en) Method and apparatus for increasing file server performance by offloading data path processing
US8788726B2 (en) Data transmission system, storage medium and data transmission program
US9544370B2 (en) Data transferring apparatus, data transmission system and data transmitting method
WO2022218160A1 (en) Data access system and method, and device and network card
KR100723879B1 (en) Hardware acceleration apparatus for iscsi target system using toe and method for handling read/write command using the apparatus
EP1460805B1 (en) System and method for network interfacing
WO2004021628A2 (en) System and method for network interfacing
US20120136958A1 (en) Method for analyzing protocol data unit of internet small computer systems interface
US10798159B2 (en) Methods for managing workload throughput in a storage system and devices thereof
KR100676674B1 (en) An apparatus and method of data I/O acceleration for high speed data I/O
US20060047868A1 (en) Method and system for efficiently using buffer space
US20050002389A1 (en) Method, system, and program for processing a packet to transmit on a network in a host system including a plurality of network adaptors
Pallampati iSCSI Performance over RDMA-enabled Network

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee