KR20100090629A - 네트워크 인터페이스장치 - Google Patents

네트워크 인터페이스장치 Download PDF

Info

Publication number
KR20100090629A
KR20100090629A KR20090131786A KR20090131786A KR20100090629A KR 20100090629 A KR20100090629 A KR 20100090629A KR 20090131786 A KR20090131786 A KR 20090131786A KR 20090131786 A KR20090131786 A KR 20090131786A KR 20100090629 A KR20100090629 A KR 20100090629A
Authority
KR
South Korea
Prior art keywords
connection
packet
port
transmission
context
Prior art date
Application number
KR20090131786A
Other languages
English (en)
Other versions
KR101101216B1 (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 후지쯔 가부시끼가이샤
Publication of KR20100090629A publication Critical patent/KR20100090629A/ko
Application granted granted Critical
Publication of KR101101216B1 publication Critical patent/KR101101216B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • 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]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

종래의 네트워크 인터페이스장치는, 최대 접속 수의 제한 철폐(撤廢)와 프로세서의 접속 확립 처리의 부하 경감의 양쪽을 만족할 수는 없었다.
NIC(13)(네트워크 인터페이스장치)는, 통신의 접속을 포트 번호로 식별하고, 포트마다 접속 상태를 주기억(12) 상에 마련한 포트 콘텍스트(context)에 의해 관리한다. NIC(13)는 상기 포트 콘텍스트를, 주기억 상에 마련된 포트테이블에 의해 관리한다. 이렇게 하여, 통신 접속의 확립·절단 처리를 NIC(13)에 오프-로드(off-road) 하고, 통신 접속의 관리를 주기억 상에서 행하는 것으로, 프로세서의 통신 처리의 부하를 저감할 수 있고, 또한, 유지가능한 통신 접속 수를 보다 많게 할 수 있다.
Figure P1020090131786
네트워크 인터페이스장치, 콘텍스트, 최대 접속 수, 부하경감

Description

네트워크 인터페이스장치{NETWORK INTERFACE DEVICE}
본 발명은 네트워크 인터페이스장치에 관한 것이다.
복수의 연산 노드가 네트워크를 통해서 접속된 구성의 병렬 계산기가 알려져 있다. 이러한 병렬 계산기에서 노드간의 저지연(低遲延) 통신을 실현하기 위해서는, 전(全)노드간에서 통신 제어를 위한 접속을 유지하는 것이 바람직하다.
병렬 계산기의 노드는, 네트워크에 접속하기 위한 네트워크 인터페이스장치( NIC: Network Interface Controller 또는 Network Interface Card)를 구비하고 있다. 노드는, 네트워크 인터페이스장치를 사용하여, 다른 노드와 네트워크를 통해서 통신을 행한다. 이것 때문에, 수만 노드 규모의 초병렬 계산기는, 몇만의 통신 접속을 유지하는 것이 가능한 네트워크 인터페이스장치가 필요하게 된다.
또한, Web 서버나 데이터 베이스 서버 등의 계산기는, 단말과의 통신에, 접속과 절단이 빈번하게 발생하는 통신 프로토콜(예를 들면, HTTP(Hyper Text Transfer Protocol))을 사용한다. 이러한 계산기에서는, 처리 속도향상을 위해서, 프로세서에 의한 통신의 접속·절단의 프로토콜 처리의 부하를 경감하는 것이 중요하다.
최근에는, 기가 비트(giga bit)·이터넷(Ethernet)(등록상표) 등으로 대표되는 바와 같이, 네트워크의 통신 속도의 향상이 현저하다. 이에 수반하여, 계산기의 프로세서에서는, 통신 처리의 비율이 높아지고, 애플리케이션(애플리케이션 프로그램)처리의 비율이 낮아진다고 하는 문제가 현재화(顯在化)되어 가고 있다. 이것 때문에, 프로세서에 의한 통신 처리의 일부를 네트워크 인터페이스장치에 맡기는 오프-로드(off-road) 기능의 설치가 일반화되고 있다. 이 오프-로드 기능에 관한 공공지식기술은, 일본국 특개2006-191537호 공개 공보나 일본국 특개2003-333076호 공개 공보에 개시되어 있다. 일본국 특개2006-191537호 공개 공보에는, NIC가 통신 처리를 행하는 오프-로드 엔진이 개시되어 있다. 또한, 일본국 특개2003-333076호 공개 공보에는, 프로세서가 통신 접속을 확립한 후, 통신 콘텍스트(context)를 NIC에 옮기는 것에 의해, 통신 처리를 접속 단위로 선택적으로 오프-로드하는 방식이 개시되어 있다.
[특허 문헌]
[특허 문헌 1] 일본국 특개2006-191537호 공개 공보
[특허 문헌 2] 일본국 특개2003-333076호 공개 공보
특허 문헌 1에 개시되어 있는 NIC는, 오프-로드 엔진에 탑재되는 메모리 용량이 프로세서의 주기억의 용량보다도 작다. 따라서, 특허 문헌 1은 노드간의 최대 통신 접속 수가 제한된다.
한편, 특허 문헌 2의 NIC는, 프로세서의 통신 접속 수 확립 처리의 부하가 커지게 된다. 이것 때문에, 특허 문헌 2는, 프로세서의 애플리케이션 처리 능력이 낮아진다.
본 발명의 목적은 네트워크를 통한 노드간의 통신에 있어서, 프로세서에 의한 통신접속의 확립과 절단의 처리를 대신 부담하는 것이 가능하고, 또한, 노드간에서 유지가능한 통신 접속 수를, 더욱 많게 할 수 있는 네트워크 인터페이스장치를 제공하는 것에 있다.
개시된 네트워크 인터페이스장치는, 컴퓨터에 접속되어, 네트워크를 통한 통신을 행한다.
개시된 네트워크 인터페이스장치는, 하기의 제 1 및 제 2 관리 수단과 제어 수단을 구비한다.
제 1 관리 수단은, 통신 접속을 포트 번호에 의해 식별하고, 포트마다 통신 접속의 상태를, 기억 수단에 저장되어 있는, 포트 번호에 대응시킨 콘텍스트(context)로 관리한다.
제 2 관리 수단은, 상기 콘텍스트의 저장 상태를 관리한다.
제어 수단은, 상기 콘텍스트를 참조하여, 포트간의 통신 접속의 확립 처리와 절단 처리를 실행한다.
개시된 네트워크 인터페이스장치는, 유지할 수 있는 통신 접속 수를 많게 할 수 있다. 또한, 프로세서에 의한 통신 접속의 확립 처리와 절단 처리를 대신 부담해서 실행하는 것으로, 프로세서의 통신 처리의 부하를 저감한다.
이하, 도면을 참조하면서, 본 발명의 실시예에 대해서 설명한다.
우선, 본 실시예에 이용되는 통신 접속에 관한 주요한 용어에 대해서 정의한다.
[포트]
포트는 이하와 같은 속성을 갖는다.
·포트는 통신 접속의 양단에 위치한다.
·포트에는, 통신 접속의 접속원으로서 지정되는 접속원 포트와, 통신 접속의 접속처로서 지정되는 접속처 포트의 2종류가 있다.
· 포트는, 각각의 애플리케이션에 상당하는 프로그램이며, 각 노드의 프로세서에서 실행된다. 여기서 「애플리케이션」은, OSI(Open System Interconnection)참조 모델의 세션층에 속하는 통신 프로그램에 의해 실현되는 통신 자원이며, 데이터의 송수신을 행하기 위한 가상적인 접속의 확립이나 해방을 행 하고, 애플리케이션층에 속하는 애플리케이션 등을 생각 할 수 있다.
[포트 번호]
포트 번호는, 각각의 애플리케이션이 포트를 특정하기 위한 식별 정보이다. 포트 번호는 구체적으로는, 예를 들면, 각 노드(10)의 프로세서(11)에서 실행되는 애플리케이션이 확립하고 있는 각각의 통신 접속을 식별하기 위한 번호이며, 각각의 통신접속에 일의적으로 할당된다. 본 실시예에서는, 예를 들면, 각 포트에 대하여, "0", "1", "2", … "n"(n은 임의의 정(正)의 정수)의 연속 번호를, 포트 번호로서 할당한다.
[통신 접속의 관리]
본 실시예는 통신 접속을 포트 번호에 결부시켜서 관리한다. 통신 접속은, 예를 들면, OSI참조 모델의 트랜스포트 층에서의 노드간(엔드·투·엔드 간)의 통신 접속이다. 본 실시예에서는, 포트 번호를 이용하여, 엔드·투·엔드 간에서의 통신을 제어한다. 본 실시예가 서포트하는 통신 접속은, 예를 들면, OSI(Open System Interconnection)참조 모델의 트랜스포트층의 프로토콜의 통신 접속, 또는, iSCSI(Internet Small Computer System Interface)프로토콜의 통신 접속 등이다.
[병렬 계산기의 시스템 구성]
도 1은 본 실시예를 적용한 병렬 계산기의 전체 시스템 구성을 나타낸 도면이다.
도 1에 나타낸 병렬 계산기(1)는, (n+1)개의 노드(10)(1O-O, 1O-1, … , 10-49∼10-51, … , 10-n)와 네트워크(20)를 구비하고 있다. 여기에서, n은 정의 정 수다.
(n+1) 개의 노드(10)는, 네트워크(20)를 통해서 서로 통신한다. 네트워크(20)는, 예를 들면, 상호접속망, LAN(Local Area Network) 등이다. 각 노드(10)는, 예를 들면, MPI(Message Passing Interface) 등에 근거하여 커맨드(command)나 데이터 등을 송수신한다. 노드(10) 사이에서 송수신 되는 커맨드나 데이터는, 예를 들면, 패킷에 의해 보내진다.
각 노드(10-i)(i=O∼n)는, 프로세서(11)(프로세서 O, 프로세서 1, …, 프로세서 n), 주기억(12) 및 NIC(13)를 구비하고 있다. 프로세서(11)는, 예를 들면, 마이크로 프로세서 및 그의 칩 셋 등을 구비한다. 주기억(12)은, 예를 들면, ROM(Read 0nly memory)이나 RAM(Random Access Memory) 등의 반도체 메모리이다. NIC(13)는, 예를 들면, 네트워크 인터페이스 컨트롤러나 네트워크 인터페이스 카드 등이다.
주기억(12)은 프로세서가 실행하는 OS(0perating System), 미들웨어, 애플리케이션 프로그램 등의 소프트웨어가 저장되는 영역 이외에, 통신접속의 확립이나 절단 등의 통신 처리에 사용되는 정보인 포트 콘텍스트를 저장하는 영역(포트 콘텍스트 저장 영역), 및 포트 콘텍스트를 관리하는 포트 테이블(포트 관리 테이블)을 저장하는 영역을 구비하고 있다. 포트 콘텍스트 및 포트 테이블의 상세한 것은, 후술한다.
NIC(13)는, 프로세서의 통신 처리를 오프-로드하는 기능을 구비하고 있다. NIC(13)에 의한 오프-로드 기능의 상세한 것은 후술한다. NIC(13)는 프로세서(11) 가 다른 노드(10)의 프로세서(11)에 송신하는 커맨드나 데이터를 주기억(12)으로부터 판독하고, 판독한 커맨드나 데이터를, 네트워크(20)를 통해서 다른 노드(10)의 NIC(13)에 송신한다. 또한, 다른 노드(10)의 NIC(13)가 송신하는 커맨드나 데이터를, 네트워크(20)를 통해서 수신하고, 수신한 커맨드나 데이터를 주기억(12)에 기입한다. 커맨드나 데이터의 송수신은, 예를 들면, 패킷을 이용해서 행하여진다.
도 1에는, 각 노드(10)의 주기억(12) 상에 포트 0으로부터 포트 3의 4개의 포트 엔트리를 구비한 포트 테이블(121)이 마련되어진 예를 나타내고 있다. 도 1에는, 노드(10-1)의 포트 0(포트 번호가 "0"인 포트)과 노드(10-51)의 포트 2(포트 번호가 "2"인 포트) 사이의 통신 접속 30이 모식적으로 나타나 있다. 통신 접속(30)은, 예를 들면, OSI 참조 모델의 트랜스포트층의 통신 접속이다. 도 1에 나타낸 바와 같이, 본 실시예의 포트 테이블(121)은, 포트 번호의 내림 순으로, 그 포트 번호에 대응하는 포트 엔트리를 저장한다.
[ NIC(13)의 하드웨어 구성]
도 2는 도 1의 NIC(13)의 구성의 일례를 나타낸 블록도이다. 도 2에 나타낸 바와 같이, NIC(13)는, PIO(Programmed Input/0utput) 제어부(131), DMA 제어부(132), 송신 지시 큐 제어부(133), 패킷 송신 처리부(134), 송신 완료 통지 큐 제어부(135), 패킷 수신 처리부(136), 수신 완료 통지 큐 제어부(137)를 구비하고 있다. DMA 제어부(132)는, 버스(138)를 통해서, 송신 지시 큐 제어부(133), 송신 완료 통지 큐 제어부(135), 패킷 송신 처리부(134), 패킷 수신 처리부(136) 및 수신 완료 통지 큐 제어부(137)와 접속되어 있다. 또한, PIO 제어부(131)와 송신 지 시 큐 제어부(133)는, 신호선(139)으로 접속되어 있다. 송신 지시 큐 제어부(133)와 패킷 송신 처리부(134)는, 신호선(140)으로 접속되어 있다. 패킷 송신 처리부(134)와 송신 완료 통지 큐 제어부(135)는, 신호선(141)으로 접속되어 있다. 패킷 수신 처리부(136)와 수신 완료 통지 큐 제어부(137)는, 신호선(142)으로 접속되어 있다.
도 3은 프로세서(11)의 주기억(12)의 구성 예를 나타낸 도면이다.
도 3에 나타낸 바와 같이, 주기억(12)에는, 포트 테이블(121), 포트 콘텍스트(123), 포트 버퍼(125), 송신 지시 큐(127), 송신 완료 통지 큐(128) 및 수신 통지 큐(129)가 마련되어 있다. 포트 테이블(121), 포트 콘텍스트(123), 포트 버퍼(125), 송신 지시 큐(127), 송신 완료 통지 큐(128) 및 수신 통지 큐(129)의 각 각의 구성·기능의 상세한 것은 후술한다.
PIO 제어부(131)는 전기적으로 프로세서(11)와 접속되어 있다. PIO 제어부(131)는, 프로세서(11)와의 사이에서 커맨드나 데이터 등의 송수신을 행한다. 또한, PI0 제어부(131)는, 필요에 따라서, 프로세서(11)에 인터럽트를 건다. DMA 제어부(132)는, 프로세서(11)를 통하지 않고, 프로세서(11)의 주기억(12)에 직접 액세스하고, 주기억(12)과의 사이에서 데이터의 전송을 행한다. 송신 지시 큐 제어부(133)는, DMA 제어부(132)를 통해서, 프로세서(11)의 주기억(12) 상에 마련되어진 송신 지시 큐(127)로부터, 「송신 지시」의 디스크립터를 판독한다. 그리고, 판독한 디스크립터에 기술되어 있는 송신 패킷의 작성에 필요한 정보를, 신호선(140)을 통해서 패킷 송신 처리부(134)에 보낸다. 패킷 송신 처리부(134)는, 송 신 지시 큐 제어부(133)로부터의 정보를 받으면, 받은 정보를 기초로, 제어 패킷 또는 전송 데이터 패킷(데이터통신 패킷)을 생성한다. 그리고, 생성한 패킷을, 네트워크(20)를 통해서, 송신 지시에 의해 지정된 노드(10)의 NIC(13)에 송신한다. 그리고, 패킷의 송신을 종료하면, 송신 완료한 패킷의 종별을, 신호선(141)을 통해서 송신 완료 통지 큐 제어부(135)에 통지한다.
송신 완료 통지 큐 제어부(135)는, 패킷 송신 처리부(134)로부터의 통지를 받으면, 「송신 완료 통지」의 디스크립터를 작성하고, 작성한 디스크립터를 DMA 제어부(132)을 통해서, 프로세서(11)의 주기억(12) 상에 마련되어진 송신 완료 통지 큐(128)에 기입한다.
패킷 수신 처리부(136)는, 네트워크(20)로부터, 송신처 노드(10)의 NIC(13)가 송신한 패킷을 수신한다. 그리고, 수신한 패킷이 데이터통신 패킷이었을 경우에는, 그 패킷로부터 전송 데이터를 취출하고, 취출한 전송 데이터를 DMA 제어부(132)를 통해서, 프로세서(11)의 주기억(12) 상에 마련되어진 포트 버퍼(125)에 기입한다. 또한, 패킷 수신 처리부(136)는, 패킷을 수신한 경우에는, 수신한 패킷의 종별을, 신호선(142)을 통해서 수신 완료 통지 큐 제어부(137)에 통지한다. 수신 완료 통지 큐 제어부(137)는, 패킷 수신 처리부(136)로부터 통지를 받으면, 「수신 통지」의 디스크립터를 작성하고, 작성한 디스크립터를, DMA 제어부(132)를 통해서 프로세서(11)의 주기억(12) 상에 마련되어진 수신 통지 큐(129)에 기입한다.
<포트 정의>
도 4는 본 실시예의 포트 정의를 나타낸 도면이다.
본 실시예에서는, 통신의 접속을, 포트 번호에 결부시켜서 관리한다. 통신 접속의 관리는, 포트 테이블(121), 포트 콘텍스트(123), 포트 버퍼(125)를 이용해서 실시된다.
포트 콘텍스트(123)는 포트의 통신 접속 상태를 관리하는 정보이다. 포트 버퍼(125)는, 송신하는 전송 데이터, 또는 수신한 전송 데이터를 저장하는 버퍼이다. 포트 테이블(121)은, 각 포트의 포트 콘텍스트(123)와 포트 엔트리(1211)를 관리하는 데이터이다. 포트 테이블(121)은, 각 포트의 포트 콘텍스트(123)와 포트 엔트리(1211)를, 포트 번호에 대응시켜서 관리하고 있다. 포트 테이블(121)의 엔트리인 포트 엔트리(1211)의 엔트리 번호는, 포트 번호에 대응하고 있다. 따라서, 포트 테이블(121)의 엔트리 번호가 "n"(n은 0 또는 정의 정수)의 엔트리에는, 포트 번호가 "n"인 포트 엔트리(1211)가 등록된다.
도 4에 나타낸 바와 같이, 포트 엔트리(1211)는, 「Enable」, 「TYPE」, 「Context Address」, 「Buffer Address」, 및 「Buffer Size」의 각 항목의 정보를 저장하고 있다. "Enable"은, 포트 엔트리(1211)가 유효한 것인지 아닌지를 나타낸 플래그이다. "Enab1e" 플래그는, 유효하면 1, 무효이면 O으로 설정된다. "TYPE"은, 「수신」 또는 「송신」의 어느 하나를 나타내는 정보이다. "Context Address"는, 대응하는 포트의 포트 콘텍스트(123)의 주기억(12) 상의 저장 어드레스를 나타낸다. "Buffer Address"는, 대응하는 포트의 포트 버퍼(125)의 선두 어드레스를 나타낸다. "Buffer Size"는, 포트 버퍼(125)의 사이즈(예를 들면, 바이 트 수)를 나타낸 정보이다.
[포트 콘텍스트(123)의 구성]
도 5는 포트 콘텍스트(123)의 데이터 구조의 일례를 나타낸 도면이다.
도 5에 나타낸 바와 같이, 포트 콘텍스트(123)는, 프로토콜 종별(1231)과 통신 상태(1232)의 각 정보를 가지고 있다. 프로토콜 종별(1231)은, 포트간의 통신에서 사용되는 통신 프로토콜의 종별을 나타낸 정보이다. 통신 상태(1232)는, 포트간의 통신 접속의 상태를 나타낸 정보이다. 통신 상태(1232)에는, 「대기 상태」, 「접속필 상태」, 「접속 요구필 상태」, 「절단 통지 수신필 상태」등이 있다.
<각 큐로 설정되는 디스크립터의 내용>
본 실시예에서는, 프로세서(11)의 통신 처리를 NIC(13)에 오프-로드 한다. 구체적으로는, 「통신 접속의 확립」, 「통신 접속의 절단」 및 「데이터통신(데이터 전송)」의 처리를, NIC(13)에 오프-로드 한다. 이 오프-로드의 설치는, 송신 지시 큐(127), 송신 완료 통지 큐(128) 및 수신 통지 큐(129)를 이용해서 행하여진다. 프로세서(11)와 NIC(13)는, 이들 큐에 대하여 디스크립터의 기입/판독을 행하는 것으로 정보를 교환하고, 오프-로드를 실현한다.
<송신 지시 큐(127)>
송신 지시 큐(127)는, 프로세서(11)가 NIC(13)에 대하여 「통신 접속의 확립(접속 요구)」, 「데이터 송신(데이터 전송)」 및 「통신 접속의 절단」을 지시하기 위해서 이용되는 큐다. 프로세서(11)가 송신 지시 큐(127)에 대하여 상기 3 개의 지시를 기입하고, 송신 지시 큐(127)에 기입된 지시를 NIC(13)가 송신 지시 큐(127)로부터 판독하는 것으로, 프로세서(11)로부터 NIC(13)에 대하여 3개의 지시가 통지된다. NIC(13)는, 프로세서(11)로부터의 지시를, 송신 지시 큐(127)를 통해서 받으면, 그 지시에 따른 송신 패킷을 작성하고, 작성한 송신 패킷을, 네트워크(20)를 통해서 통신 접속 상대인 NIC(13)에 송신한다. 이 송신 패킷에는, 예를 들면, 「접속 요구 패킷」, 「접속 응답 패킷」, 「전송 데이터 패킷」, 「절단 통지 패킷」 등이 있다.
도 6은 프로세서(11)에 의해 송신 지시 큐(127)에 기입되는 디스크립터의 데이터 구조를 나타내는 도면이다. 도 6의 (A)∼(C)에 나타낸 바와 같이, 본 실시예에서 송신 지시 큐(127)에 기입되는 디스크립터는 3종류이다.
도 6의 (A)에 나타낸 접속 요구 지시 디스크립터(1331)는, 프로세서(11)가 NIC(13)에 대하여 「접속 요구」를 지시하기 위해서, 프로세서(11)가 송신 지시 큐(127)에 기입하는 디스크립터이다. 접속 요구 지시 디스크립터(1331)는, 지시 ID(1331a), 접속원 포트 번호(1331b), 접속처 어드레스(1331c) 및 접속처 포트 번호(1331d)의 각 정보를 설정하는 필드를 구비하고 있다. 지시 ID(1331a)는, 프로세서(11)가 NIC(13)에 대하여 지시하는 「접속 요구」에 할당된 ID( IDentifier: 식별자)이다. 접속원 포트 번호(1331b)는 통신의 접속원의 포트의 포트 번호이다. 접속처 어드레스는, 통신의 접속처의 노드(10)가 사용하는 OSI 참조 모델의 네트워크층의 어드레스이다. 접속처 포트 번호(1331d)는 통신의 접속처의 포트의 포트 번호이다. 포트 번호는, 통신의 접속처, 다시 말해, 접속처 어드레스를 갖는 노 드(10d)에서 실행되는, 패킷의 송신원의 애플리케이션 프로그램에 할당된 포트 번호와 다름없다.
도 6의 (B)에 나타낸 데이터 전송 지시 디스크립터(1332)는, 지시 ID(1332a), 접속원 포트 번호(1332b), 데이터 선두 어드레스(1332c) 및 데이터 길이(1332d)의 각 정보를 포함하고 있다. 데이터 전송 지시 디스크립터(1332)는, 프로세서(11)가 NIC(13)에 대하여 「데이터 전송」을 지시하기 위해서, 프로세서(11)가 송신 지시 큐(127)에 기입하는 디스크립터이다. 지시 ID(1332a)는, 프로세서(11)가 NIC(13)에 대하여 지시하는 「데이터 전송」에 할당된 ID이다. 접속원 포트 번호(1332b)는, 통신의 접속원의 포트의 포트 번호이다. 데이터 선두 어드레스(1332c)는, 전송 데이터 패킷(데이터통신 패킷)로 설정하는 송신 데이터가 저장되어 있는 포트 버퍼(125)의 선두 어드레스이다. 데이터 길이(1332d)는, 상기 포트 버퍼(125)에 저장되어 있는 데이터의 사이즈이다.
도 6의 (C)에 나타낸 절단 통지 송신 지시 디스크립터(1333)는, 지시 ID(1333a)와 접속원 포트 번호(1333b)를 포함한다. 절단 통지 송신 지시 디스크립터(1333)는, 프로세서(11)가 NIC(13)에 대하여 「통신 접속의 절단」을 지시하기 위해서, 프로세서(11)가 송신 지시 큐(127)에 기입하는 디스크립터이다. 지시 ID(1333a)는, 프로세서(11)가 NIC(13)에 대하여 지시하는 「절단 통지 송신」에 할당된 ID이다. 접속원 포트 번호(1333b)는 통신의 접속원의 포트의 포트 번호이다.
<송신 완료 통지 큐(128)>
송신 완료 통지 큐(128)는, NIC(13)가 프로세서(11)로부터 지시된 패킷의 송 신 완료를, 프로세서(11)에 통지하기 위해서 이용되는 큐이다. NIC(13)는 프로세서(11)로부터 지시된 패킷의 송신을 완료하면, 「송신 완료 스테이터스」의 디스크립터를 송신 완료 통지 큐(128)에 기입한다. 프로세서(11)는, 송신 완료 통지 큐(128)로부터 송신 완료 스테이터스를 판독하는 것으로, NIC(13)가 프로세서(11)로부터 지시된 패킷을, 통신 접속 상대인 NIC(13)에 대하여 송신 완료한 것을 확인한다.
도 7은 NIC(13)의 송신 완료 통지 큐 제어부(134)에 의해서 송신 완료 통지 큐(128)에 기입되는 송신 완료 스테이터스의 디스크립터의 데이터 구조를 나타낸 도면이다. 도 7의 (A)에 나타낸 접속 요구 송신 지시 완료 디스크립터(1351)는, 프로세서(11)로부터 NIC(13)에 대하여 지시된 「접속 요구 송신」에 대한 NIC(13)의 처리 결과를 나타낸 디스크립터이다. 접속 요구 송신 지시 완료 디스크립터(1351)는, 스테이터스 코드(status code)(1351a)를 구비하고 있다. 스테이터스 코드(1351a)는, NIC(13)의 처리 결과가 "정상" 또는 "에러"인지를 나타낸 코드이다. 접속 요구 송신 지시 완료 디스크립터(1351)는, NIC(13)의 송신 완료 통지 큐 제어부(134)에 의해, 접속 요구 송신에 대한 「송신 완료 스테이터스」로서 송신 완료 통지 큐(128)에 기입된다. NIC(13)는 프로세서(11)가 송신 지시 큐(127)에 기입된 「접속 요구」를 송신 지시 큐(127)로부터 판독하면, 접속 요구 패킷을, 네트워크(20)를 통해서 접속처의 NIC(13)에 송신한다. 그리고, 접속 요구 패킷의 송신 처리 결과를 스테이터스 코드(1351a)로 설정한 접속 요구 송신 지시 완료 디스크립터(1351)를 작성하고, 작성한 접속 요구 디스크립터(1351)를 송신 완료 통지 큐(128)에 기입한다. 접속 요구 송신 지시 완료 디스크립터(1351)의 스테이터스 코드(1351a)는, 접속 요구 패킷의 송신이 정상으로 종료했을 경우에는 "성공"을 나타낸 코드(예를 들면 "0")로 설정된다. 한편, 접속 요구 패킷의 송신이 실패했을 경우에는, 접속 요구 송신 지시 완료 디스크립터(1351)의 스테이터스 코드(1351a)는 "에러"을 나타낸 코드(예를 들면 "1")이 설정된다. 프로세서(11)는 송신 완료 통지 큐(128)로부터 접속요구 송신 지시 완료 디스크립터(1351)를 판독한다. 그리고, 그 스테이터스 코드(1351a)를 참조하는 것으로, NIC(13)에 송신을 지시한 접속 요구 패킷이, 접속처의 노드(10)의 NIC(13)에 정상으로 송신된 것인지 아닌지를 확인한다.
도 7의 (B)에 나타낸 데이터 전송 지시 완료 디스크립터(1352)는, 프로세서(11)로부터 NIC(13)에 대하여 지시된 「데이터 전송」에 대한 NIC(13)의 처리 결과를 나타낸 디스크립터이다. 데이터 전송 지시 완료 디스크립터(1352)는, 스테이터스 코드(1352a)와 송신 데이터 길이(1352b)를 구비하고 있다. 스테이터스 코드(1352a)는, NIC(13)의 처리 결과가 "정상" 또는 "에러"인지를 나타내는 코드이다. 또한, 송신 데이터 길이(1352b)는, 전송 데이터의 길이를 나타낸 정보이다. 데이터 전송 지시 완료 디스크립터(1352)는, NIC(13)의 송신 완료 통지 큐 제어부(134)에 의해, 전송 데이터 송신의 「송신 완료 스테이터스」로서 송신 완료 통지 큐(128)에 기입된다.
NIC(13)는, 프로세서(11)가 송신 지시 큐(127)에 기입한 「데이터 전송」을 송신 지시 큐(127)로부터 판독하면, 데이터를 전송하는 포트가 "접속 요구필 상태" 인 것을 확인한다. 그리고, 포트의 상태의 확인을 종료하면, 포트 버퍼(125)로부터 전송 데이터를 판독한다. 그리고, 판독한 전송 데이터가 설정된 전송 데이터 패킷을 생성하고, 생성한 전송 데이터 패킷을, 네트워크(20)를 통해서, 접속처의 노드(10)의 NIC(13)에 송신한다. NIC(13)는, 전송 데이터 패킷의 송신 처리가 종료하면, 데이터 전송 지시 완료 디스크립터(1352)를 작성한다. 데이터 전송 지시 완료 디스크립터(1352)는, 전송 데이터 패킷의 송신 처리 결과가 스테이터스 코드(1352a)로 설정되어, 전송 데이터의 데이터 길이가 송신 데이터 길이(1352b)로 설정된 것이다. NIC(13)는, 작성한 데이터 전송 지시 완료 디스크립터(1352)를 송신 완료 통지 큐(128)에 기입한다.
도 7의 (C)에 나타낸 절단 통지 송신 완료 디스크립터(1353)는, 프로세서(11)로부터 NIC(13)에 대하여 지시된 「절단 통지 송신」에 대한 NIC(13)의 처리 결과를 나타낸 디스크립터이다. 절단 통지 송신 완료 디스크립터(1353)는 스테이터스 코드(1353a)를 구비하고 있다. 스테이터스 코드(1353a)는, 프로세서(11)로부터 NIC(13)에 대하여 지시된 「절단 통지 송신」에 대한 NIC(13)의 처리 결과를 나타내는 코드이다. 절단 통지 송신 완료 디스크립터(1353)는, NIC(13)에 의해, 절단 통지 송신의 「송신 완료 스테이터스」로서, 송신 완료 통지 큐(128)에 기입된다.
NIC(13)는, 프로세서(11)가 송신 지시 큐(127)에 기입한 「절단 통지 송신」을 송신 지시 큐(127)로부터 판독하면, 절단 통지 패킷을, 네트워크(20)를 통해서 접속처의 NIC(13)에 송신한다. 그리고, 절단 통지 패킷의 송신 처리가 종료하 면, 송신 처리 결과가 스테이터스 코드(1353a)로 설정된, 절단 통지 송신 완료 디스크립터(1353)를 작성하고, 작성한 절단 통지 송신 완료 디스크립터(1353)를 송신 완료 통지 큐(128)에 기입한다. 절단 통지 송신 완료 디스크립터(1353)의 스테이터스 코드(1353a)는, 절단 통지 패킷의 송신이 정상으로 종료한 경우에는 "성공"을 나타내는 코드(예를 들면 "0")로 설정된다. 한편, 접속 요구 패킷의 송신에 실패한 경우에는, 절단 통지 송신 완료 디스크립터(1353)의 스테이터스 코드(1353a)에 "에러"을 나타내는 코드(예를 들면 "1")가 설정된다. 프로세서(11)는, 송신 완료 통지 큐(128)로부터 절단 통지 송신 완료 디스크립터(1353)를 판독한다. 그리고, 절단 통지 송신 완료 디스크립터(1353)를 참조하여, NIC(13)에 송신을 지시한 절단 통지 패킷이, 접속처의 노드(10)의 NIC(13)에 정상으로 송신된 것인지 아닌지를 확인한다.
<수신 통지 큐(129)>
수신 통지 큐(129)는, NIC(13)가, 통신 접속 상대인 NIC(13)로부터 수신한 패킷의 종류를, 프로세서(11)에 통지하기 위해서 사용되는 큐이다. NIC(13)는, 통신 접속 상대인 NIC(13)로부터 패킷을 수신하면, 그 수신 패킷의 종류에 따른 수신 스테이터스를 수신 통지 큐(129)에 기입한다. 프로세서(11)는, 수신 통지 큐(129)로부터 수신 스테이터스를 판독하고, 판독한 수신 스테이터스의 내용을 분석하는 것으로, 통신 접속 상대인 노드(10)의 프로세서(11)가 송신해 온 통지의 내용을 판단한다. 수신 패킷의 종류는, 「접속 요구 패킷」, 「접속 응답 패킷」, 「전송 데이터 패킷」, 「절단 통지 패킷」등이다. 한편, 이들 패킷은 제어 패킷에 속한 다.
도 8은 NIC(13)의 수신 완료 통지 큐 제어부(137)에 의해 수신 통지 큐(129)에 기입되는 수신 스테이터스를 나타낸 디스크립터의 데이터 구조를 나타낸 도면이다. 도 8의 (A)∼(D)에 나타낸 바와 같이, 패킷의 송신측 또는 수신측인 NIC(13)의 수신 통지 큐(129)에 기입되는 디스크립터는 주로 4종류이다.
[접속 요구 디스크립터]
도 8의 (A)에 나타낸 접속 요구 디스크립터(1371)는, NIC(13)가 접속 요구 패킷을 수신했을 때에, 통신 접속 상대로부터의 「접속 요구」를 자신의 노드(10)의 프로세서(11)에 통지하기 위해서 수신 통지 큐(129)에 기입하는 디스크립터이다.
접속 요구 디스크립터(1371)는, 수신 통지 ID(1371a), 포트 번호(1371b), 요구원 어드레스(1371c) 및 요구원 포트 번호(1371d)의 각 정보를 포함하고 있다. 수신 통지 ID(1371a)는, 「접속 요구」의 수신 통지에 할당된 ID(식별자)이다. 포트 번호(1371b)는, 제어 패킷에 설정되어 있는 「접속처 포트 번호」와 다름없다. 요구원 어드레스(1371c)는, 접속 요구 패킷에 설정되어 있는 「접속원 어드레스」와 다름없다. 요구원 포트 번호(1371d)는, 접속 요구 패킷에 설정되어 있는 「접속원 포트 번호」와 다름없다. 한편, 접속 요구 패킷의 상세한 것에 대해서는 후술한다.
[접속 응답 디스크립터]
도 8의 (B)에 나타낸 접속 응답 디스크립터(1372)는, NIC(13)가, 「접속 응 답 패킷」을 수신했을 때에, 그 수신을 프로세서(11)에 통지하기 위해서, 수신 통지 큐(129)에 기입하는 디스크립터이다.
접속 응답 디스크립터(1372)는, 수신 통지 ID(1372a), 포트 번호(1372b), 응답원 어드레스(1372c) 및 응답원 포트 번호(1372d)의 각 정보를 포함하고 있다. 수신 통지 ID(1372a)는, 「접속 응답」의 수신 통지 ID에 할당된 ID이다. 포트 번호(1372b)는, 접속 응답 패킷의 「접속처 포트 번호」의 필드에 설정되어 있는 포트 번호이다. 응답원 어드레스(1372c)는, 접속 응답 패킷의 「접속원 어드레스」의 필드에 설정되어 있는 어드레스이다. 응답원 포트 번호(1372d)는, 접속 응답 패킷의 「접속원 포트 번호」의 필드에 설정되어 있는 포트 번호이다. 한편, 접속 응답 패킷의 상세한 것에 대해서는 후술한다.
[데이터 전송 디스크립터]
도 8의 (C)에 나타낸 데이터 전송 디스크립터(1373)는, NIC(13)가, 「전송 데이터 패킷」을 수신한 때에, 그 수신을 프로세서(11)에 통지하기 위해서, 수신 통지 큐(129)에 기입하는 디스크립터이다. 데이터 전송 디스크립터(1373)는, 수신 통지 ID(1373a), 포트 번호(1373b), 데이터 선두 어드레스(1373c) 및 데이터 길이(1373d)의 각 정보를 포함하고 있다. 수신 통지 ID(1373a)는, 「전송 데이터」의 수신 통지에 할당된 ID이다. 포트 번호(1373b)는, 전송 데이터 패킷에 설정되어 있는 「접속처 포트 번호」와 다름없다. 데이터 선두 어드레스(1373c)는, NIC(13)에 의해 전송 데이터 패킷으로부터 취출되어 포트 버퍼(125)에 저장된 전송 데이터의 포트 버퍼(125) 내에서의 선두위치를 나타낸 어드레스이다. 데이터 길 이(1373d)는, 포트 버퍼(125)에 저장되어 있는 전송 데이터 데이터 길이이다. 한편, 전송 데이터 패킷의 상세한 것에 대해서는 후술한다.
[절단 통지 디스크립터]
도 8의 (D)에 나타낸 절단 통지 디스크립터(1374)는, NIC(13)가, 「절단 통지 패킷」를 수신한 때에, 그 수신을 프로세서(11)에 통지하기 위해서, 수신 통지 큐(129)에 기입하는 디스크립터이다. 수신 통지 ID(1374a)는, 「절단 통지」의 수신 통지에 할당된 ID이다. 포트 번호(1374b)는, 절단 통지의 수신처의 포트 번호(접속원 포트 번호)이다. 이것은, 절단 통지 패킷에 설정되어 있는 「접속원 포트 번호」와 다름없다.
[제어 패킷]
도 9는 상기 제어 패킷 데이터 구조를 나타낸 도면이다.
도 9에 나타낸 바와 같이, 제어 패킷(50)은, 네트워크층 헤더(510)와 트랜스포트층 헤더(520)를 구비하고 있다. 네트워크층 헤더(510)는, OSI참조 모델의 네트워크층의 헤더에 상당하는 헤더이다. 트랜스포트층 헤더(520)는, OSI 참조 모델의 트랜스포트층의 헤더에 상당하는 헤더이다.
네트워크층 헤더(510)는, 패킷 길이(511), 접속처 어드레스(512) 및 접속원 어드레스(513)를 구비하고 있다. 패킷 길이(511)는, 제어 패킷(500) 전체의 사이즈(예를 들면, 바이트 길이)이다. 접속처 어드레스(512)는, 제어 패킷(50)의 송신처의 노드(10)의 네트워크층의 어드레스(예를 들면, IP 어드레스)이다. 접속원 어드레스(513)는, 제어 패킷(50)을 송신하는 노드(10)의 네트워크층의 어드레스(예를 들면, IP 어드레스)이다.
트랜스포트층 헤더(520)는, 접속처 포트 번호(521), 접속원 포트 번호(522), 프로토콜 종별(523) 및 패킷 종별(524)을 구비하고 있다. 접속처 포트 번호(521)는, 통신 접속의 접속처의 애플리케이션 프로그램의 포트 번호이다. 접속원 포트 번호(522)는, 통신접속의 접속원의 애플리케이션 프로그램의 포트 번호이다. 프로토콜 종별(523)은, 통신 접속으로 사용하는 트랜스포트층의 프로토콜의 종별을 나타낸 정보이다. 패킷 종별(524)은, 통신 접속으로 사용되는 제어 패킷의 종별을 나타낸 정보이다. 본 실시예가 사용하는 제어 패킷은, 「접속 요구 패킷」, 「접속응답 패킷」 및 「절단 통지 패킷」등이다. 프로토콜 종별(523)은, 이들의 제어 패킷의 종별을 나타낸다. 바꾸어 말하면, 제어 패킷(50)을 수신했을 때, 패킷 종별(524)로 설정되어 있는 정보를 참조하는 것으로, 제어 패킷(50)의 종별을 판별할 수 있다.
[전송 데이터 패킷]
도 10은 상기 전송 데이터 패킷의 데이터 구조를 나타낸 도면이다.
도 10에 나타낸 바와 같이, 전송 데이터 패킷(데이터통신 패킷)(60)은, 네트워크층 헤더(610), 트랜스포트층 헤더(620) 및 트랜스포트층 데이터(630)를 구비하고 있다.
네트워크층 헤더(610)는, 패킷 길이(611), 접속처 어드레스(612) 및 접속원 어드레스(613)를 구비하고 있다. 패킷 길이(611)는, 전송 데이터 패킷 전체의 사이즈(예를 들면, 바이트 길이)를 나타낸 정보이다. 접속처 어드레스(612)와 접속 원 어드레스(613)는, 각각 제어 패킷(50)의 네트워크층 헤더(510)의 접속처 어드레스(512)와 접속원 어드레스(513)와 같다.
트랜스포트층 헤더(620)는, 접속처 포트 번호(621), 접속원 포트 번호(622), 프로토콜 종별(623) 및 패킷 종별(624)을 구비하고 있다. 접속처 포트 번호(621), 접속원 포트 번호(622) 및 프로토콜 종별(623)은, 제어 패킷(50)의 트랜스포트층 헤더(520)의 접속처 포트 번호(521), 접속원 포트 번호(522) 및 프로토콜 종별(523)과 같다. 패킷 종별(624)은 전송 데이터 패킷(60)의 종별을 나타낸 정보이다.
트랜스포트층 데이터(630)는, 전송 데이터 패킷(60)에 의해 운반되는 트랜스포트층의 프로토콜(예를 들면, TCP(Transmission Contro1 Protoco1) 등)의 데이터이다.
[동작]
그 다음에, 본 실시예의 동작을 설명한다.
<전체 동작>
도 11은 본 실시예에서의 편방향 통신의 동작을 나타낸 시퀀스도이다.
도 11은 본 실시예의 시스템에서, 도 1에 나타낸 접속원의 노드(10)(이하, 노드(10s)로 기재)로부터 도 1에 나타낸 접속처의 노드(10)(이하, 노드(10d)로 기재)에 데이터가 전송될 경우의 시퀀스를 나타내고 있다. 도 11에서, 접속원의 노드(10s)의 프로세서(11)와 NIC(13)는, 각각 프로세서(11s), NIC(13s)로 표기되어 있다. 또한, 접속처의 노드(10d)의 프로세서(11)와 NIC(13)는, 각각 프로세 서(11d), NIC(13d)로 표기되어 있다.
접속원의 노드(10s)의 프로세서(11s)에서 실행중의 포트(애플리케이션)로부터 접속처의 노드(10d)의 프로세서(11d)에서 실행중의 포트(애플리케이션)에의 데이터 전송은, 이하에 기술하는 순서에 따라서 행하여진다.
(1) 접속원의 노드(10s)의 프로세서(11s)(이하, 접속원 프로세서(11s)로 기재)는, 자신의 노드(10s)의 NIC(13s)(이하, 접속원 NIC(13s)로 기재)에 「접속 요구 지시」를 통지한다.
(2) 접속원 NIC(13s)는, 접속원 프로세서(11s)로부터 접속 요구 지시를 받으면, 「접속 요구」를, 접속처의 노드(10d)의 NIC(13d)(이하, 접속처 NIC(13d)로 기재)에 송신한다.
(3) 접속처 NIC(13d)는, 접속원 NIC(13s)로부터 접속 요구를 받으면, 접속 허가의 응답(접속 허가 응답)을, 접속처 NIC(13s)에 회신한다.
(4) 접속처 NIC(13d)는, 계속해서, 자신의 노드(10d)의 프로세서(11d)(이하, 접속처 프로세서(11d))에, 접속 요구의 수신을 통지한다.
(5) 접속원 NIC(13s)는, 접속처 NIC(13d)로부터 접속 허가 응답을 받으면, 접속 허가 응답의 수신(접속 응답 수신)을 접속원 프로세서(11s)에 통지한다.
(6) 접속원 프로세서(11s)는, 접속원 NIC(13s)로부터의 접속 응답 수신의 통지를 받으면, 접속원 NIC(13s)에 「데이터 전송」을 지시한다.
(7) 접속원 NIC(13s)는, 접속원 프로세서(11s)로부터의 데이터 전송 지시를 받으면, 접속원 프로세서(11s)에 의해 지시된 「전송 데이터」를 접속처 NIC(13d) 에 송신한다.
(8) 접속처 NIC(13d)는, 접속원 NIC(13s)로부터 전송 데이터를 수신하면, 그 수신(전송 데이터 수신)을 접속처 프로세서(11d)에 통지한다. 접속원 프로세서(11s)가, 모든 전송 데이터를 접속처 프로세서(11d)에 송신 종료할 때까지, 상기 (6)∼(8)의 순서를 되풀이한다.
(9) 접속원 프로세서(11s)는, 전(全)전송 데이터를 접속처 프로세서(11d)에 송신하면,「절단 통지」의 송신을 접속원 NIC(13s)에 지시한다.
(10) 접속원 NIC(13s)는, 접속원 프로세서(11s)로부터의 절단 통지 송신 지시를 받으면, 「절단 통지」를 접속처 NIC(13d)에 송신한다.
(11) 접속처 NIC(13d)는, 접속원 NIC(13s)로부터의 절단 통지를 수신하면, 그 수신(절단 통지 수신)을 접속처 프로세서(11d)에 통지한다.
상기 (1)∼(11)의 순서의 실행에 의해, 접속원 NIC(13s)와 접속처 NIC(13d) 사이에 통신 접속의 접속이 확립되어, 접속원 프로세서(11s)로부터 접속처 프로세서(11d)에 데이터가 전송된다. 그리고, 접속원 프로세서(11s)가 모든 전송 데이터를 접속처 프로세서(11d)에 송신하면, 접속원 NIC(13s)와 접속처 NIC(13d) 사이의 통신 접속이 절단된다. 통신 접속은, OSI참조 모델의 트랜스포트층의 통신 접속이다.
상술한 바와 같이, 본 실시예는, 데이터 전송을 위한 통신의 접속과 확립의 처리를, 접속원 NIC(13s) 및 접속처 NIC(13d)가 실행한다. 이때, 프로세서(11)와 NIC(13) 사이의 지시나 통지는, 상술한 포트 테이블(121), 포트 콘텍스트(123), 포 트 버퍼(125)를 이용하여 행하여진다. 이들 구성 요소 121, 123, 125는 포트 번호에 관련시켜서 관리된다.
그 다음에, 상기 (1)∼(11)의 시퀀스에서의 각 순서의 동작을 상세하게 설명한다.
<접속 요구 송신>
도 12는 접속원 프로세서(11s)가, 통신 접속을 확립하기 위해서, 접속원 NIC(13s)에 대하여 「접속 요구」를 지시하는 동작을 나타낸 도면이다. 도 12에 나타낸 처리 순서를 설명한다.
(1) 초기 설정
접속원 프로세서(11s)는, 포트 콘텍스트(123)를 주기억(12)(이후, 주기억(12s)으로 기재) 상에 확보하고, 그 포트 콘텍스트(123)의 통신 상태(1232)를 "대기 상태"로 설정한다((1)-1). 그리고, 이 포트 콘텍스트(123)를 주기억(12s) 상의 포트 테이블(121)에 등록한다((1)-2).
(2) 접속 요구 지시
접속원 프로세서(11s)는, 접속 요구 송신 지시의 디스크립터(1331)를 송신 지시 큐(127)에 기입한다.
(3) 접속 요구 송신 지시 판독
접속원 NIC(13s)는, 송신 지시 큐(127)로부터 접속 요구 송신 지시의 디스크립터(1331)를 판독한다.
(4) 포트 테이블 판독
접속원 NIC(13s)는, 접속 요구 송신 지시의 디스크립터(1331)로부터 접속원 포트 번호(1331b)를 판독한다. 그리고, 판독한 포트 번호(1331b)에 대응하는 포트 테이블(121)의 포트 엔트리(1211)로부터 접속원 포트의 포트 콘텍스트(123)의 저장 어드레스를 판독한다.
(5) 포트 콘텍스트 판독
접속원 NIC(13s)는, 판독한 저장 어드레스에서 포트 콘텍스트(123)를 판독하고, 포트 콘텍스트(123)에 기입된 통신 상태(1232)가 "대기 상태"로 설정되어 있는 것을 확인한다.
(6) 접속 요구 패킷 송신
접속원 NIC(13s)는, 접속처 NIC(13d) 당의 접속 요구 패킷(50cd)을 작성하고, 작성한 접속 요구 패킷(50cd)을 네트워크(20)에 송신한다. 접속 요구 패킷(50cd)은, 도 9에 나타낸 형식의 제어 패킷(50)이며, 패킷 종별(624)에는 "접속 요구"가 설정되어 있다.
(7) 포트 콘텍스트 갱신
접속원 NIC(13s)는, 포트 콘텍스트(123)의 통신 상태(1232)를 "접속 요구필 상태"로 갱신한다.
(8) 송신 완료 통지 기입
접속원 NIC(13s)는, 송신 완료 통지 큐(128)에 "송신 완료 스테이터스"의 디스크립터를 기입한다. 송신 완료 스테이터스의 디스크립터는, 도 7의 (A)에 나타낸 형식의 디스크립터(1351)이다.
(9) 송신 완료 통지 판독
접속원 프로세서(11s)는, 송신 완료 통지 큐(128)로부터 송신 완료 스테이터스의 디스크립터를 판독한다. 접속원 프로세서(11s)는, 송신 완료 스테이터스의 디스크립터를 참조하여, 접속처 프로세서(11d)에 접속 요구 패킷(50cd)이 정상으로 송신되었는지 조사한다. 접속원 프로세서(11s)는, 송신 완료 스테이터스가 "정상"으로 설정되어 있으면, 접속처 프로세서(11d)에 접속 요구 패킷(50cd)이 정상으로 송신되었다고 판단한다. 한편, 송신 완료 스테이터스가 "에러"로 설정되어 있으면, 접속원 NIC(13s)이 접속요구 패킷(50cd)의 송신에 실패했다고 판단한다.
<접속 요구 수신>
도 13은 접속처 NIC(13d)가, 접속원 NIC(13s)로부터 접속 요구 패킷(50cd)을 수신하고, 접속처 NIC(13d)에 「접속허가」의 응답 패킷을 송신하는 동작을 나타낸 도면이다. 도 13에 나타낸 처리 순서를 설명한다.
(1) 초기 설정
접속처 NIC(13d)는, 포트 콘텍스트(123)를 주기억(12)(이후, 주기억(12d)으로 기재) 상에 확보하고, 포트 콘텍스트(123)의 통신 상태(1232)를 "대기 상태"로 설정한다((1)-1). 그리고, 포트 콘텍스트(123)를 주기억(12d) 상의 포트 테이블(121)에 등록한다((1)-2).
(2) 접속 요구 패킷 수신
접속처 NIC(13d)는, 네트워크(20)로부터, 접속원 NIC(13s)가 송신한 접속 요구 패킷(50cd)을 수신한다.
(3) 포트 테이블 판독
접속처 NIC(13d)는, 접속 요구 패킷(50cd)에 기입된 접속처 포트 번호(1331d)의 필드로부터 포트 번호를 판독하고, 포트 테이블(121)의 포트 번호에 대응하는 포트 엔트리(1211)를 참조한다. 그리고, 포트 엔트리(1211)의 「Context Address」에 설정되어 있는 주기억(12d)의 어드레스를 판독한다. 이 어드레스는, 포트 번호가 할당되어 있는 접속처 포트의 포트 콘텍스트(123)의 주기억(12d) 상의 저장 어드레스(콘텍스트 저장 어드레스)이다.
(4) 포트 콘텍스트 판독
접속처 NIC(13d)는, 주기억(12d) 상의 접속처 포트의 콘텍스트 저장 어드레스로부터, 접속처 포트의 포트 콘텍스트(123)를 판독하고, 그 통신 상태(1232)가 "대기 상태"로 되어 있는 것을 확인한다.
(5) 접속 응답 패킷 송신
접속처 NIC(13d)는, 통신 상태의 확인 후, 접속 허가의 응답 패킷(50ca)을 작성하고, 작성한 응답 패킷(50ca)을 네트워크(20)에 송신한다. 접속 허가의 응답 패킷(50ca)은 도 9에 나타낸 형식의 제어 패킷(50)이며, 그 패킷 종별(624)에는 "접속 허가"가 설정되어 있다.
(6) 포트 콘텍스트 갱신
접속처 NIC(13d)는, 포트 콘텍스트(123)를 "접속 요구필 상태"로 갱신한다.
(7) 수신 통지 기입
접속처 NIC(13d)는, 주기억(12d) 상의 수신 통지 큐(129)에 "수신 스테이터 스"의 디스크립터를 기입한다. 이 디스크립터는, 도 8의 (A)에 나타낸 디스크립터(1371)이다.
(8) 수신 통지 판독
접속처 프로세서(11d)는, 수신 통지 큐(129)로부터 수신 스테이터스의 디스크립터를 판독한다. 접속처 프로세서(11d)는, 수신 스테이터스가 "정상"으로 설정되어 있을지 조사한다. 그리고, 수신 스테이터스가 "정상"으로 설정되어 있으면, 접속처 NIC(13d)가, 접속원 프로세서(11s)로부터 송신된 접속 요구 패킷(50cd)을 정상으로 수신했다고 판단한다. 한편, 수신 스테이터스가 "에러"이면, 상기 접속 요구 패킷(50cd)의 수신에 실패했다고 판단한다.
한편, 접속처 NIC(13d)는, 상기 (4)에서 접속처 포트의 포트 콘텍스트(123)의 통신 상태(1232)가 "대기 상태"로 되어 있지 않다고 인식했을 경우에는, 상기 (5)에서 접속 거부의 응답 패킷을 네트워크(20)에 송신한다.
<접속 요구 응답 수신>
도 14는 접속원 NIC(13s)가, 접속처 NIC(13d)로부터 「접속 허가」의 응답 패킷(50ca)을 수신했을 때의 동작을 나타낸 도면이다. 도 14에 나타낸 처리 순서를 설명한다.
(1) 접속 응답 패킷 수신
접속원 NIC(13s)는 네트워크(20)로부터 「접속 허가」의 응답 패킷(50ca)을 수신한다.
(2) 포트 테이블 판독
접속원 NIC(13s)는, 수신한 응답 패킷(50ca)의 접속처 포트 번호(1331d)의 필드로부터 포트 번호를 판독한다. 그리고, 판독한 포트 번호에 대응하는 주기억(12s) 상의 포트 테이블(121)의 포트 엔트리(1211)의 「Context Address」의 필드로부터 어드레스를 판독한다.
(3) 포트 콘텍스트 판독
접속원 NIC(13s)는, 판독한 주기억(12s) 상의 어드레스를 액세스하고, 그 어드레스로부터 포트 콘텍스트(123)를 판독한다. 그리고, 판독한 포트 콘텍스트(123)의 통신 상태(1232)가 "접속 요구필 상태"인 것을 확인한다.
(4) 포트 콘텍스트 갱신
접속원 NIC(13s)는, 통신 상태의 확인 후, 주기억(12s) 상의 포트 콘텍스트(123)의 통신 상태(1232)를 "접속필 상태"로 갱신한다.
(5) 수신 통지 기입
접속원 NIC(13s)는, 주기억(12s) 상의 수신 통지 큐(129)에 「수신 스테이터스」의 디스크립터를 기입한다. 이 수신 스테이터스의 디스크립터는, 도 8의 (A)에 나타낸 형식의 디스크립터(1371)이다.
(6) 수신 통지 판독
접속원 프로세서(11s)는, 수신 통지 큐(129)로부터 「수신 스테이터스」의 디스크립터를 판독한다. 접속처 프로세서(11s)는, 수신 스테이터스가 "정상"으로 설정되어 있을지 조사한다. 그리고, 수신 스테이터스가 "정상"으로 설정되어 있으면, 접속처 프로세서(11s)가, 「접속 요구」를 허가했다고 판단한다. 이것에 의 해, 접속원 포트와 접속처 포트 사이에서 통신 접속이 확립한다.
접속원 NIC(13s)가, 상기 (1)에서 상기 접속 거부의 응답 패킷을 수신하고, 또한, 상기 (3)에서 상기 접속처 포트 번호(1331d)에 대응하는 포트 콘텍스트(123)의 통신 상태(1232)가 "접속필 상태"로 되어 있는 것을 확인했다고 한다. 이 경우, 접속원 NIC(13s)는, 상기 포트 콘텍스트(123)의 통신 상태(1232)를 "대기 상태"로 되돌린다. 이 경우, 접속처 NIC(13s)는, 「접속허가」의 응답 패킷을, 접속원 NIC(13s)에 송신하지 않는다.
<전송 데이터 송신>
도 15는 접속필 포트(접속원 포트)로부터 전송 데이터를 송신하는 동작을 나타낸 도면이다. 도 15의 처리 순서를 설명한다.
(1) 전송 데이터 기입
접속원 프로세서(11s)는, 주기억(12s) 상의 포트 버퍼(125)에 「전송 데이터」를 저장한다.
(2) 데이터 전송 지시
접속원 프로세서(11s)는, 데이터 전송 지시의 디스크립터(1132)(도 6의 (B) 참조)를, 주기억(12s) 상의 송신 지시 큐(127)에 기입한다.
(3) 송신 지시 판독
접속원 NIC(13s)는, 송신 지시 큐(127)에 기입된 송신 지시 큐(127)로부터 데이터 전송 지시의 디스크립터(1132)를 판독한다.
(4) 포트 테이블 판독
접속원 NIC(13s)는, 디스크립터(1132)의 접속원 포트 번호(1332b)의 필드에 설정되어 있는 접속원 포트 번호를 기초로, 접속처 포트의 포트 콘텍스트(123)를 저장하는 주기억(12s) 상의 어드레스를 포트 테이블(121)로부터 판독한다. 보다 상세하게 설명하면, 상기 포트 번호에 대응하는 포트 테이블(121)의 포트 엔트리(1211)의 내용을 판독한다. 그리고, 그 포트 엔트리(1211)의 「Context Address」의 필드에 설정되어 있는 어드레스를, 접속처 포트의 포트 콘텍스트(123)의 저장 어드레스로 간주한다.
(5) 포트 콘텍스트 판독
접속원 NIC(13s)는, 주기억(12s) 상의 저장 어드레스로부터 포트 콘텍스트(123)를 판독하고, 그 통신 상태(1232)가 "접속필 상태"로 설정되어 있는 것을 확인한다.
(6) 전송 데이터 판독
접속원 NIC(13s)는, 포트 엔트리(1211)의 「Buffer Address」의 필드에 설정되어 있는 어드레스와 「Bugger Size」로 설정되어 있는 버퍼 사이즈를 기초로, 주기억(12s) 상의 포트 버퍼(125)로부터 전송 데이터를 판독한다.
(7) 전송 데이터 패킷 송신
접속원 NIC(13s)는, 도 10에 나타낸 형식의 전송 데이터 패킷(60)을 작성하고, 작성한 전송 데이터 패킷(60)을 네트워크(20)에 송신한다.
(8) 송신 완료 통지 기입
접속원 NIC(13s)는, 송신 완료 스테이터스의 디스크립터를 송신 완료 통지 큐(128)에 기입한다. 이 송신 완료 스테이터스의 디스크립터는, 도 7의 (B)에 나타낸 형식의 디스크립터(1352)이다.
(9) 송신 완료 통지 판독
접속원 프로세서(11s)는, 송신 완료 통지 큐(128)로부터 송신 완료 스테이터스를 판독한다. 접속원 프로세서(11s)는, 송신 완료 스테이터스가 "정상"으로 설정되어 있는지 조사한다. 그리고, 송신 완료 스테이터스가 "정상"으로 설정되어 있으면, 접속원 NIC(13d)가, 전송 데이터 패킷(60)을 정상으로 송신했다고 판단한다. 이 경우, 접속원 포트로부터 접속처 포트 당의 전송 데이터의 송신은 정상으로 행하여지게 된다. 한편, 접속처 프로세서(11s)는, 송신 완료 스테이터스가 "에러"로 설정되어 있으면, 접속원 NIC(13s)가 전송 데이터 패킷(60)의 송신에 실패했다고 판단한다. 이 경우, 접속원 포트로부터 접속처 포트 당의 전송 데이터 패킷(60)의 송신은 실패하게 된다.
<전송 데이터 수신>
도 16은 접속필의 접속처 포트가, 접속원 포트가 송신한 전송 데이터를 수신하는 동작을 나타낸 도면이다. 도 16에 나타낸 처리 순서를 설명한다.
(1) 전송 데이터 패킷 수신
접속처 NIC(13d)는, 네트워크(20)로부터, 접속원 NIC(13s)가 송신한 전송 데이터 패킷(60)을 수신한다.
(2) 포트 테이블 판독
접속처 NIC(13d)는, 수신한 전송 데이터 패킷(60)으로부터 접속처 포트 번 호(621)를 취출하고, 주기억(12d) 상의 포트 테이블(121)의 접속처 포트 번호(621)에 대응하는 포트 엔트리(1211)로부터 「Context Address」(콘텍스트 저장 어드레스)를 판독한다.
(3) 포트 콘텍스트 판독
접속처 NIC(13d)는, 주기억(12d) 상의 콘텍스트 저장 어드레스로부터 포트 콘텍스트(123)를 판독한다. 그리고, 포트 콘텍스트(123)의 통신 상태(1232)를 참조하여, 전송 데이터 패킷을 수신한 포트가 "접속필 상태"인 것을 확인한다.
(4) 전송 데이터 기입
접속처 NIC(13d)는, 전송 데이터 패킷(60)에 저장되어 있는 데이터(630)(전송 데이터)를 판독하고, 판독한 전송 데이터를, 주기억(12d) 상의 포트 버퍼(125)에 저장한다.
(5) 수신 통지 기입
접속처 NIC(13d)는, 수신 스테이터스를, 주기억(12d) 상의 수신 통지 큐(129)에 기입한다. 이 수신 스테이터스는, 도 8의 (B)에 나타낸 데이터 전송 디스크립터(1373)이다.
(6) 수신 통지 판독
접속처 프로세서(11d)는, 수신 통지 큐(129)로부터 수신 스테이터스를 판독한다.
(7) 전송 데이터 판독
접속처 프로세서(11d)는, 수신 스테이터스의 데이터 선두 어드레스(1373c)와 데이터 길이(1332d)를 참조하여, 포토 버퍼(125)로부터 전송 데이터를 판독한다. 이것에 의해, 접속처 포트는, 접속원 포트가 송신한 전송 데이터를 수신한다.
<절단 통지 송신>
도 17은 접속필의 접속원 포트가, 접속처 포트에 절단 통지를 송신하는 동작을 나타낸 도면이다. 도 17에 나타낸 처리 순서를 설명한다.
(1) 절단 통지 송신 지시
접속원 프로세서(11s)는, 「절단 통지 송신 지시」의 디스크립터를, 주기억(12s) 상의 송신 지시 큐(127)에 기입한다. 이 절단 통지 송신 지시의 디스크립터는, 도 6의 (C)에 나타낸 절단 통지 송신 지시 디스크립터(1333)와 같다.
(2) 절단 통지 송신 지시 판독
접속원 NIC(13s)는, 송신 지시 큐(127)로부터 절단 통지 송신 지시 디스크립터(1333)를 판독한다.
(3) 포트 테이블 판독
접속원 NIC(13s)는, 판독한 절단 통지 송신 지시의 디스크립터(1333)로부터 접속원 포트 번호(1333b)를 판독하고, 포트 테이블(121)의 접속원 포트 번호(1333b)에 대응하는 포트 엔트리(1211)로부터 「Context Address」(콘텍스트 저장 어드레스)를 판독한다.
(4) 포트 콘텍스트 판독
접속원 NIC(13s)는, 주기억(12s)의 콘텍스트 저장 어드레스로부터 포트 콘텍스트(123)를 판독하고, 판독한 포트 콘텍스트(123)의 통신 상태(1232)가 "접속필 상태"인 것을 확인한다.
(5) 절단 통지 패킷 송신
접속원 NIC(13s)는, 절단 통지 패킷(50dc)을 작성하고, 작성한 절단 통지 패킷(50dc)을 네트워크(20)에 송신한다. 절단 통지 패킷(50dc)은, 도 9에 나타낸 형식의 제어 패킷(50)이며, 그 패킷 종별(624)은 "절단 통지"로 설정되어 있다.
(6) 포트 콘텍스트 갱신
접속원 NIC(13s)는, 포트 콘텍스트(123)의 통신 상태(1232)를 "절단 통지필 상태"로 갱신한다.
(7) 송신 완료 통지 기입
접속원 NIC(13s)는, 「송신 완료 스테이터스」를 주기억(12s) 상의 송신 지시 큐(127)에 기입한다. 이 송신 완료 스테이터스는, 도 7의 (C)에 나타낸 절단 통지 송신 완료 디스크립터(1353)와 같다.
(8) 송신 완료 통지 판독
접속원 프로세서(11s)는, 송신 지시 큐(127)로부터 송신 완료 스테이터스를 판독한다. 접속원 프로세서(11s)는, 송신 완료 스테이터스가 "정상"으로 설정되어 있으면, 접속원 NIC(13s)가, 절단 통지 패킷(50dc)을 접속처 NIC(13d)에 정상으로 송신했다고 판단한다. 이 경우, 접속원 포트로부터 접속처 포트 당에 절단 통지가 정상으로 송신된다. 한편, 접속원 프로세서(11s)는, 송신 완료 스테이터스가 "에러"로 설정되어 있으면, 접속원 NIC(13s)가 절단 통지 패킷(50dc)의 송신에 실패했다고 판단한다. 이 경우, 접속원 포트로부터 접속처 포트에는 절단 통지는 송신되 지 않는다.
< 절단 통지 수신>
도 18은 접속필의 접속처 포트가, 접속원 포트로부터 절단 통지를 수신하는 동작을 나타낸 도면이다. 도 18에 나타낸 처리 순서를 설명한다.
(1) 절단 통지 패킷 수신
접속처 NIC(13d)는 네트워크(20)로부터 절단 통지 패킷(50dc)을 수신한다.
(2) 포트 테이블 판독
접속처 NIC(13d)는 수신한 절단 통지 패킷(50dc)으로부터 접속처 포트 번호(621)를 판독한다. 그리고, 주기억(12d) 상의 포트 테이블(121)의 접속처 포트 번호(621)에 대응하는 포트 엔트리(1211)로부터 「Context Address」(콘텍스트 저장 어드레스)을 판독한다.
(3) 포트 콘텍스트 판독
접속처 NIC(13d)는 주기억(12d)의 콘텍스트 저장 어드레스로부터 포트 콘텍스트(123)(접속처 포트의 콘텍스트)를 판독하고, 그 통신 상태(1232)가 "접속필 상태"로 설정되어 있는 것을 확인한다.
(4) 포트 콘텍스트 갱신
접속처 NIC(13d)는 포트 콘텍스트(123)의 통신 상태(1232)를 "절단 통지 수신필 상태"로 갱신한다.
(5) 수신 통지 기입
접속처 NIC(13d)는 「수신 스테이터스」를 주기억(12d) 상의 수신 통지 큐(129)에 기입한다. 수신 스테이터스의 디스크립터는, 도 8의 (C)에 나타낸 디스크립터(1374)와 같다.
(6) 수신 통지 판독
접속처 프로세서(11d)는, 수신 통지 큐(129)로부터 수신 스테이터스를 판독한다. 접속처 프로세서(11d)는, 수신 스테이터스가 "정상"으로 설정되어 있으면, 접속처 NIC(13d)가 상기 절단 통지 패킷(50dc)을 정상으로 수신했다고 판단한다. 이에 의해, 접속원 포트와 접속처 포트 사이의 통신 접속은 절단된다. 한편, 접속처 프로세서(11s)는, 수신 스테이터스가 "에러"로 설정되어 있으면, 접속처 NIC(13d)가 절단 통지 패킷(50dc)의 수신에 실패했다고 판단한다. 이 경우, 접속원 포트와 접속처 포트 사이의 통신 접속은 절단되지 않는다.
그런데, 본 실시예의 NIC(13)는, 편방향 통신의 접속의 확립을 행한다. 본 실시예의 NIC(13)를 이용해서 쌍방향통신을 행할 경우, 프로세서는, NIC(13)를 이용하여, 2개의 편방향 통신의 확립을 행하는 것만으로 좋다. 이 때문에, 본 실시예의 NIC(13)를 이용하여 쌍방향 통신을 실시할 경우, 통상의 NIC를 이용하는 경우에 비교하여, 프로세서의 처리의 부담이 경감된다. 또한, 본 실시예는, 포트 콘텍스트(123)에 의해, 통신의 접속이 절단된 상태를 정의하는 것이 가능하다. 이 때문에, 프로세서(11)는, 포트 콘텍스트(123)를 참조함으로써, 통신 자원의 회수 등의 부하가 높은 처리를 지연시켜, 이들의 처리를, 적절한 타이밍으로 정리해서 실행할 수 있다.
또한, 본 실시예는, 프로세서(11)의 주기억(12) 상에 마련된 포트 콘텍스 트(123)에 근거하여, 통신 접속의 확립 처리를 행하므로, 종래의 통신 처리를 행하는 오프-로드 엔진을 구비한 NIC보다도, 다수의 통신 접속을 유지할 수 있다. 보다 상세에 설명하면, 기억 용량이 큰 주기억(12) 상에 포트 콘텍스트(123)를 보유하므로, 유지가능한 통신 접속 수를 보다 많게 할 수 있다. 또한, 본 실시예의 NIC(13)는, 프로세서(11d)의 주기억(12)을 이용해서 포트의 통신 접속을 관리하므로, 상기 오프-로드 엔진을 구비하는 종래의 NIC와 비교하여, 하드웨어의 가격이 작다고 하는 이점을 갖는다. 또한, 본 실시예는, Web 애플리케이션과 같이 , 통신 접속의 확립과 절단이 다발하는 애플리케이션에 적용했을 경우, 상기 오프-로드 엔진을 구비한 종래의 NIC와 동등한 호스트 프로세서(host processor)의 처리의 부하의 저감 효과를 기대할 수 있다.
본 발명은, 상술한 실시예에 한정되는 것이 아니고, 본 발명의 취지를 일탈하지 않는 범위 내에서 여러 가지로 변형해서 실시할 수 있다.
예를 들면, 상기 실시예에서는, 포트 콘텍스트(123) 및 포트 테이블(121)은 프로세서(11)의 주기억(12d) 상에 마련되어져 있지만, 본 발명의 구성은, 이에 한정되는 것이 아니다. 예를 들면, 포트 콘텍스트 및 포트 테이블은, 프로세서 내의 전용 레지스터 내 또는 전용 메모리 상에 마련되어져도 좋다. 이 경우, 상기 전용 레지스터 및 상기 전용 메모리는, 네트워크 인터페이스장치가 직접 액세스 가능한 형태로 설치되는 것이 바람직하다.
도 1은 본 실시예를 적용한 병렬 계산기의 전체 시스템 구성을 나타낸 도면.
도 2는 도 1의 NIC의 구성의 일례를 나타낸 블록도.
도 3은 프로세서의 주기억의 구성 예를 나타낸 도면.
도 4는 본 실시예의 포트 정의를 나타낸 도면.
도 5는 포트 콘텍스트의 데이터 구조의 일례를 나타낸 도면.
도 6은 프로세서에 의해 송신 지시 큐에 기입되는 디스크립터(descriptor)의 데이터 구조를 나타낸 도면.
도 7은 NIC의 송신 완료 통지 큐 제어부에 의해 송신 완료 통지 큐에 기입되는 송신 완료 스테이터스의 디스크립터의 데이터 구조를 나타낸 도면.
도 8은 NIC의 수신 완료 통지 큐 제어부에 의해 수신 통지 큐에 기입되는 수신 스테이터스를 나타낸 디스크립터의 데이터 구조를 나타낸 도면.
도 9는 제어 패킷의 데이터 구조를 나타낸 도면.
도 10은 전송 데이터 패킷의 데이터 구조를 나타낸 도면.
도 11은 본 실시예에서의 편방향 통신의 동작을 나타낸 시퀀스 도면.
도 12는 접속원 프로세서(11s)가, 통신 접속을 확립하기 위해서, 접속원 NIC(13s)에 대하여 「접속 요구」를 지시하는 동작을 나타낸 도면.
도 13은 접속처 NIC가, 접속원 NIC로부터 접속 요구 패킷을 수신하고, 접속처 NIC에 「접속 허가」의 응답 패킷을 송신하는 동작을 나타낸 도면.
도 14는 접속원 NIC가, 접속처 NIC로부터 「접속 허가」의 응답 패킷을 수신 했을 때의 동작을 나타낸 도면.
도 15는 접속필 포트(접속원 포트)로부터 전송 데이터를 송신하는 동작을 나타낸 도면.
도 16은 접속필의 접속처 포트가, 접속원 포트가 송신한 전송 데이터를 수신하는 동작을 나타낸 도면.
도 17은 접속필의 접속원 포트가, 접속처 포트에 절단 통지를 송신하는 동작을 나타낸 도면.
도 18은 접속필의 접속처 포트가, 접속원 포트로부터 절단 통지를 수신하는 동작을 나타낸 도면.
*도면의 주요 부분에 대한 부호의 설명*
1O(1O- ∼ 1O-n) : 노드
11 : 프로세서
12(12s , 12d) : 주기억
121 : 포트 테이블
1211 : 포트 엔트리
123 : 포트 콘텍스트
1231 : 프로토콜 종별
1232 : 통신 상태
125 : 포트 버퍼
127 : 송신 지시 큐
128 : 송신 완료 통지 큐
129 : 수신 통지 큐
13 : NIC
131 : PIO 제어부
132 : DMA 제어부
133 : 송신 지시 큐 제어부
134 : 패킷 송신 처리부
135 : 송신 완료 통지 큐 제어부
136 : 패킷 수신 처리부
137 : 수신 완료 통지 큐 제어부
138 : 버스
139 ∼ 142 : 신호선
20 : 네트워크
50 : 제어 패킷
50cd : 접속 요구 패킷
50ca : 접속 허가의 응답 패킷
50dc : 절단 통지 패킷
510 : 네트워크층 헤더(헤더)
511 : 패킷 길이
512 : 접속처 어드레스
513 : 접속원 어드레스
520 : 트랜스포트(transport)층 헤더(header)
521 : 접속처 포트 번호
522 : 접속원 포트 번호
523 : 프로토콜 종별
524 : 패킷 종별
60 : 전송 데이터 패킷
610 : 네트워크층 헤더
611 : 패킷 길이
612 : 접속처 어드레스
613 : 접속원 어드레스
620 : 트랜스포트층 헤더
621 : 접속처 포트 번호
622 : 접속원 포트 번호
623 : 프로토콜 종별
624 : 패킷 종별 (데이터)
630 : 트랜스포트층 데이터
1331 : 접속 요구 지시 디스크립터
1331a : 지시 ID(접속 요구)
1331b : 접속원 포트 번호
1331c : 접속처 어드레스
1331d : 접속처 포트 번호
1332 : 데이터 전송 지시 디스크립터
1332a : 지시 ID(데이터 전송)
1332b : 접속원 포트 번호
1332c : 데이터 선두 어드레스
1332d : 데이터 길이
1333 : 절단 통지 디스크립터
1333a : 지시 ID(절단 통지)
1333b : 접속원 포트 번호
1351 : 접속 요구 송신 지시 완료 디스크립터
1351a : 에러 코드
1352 : 데이터 전송 지시 완료 디스크립터
1352a : 에러 코드
1371 : 접속 요구 디스크립터
1371a : 수신 통지 ID (접속 요구)
1371b : 포트 번호
1371c : 요구원 어드레스
1371d : 요구원 포트 번호
1372 : 접속 응답 디스크립터
1372a : 수신 통지 ID(접속 응답)
1372b : 포트 번호
1372c : 응답원 어드레스
1372d : 응답처 어드레스
1373 : 데이터 전송 디스크립터
1373a : 수신 통지 ID(데이터 전송)
1373b : 포트 번호
1373c : 데이터 선두 어드레스
1373d : 데이터 길이
1374 : 절단 통지 디스크립터
1374a : 수신 통지 ID(절단 통지)
1374b : 포트 번호

Claims (10)

  1. 컴퓨터에 접속되어, 네트워크를 통하는 통신을 행하는 인터페이스장치로서,
    통신 접속을 포트 번호에 의해 식별하고, 포트마다 통신접속의 상태를, 기억 수단에 저장되어 있는, 포트 번호에 대응시킨 콘텍스트(context)로 관리하는 제 1 관리 수단과,
    상기 콘텍스트의 저장 상태를 관리하는 제 2 관리 수단과,
    상기 콘텍스트를 참조하여, 포트간의 통신 접속의 확립 처리와 절단 처리를 실행하는 제어 수단을 구비하는 네트워크 인터페이스장치.
  2. 제 1 항에 있어서,
    상기 제어 수단은,
    상기 컴퓨터의 프로세서로부터 접속 요구 패킷의 송신이 지시된 경우, 상기 지시에서 송신원으로서 지정되어 있는 포트 번호에 대응하는 콘텍스트를 조사하고, 상기 콘텍스트가 "대기 상태"로 설정되어 있으면, 접속 요구 패킷을 상기 네트워크에 송신하는 네트워크 인터페이스장치.
  3. 제 2 항에 있어서,
    상기 제어 수단은, 상기 접속 요구 패킷을 송신한 후, 송신 완료를 상기 프로세서에 통지하는 네트워크 인터페이스장치.
  4. 제 2 항에 있어서,
    상기 제어 수단은, 상기 접속 요구 패킷을 수신한 경우, 그 패킷에서 접속처로서 지정되어 있는 포트 번호에 대응하는 콘텍스트를 조사하고, 상기 콘텍스트가 "대기 상태"로 설정되어 있으면, 접속 허가의 응답 패킷을 상기 네트워크에 송신해서 상기 콘텍스트를 "접속필 상태''에 갱신하고, 상기 콘텍스트가 "대기 상태"로 설정되어 있지 않으면, 접속 거부의 응답 패킷을 상기 네트워크에 송신하는 네트워크 인터페이스장치.
  5. 제 4 항에 있어서,
    상기 제어 수단은, 상기 접속 요구 패킷의 수신 및 상기 응답 패킷의 송신을 행하고, 필요에 따라서 상기 콘텍스트의 갱신을 행하고, 그 후, 상기 프로세서에 상기 접속 요구 패킷의 수신을 통지하는 네트워크 인터페이스장치.
  6. 제 4 항에 있어서,
    상기 제어 수단은, 상기 접속 허가의 응답 패킷을 수신한 경우, 상기 응답 패킷에서 접속원으로서 지정되어 있는 포트 번호에 대응하는 콘텍스트를 조사하고, 상기 콘텍스트가 "접속 요구필 상태"로 설정되어 있을 경우에는 상기 콘텍스트를 "접속필 상태"로 갱신하는 네트워크 인터페이스장치.
  7. 제 4 항에 있어서,
    상기 제어 수단은, 상기 접속 거부의 응답 패킷을 수신한 경우, 상기 응답 패킷에서 접속원으로서 지정되어 있는 포트 번호에 대응하는 콘텍스트를 조사하고, 상기 콘텍스트가 "접속필 상태"로 설정되어 있을 경우에는, 상기 콘텍스트를 "대기 상태"로 되돌리는 네트워크 인터페이스장치.
  8. 제 6 항 또는 제 7 항에 있어서,
    상기 제어 수단은, 상기 응답 패킷의 수신 및 상기 콘텍스트의 갱신이 종료한 후, 상기 프로세서에 상기 응답 패킷의 수신을 통지하는 네트워크 인터페이스장치.
  9. 제 1 항에 있어서,
    상기 제어 수단은, 컴퓨터 프로세서로부터 절단 통지 패킷의 송신이 지시되었을 경우, 상기 지시에서 접속원으로서 지정되어 있는 포트 번호에 대응하는 콘텍스트를 조사하고, 상기 콘텍스트가 "접속필 상태"로 설정되어 있을 경우에는 절단 통지 패킷을 상기 네트워크에 송신하는 네트워크 인터페이스장치.
  10. 제 9 항에 있어서,
    상기 제어 수단은, 상기 절단 통지 패킷을 수신한 경우, 그 패킷에서 접속처로서 지정되어 있는 포트 번호에 대응하는 콘텍스트를 조사하고, 상기 콘텍스트가 "접속필 상태"로 설정되어 있으면 상기 콘텍스트를 "절단 통지 수신필 상태"로 갱신하는 네트워크 인터페이스장치.
KR20090131786A 2009-02-06 2009-12-28 네트워크 인터페이스장치 KR101101216B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2009-026533 2009-02-06
JP2009026533A JP5353278B2 (ja) 2009-02-06 2009-02-06 通信装置

Publications (2)

Publication Number Publication Date
KR20100090629A true KR20100090629A (ko) 2010-08-16
KR101101216B1 KR101101216B1 (ko) 2012-01-04

Family

ID=42235671

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20090131786A KR101101216B1 (ko) 2009-02-06 2009-12-28 네트워크 인터페이스장치

Country Status (5)

Country Link
US (1) US8725879B2 (ko)
EP (1) EP2216955B1 (ko)
JP (1) JP5353278B2 (ko)
KR (1) KR101101216B1 (ko)
CN (1) CN101827019B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103200085B (zh) * 2013-04-16 2016-05-25 中航网信(北京)科技有限公司 一种实现vxlan报文线速收发的方法及系统
US9747227B1 (en) * 2013-05-24 2017-08-29 Qlogic, Corporation Method and system for transmitting information from a network device
JP6463898B2 (ja) 2014-03-13 2019-02-06 株式会社東芝 通信装置、情報処理装置、通信方法及び通信プログラム
JP6175389B2 (ja) * 2014-03-13 2017-08-02 株式会社東芝 通信装置、情報処理装置、通信方法および通信プログラム
US9853101B2 (en) 2015-10-07 2017-12-26 Taiwan Semiconductor Manufacturing Company, Ltd. Strained nanowire CMOS device and method of forming
CN106789708B (zh) * 2016-12-06 2020-10-09 中国电子科技集团公司第三十二研究所 Tcp/ip卸载引擎中的多通道处理方法
JP6958440B2 (ja) 2018-03-08 2021-11-02 富士通株式会社 情報処理装置、情報処理システム及びプログラム
JP2019164713A (ja) * 2018-03-20 2019-09-26 東芝メモリ株式会社 ストレージシステム及びデータ転送方法
US10880211B2 (en) 2019-05-06 2020-12-29 Seth Gregory Friedman Transaction encoding and verification by way of data-link layer fields
WO2021047606A1 (zh) 2019-09-10 2021-03-18 华为技术有限公司 报文处理方法、装置以及芯片
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
EP4144048A4 (en) 2020-06-08 2024-06-26 Liquid Markets Gmbh HARDWARE-BASED TRANSACTION EXCHANGE
US20210150074A1 (en) * 2020-12-23 2021-05-20 Jose Niell Vm encryption of block storage with end-to-end data integrity protection in a smartnic
US11301408B1 (en) 2021-06-07 2022-04-12 Liquid-Markets-Holdings, Incorporated Asymmetric read / write architecture for enhanced throughput and reduced latency

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07210433A (ja) 1994-01-18 1995-08-11 Hitachi Ltd ファイルサーバ
JP2939707B2 (ja) 1994-12-19 1999-08-25 日本電気エンジニアリング株式会社 通信制御システムの同期制御方法
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JP2001230812A (ja) * 2000-02-14 2001-08-24 Hitachi Ltd 通信開始処理をオフロードするネットワーク接続装置およびそれを用いた方法
JP3757904B2 (ja) * 2002-05-27 2006-03-22 日本電気株式会社 通信制御装置
US7007103B2 (en) 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
JP2004173166A (ja) * 2002-11-22 2004-06-17 Matsushita Electric Ind Co Ltd 通信端末装置およびデータ送信方法
US7613109B2 (en) * 2003-06-05 2009-11-03 Nvidia Corporation Processing data for a TCP connection using an offload unit
US7930422B2 (en) 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
US7533176B2 (en) * 2004-07-14 2009-05-12 International Business Machines Corporation Method for supporting connection establishment in an offload of network protocol processing
EP1772771A4 (en) * 2004-07-15 2008-06-25 Matsushita Electric Ind Co Ltd COHERENT LIGHT SOURCE AND OPTICAL APPARATUS USING THE SAME
US7783880B2 (en) 2004-11-12 2010-08-24 Microsoft Corporation Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management
JP4921142B2 (ja) 2006-12-12 2012-04-25 キヤノン株式会社 通信装置

Also Published As

Publication number Publication date
US8725879B2 (en) 2014-05-13
US20100306387A1 (en) 2010-12-02
EP2216955B1 (en) 2016-07-27
JP5353278B2 (ja) 2013-11-27
EP2216955A1 (en) 2010-08-11
KR101101216B1 (ko) 2012-01-04
CN101827019B (zh) 2014-09-10
JP2010183450A (ja) 2010-08-19
CN101827019A (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
KR101101216B1 (ko) 네트워크 인터페이스장치
AU2007278728B2 (en) Method and apparatus for distributing usb hub functions across a network
WO2022105884A1 (zh) 数据传输方法、装置、网络设备、存储介质
US9535867B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
CN105531684B (zh) 通用pci express端口
US9448957B2 (en) Unified system area network and switch
CN109033004B (zh) 一种基于Aurora总线的双机内存数据共享系统
US20100002714A1 (en) PCI express network
WO2022032984A1 (zh) 一种mqtt协议仿真方法及仿真设备
WO2004040819A2 (en) An apparatus and method for receive transport protocol termination
CN106534178A (zh) RapidIO网络通用套接字的实现系统及方法
US6856619B1 (en) Computer network controller
US7564860B2 (en) Apparatus and method for workflow-based routing in a distributed architecture router
JP4415391B2 (ja) データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置
WO2022120974A1 (zh) 一种虚拟化安全网关系统
CN115658236A (zh) 一种堆叠式的七层网络数据交换系统
CN113014631A (zh) 基于Hlink的设备缓存推送系统及方法
Innocente et al. EXPLORING THE PERFORMANCE OF THE MYRINET PC− CLUSTER ON LINUX

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141205

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee