KR20100015790A - 메시지 병합 장치 및 그 방법 - Google Patents

메시지 병합 장치 및 그 방법 Download PDF

Info

Publication number
KR20100015790A
KR20100015790A KR1020097022053A KR20097022053A KR20100015790A KR 20100015790 A KR20100015790 A KR 20100015790A KR 1020097022053 A KR1020097022053 A KR 1020097022053A KR 20097022053 A KR20097022053 A KR 20097022053A KR 20100015790 A KR20100015790 A KR 20100015790A
Authority
KR
South Korea
Prior art keywords
message
packet
merge
communication protocol
messages
Prior art date
Application number
KR1020097022053A
Other languages
English (en)
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 KR20100015790A publication Critical patent/KR20100015790A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/164Adaptation or special uses of UDP protocol
    • 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/165Combined use of TCP and UDP protocols; selection criteria therefor
    • 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/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

데이터 처리 시스템에서 끝점들(endpoints) 간의 메시지들을 통신하는 방법은 둘 이상의 메시지들을 단일 패킷으로 병합하는 단계 및 상기 패킷을 통신하는 단계를 포함한다. 각각의 메시지들은 다른 통신 프로토콜에 연관될 수 있다. 또한, 각각의 메시지들은 통신을 위해 다른 통신 포트로 타겟팅될 수 있다. 목적지 끝점에서, 상기 패킷이 분리(de-coalesced)되고, 각각의 메시지가 상기 패킷으로부터 추출되어 연관 포트에 제공된다. 복수 메시지들을 단일 패킷으로 병합함으로써, 상기 메시지들이 다른 통신 프로토콜들 또는 다른 통신 포트들에 연관된 경우에도, 패킷들은 최적의 크기에 근접하게 형성될 수 있고, 따라서 끝점들 간에 보다 효율적인 통신을 제공하게 된다.
Figure P1020097022053
데이터 처리 시스템, 데이터 병합/분리, 통신 프로토콜, 병합 모드, 네트워크 인터페이스

Description

메시지 병합 장치 및 그 방법{DEVICE FOR COALESCING MESSAGES AND METHOD THEREOF}
본 발명은 데이터 처리 시스템에 관한 것으로, 특히 데이터 처리 시스템에서 끝점들(endpoints) 사이의 통신에 관한 것이다.
데이터 처리 시스템은 때때로 공유 버스나 네트워크를 통해서 통신하는 둘 이상의 끝점들을 이용한다. 예를 들어, 시스템의 데이터 프로세서는 버스를 통해 네트워크 인터페이스나 그래픽 프로세서와 같은 주변 모듈과 통신을 할 수 있다. 메시지들(즉, 통신 내용)을 패킷(packet)에 넣고 이 패킷을 공유 버스나 네트워크를 통해 통신함으로써 끝점들 간의 통신을 구현할 수 있다. 패킷의 형성 및 전송은 전형적으로 PCI, PCI-X, 또는 이더넷 프로토콜과 같이 버스나 네트워크와 연관된 특정 프로토콜의 준수에 기초한다. 상기 프로토콜은 전형적으로 가장 효율적인 정보 통신을 제공하는 최적의 패킷 크기와 연관이 있다. 그러나 상기 공유 버스나 네트워크를 통해 통신할 메시지는 최적의 패킷 크기보다 작을 수 있고, 이는 작은 패킷의 형성과 또한 통신 효율을 떨어뜨리는 결과를 가져온다. 따라서, 메시지 통신을 위한 보다 향상된 방법 및 시스템이 유용할 것이다.
데이터 처리 시스템의 끝점들 간의 메시지 통신 방법은 둘 이상의 메시지들을 단일 패킷으로 병합(coalesce)하여 상기 패킷을 통신하는 것을 포함한다. 각각의 메시지들은 다른 통신 프로토콜과 연관이 있을 수 있다. 또한, 각각의 메시지들은 다른 통신 포트로의 통신 대상이 될 수 있다. 목적지(destination) 끝점에서, 상기 패킷이 분리되고 각각의 메시지가 상기 패킷으로부터 추출되어 연관 포트로 제공된다. 복수 메시지들을 단일 패킷으로 병합함으로써, 상기 메시지들이 다른 통신 프로토콜들이나 다른 통신 포트들에 연관된 경우에도 패킷들은 최적의 크기에 가깝게 형성될 수 있고, 따라서 끝점들 간의 보다 효율적인 통신을 제공한다.
당업자는 첨부된 도면들을 참고로 하여 본 발명과 그 특징들 및 장점들을 보다 명확히 이해할 수 있을 것이다.
도 1은 본 발명의 한 실시예에 따른 데이터 처리 시스템의 블록도이다.
도 2는 본 발명의 한 실시예에 따른 한 세트의 메시지들 및 연관 패킷의 블록도이다.
도 3은 본 발명의 다른 실시예에 따른 데이터 처리 시스템의 블록도이다.
도 4는 본 발명의 한 실시예에 따른 데이터 처리 시스템을 위한 소프트웨어 층들을 도시한 블록도이다.
도 5는 본 발명의 한 실시예에 따른 메시지들의 병합 방법을 설명하는 순서도이다.
도 6은 본 발명의 한 실시예에 따른 메시지들의 분리 방법을 설명하는 순서 도이다.
도 7은 본 발명의 한 실시예에 따른 메시지들의 병합 방법을 설명하는 순서도이다.
도 8은 본 발명의 한 실시예에 따른 데이터 처리 시스템의 블록도이다.
도 9는 본 발명의 한 실시예에 따른 링크 인터페이스의 블록도이다.
다른 도면들에 표기된 동일한 도면부호들은 유사 또는 동일한 항목들을 가리킨다.
도 1을 참고로 하면, 데이터 처리 시스템(100)의 특정 실시예가 블록도를 통해 도시되어 있다. 상기 데이터 처리 시스템(100)은 끝점들(102, 104)을 포함한다. 본원에서 사용되는 바와 같이, 끝점은 패킷들의 통신을 위한 커넥션(connection)의 한 끝인, 데이터 처리 시스템의 모듈을 의미한다. 그러므로, 끝점은 통신을 위한 메시지들을 생성하거나, 혹은 이러한 메시지들을 수신 및 처리할 수 있는 데이터 처리 시스템의 일부이다. 따라서, 끝점은 프로세서, 주변 모듈, 컴퓨터 장치 등일 수 있다.
끝점들(102, 104)은 링크(110)를 통해 연결되고, 이는 끝점들 간의 패킷의 통신을 위한 물리적 층을 제공한다. 따라서, 한 특정 실시예에서 상기 링크(110)는 내부 시스템 버스와 같은 버스이다. 또 다른 실시예에서, 상기 링크(110)는 근거리통신망(local area network) 및 원거리통신망(wide area network) 등과 같은 네트워크일 수 있다. 링크(110)는 PCI, PCI Express(PCI-X), SCSI, 인피니밴 드(Infiniband), 이더넷(Ethernet) 등과 같은 특정 패킷 통신 프로토콜과 연관된다.
끝점(102)은 응용프로그램(140) 및 병합 모듈(coalescing module:120)을 포함한다. 상기 응용프로그램(140)은 다른 끝점으로의 통신을 위한 메시지를 형성할 수 있는 임의 응용프로그램이 될 수 있다. 예를 들어, 응용프로그램(140)은 웹 브라우저, 채팅 프로그램, P2P 통신 프로그램, 게임 프로그램, 및 생산성 소프트웨어 등일 수 있다. 응용프로그램(140)은 상기 끝점(104)으로의 통신을 위한 메시지를 형성하도록 구성되고 이러한 메시지들을 상기 병합 모듈(120)로 제공한다. 본원에서 사용되는 바와 같이, 메시지는 끝점으로의 통신을 위한 응용프로그램에 의해 제공되는 데이터를 의미한다.
도시된 실시예에서, 병합 모듈(120)은 응용프로그램(140)에 의해 제공되는 메시지들을 통신 패킷으로 포함시키기에 적합한 병합된 메시지로 병합하도록 구성된 소프트웨어 모듈이다. 한 실시예에서, 상기 병합 모듈(120)은 병합된 메시지가 상기 링크(110)에 적합한 최적의 크기 또는 그에 가까운 크기의 통신 패킷이 될 때까지 메시지를 병합한다. 본원에서 사용되는 바와 같이, 최적의 크기란 프로토콜을 통해 최대 효율의 통신을 가능케 하는 통신 프로토콜과 연관된 크기를 의미한다. 또 다른 실시예에서, 병합 모듈(120)은 최대 크기까지 특정 시간 동안 수신된 임의 메시지도 병합하고, 상기 최대 크기는 링크(110)의 통신 프로토콜의 최대 크기에 기초한다.
상기 병합 메시지를 형성한 후, 상기 병합 모듈(120)은 링크(110)를 통한 통 신을 위한 병합 메시지를 포함하는 패킷을 형성할 수 있다. 또 다른 실시예에서, 상기 끝점(102)의 다른 소프트웨어 또는 하드웨어 모듈(도시하지 않음)은 병합 메시지를 병합 모듈(120)로부터 수신하여 상기 병합 메시지를 포함하는 패킷을 형성한다.
도 1에 도시한 실시예에서, 병합 메시지는 다른 통신 프로토콜들과 연관된 메시지들을 포함한다. 예를 들어, 한 실시예에서 상기 병합 메시지는, 전송 제어 프로토콜(Transmission Control Protocol:TCP), 사용자 데이터그램 프로토콜(User Datagram Protocol:UDP), 실시간 전송 프로토콜(Real-Time Transport Protocol: RTP), 신호 커넥션-제어부(Signaling Connection and Control Part:SCCP), 시퀀스 패킷 교환(Sequenced Packet Exchange:SPX), 스트림 제어 전송 프로토콜(Stream Control Transmission Protocol:SCTP), 네트워크 파일 시스템(Network File System:NFS), 서버 메시지 블록(Server Message Block:SMB), IPv4, IPv6, IPSec, 보안 소켓 층(Secure Sockets Layer:SSL), 인터넷트워크 패킷 교환(Internetwork Packet Exchange:IPX), 비연결 네트워킹 프로토콜 (Connectionless Networking Protocol:CLNP), 및 비디오 게임 프로토콜들 및 비디오 프로토콜들과 같은 UDP에 의해 캡슐화된 임의 수의 표준 또는 맞춤 신뢰도 프로토콜들과 같은, 다른 전송, 네트워크, 또는 응용프로그램 층 프로토콜들과 연관된 메시지들을 포함한다. 또한, 상기 병합 메시지에서 각각의 메시지는 다른 보안 특성들을 갖는 프로토콜들과 연관될 수 있다. 그러므로, 상기 메시지 중 하나는 TCP와 같은 신뢰성 있는 프로토콜과 연관되고, 반면 상기 메시지 중 또 하나는 UDP와 같은 신뢰성 없는 프로토 콜과 연관될 수 있다. 또한, 상기 병합 메시지는 압축 TCP 또는 압축 UDP와 같은 다른 압축 포맷을 반영하는 프로토콜들과 연관될 수 있다. 게다가, 병합 메시지의 각 메시지는 끝점(104)에서 다른 통신 포트에 타겟팅될 수 있다. 일반적으로, 임의 다른 프로토콜은 병합기(coalescer)를 이용하여 상기 메시지 레벨의 다른 것 또는 그 자신과 결합될 수 있다. 병합 메시지를 임의의 포트 또는 통신 프로토콜과 연관되도록 함으로써, 상기 병합 모듈은 패킷이 상기 링크(110)를 위한 최적의 패킷 크기에 가깝게 형성될 수 있는 확률을 증가시켜 끝점들(102, 104) 간의 통신 효율을 향상시킨다.
신뢰성이 없는 프로토콜이 신뢰성 있는 프로토콜과 섞여있는 경우, 메시지 순서를 유지할 필요 없이 끝점과의 신뢰성 있는 커넥션을 신뢰성이 없는 프로토콜 메시지를 병합하는 데에 이용할 수 있다. 하지만, 신뢰성이 있거나 혹은 순서가 정해진 메시지들을 다른 신뢰성이 있거나 또는 순서가 정해진 메시지들과 결합할 경우, 병합시에도 모든 커넥션에 대한 메시지 순서를 유지하는 것이 바람직할 것이다.
두 개의 커넥션이 병합될 때 메시지의 순서를 유지하기 위한 방법 중 하나는 병합되는 신뢰성이 있으며 순서가 정해진 모든 메시지들이 전송을 위해 항상 동일한 커넥션을 사용하도록 하는 것이다. 예를 들어, 하나의 커넥션이 TCP 프로토콜과 연관되고 또 다른 커넥션이 '신뢰성 있으며 순서가 정해진' UDP 프로토콜과 연관된 경우, 상기 신뢰성 있으며 순서가 정해진 UDP 메시지는 병합의 가능 여부에 무관하게 TCP 커넥션으로 항상 보내진다. TCP는 메시지 순서를 보장하고 있기 때 문에, 모든 UDP 메시지들은 또한 신뢰성 및 순서를 포함하게 된다. 일부 경우들에는 두 커넥션이 어떤 메시지들을 보낸 후 어떤 시간에 메시지 병합을 시작하는 것이 바람직하다. 이 경우, (본 실시예에서는 상기 신뢰성 있으며 순서가 정해진 UDP 커넥션)로부터 병합되는 커넥션은 상기 커넥션을 이용하여 보내진 최종 메시지가 수신된 것으로 수신확인(acknowledge)될 때까지 병합을 하지 않을 것이다.
두 개의 커넥션이 병합될 때 메시지 순서를 유지하기 위한 또 다른 방법은 메시지 순서 헤더(message order header)를 모든 메시지 프로토콜들에 첨부하는 것이다(메시지들이 병합될 때 및 병합되지 않을 때). 이러한 방식으로, 분리 모듈(de-coalescing module)은 메시지를 보내는 데에 사용된 커넥션과 관계없이 어떤 메시지들이 처음으로 보내졌는 지를 식별할 수 있다.
상기 끝점(104)은 분리 모듈(130) 및 응용프로그램들(140, 145)을 포함한다. 상기 분리 모듈(130)은 링크(110)를 통해 수신된 병합 메시지들을 추출하도록 구성된 소프트웨어 모듈이다. 특히, 상기 분리 모듈은 수신된 병합 메시지에서 각각의 개별 메시지를 분리해낸다. 한 실시예에서, 분리 모듈(130)은 또한 링크(110)를 통해 수신된 패킷들을 처리하고 수신된 패킷으로부터 병합 메시지를 추출하도록 구성된다. 또 다른 실시예에서, 다른 소프트웨어 또는 하드웨어 모듈(도시하지 않음)이 수신된 패킷에서 병합 메시지들을 추출하여 이를 분리 모듈(130)로 제공한다.
도 1에 도시된 실시예에서, 분리 모듈(130)은 각 메시지와 연관된 포트 번호에 기초하여 분리된 메시지들을 응용프로그램들(142, 145)로 제공하도록 구성된다. 예를 들어, 응용프로그램(140)은 제 1 통신 포트와 연관되어 있을 수 있고 응용프로그램(145)은 제 2 통신 포트와 연관되어 있을 수 있다. 그러므로, 상기 분리 모듈은 각각의 분리된 메시지에 연관된 헤더에 기초하여 어떤 포트가 각 메시지와 연관되어 있는지를 결정하고 이렇게 결정된 포트에 연관된 응용프로그램에 메시지를 라우팅(routing)할 수 있다. 따라서, 제 1 포트와 연관된 모든 분리된 메시지들은 응용프로그램(142)으로 제공되고 제 2 포트와 연관된 모든 분리된 메시지들은 응용프로그램(145)에 제공될 수 있다. 또 다른 실시예에서, 분리 모듈(130)은 상기 분리되 메시지를, 상기 메시지에 연관된 포트에 기초하여 각 메시지를 적절한 응용프로그램으로 라우팅하는 또 다른 소프트웨어 모듈(도시하지 않음)로 제공한다. 이는 기존의 통신 모듈을 재설계하지 않고, 상기 분리 모듈(130)이, 메시지를 라우팅함과 동시에 기타 기능들을 수행하는 기존의 통신 모듈과 일체가 되도록 한다.
상기한 바와 같이, 링크(110)를 통해 통신되는 각 패킷은 다른 프로토콜과 연관된 메시지를 포함할 수 있다. 따라서, 분리 모듈(130)에 의해 제공되는 상기 분리된 메시지는 각 메시지와 연관된 개별적인 커넥션을 반영할 수 있다. 또한, 응용프로그램(142, 145)은 각 메시지에 연관된 커넥션에 따라, 수신된 메시지를 처리할 것이다. 그러므로, 예를 들면, 단일 수신 패킷은, 제 1 메시지가 TCP 프로토콜에 연관되고 제 2 메시지가 코딩된 신뢰성이 없는 UDP 프로토콜과 연관된 상태에서, 응용프로그램(140)에 타겟팅된 두 메시지들을 포함할 수 있다. 상기 분리 모듈(130)은 상기 수신된 패킷의 메시지를 분리하여 이렇게 분리된 메시지를 각각의 커넥션 상의 응용프로그램(140)에 제공할 것이다.
논의를 목적으로, 도 1의 실시예를 끝점(102)으로부터 끝점(104)으로의 통신에 대해 설명하였지만, 상기 끝점들 간에는 양방향 통신이 가능하다. 그러므로, 끝점(104)은 링크(110)를 통해 병합 메시지를 포함하는 패킷을 보냄으로써 메시지를 병합하고 이렇게 병합된 메시지를 끝점(102)으로 통신하기 위해 병합 모듈을 포함할 수 있다. 또한, 끝점(102)은 상기 패킷에서 병합 메시지를 추출하고 이 메시지를 연관 대상 응용프로그램으로 제공하기 위해 분리 모듈을 포함할 수 있다.
상기 데이터 처리 시스템(100)의 작동은 도 2를 참고로 하면 이해가 쉬울 것이며, 도 2는 한 세트의 메시지와 연관 패킷의 특정 실시예를 도시하고 있다. 특히, 도 2는 각각 '메시지 1' 및 '메시지 2'로 표시된 콘텐츠를 포함하는 메시지(202)와 메시지(204)를 도시하고 있다. 상기 메시지(202)와 메시지(204)는 도 1에 도시한 응용프로그램(140)에 의해 병합 모듈(120)로 제공된다. 한 실시예에서, 메시지(202) 및 메시지(204)는 다른 프로토콜에 연관되어 있다. 예를 들어, 메시지(202)는 압축 UDP 프로토콜에 연관되어 있을 수 있고 메시지(204)는 보안 TCP 프로토콜에 연관되어 있을 수 있다.
도 1의 병합 모듈(120)은 메시지(202, 204)를 수신하여 메시지 헤더 정보(210, 214) 및 페이로드(payload) 정보(212, 216)를 포함하는 병합 메시지(250)을 형성한다. 도시한 바와 같이, 페이로드 정보(212, 216)는 각각 메시지(202)와 메시지(204)에 연관된 메시지 정보를 포함한다. 상기 메시지 헤더 정보(210)는 페이로드 정보(212)에 연관된 제어 정보를 포함한다. 특히, 상기 헤더 정보는 연관된 메시지 정보를 위한 통신 프로토콜을 식별할 수 있다. 그러므로, 상기 메시 지(202)가 보안 UDP 프로토콜과 연관된 경우, 상기 메시지 헤더 정보(210)는 해당 프로토콜을 표시하는 정보를 포함할 수 있다. 상기 메시지 헤더 정보는 프로토콜을 표시하는 하나 이상의 필드들을 포함할 수 있다. 예를 들면, 하나의 필드는 UDP 또는 TCP와 같은 일반적인 프로토콜을 표시할 수 있고, 제 2 필드는 보안 및 미보안과 같은 보안 특성을 표시할 수 있으며, 또 다른 필드는 압축 및 비압축과 같은 압축 특성을 포함할 수 있다. 상기 헤더 정보(214)는 페이로드(216)을 위한 유사 프로토콜 정보를 포함할 수 있다. 메시지 헤더 정보(210, 214)는 연관 데이터 페이로드에 포함되는 정보의 양을 한정하는 정보를 포함하여, 상기 연관 데이터 페이로드를 위한 기타 정보를 포함할 수도 있다. 이는 상기 데이터 페이로드(212, 216)가 다른 크기가 되도록 하여, 병합 메시지(250)가, 그 크기가 다르고 가변적인 메시지를 반영하는 정보를 포함한다. 또한, 메시지 헤더 정보(210, 214)는 상기 데이터 페이로드에 연관된 포트 번호를 표시할 수 있다. 따라서, 상기 병합 메시지(250)는 다른 목적지 포트들에 타겟팅된 메시지들을 포함할 수 있다.
메시지 헤더 정보(210, 214)는 또한 이미 보내지거나 혹은 이제 보내질 기타 메시지에 상대적인 메시지의 순서를 표시하는 정보를 포함하여, 상기 연관 데이터 페이로드를 위한 기타 정보를 포함할 수 있다. 이는 상기 데이터 페이로드(212, 216)가, 반드시 서로에 대한 것은 아니지만 기타 메시지에 대한 순서를 유지하도록 한다.
도 1의 병합 모듈(120), 또는 기타 하드웨어 또는 소프트웨어 모듈(도시하지 않음)은 상기 병합 메시지(250)에 기초하여 패킷(260)을 형성한다. 상기 패 킷(260)은 상기 링크에 연관된 프로토콜에 기초하여 상기 링크(110)(도 1)를 통해 통신되도록 구성된다. 따라서, 패킷(260)은 메시지 헤더 정보(220, 224) 및 데이터 페이로드 정보(222, 226)는 물로 패킷 해더 정보(228)를 포함한다. 도시된 본 실시예에서, 메시지 헤더 정보(220, 224)는 메시지 헤더 정보(210, 214)와 동일하고, 또한 데이터 페이로드 정보(222, 226)는 각각 상기 병합 메시지(250)의 데이터 페이로드 정보(212, 216)와 동일하다. 따라서, 상기 데이터 페이로드 정보(222, 226)는 상기 메시지(202, 204)를 각각 반영한다. 상기 패킷 해더(228)는 주소 정보, 크기 정보 등, 상기 링크(110)에 연관된 통신 프로토콜의 헤더 정보를 포함한다.
도 1의 실시예에서, 끝점(104)은 패킷(260)을 수신한다. 상기 분리 모듈(130) 또는 기타 하드웨어 또는 소프트웨어 모듈은 상기 패킷(260)에서 병합 메시지(250)를 추출한다. 또한, 상기 분리 모듈은 상기 병합 메시지(250)로부터 메시지(202, 204)를 분리하기 위해 상기 메시지 헤더 정보(210,212)에 접근한다. 예를 들면, 분리 모듈(130)은 메시지(202)를 형성하기 위해 데이터 페이로드(212)의 크기 및 한계를 식별하도록 헤더 정보(210)를 이용할 수 있다. 또한, 분리 모듈(130)은 각각의 메시지(202, 204)를 표시된 포트와 연관된 응용프로그램으로 라우팅하기 위해 상기 메시지 헤더 정보(210, 214) 내의 포트 정보에 접근할 수 있다.
일부 경우들에는, 전역의 기초로(global basis) 또는 커넥션의 기초에 의한 커넥션 상에서 병합이 실시되어야 하는지의 여부를 특정하는 것이 바람직하다. 예 를 들면, 한 실시예에서, 상기 병합 모듈은 복수의 동작 모듈 중 하나로 설정될 수 있다. 하나의 모드에서, 동일한 목적지 끝점에 임의의 또는 모든 커넥션을 병합하는 것이 가능하다. 또 다른 모드에서는 모든 커넥션에 대한 병합이 불가능하다. 또 다른 모드에서, 임의의 특정 커넥션은 한 세트의 특정 커넥션과 병합될 수 있고 동시에 다른 세트의 특정 커넥션과는 병합이 불가능하게 된다. 한 실시예에서, 상기 응용프로그램(140)은 원하는 병합 모드를 표시하는 병합 모듈(120)에 정보를 보낼 수 있다.
도 3을 보면, 데이터 처리 시스템(300)의 한 특정 실시예에 대한 블록도가 도시되어 있다. 데이터 처리 시스템(305)은 끝점(302,304) 및 링크 인터페이스(305)를 포함한다. 상기 링크 인터페이스(305)는 끝점(302)과 링크(330)에 연결되고 동시에 상기 끝점(304)은 링크(330)에 연결된다. 끝점(302)은 응용프로그램(340)을 포함한다. 링크(305)는 병합 모듈(320)를 포함한다. 끝점(304)은 응용프로그램(340, 345)은 물론 분리 모듈(330)을 포함한다.
상기 링크 인터페이스(305)는 상기 끝점(302)으로부터 메시지를 수신하고 끝점(304)에 링크(330)를 통한 통신을 위한 메시지에 기초하여 패킷을 형성하도록 구성된다. 링크 인터페이스(305)는 버스 인터페이스 모듈, 네트워크 인터페이스 모듈(예를 들어, 네트워크 카드) 등일 수 있다.
상기 데이터 처리 시스템(300)은 도 1 및 도 2와 관련하여 기술한 바와 것과 유사한 방식으로 메시지를 끝점(302)으로부터 끝점(304)으로 통신하도록 구성된다. 그러나, 도 3에 도시한 실시예에서는, 상기 병합 모듈(320)이 링크 인터페이 스(305)에 위치된다. 따라서, 상기 병합 모듈(320)은 끝점(302)으로부터 수신된 메시지를 상기한 바와 같은 병합 메시지의 형태로 형성한다. 이러한 기능을 상기 링크 인터페이스(305)에서 실시함으로써, 상기 끝점(302)에서의 처리 하중이 감소한다. 따라서, 논의를 목적으로 하여 상기 링크 인터페이스(305)가 상기 병합 모듈(320)을 실행시키는 것으로 기술하였지만, 다른 실시예에서는, 이와 동일한 또는 다른 링크 인터페이스가 상기 분리 모듈(330), 또는 끝점(304)에 의해 통신되는 패킷용의 또 다른 분리 모듈(도시하지 않음)을 실행시킬 수도 있다.
상기 병합 모듈(320)은 여러 모드 중 하나의 모드에서 동작할 수 있어, 병합이 상기한 바와 같이 모든 또는 일부 커넥션에 제공되거나 또는 어떠한 커넥션에도 제공되지 않는다. 상기 응용프로그램(340)은, 예를 들어 장치 드라이버(도시하지 않음)와 같은 표준 하드웨어 인터페이스를 통해 정보를 링크 인터페이스(305)로 보냄으로써 상기 병합 모듈(320)의 병합 모드를 설정할 수 있다.
도 4를 보면, 소프트웨어 토폴로지(topology)(400)의 블록도가 도시되어 있고, 이는 도 1의 응용프로그램(140)에 대응하는 응용프로그램(440), 도 1의 병합 모듈(120)에 대응하는 병합 모듈(420), 및 커널(kernel:450)을 포함한다. 상기 커널(450)은 끝점(102)과 링크(110) 사이의 상호작용을 관리하도록 구성된 동작 시스템 커널이다. 그러므로, 상기 커널(450)은 메시지를 수신하고, 상기 메시지를 패킷 형태로 형성하며, 또는 상기 패킷을 통신을 위한 네트워크 스택 또는 기타 버퍼로 위치시키도록 구성될 수 있다. 상기 커널(450)은 또한 상기 스택 내의 패킷이 링크(450)를 통신이 되도록 하면서 상기 네트워크 스택을 관리할 수 있다. 또한, 상기 커널(450)은 링크(450)를 통해 패킷을 수신하고, 상기 수신된 패킷에서 메시지를 추출하며, 이렇게 추출된 메시지를 제공하도록 구성될 수 있다.
도시된 실시예에서, 상기 응용프로그램(440)은 링크(110)를 통한 전송을 위한 메시지를 제공한다. 상기 메시지는 전송을 위해 상기 응용프로그램(440)에 의해 커널(450)에 타겟팅된다. 그러나, 도시된 예에서, 상기 병합 모듈(420)은 상기 커널(450)에 타겟팅된 메시지들을 인터셉트(intercept)하도록 구성되며 또한 인터셉트된 메시지를 병합 메시지로 병합하도록 구성된 층 서비스 제공자(layered service provider) 또는 기타 소프트웨어 모듈이다. 상기 병합 모듈은, 상기 병합된 메시지를 패킷 형태로 형성하여 링크(110)를 통해 통신하기 위해 상기 커널(450)로 제공한다.
상기 분리 모듈(130)은 층 서비스 제공자 또는 응용프로그램 층과 커널 사이에 개재된 기타 소프트웨어 모듈로 구성될 수 있다. 분리 모듈(130)은 커널(450)에 의해 제공된 병합 메시지들을 인터셉트하여 이 병합 메시지를 개별 메시지들로 분리하여 상기 개별 메시지들을 연관 응용프로그램들에(예를 들어, 각 메시지에 연관된 포트 번호에 의해 표시되는 응용프로그램)에 제공하도록 구성될 수 있다.
그러므로, 도 4에 도시된 실시예에서, 병합 모듈(420)은 응용프로그램(440)과 커널(450) 사이에 삽입되는 소프트웨어이다. 이는 응용프로그램(440) 또는 커널(450)을 재설계하지 않고, 다른 통신 프로토콜에 연관된 메시지를 포함하는 메시지의 병합을 가능케 한다.
상기 병합 모듈(420)은 여러 모드 중 하나의 모듈에서 동작할 수 있어, 병합 이 상기한 바와 같이 모든 또는 일부 커넥션에 제공되거나 또는 어떠한 커넥션에도 제공되지 않는다. 응용프로그램(440)은 정보를 소켓(socket) 및 파이프(pipe) 등과 같은 표준 소프트웨어 프로토콜들을 통해 병합 모듈로 보냄으로써 병합 모듈(420)의 병합 모드를 설정할 수 있다.
도 5를 보면, 메시지를 병합하는 방법에 대한 한 특정 실시예의 순서도가 도시되어 있다. 블록(502)에서, 메시지는 응용프로그램으로부터 수신된다. 블록(504)에서, 메시지는 병합 메시지에 위치된다. 상기 메시지의 메시지 헤더는 통신 프로토콜과 같은 메시지의 특정 속성을 식별함은 물론 병합 메시지 내의 메시지 콘텐츠를 제한하도록 형성된다.
블록(506)에서, 병합 메시지가 완료되었는지를 결정하다. 한 실시예에서, 이러한 결정은 병합 메시지의 크기에 기초한다. 예를 들면, 병합 메시지는 통신을 위한 패킷으로 형성될 때 패킷 크기가 특정 통신 링크 프로토콜에 대해 최적의 크기가 되도록 하는 크기 또는 그 크기에 유사할 때 완료되도록 결정될 수 있다. 또 다른 실시예에서, 상기 결정은 특정 또는 프로그램가능한 양의 시간이 경과되는 지에 기초하여 되어진다. 이는 메시지가 특정 또는 프로그램된 시간과 통신하도록 한다. 또 다른 실시예에서, 상기 결정은 보낼 사이드 밴드(side-band) 데이터가 있는지, 및 패킷 크기가 특정 통신 링크 프로토콜에 대해 최적의 크기가 되도록 사이드 밴드 데이터에 첨가할 충분한 공간이 있는 지에 기초하여 실시된다. 사이드 밴드 데이터는 패치, 업데이트, 또는 당장 필요치는 않지만 나중에 필요한 추가 데이터와 같이, 급하게 전송되지 않는 어떠한 데이터도 될 수 있다. 또 다른 실시예 에서, 상기 결정은 특정 시간, 패킷 크기, 링크 사용량, 및 사이드 밴드 데이터의 가용성 등을 포함하는 요건들의 조합에 기초하여 실시될 수 있다.
블록(506)에서, 만약 병합 메시지가 완료되지 않은 것으로 결정된 경우, 상기 방법은 블록(502)으로 되돌아가고 또 다른 메시지를 수신한다. 다음에 수신된 메시지는 다른 보안 특성, 다른 압축 특성, 또는 이들의 조합을 포함하는 다른 통신 프로토콜과 연관될 수 있다. 따라서, 도 5에 도시된 실시예에서, 다른 통신 프로토콜에 연관된 메시지는 병합 메시지로 병합되고 끝점들 간의 보다 효과적인 통신을 가능하게 한다.
블록(506)에서, 만약 병합 메시지가 완료되었다고 결정되면, 상기 방법의 순서는 블록(508)으로 이동하고 병합 메시지를 포함하는 패킷이 형성된다. 상기 패킷은 통신 링크에 연관된 프로토콜에 기초하여 형성된다. 블록(510)에서, 상기 패킷은 상기 통신 링크를 통해 통신된다.
도 6을 보면 본 발명의 한 실시예에 따른 메시지 분리 방법에 대한 순서도가 도시되어 있다. 블록(602)에서, 패킷이 통신 링크를 통해 끝점에서 수신된다. 블록(604)에서 끝점은 상기 패킷이 병합 메시지를 포함하는 지를 결정하다. 상기 결정은 상기 패킷의 메시지 헤더 또는 기타 정보에 기초하여 실시될 수 있다. 만약 상기 패킷이 병합 메시지를 포함하지 않은 경우, 상기 방법의 순서는 블록(606)으로 이동하고 상기 메시지는 상기 패킷에서 추출되어 상기 메시지가 타겟팅되는 응용프로그램으로 라우팅된다.
블록(604)에서, 만약 상기 패킷 내의 메시지가 병합 메시지인 경우, 상기 병 합 메시지는 개별 메시지를 포함하여 상기 개별 메시지는 보안 특성 및 압축 특성을 포함하는 다른 통신 프로토콜과 연관된다. 또한, 각 개별 메시지가 다른 통신 포트와 연관될 수 있다. 따라서, 상기 방법의 순서는 블록(608)으로 이동하고 상기 병합 메시지 내의 제 1 개별 메시지의 메시지 헤더가 접근된다. 상기 메시지 헤더는 개별 메시지의 크기, 상기 개별 메시지에 연관된 통신 프로토콜, 및 상기 개별 메시지에 연관된 포트 번호 등을 식별할 수 있다. 블록(610)에서, 상기 메시지는 접근 헤더에 기초하여 추출된다.
블록(612)에서, 상기 추출된 메시지는 주어진 응용프로그램이 예를 들어 소켓과 같은 표준 커넥션 인터페이스로서 수신할 수 있는 메시지의 타겟이 되는 커넥션으로 라우팅된다. 한 실시예에서, 상기 라우팅은 접근된 메시지 헤더에 표시되는 포트 번호에 기초하여 실시될 수 있다. 블록(614)에서, 상기 병합 메시지 내의 모든 메시지가 추출되었는지를 결정한다. 만약 그렇지 않다면, 상기 방법의 순서는 블록(608)으로 되돌아 가고 상기 병합 메시지 내의 다음 개별 메시지의 메시지 헤더가 접근된다. 모든 개별 메시지가 추출되면 상기 방법은 블록(616)에서 종료한다.
도 7은 메시지를 병합하는 한 방법에 대한 한 특정 실시예의 순서도를 도시하고 있다. 블록(702)에서, 병합 모드 정보가 병합 모듈에서 수신된다. 상기 병합 모듈은 하드웨어 또는 소프트웨어 모듈일 수 있고, 표준 또는 특정 소프트웨어 또는 하드웨어 인터페이스를 통해 병합 모드 정보를 수신할 수 있다. 상기 병합 모드 정보는 각 방법에 연관된 커넥션에 기초하여 어떤 메시지가 어떤 다른 메시지 와 병합되었는지를 나타낸다. 그러므로, 상기 병합 모드 정보는 모든 메시지들에 대해 병합이 불가능한지, 모든 메시지들에 대해 병합이 가능한지, 또는 통신 끝점들 간의 커넥션들의 특정 부분에 연관된 메시지들에 대해서만 병합이 가능한 지를 나타낼 수 있다 또한, 상기 병합 모드 정보는 커넥션의 제 1 부분에 연관된 메시지들이 제 1 부분과 연관된 다른 메시지들과 병합될 수 있지만 끝점들 간의 커넥션들의 제 2 부분에 연관된 메시지들과는 병합될 수 없도록 커넥션의 다른 일부에 대해 병합이 가능함을 나타낼 수 있다.
블록(704)에서, 메시지는 병합 모듈에서 수신된다. 블록(706)에서 상기 병합 모듈은 병합 모드 정보에 기초하여 상기 메시지가 다른 메시지들과 병합될 수 있는지를 결정한다. 한 실시예에서, 이러한 결정은 상기 메시지와 연관된 커넥션에 기초하여 되어진다. 만약 상기 병합 모드 정보에 기초하여 상기 메시지가 다른 메시지들과 병합될 수 없다면, 상기 방법의 순서는 블록(708)으로 이동하고 수신된 비병합(un-coalesced) 메시지를 포함하는 패킷이 형성된다. 상기 방법의 순서는 블록(716)으로 이동하고 상기 패킷은 끝점으로 통신된다. 상기 방법은 블록(704)으로 돌아가고 상기 병합 모듈은 또 다른 메시지를 기다린다.
블록(706)에서, 만약 상기 메시지가 병합될 수 있다고 결정되면, 상기 방법의 순서는 블록(710)으로 이동하고 상기 수신된 메시지는 병합 메시지 내로 위치된다. 상기 방법의 순서는 블록(712)으로 이동하고 상기 병합 메시지가 완료되었는지를 결정한다. 만약 그렇지 않다면, 상기 방법의 순서는 블록(704)으로 돌아가고 상기 병합 모듈은 또 다른 메시지를 기다린다. 만약 상기 병합 메시지가 완료되 면, 상기 방법의 순서는 블록(714)으로 이동하고 상기 병합 메시지를 포함하는 패킷이 형성된다. 상기 방법은 블록(716)으로 진행되고 상기 패킷은 끝점으로 통신된다.
다른 실시예들에서, 병합 메시지가 완료되었는가에 대한 결정은 상기 병합 메시지 내에 메시지가 위치되었는가에 기초하지 않고, 그 보다는, 다른 기준, 예를 들면 특정 양의 시간이 경과하였는가에 기초하여 실시된다.
도 8을 보면 끝점들(802, 804)을 포함하는 데이터 처리 시스템(800)의 한 특정 실시예에 대한 블록도가 도시되어 있다. 도시된 실시예에서, 상기 끝점(802)은 서버로서 기능하도록 구성된 컴퓨터 시스템이고, 한편 상기 끝점(804)은 클라이언트 구성 내의 컴퓨터이다. 다른 실시예들에서, 상기 끝점들(802, 804)은 P2P 통신의 피어들(peers)로 구성으로 구성된 컴퓨터 시스템일 수 있다.
도시된 바와 같이, 상기 끝점(802)은 게임 서버 응용프로그램(840),게임 업데이트 응용프로그램(841), 및 웹 브라우저 응용프로그램(842)을 포함하는 다수의 다른 응용프로그램들을 실행한다. 상기 게임 서버 응용프로그램(840)은 클라이언트 컴퓨터 시스템에서 실행되는 게임 클라이언트 응용프로그램을 위한 온라인 게임 환경을 생성하기 위해 정보를 제공하도록 구성된다. 상기 게임 업데이트 응용프로그램(841)은 상기 게임 서버 응용프로그램(840)과 특정 방식으로 상호작용할 수 있도록 게임 클라이언트 응용프로그램을 수정하기 위해 패치 또는 업데이트 정보와 같은 정보를 제공하도록 구성된다. 상기 웹 브라우저 응용프로그램(842)은 웹 서버 응용프로그램에서 디스플레이를 위한 웹 콘텐츠를 제공하도록 구성된다.
상기 끝점(802)은 도 1 내지 도 7에 관하여 위에 설명한 바와 같이 구성되는 병합 모듈(820)을 포함한다. 상기 병합 모듈(820)은 도 4에 관하여 설명한 바와 같은 소프트웨어 모듈일 수 있고 또는 도 3에 관하여 설명한 바와 같은 하드웨어 모듈일 수 있다. 상기 병합 모듈(820)은, 운영 시스템(도시하지 않음) 또는 기타 모듈에 의해, 상기 응용프로그램들(840, 841, 842)로부터 메시지들을 수신하여 상기 응용프로그램들에 의해 제공되는 모드 제어 정보에 기초하여 메시지들을 병합한다.
상기 끝점(804)은 게임 클라이언트 응용프로그램(843) 및 웹 서버 응용프로그램(845)을 실행하도록 구성된다. 상기 게임 클라이언트 응용프로그램(843)은 게임 서버 응용프로그램으로부터 수신된 정보에 기초하여 온라인 게임 환경을 디스플레이하도록 구성된다. 또한, 상기 게임 클라이언트 응용프로그램은 게임 업데이트 응용프로그램으로부터 수신된 패치 또는 업데이트 정보에 기초하여 상기 응용프로그램의 하나 이상의 양태들을 수정하도록 구성된다. 상기 웹 브라우저 응용프로그램(845)은 웹 서버 응용프로그램으로부터 수신된 웹 콘텐츠를 디스플레이하도록 구성된다.
도시된 실시예에서, 상기 끝점(802)은 커넥션(811)("커넥션 1"로 표시), 커넥션(812)("커넥션 2"로 표시), 및 커넥션(813)("커넥션 3"으로 표시)을 포함한 다수의 커넥션들을 통해 정보를 끝점(804)으로 제공한다. 상기 커넥션들(811 내지 813)은 상기 끝점들(802, 804)에 의해 설정된 가상의 또는 논리적인 커넥션들일 수 있고 각 커넥션들 간의 통신들은 동일한 물리적 커넥션을 통해 통신될 수 있다. 커넥션은 끝점들(802, 804) 중 하나에서 실행되는 응용프로그램에 의해 요청될 수 있고, 또한 운영 시스템(도시하지 않음) 또는 연관 끝점에서 실행되는 기타 모듈에 의해 설정될 수 있다.
각각의 커넥션들(811 내지 813)은 끝점(802)에서, 다른 응용프로그램 또는 응용프로그램에 의해 제공되는 데이터 유형으로부터의 통신에 연관될 수 있다. 도시된 실시예에서, 상기 커넥션(811)은 상기 게임 서버 응용프로그램(840)에 의해 제공되는 통신과 연관되고, 상기 커넥션(812)은 상기 게임 업데이트 응용프로그램(841)과 연관되며, 상기 커넥션(813)은 상기 웹 브라우저 응용프로그램(842)과 연관된다. 또한, 각각의 커넥션은 특정 통신 프로토콜과 연관되어 커넥션 상의 통신이 연관 프로토콜을 따르도록 한다. 도시된 실시예에서, 상기 커넥션(811, 813)은 각각 TCP 프로토콜과 연관되는 반면, 상기 커넥션(812)은 UDP 프로토콜과 연관된다.
도시된 실시예에서, 병합 모듈(820)은 수신된 모드 제어 정보에 기초하여, 상기 게임 서버 응용프로그램(840) 및 게임 업데이트 응용프로그램(841)에 의해 제공되는 메시지들을 병합하고 상기 웹 브라우저 응용프로그램으로부터 수신되는 메시지들은 병합하지 않도록 구성된다. 따라서, 동작시, 상기 병합 모듈(820)은 상기 게임 서버 응용프로그램 및 게임 업데이트 응용프로램으로부터 메시지를 수신한다. 이에 응답하여, 상기 병합 모듈(820)은 상기 메시지들을 병합 메시지로 병합하고 상기 병합 메시지를 포함하는 패킷을 형성한다.
도시된 실시예에서, 상기 병합 모듈(820)은 상기 패킷을 통신하기 위한 커넥 션을 선택한다. 병합 모듈(820)은 다양한 기준들에 기초하여 상기 선택을 할 수 있다. 예를 들면, 상기 병합 모듈(820)이, 메시지들 중 하나가 TCP와 같은 순서가 정해진 프로토콜과 연관되고 메시지들 중 하나가 UDP와 같은 순서가 정해지지 않은 프로토콜에 연관되었다고 결정한 경우, 상기 병합 모듈은 상기 메시지 순서를 유지하기 위해 상기 순서가 정해진 프로토콜에 연관된 커넥션을 선택할 수 있다. 그러므로, 도시된 실시예에서, 상기 병합 모듈(820)은 TCP 프로토콜을 이용하여 상기 병합 메시지를 포함하는 패킷을 커넥션(811)을 통해 통신할 수 있다. 따라서, 비록 상기 게임 업데이트 응용프로그램(841)으로부터 수신된 메시지가 UDP 프로토콜과 연관되어 있지만, 이는 상기 게임 서버 응용프로그램(840)으로부터 수신된 메시지와 커넥션(811)에 연관된 TCP 프로토콜을 이용하여 끝점(804)으로 통신된다.
또한, 상기 웹 브라우저 응용프로그램(842)으로부터 메시지를 수신하며, 상기 병합 모드(820)는 상기 모드 제어 정보에 기초하여 상기 메시지가 병합되지 않을 것이라고 결정할 수 있다. 이에 응답하여, 상기 병합 모듈(820)은 상기 비병합 메시지를 포함하는 패킷을 형성하여 상기 커넥션(813)을 통해 통신한다.
상기 예에서, 게임 서버 응용프로그램(840) 및 게임 업데이트 응용프로그램(841)으로부터의 메시지는 병합되어 상기 커넥션(811)과 통신된다. 그러므로, 일부 경우들에서, 패킷이 커넥션(812)을 통해 통신되지 않게 된다. 그럼에도 불구하고, 상기 커넥션(812)은 상기 끝점들(802, 804) 사이에 형성될 수 있다. 이는 상기 응용프로그램(840 내지 842)의 재설계 및 끝점(802)에서 실행되는 운영 시스템의 광범위한 재설계 없이, 상기 병합 모듈(820)이 끝점(802, 804) 사이의 통신 통로로 삽입되도록 한다.
상기 분리 모듈(830)은 각각의 커넥션(811 내지 813)으로부터 패킷을 수신하여 상기 패킷이 병합 또는 비병합 메시지를 포함하는지를 결정한다. 상기 패킷이 비병합 메시지를 포함하는 경우, 상기 분리 모듈(830)은 상기 패킷으로부터 메시지를 추출하여 상기 메시지를 연관 응용프로그램에 제공한다. 그러므로, 상기 연결(813)을 통해 통신된 메시지(즉, 상기 웹 서버 응용프로그램(842)에 의해 제공되는 메시지)의 경우, 분리 모듈(830)은 연관 패킷에서 상기 메시지를 추출하여 이 메시지를 웹 브라우저 응용프로그램(845)에 제공한다.
수신된 패킷이 병합 메시지를 포함하는 경우, 상기 분리 모듈은 상기 패킷에서 각각의 병합 메시지를 추출하고 이렇게 추출된 메시지를, 상기 메시지에 연관된 커넥션의 표시와 함께 상기 연관 응용프로그램으로 제공한다. 따라서, 만약 분리 모듈(830)이 상기 게임 서버 응용프로그램(840) 및 게임 업데이트 응용프로그램(841)로부터의 메시지를 포함하는 병합 메시지를 갖는 패킷을 수신한 경우, 상기 분리 모듈(830)은 각각의 메시지를 추출하고 이렇게 추출된 메시지를, 마치 각각의 메시지가 상기 메시지를 제공한 응용프로그램과 연관된 커넥션을 통해 수신된 것처럼 상기 게임 클라이언트 응용프로그램(840)에 제공한다. 즉, 상기 분리 모듈(830)은 게임 업데이트 응용프로그램(841)으로부터의 추출된 메시지가 커넥션(812)을 통해 통신되어 게임 클라이언트 응용프로그램(843)에 나타나도록 상기 추출된 메시지를 상기 게임 클라이언트 응용프로그램(843)에 제공하고, 커넥션(812)을 통해 통신된 메시지가 상기 게임 클라이언트 응용프로그램(843)에 나타 나도록 게임 서버 응용프로그램(840)으로부터의 추출된 메시지를 제공한다. 그러므로, 상기 메시지가 병합되고 또한 특정 메시지가 사실상 다른 커넥션을 통해 통신되었다는 사실은 게임 클라이언트 응용프로그램(843)에서 명확해진다. 이는 상기 게임 클라이언트 응용프로그램(843)을 재설계하지 않고 상기 메시지의 병합 및 통신이 가능하도록 한다.
그러므로, 도 8에 도시된 실시예에서, 병합 메시지들은 사용자가 온라인 게임을 할 수 있도록 하면서 게임 환경 정보를 게임 클라이언트 응용프로그램(843)에 제공하는 데에 이용될 수 있고, 또한 패치 또는 업데이트 프로그램을 제공하는 데에 이용될 수 있어, 상기 게임 클라이언트 응용프로그램(843)이 최신 버전으로 유지되도록 한다. 다른 형태들의 메시지들을 병합가능하게 함으로써, 상기 끝점들(802, 804) 간의 통신 효율을 증가시키게 된다.
도 9를 보면 도 3의 링크 인터페이스(305)에 대응하는 링크 인터페이스(905)의 한 특정 실시예에 대한 블록도가 도시되어 있다. 상기 링크 인터페이스(905)는 통신 인터페이스(907), 통신 인터페이스(909), 병합 모듈(920), 및 분리 모듈(930)을 포함한다. 상기 통신 인터페이스(907)는 끝점(302)과의 통신을 위한 물리적인 인터페이스를 제공하도록 구성되며, 버스 인터페이스 및 네트워크 인터페이스 등으로 구현될 수 있다. 상기 통신 인터페이스(909)는 끝점(304)과의 통신을 위한 물리적인 인터페이스를 제공하도록 구성되며, 버스 인터페이스 및 네트워크 인터페이스 등으로 구현될 수 있다.
동작시, 상기 통신 인터페이스(907)는 끝점(302)으로부터 메시지들을 수신 받고 이 메시지들을, 상기한 바와 같이 수신된 메시지가 병합될 수 있는지를 결정하는 병합 모듈(920)에 제공한다. 상기 병합 모듈(920)은 또한 상기한 바와 같이 수신된 메시지들을 병합하여 병합 및 비병합 메시지를 위한 패킷들을 형성한다. 상기 패킷들은 끝점(304)과의 통신을 위한 통신 인터페이스(909)에 제공된다.
상기 통신 인터페이스(909)는 끝점(304)으로부터 패킷을 수신하고 상기 패킷들을 분리 모듈(930)에 제공한다. 상기 분리 모듈(930)은 수신된 메시지가 병합 메시지를 포함하는지를 결정하고, 만약 포함하는 경우, 상기한 바와 같이 개별 메시지를 추출한다. 상기 분리 모듈(930)은 또한 수신된 패킷들로부터 비병합 메시지를 추출할 수 있다. 이와 같이 추출된 메시지들은 각각 끝점(302)과의 통신을 위한 통신 인터페이스(907)에 제공된다.
이상의 내용은 제한적이지 않은 예들에 불과하고, 첨부된 청구범위는 본 발명의 사상 및 범위 내에 포함되는 모든 변경, 개선 및 기타 실시예들을 포함하고자 한다. 그러므로, 법적으로 허용된 최대한의 범위까지, 본 발명의 범위는 하기 청구항들 및 그와 동등한 것들에 의해 가장 넓게 해석되어야 하며 상기 상세한 설명에 의해 제한되지 않는다.

Claims (27)

  1. 제 1 통신 프로토콜과 연관된 제 1 메시지를 수신하는 단계;
    제 2 통신 프로토콜과 연관된 제 2 메시지를 수신하는 단계;
    상기 제 1 메시지 및 제 2 메시지를 포함하는 제 1 패킷을 형성하는 단계; 및
    상기 제 1 패킷을 통신하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 2 통신 프로토콜은 상기 제 1 통신 프로토콜과 다른, 방법.
  3. 제 1 항에 있어서,
    제 3 통신 프로토콜과 연관된 제 3 메시지를 수신하는 단계를 추가로 포함하고,
    상기 제 1 패킷을 형성하는 단계는 상기 제 3 메시지를 포함하는 상기 제 1 패킷을 형성하는 단계를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 제 1 패킷을 형성하는 단계는 상기 제 1 메시지가 제 1 통신 커넥션(connection)과 연관되고 상기 제 2 메시지가 제 2 통신 커넥션과 연관되었다고 결정하는 것에 응답하여 상기 제 1 패킷을 형성하는 단계를 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 제 1 패킷을 형성하는 단계는 병합 모드 정보가 상기 제 1 메시지와 상기 제 2 메시지가 병합될 수 있음을 나타낸다고 결정하는 단계를 포함하는, 방법.
  6. 제 1 항에 있어서,
    제 3 메시지를 수신하는 단계;
    다른 메시지와 병합되지 않은 상기 제 3 메시지를 포함하는 제 2 패킷을 형성하는 단계; 및
    상기 제 2 패킷을 통신하는 단계를 추가로 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 제 1 통신 프로토콜 및 제 2 통신 프로토콜은 전송 층 프로토콜들인, 방법.
  8. 제 1 항에 있어서,
    상기 제 1 통신 프로토콜은 전송 제어 프로토콜(Transmission Control Protocol:TCP), 사용자 데이터그램 프로토콜(User Datagram Protocol:UDP), 실시간 전송 프로토콜(Real-Time Transport Protocol: RTP), 신호 커넥션-제어 부(Signaling Connection and Control Part:SCCP), 시퀀스 패킷 교환(Sequenced Packet Exchange:SPX), 스트림 제어 전송 프로토콜(Stream Control Transmission Protocol:SCTP), 네트워크 파일 시스템(Network File System:NFS), 서버 메시지 블록(Server Message Block:SMB), IPv4, IPv6, IPSec, 보안 소켓 층(Secure Sockets Layer:SSL), 인터넷트워크 패킷 교환(Internetwork Packet Exchange:IPX), 비연결 네트워킹 프로토콜 (Connectionless Networking Protocol:CLNP)로 구성된 그룹으로부터 선택되는, 방법.
  9. 제 1 항에 있어서,
    상기 제 1 통신 프로토콜은 상기 제 2 통신 프로토콜과 다른 보안 특성에 연관되는, 방법.
  10. 제 1 항에 있어서,
    상기 제 1 통신 프로토콜은 상기 제 2 통신 프로토콜과 다른 압축 특성에 연관되는, 방법.
  11. 제 1 항에 있어서,
    상기 제 1 메시지는 제 1 포트로 타겟팅되고 상기 제 2 메시지는 제 2 포트로 타겟팅되는, 방법.
  12. 제 1 항에 있어서,
    상기 제 1 통신 프로토콜은 순서가 정해진 통신 프로토콜이고, 상기 제 2 통신 프로토콜을 순서가 정해지지 않은 프로토콜인, 방법.
  13. 제 12 항에 있어서,
    상기 제 1 패킷을 통신하는 단계는 상기 제 1 통신 프로토콜과 연관된 커넥션을 통해 상기 제 1 패킷을 통신하는 단계를 포함하는, 방법.
  14. 제 1 항에 있어서,
    상기 제 1 메시지를 수신하는 단계는 인터페이스 장치에서 제 1 프로세서로부터 상기 제 1 메시지를 수신하는 단계를 포함하고, 상기 제 2 메시지를 수신하는 단계는 상기 인터페이스 장치에서 상기 제 2 메시지를 수신하는 단계를 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 인터페이스 장치는 네트워크 인터페이스를 포함하는, 방법.
  16. 제 1 패킷을 수신하는 단계;
    상기 제 1 패킷이 병합 메시지를 포함한다는 결정에 응답하여,
    상기 제 1 패킷으로부터 상기 병합 메시지의 제 1 메시지를 추출하는 단계로 서, 상기 제 1 메시지는 제 1 통신 프로토콜과 연관되는, 상기 제 1 메시지를 추출하는 단계; 및
    상기 제 1 패킷으로부터 상기 병합 메시지의 제 2 메시지를 추출하는 단계로서, 상기 제 2 메시지는 제 2 통신 프로토콜과 연관되는, 상기 제 2 메시지를 추출하는 단계를 포함하는, 방법.
  17. 제 16 항에 있어서,
    상기 제 1 메시지를 제 1 커넥션에 제공하는 단계; 및
    상기 제 2 메시지를 제 2 커넥션에 제공하는 단계를 추가로 포함하는, 방법.
  18. 제 16 항에 있어서,
    상기 제 1 통신 프로토콜은 상기 제 2 통신 프로토콜과 다른, 방법.
  19. 제 16 항에 있어서,
    헤더(header)에 기초하여 상기 제 1 메시지와 상기 제 2 메시지 사이의 메시지 순서를 결정하는 단계를 추가로 포함하는, 방법.
  20. 제 16 항에 있어서,
    헤더에 기초하여 상기 제 1 메시지와 제 3 메시지 사이의 메시지 순서를 결정하는 단계를 추가로 포함하고, 상기 제 3 메시지는 비병합(non-coalesced) 메시 지인, 방법.
  21. 제 1 통신 프로토콜과 연관된 제 1 메시지 및 제 2 통신 프로토콜과 연관된 제 2 메시지를 제 1 프로세서로부터 수신하도록 구성된 제 1 인터페이스;
    병합 메시지를 형성하기 위해 상기 제 1 및 제 2 메시지들을 병합하도록 구성되고, 상기 병합 메시지를 포함하는 제 1 패킷을 제공하도록 구성된 병합 장치; 및
    상기 제 1 패킷을 끝점(endpoint)에 통신하도록 구성된 제 2 인터페이스를 포함하는, 장치.
  22. 제 21 항에 있어서,
    상기 제 1 인터페이스는 버스 인터페이스를 포함하는, 장치.
  23. 제 21 항에 있어서,
    상기 제 2 인터페이스는 네트워크 인터페이스를 포함하는, 장치.
  24. 제 21 항에 있어서,
    상기 병합 장치는 상기 제 1 메시지 및 상기 제 2 메시지의 순서를 결정하도록 구성되고, 상기 순서를 표시하는 헤더를 포함하도록 상기 패킷을 형성하도록 구성되는, 장치.
  25. 제 21 항에 있어서,
    상기 병합 장치는 모드 제어 정보가, 상기 제 1 및 제 2 메시지들이 병합될 수 있슴을 나타낸다고 결정하는 것에 응답하여 상기 제 1 및 제 2 메시지들을 병합하도록 구성되는, 장치.
  26. 병합 메시지를 포함하는 패킷을 수신하도록 구성된 제 1 인터페이스;
    제 1 통신 프로토콜과 연관된 제 1 메시지 및 제 2 통신 프로토콜과 연관된 제 2 메시지를 추출하도록 구성된 분리(de-coalescing) 장치; 및
    상기 제 1 메시지 및 제 2 메시지를 끝점으로 통신하도록 구성되는 제 2 인터페이스를 포함하는, 장치.
  27. 제 26 항에 있어서,
    상기 분리 장치는 상기 패킷의 헤더 정보에 기초하여 상기 제 1 메시지 및 상기 제 2 메시지의 순서를 결정하도록 추가로 구성되는, 장치.
KR1020097022053A 2007-03-23 2008-03-21 메시지 병합 장치 및 그 방법 KR20100015790A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US89682807P 2007-03-23 2007-03-23
US60/896,828 2007-03-23

Publications (1)

Publication Number Publication Date
KR20100015790A true KR20100015790A (ko) 2010-02-12

Family

ID=39774618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097022053A KR20100015790A (ko) 2007-03-23 2008-03-21 메시지 병합 장치 및 그 방법

Country Status (4)

Country Link
US (1) US20080232364A1 (ko)
EP (1) EP2140334A4 (ko)
KR (1) KR20100015790A (ko)
WO (1) WO2008118804A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014208889A1 (ko) * 2013-06-27 2014-12-31 에스케이텔레콤 주식회사 컨텐츠 전송 시스템에서 데이터 처리를 위한 장치 및 이를 위한 방법
WO2021230589A1 (ko) * 2020-05-11 2021-11-18 삼성전자 주식회사 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138525B2 (en) * 2012-12-10 2021-10-05 Trading Technologies International, Inc. Distribution of market data based on price level transitions
US10212022B2 (en) 2013-09-13 2019-02-19 Microsoft Technology Licensing, Llc Enhanced network virtualization using metadata in encapsulation header
US9778963B2 (en) * 2014-03-31 2017-10-03 Solarflare Communications, Inc. Ordered event notification
US9749266B2 (en) 2015-08-28 2017-08-29 International Business Machines Corporation Coalescing messages using a network interface controller
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
US11412075B2 (en) * 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
CN114285672B (zh) * 2022-02-24 2022-12-09 北京志翔科技股份有限公司 一种跨网自动文件交换方法及计算机可读存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021440A (en) * 1997-05-08 2000-02-01 International Business Machines Corporation Method and apparatus for coalescing and packetizing data
EP1104141A3 (en) 1999-11-29 2004-01-21 Lucent Technologies Inc. System for generating composite packets
US7170893B2 (en) * 2001-06-15 2007-01-30 Lucent Technologies Inc. Technique for selecting the number of packets to be concatenated
US7243148B2 (en) * 2002-01-15 2007-07-10 Mcafee, Inc. System and method for network vulnerability detection and reporting
US8811429B2 (en) * 2002-02-19 2014-08-19 Brocade Communications Systems, Inc. Batching and compression for IP transmission
US20040252721A1 (en) * 2003-06-16 2004-12-16 International Business Machines Corporation Bundled internet protocol packets
US20050165985A1 (en) * 2003-12-29 2005-07-28 Vangal Sriram R. Network protocol processor
KR100882965B1 (ko) * 2004-03-17 2009-02-13 지멘스 악티엔게젤샤프트 고정 네트워크 및/또는 이동 네트워크 내에서 서비스 메시지를 전송하기 위한 방법, 단말 및 서버
US7463611B2 (en) 2004-07-15 2008-12-09 Atheros Communications, Inc. Efficient data transmission by data aggregation
US7447233B2 (en) 2004-09-29 2008-11-04 Intel Corporation Packet aggregation protocol for advanced switching
KR100608914B1 (ko) * 2004-11-11 2006-08-09 한국전자통신연구원 VoIP용 무선랜에 있어서 통신품질을 보장하는 매체접속 제어 장치
US7480301B2 (en) * 2004-12-16 2009-01-20 International Business Machines Corporation Method, system and article for improved TCP performance during retransmission in response to selective acknowledgement
US8311059B2 (en) * 2005-09-07 2012-11-13 Emulex Design & Manufacturing Corporation Receive coalescing and automatic acknowledge in network interface controller
US7978603B2 (en) * 2006-10-10 2011-07-12 Qualcomm Incorporated Traffic optimization in a heterogeneous wireless cabin network

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014208889A1 (ko) * 2013-06-27 2014-12-31 에스케이텔레콤 주식회사 컨텐츠 전송 시스템에서 데이터 처리를 위한 장치 및 이를 위한 방법
US9893991B2 (en) 2013-06-27 2018-02-13 Sk Telecom Co., Ltd. Device and method for processing data in content transmission system
WO2021230589A1 (ko) * 2020-05-11 2021-11-18 삼성전자 주식회사 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법

Also Published As

Publication number Publication date
US20080232364A1 (en) 2008-09-25
WO2008118804A1 (en) 2008-10-02
EP2140334A4 (en) 2013-05-29
EP2140334A1 (en) 2010-01-06

Similar Documents

Publication Publication Date Title
KR20100015790A (ko) 메시지 병합 장치 및 그 방법
US9450855B2 (en) Message routing mechanism for communication networks
US7895348B2 (en) Virtual dispersive routing
CN113326228B (zh) 基于远程直接数据存储的报文转发方法、装置及设备
US7660306B1 (en) Virtualizing the operation of intelligent network interface circuitry
US7885257B2 (en) Multiple virtual network stack instances using virtual network interface cards
US7630368B2 (en) Virtual network interface card loopback fastpath
US7751401B2 (en) Method and apparatus to provide virtual toe interface with fail-over
US20100183024A1 (en) Simplified rdma over ethernet and fibre channel
US11088948B1 (en) Correlating network flows in a routing service for full-proxy network appliances
US20090210601A1 (en) Systems and methods for providing a virtual network interface connection ("nic") with the baseboard management controller ("bmc")
US20190215306A1 (en) Rule processing and enforcement for interleaved layer 4, layer 7 and verb based rulesets
US9432487B2 (en) System and method for network protocol offloading in virtual networks
US8458366B2 (en) Method and system for onloading network services
CN106230870B (zh) 私有协议文件传输***与方法
KR102383782B1 (ko) 데이터 통신에서의 터널 데이터 업데이트 처리방법
US8566833B1 (en) Combined network and application processing in a multiprocessing environment
US11431677B2 (en) Mechanisms for layer 7 context accumulation for enforcing layer 4, layer 7 and verb-based rules
US7613198B2 (en) Method and apparatus for dynamic assignment of network interface card resources
KR20220157317A (ko) 데이터 경로 상태 복제 및 중간 디바이스 매핑을 사용한 서비스 분배를 위한 방법 및 시스템
CN102315918B (zh) 一种tcp连接与sctp连接互通的方法及装置
CN104509050A (zh) 虚拟机数据分组封装及解封装
US20050086325A1 (en) Method and apparatus for network content insertion and phase insertion
US7672299B2 (en) Network interface card virtualization based on hardware resources and software rings
US7675920B1 (en) Method and apparatus for processing network traffic associated with specific protocols

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid