CN1503152A - 处理多网络连接上的定序记录的设备和方法 - Google Patents
处理多网络连接上的定序记录的设备和方法 Download PDFInfo
- Publication number
- CN1503152A CN1503152A CNA2003101149142A CN200310114914A CN1503152A CN 1503152 A CN1503152 A CN 1503152A CN A2003101149142 A CNA2003101149142 A CN A2003101149142A CN 200310114914 A CN200310114914 A CN 200310114914A CN 1503152 A CN1503152 A CN 1503152A
- Authority
- CN
- China
- Prior art keywords
- message
- logic
- port
- asynchronous
- sequencing
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
Abstract
处理多个网络连接上的定序记录的设备和方法。“逻辑连接”被定义为包含一个或多个网络连接。每个消息被赋予一个序列号,使得消息按照序列号能够在另一端按顺序进行排列,而不管逻辑连接中使用哪一个网络连接来传递该消息。通过定义消息、将这些消息定序、并将这些消息通过多个网络连接进行传递,使得网络计算机系统的吞吐量和性能得到了充分地增强。
Description
相关申请
本专利申请与2001年11月21日申请的、题目为“确定流协议顶层基于记录的I/O的有效方法”有关,这里参照引用了该申请。
技术领域
本发明一般性地涉及计算机系统,特别涉及网络上计算机系统之间进行通信的设备和方法。
背景技术
自计算机时代开始以来,计算机系统已经进化为极其成熟的设备,可以在许许多多不同的环境下发现它的存在。计算机的广泛使用刺激了计算机网络的发展,计算机网络使得计算机之间能够相互通信。对大多数人来说,由于个人计算机(PC)的推广,使用计算机处理日常工作变得极为容易。如今,个人计算机的网络已经发展成个人用户和软件可以在网络上进行相互通信。已经变得极为流行的网络是Internet。
网络通常是由硬件和软件的组合构成的。例如,为了使两个计算机在网络上进行通信,每个计算机系统必须拥有通常通过路由器或交换设备将彼此连接在一起的网络接口卡(NIC)。一旦硬件就绪,就要选择能够使计算机之间进行通信的网络协议。传输控制协议/网际协议(TCP/IP)是一个著名的、使计算机系统之间彼此能够进行通信的网络协议。通过在一个计算机系统上定义套接字(代表与其它计算机系统上对应套接字的点对点连接),TCP/IP在计算机系统之间进行通信。一个计算机系统通过向其套接字写入数据来向另一个计算机系统发送数据,所述套接字对应于这两个计算机系统之间的连接。而另一个计算机系统在另一端从与该连接相应的套接字读出数据。一旦在两个计算机系统上定义了一组相应的套接字,通过针对各自的套接字写入或读出,这两个系统能够按照如上所述的那样相互通信。
本领域中已知许多不同类型的计算机网络。现今占绝对优势的计算机网络形式是客户-服务器网络。在通常的客户-服务器网络中,一个或更多的客户计算机系统被连接到网络上,同时一个或更多服务器计算机系统也被连接到该网络上。在某些客户-服务器网络中,客户计算机系统是个人计算机,而服务器系统是作为针对执行网络服务器功能而优化的专用服务器的计算机系统。一般地,服务器计算机系统负责执行客户计算机系统请求的任务。
从客户计算机系统到服务器计算机系统的数据传送是经常需要执行的常规任务。图2给出的是现有技术的客户-服务器计算机系统200的例子,用于从客户计算机系统202的客户机应用210和220发送数据到服务器计算机系统204的服务器应用270。在客户计算机系统202上定义客户机套接字230,该套接字通过网络245连接到服务器计算机系统204上的相应服务器套接字250。套接字230和套接字250因此专用于客户机应用210和服务器应用270之间的通信。以类似的方式,客户机套接字240被定义在客户计算机系统202上,该套接字通过网络245连接到服务器计算机系统204上的相应服务器套接字260。套接字240和套接字260因此专用于客户机应用220和服务器应用270之间的通信。
当客户机应用210将数据发送给服务器应用270时,它将该数据写到客户机套接字230中,套接字230通过网络245将数据传输到服务器套接字250。服务器应用270随后可以从服务器套接字250中读出该数据。这种类型的传输方式由图中所示:客户机应用210发送数据A、B、C和D到客户机套接字230,数据由服务器套接字250接收并为服务器应用270所用。包含数据A的记录样本如图3所示。以类似的方式,当客户机应用220将数据发送到服务器应用270时,客户机应用220将该数据写入客户机套接字240,套接字240通过网络245将该数据传输给服务器套接字260。服务器应用270随后可以从服务器套接字260中读出数据。这种类型的传输方式由图中所示:客户机应用220发送数据V、X、Y和Z给客户机套接字240,该数据由服务器套接字260接收并为服务器应用270所用。
在现有技术,例如图2所示的系统200中,客户机应用具有单个和专用的、用来与服务器应用进行通信的套接字。如果需要传输少量的数据,该数据可以仅占用很少部分套接字能够支持的可用带宽。如果需要传输大量的数据,数据必须在单个套接字上串行地发送,因而传输所需要的时间受到单个套接字的带宽的限制。由于无法使用多个套接字在客户机应用和服务器应用之间进行通信,因此计算机产业将继续受到在单个专用套接字上进行通信的客户机应用的缺点的不利影响。
发明内容
根据优选实施例,一种设备和方法允许处理多个网络连接上的定序记录。“逻辑连接”被定义为包含一个或多个网络连接。每条消息被赋予一个序列号,使得消息能够根据序列号在另一端按序排列,而不管逻辑连接中的哪一个网络连接被用来传输该消息。通过定义消息,使那些消息按顺序排列,并使得消息在多个网络连接上传输,因而大大地提高了网络计算机系统的吞吐量和性能。
正如附图所举例说明的那样,本发明的前述优点和其它特性将在下列本发明的优选实施例的具体描述中变得更为明显。
附图说明
本发明的优选实施例将在此后随附图一起描述,其中同样的标记表示同样的部件:
图1是根据本发明优选实施例的设备的方框图;
图2是现有技术中网络计算机系统的一个实例的方框图;
图3是图2网络计算机系统实例中发送的数据的方框图;
图4是另一网络计算机系统的方框图;
图5是图4网络计算机系统发送的数据的方框图;
图6是依据优选实施例的网络计算机系统的方框图;
图7是图6网络计算机系统发送的数据的方框图;
图8是图7所示定序记录头的方框图;
图9-图18中的每个图均给出根据优选实施例的一个特定例子的网络通信的不同阶段;
图19给出的是根据优选实施例、在单一逻辑连接上使用多个套接字在计算机系统之间进行通信的方框图;
图20给出的是根据优选实施例、在多个逻辑连接上使用多个套接字在计算机系统之间进行通信的方框图;
图21给出的是根据优选实施例、当存在多个逻辑连接时在第一个逻辑连接上接收定序记录的方框图;
图22给出的是根据优选实施例、当存在多个逻辑连接时在第二个逻辑连接上接收定序记录的方框图;
图23是根据优选实施例配置客户机应用的方法的流程图;
图24是根据优选实施例、通过套接字和异步I/O定序完成端口接收和处理记录的方法的流程图;
图25是根据优选实施例、由服务器应用执行的方法的流程图;
图26是图25中的步骤2510的一种适用实现方案的流程图。
具体实施方式
本发明涉及计算机系统之间的网络通信。对于那些不太熟悉的计算机之间网络通信的技术人员,下面概述中提出的概念将有助于理解本发明。
概述
已知的网络通信
正如上述背景部分所讨论的,图2给出的是现有技术中的一个实例系统200,举例说明的是客户-服务器环境中的网络通信。客户计算机系统202包含两个客户机应用210和220,具有相应的专用套接字230和240。套接字230和240经过网络245与服务器计算机系统204上相应的套接字250和260进行通信,服务器应用270接收来自套接字250和260的输入数据。
图2所例举的现有技术系统200中存在几个缺陷。首先,每个客户机应用专用于单一客户机套接字。如果客户机应用有大量的数据需要发送,它必须在单一的套接字上进行。其次,服务器应用270直接服务于服务器套接字250和260。在TCP传输层上,为了在网络245上传输数据,可能将该数据(例如图3所示的数据A)分解为多个数据分组。在现有技术的系统200中,当每次接收分组时,服务器套接字250和260可以通知服务器应用270。因此服务器应用270针对每个所接收的信息分组都会与服务器套接字250和260进行交互。这将对服务器应用270增加很大的处理开销。
流协议顶层基于记录的I/O
在2001年11月21日提交的序列号为09/990,850的相关申请公开了对图2现有技术系统200的改进,并作为图4中的系统400给出。在服务器计算机系统270中提供了异步I/O的先入先出(FIFO)的完成端口460,以减轻服务器应用270直接服务于服务器套接字250和260所接收的每个分组的开销。当数据(例如数据A)需要发送时,为数据前附指示消息长度的头510,从而生成如图5所示的数据记录A′。数据记录A′被发送到客户机的专用套接字230,它通过网络245将数据记录A′传输到相应的服务器套接字250。如上所讨论的那样,数据记录A′可能被分成多个分组以便在网络245上传输。套接字250接收数据分组,读出和解释记录的消息长度头,将这些分组装配在一起直至已经完全接收了该记录,并将完整的记录(例如数据A′)递送到异步I/O FIFO的完成端口460。因此服务器应用270从异步I/O FIFO完成端口460读出完整记录。应该注意的是,图4所示的方案要求客户机应用410和420及服务器应用270具有额外的发送数据记录A′(它包括消息长度头510(如图5所示))而不是仅仅传输和接收数据A的逻辑连接。
虽然计算机系统400通过减轻服务器应用服务于服务器套接字的开销对网络通信进行了改善,但当大量的数据需要传输时,仍然存在十分严重的问题。因为只有单一的套接字可能为一个客户机应用服务,大批量数据的传输受到单一套接字带宽的吞吐量限制。
细节描述
本优选实施例通过允许定义可以包含多个套接字的“逻辑连接”增强了网络通信的性能。数据记录可以通过包含多个套接字的逻辑连接发送出去,所接收的数据在另一端被正确重构。通过定义包含多个套接字的逻辑连接,大大地减少了传输大量数据所需要的时间,因此提高了系统的性能。
现在参照图1,计算机系统100是根据本发明优选实施例、适于服务器计算机系统的一个实现。计算机系统100是IBM eServeriSeries计算机系统。然而,本领域的技术人员会理解,本发明的这种机制和装置同样可以用于任何计算机系统,不论该计算机系统是否是复杂的多用户计算设备,单用户的工作站,还是嵌入式控制系统。如图1所示,计算机系统100包括处理器110、主存储器120、海量存储器接口130、显示器接口140和网络接口150。这些系统部件通过使用系统总线160相互连接起来。海量存储器接口130用于将海量存储设备(例如直接访问存储设备155)连接到计算机系统100。一种特定类型的直接访问存储设备155是可读和可写CD-RW驱动器,它可以向CD-RW195存储数据和从CD-RW195读出数据。
根据优选实施例的主存储器120含有数据122、操作系统123、服务器应用124、异步I/O定序完成端口125(此后被称为AIOSCP125)和一个或多个的套接字129。AIOSCP125最好包含一个或多个排序分级队列126和一个或多个已定义的逻辑连接128。计算机系统100利用著名的虚拟寻址机制,该机制允许计算机系统100的程序看上去就象它们仅对大的、单一的存储实体,例如像主存储器120和DASD设备155进行访问,而不是对多个较小的存储实体进行访问。因此,虽然数据122、操作系统123、服务器应用124、AIOSCP125和套接字129都示出为驻留在主存储器120中,然而本领域的技术人员应当认识到,这些项目不必同时都完全地包含于主存储器120中。同时应当注意到的是,这里使用的术语“存储器”一般指的是计算机系统100的整个虚拟存储器,可以包含与计算机系统100连接的其它计算机系统的虚拟存储器。
数据122表示任何充当计算机系统100中任何程序中的输入或输出的数据。操作系统123是业内被称为OS/400的多任务操作系统;然而,本领域的技术人员应当理解的是,本发明的宗旨和范围并不限于任何一个操作系统。服务器应用124最好是已知的服务器应用软件,但显然可以扩展到需要接收数据的任何计算机程序。套接字129和AIOSCP125(为简单起见,此后被称为AIOSCP 125)处理可能在多个逻辑连接上的输入消息,并且在通知服务器应用124可读取一个或多个完成的消息之前,正确地将该数据排序。AIOSCP 1125适宜地包含一个或多个排序分级队列126,它将消息以适当的顺序排序,无论接收的顺序如何。然而,应当注意到的是,在优选实施例的范围内排序分级队列126可以与AIOSCP 125分立,如图9-图22所示。一个或多个逻辑连接128的定义告知AIOSCP 125如何构造和排序输入消息。AIOSCP 125对于它们各个组件126和128的操作将在下面参照图9-22进行详细地阐述。
处理器110可以由一个或多个微处理器和/或集成电路构成。处理器110执行存储在主存储器120内的程序指令。主存储器120存储处理器110可以进行访问的程序和数据。当计算机系统启动时,处理器110最初执行的程序指令是操作系统123的指令。操作系统123是管理计算机系统100的资源的复杂程序。这些资源中的某些资源是处理器110、主存储器120、海量存储器接口130、显示器接口140、网络接口150和系统总线160。
尽管计算机系统100被示出为仅包含单一处理器和单一系统总线,然而本领域的技术人员应当理解的是,本发明可以使用具有多个处理器和/或多个总线的计算机系统实现。此外,在优选实施例中使用的接口均包含单独的、用于从处理器110分担计算密集的处理的完全编程微处理器。然而,本领域的技术人员应当理解的是,本发明同样可以用于简单使用I/O适配器执行类似功能的计算机系统。
显示器接口140用于直接将一个或多个显示器165连接到计算机系统100上。这些显示器165可以是非智能(哑)终端或完全可编程工作站,用于允许系统管理员和用户与计算机系统100通信。然而应当注意,尽管提供显示器接口140以支持与一个或多个显示器165的通信,但是计算机系统100不一定非得需要显示器165,因为所有需要的与用户和其它进程进行的交互可以通过网络接口150进行。
网络接口150用于将其它的计算机系统和/或工作站(例如图1中的175)通过网络170连接到计算机系统100。无论怎样将计算机系统100连接到其它的计算机系统和/或,也不管是否使用现在的模拟技术和/或数字技术,或某些未来的网络机制组成网络连接170,本发明均同样适用。此外,许多不同的网络协议可以用于实现网络。这些协议是允许计算机通过网络170进行通信的专用计算机程序。TCP/IP(传输控制协议/网际协议)是一个合适的网络协议例子。在本优选实施例中,多个客户机被连接到网络170,服务器计算机系统100服务于这些客户机的请求。
这里需要注意到,尽管本发明已经和将继续在全功能计算机系统的环境中描述,然而本领域的技术人员应当理解的是,本发明能够作为各种形式的程序产品来发布,而且不管实际进行发布的信号承载媒介的具体类型如何,本发明可以同样适用。合适的信号承载媒介的例子包括:可记录类型的媒介,例如软盘和CD-RW(例如图1中的195),和例如数字和模拟通信链路的传输类型媒介。
现在参照图6,按照本优选实施例的网络计算机系统600包含通过网络245连接到服务器计算机系统100的客户计算机系统602。客户计算机系统602包含通过套接字630和632发送数据给服务器计算机系统100的第一客户机应用610。这两个套接字630和632最好作为第一“逻辑连接”的一部分。以类似的方式,客户计算机系统602包含通过套接字640和642发送数据给服务器计算机系统100的第二客户机应用620。这两个套接字640和642最好作为第二逻辑连接的一部分。应当注意到的是,通过客户机应用610和620发送的数据最好包含定序记录头710,如图7所示。定序记录头710最好包含消息长度810,序列号820和逻辑标识(ID)号830,如图8所示。因为该优选实施例中所传输的数据与图2和图4中传输的数据的不同之处在于增加了新的头信息,图8所示的数据是A″-D″和V″-Z″。通过为数据前附包含消息长度,记录序列号和对应该记录的逻辑ID号的定序记录头,客户机在多个网络连接上异步地发送消息,其中使用定序记录头710中的信息在接收计算机系统上适当地排序该消息。
在假定单一逻辑连接的可选实施例中,定序记录头710可以不包含如图8所示的逻辑ID号830。通过假定在这些套接字上接收的所有记录在逻辑上相同(基于单一逻辑连接的假定),或者通过定义了一组用于逻辑连接的套接字的应用级协议,逻辑ID可以被隐含。图8中的定序记录头710是既可用于单一逻辑连接,又可用于多个逻辑连接的更加通用的情形。
客户机套接字630、632、640和642都通过网络245连接到相应的服务器套接字650、652、660和662。AIOSCP 125被连接到服务器套接字650、652、660和662上,如图6所示。AIOSCP 125包含一个或多个排序分级队列126,和一个或多个逻辑连接128。我们对这个例子假定第一逻辑连接包含客户机套接字630、632和对应的服务器套接字650、652。第二逻辑连接包含客户机套接字640、642和对应的服务器套接字660、662。与现有技术相比,优选实施例非常重要的优点之一是能够定义多个套接字作为单个“逻辑连接”,因此强有力地改善了传输大数据记录的速度。
在图6所示的特定构造中,客户机应用610和620必须知道逻辑连接及其相应套接字的配置。然后客户机应用必须将适当的定序记录头710加到每个待发送的数据消息中,并且必须确定哪个数据记录将发送到哪个套接字。
图9-图22举例说明在本优选实施例的范围内可执行的各个步骤,以阐明本发明的原理。参照图9,我们假定执行服务器应用124中所示的代码。在行902和904上的两个socket()指令创建图9所示的套接字129A和129B。在行906处的createAIOSCP()指令创建异步I/O定序完成端口(AIOSCP)125。一旦创建了套接字129A,129B和AIOSCP,它们就在行908处进行初始化。
现在参照图10,现在执行服务器应用124中的代码。在行1002处设置记录定义。记录定义确定了定序记录头710中信息的布局和位置。然后在行1004处,在129A、129B和125的每个中将下一序列号初始化成1。隐含的逻辑ID可以在行1006处从AIOSCP 125中检索出来。这假定逻辑ID可被隐含,正如图8的可选实施例中所描述的那样,不必使逻辑ID作为头信息的一部分。对于图8中所示的包含显式逻辑ID 830的头,行1006处的指令会被设置逻辑ID的指令所替换。
行1008的startRecv()指令建立与套接字129A对应的排序分级队列126A,并使套接字129A、排序分级队列126A和AIOSCP 125能够开始进行接收。在行1008处的指令中传递的参数指定AIOSCP#1(125)是完成端口,指定所规定的完成端口将服务于套接字#1(129A),并指定套接字#1(129A)是对应于已定义连接的逻辑连接的部分。行1008的这个指令使该逻辑连接128被写到AIOSCP125。以类似的方式,行1009的startRecv()指令建立对应于套接字129B的排序分级队列126B,使得套接字129A,排序分级队列126A和AIOSCP 125能够开始进行接收。行1009的指令中传递的参数指定AIOSCP#1(125)是完成端口,指定所规定的完成端口将服务于套接字#2(129B),并指定套接字#2(129B)是对应于已定义连接的逻辑连接的部分。在这个特定例子中,注意两个套接字129A和129B已经被指派到相同逻辑连接。本优选实施例的非常重要的优点是能够将多个网络连接(例如,多个套接字)定义成单一逻辑连接的部分,因此改善了传输大数据记录的速度。
一旦行1008和行1009的startRecv()指令已经执行,可以开始套接字129A和129B的记录接收。参照图11,现在可以执行服务器应用124中的代码。在服务器应用124等待时,在行1102上执行指令asynchWait(),该指令指定AIOSCP 125可以开始执行其功能,以便将定序记录装配成适当的顺序。
图12给出的是两个套接字129A和129B现在正在接收的数据记录。我们假定通过套接字129A已经完全接收了记录#2、#5和#8,因此所述记录按顺序保留在排序分级队列126A中,其记录号对应于每个记录的序列号。我们同样假定通过套接字129B已经完全接收了记录#3、#6和#7,因此所述记录按顺序保留在排序分级队列126B中,其记录号对应于每个记录的序列号。应当注意的是,AIOSCP仍然将下一序列号设置为#1,然而记录#1还没有被接收,因此没有完成记录被传输到图12的AIOSCP 125中。
我们现在假定在套接字129B上接收到记录#1,如图13所示。因为#1是AIOSCP 125中的下一个序列号,完成记录#1被传输到AIOSCP 125。此刻AIOSCP 125期望的下一个序列号是#2,它已经出现在排序分级队列126A中,因此完成记录#2被传输到AIOSCP 125。AIOSCP 125期望的下一个序列号是#3,它已经出现在排序分级队列126B中,因此完成记录#3被传输到AIOSCP 125。此刻AIOSCP 125期望的下一个序列号是#4,它还没有被任一个套接字所接收,因此它不出现在排序分级队列126A中,也不出现在排序分级队列126B中。其结果如图14所示,其中完成记录#1、#2和#3已经按顺序写到AIOSCP 125中。此刻AIOSCP 125通知服务器应用124:它具有要传输的记录。然后服务器应用124唤醒并接收完成记录#1、#2和#3,如图15的行1502所示。
本优选实施例的一个重要特性是能够不按次序地接收优先消息,使得该消息可以被服务器应用尽可能快地接收。在本优选实施例中,将0序列号视作优先消息,该消息尽可能快地被直接传递到服务器应用。参照图16,在套接字129B上接收记录#0。一旦整个记录#0被套接字129B接收,完成记录#0就被传输到AIOSCP 125,如图17所示。AIOSCP 125接着唤醒服务器应用124,服务器应用124从AIOSCP 125接收完成记录#0,如图18所示。图16-18表明,优先记录可以越过记录的正常定序处理,使得优先记录被尽可能快地递送到服务器应用124。在图16-18的简单例子中,优先记录的序列号被设定为0。然而本优选实施例显然适用于任何将优先记录与定序记录区分开的方式。
图9-18示出了一个系统,其中当只定义一个逻辑连接时,各个逻辑组的套接字通过AIOSCP 125执行定序记录I/O。正如图19以简化的方框图形式所示的那样,其中框1910表示图9-18中所示的套接字129A和129B,排序分级队列126A和126B,和AIOSCP125。因此,图19是图15所示系统的另一种表示。
在本优选实施例范围内的不同实施中,当定义了多个逻辑连接时,各个逻辑组的套接字可以通过AIOSCP 125进行定序记录I/O。在这种情形中,输入的数据记录不仅包含序列号,而且包含逻辑连接号(见图8)。不同逻辑连接的记录可能会以任何顺序接收。框2010表示多套接字多逻辑连接配置的AIOSCP,定序完成端口,和套接字。应当注意的是,输入到框2010的数据记录的顺序是任意的,框2010对这些记录进行适当的定序和排序,以向服务器应用124提供经过排序定序的记录块。于是,我们在图20中可以见到逻辑连接#1的完成记录#1、#2和#3作为排序的记录组被传输,逻辑连接#2的完成记录#1、#2和#3作为排序的记录组被传输。该优选实施例显然适用于在任意适当数目的网络连接上定义任意适当数目的逻辑连接的情况。
图20中的框2010的具体实施如图21所示。我们看到套接字129A被定义为两个逻辑连接的一部分,套接字129B同样也被定义为这两个逻辑连接的一部分。每个套接字上的每个逻辑连接具有它自己的对应排序分级队列。因此,套接字129A上的逻辑连接#1具有对应的排序分级队列126A;套接字129A上的逻辑连接#2具有对应的排序分级队列126B;套接字129B上的逻辑连接#1具有对应的排序分级队列126C;套接字129B上的逻辑连接#2具有对应的排序分级队列126D。对这个例子我们假定由套接字129A和129B接收的数据记录如图20所示。逻辑连接#1的记录#1首先从排序分级队列126A中取出并被写到AIOSCP 125中。逻辑连接#1的记录#2接着从排序分级队列126C中取出并被写到AIOSCP 125中。逻辑连接#1的记录#3随后从排序分级队列126A中取出并被写到AIOSCP 125中。此时,逻辑连接#1的下一个序列号是记录#4,但在这个例子中它还没有被接收。AIOSCP 125唤醒服务器应用124,服务器应用124接收逻辑连接#1的排序和定序记录#1、#2和#3。
图22说明了AIOSCP 125如何针对逻辑连接#2按照适当顺序对排序分级队列126D中的定序记录进行排序,然后唤醒服务器应用124并将这些记录传输到服务器应用124。图21和图22中较为复杂一些的例子说明了AIOSCP 125和其相关的排序分级队列126A、126B、126C和126D如何可以被用来定义多个网络连接(例如套接字)上的多个逻辑连接。根据这里提出的简单例子,本领域技术人员可以认识到,优选实施例的原理显然可延及任意适当数目的网络连接上的任意适当数目的逻辑连接。
回到图6,系统600的正确操作需要在系统600中执行一些步骤。例如,图23中的方法2300包含定义客户机应用必须知道以便根据优选实施例进行通信的信息的步骤。将这个信息适当地编码到客户机应用中(例如610和620)。在方法2300中,必须定义记录格式(步骤2310)。下一个序列号被设置为1(步骤2320)。定义一个或多个逻辑连接,然后指派相应的逻辑ID(步骤2330)。接着为每个逻辑连接定义一个或多个套接字(步骤2340)。通过步骤2310-2340中的信息,客户机应用610和620可以将消息传输到客户机套接字630、632、640和642(步骤2350)。应当注意的是,步骤2310、2320、2330和2340中的信息最好被硬编码到客户机应用610和620中,或可以通过任何适当的方式被传送到客户机610和620。一旦配置有步骤2310、2320、2330和2340中的信息,则在步骤2350中,客户机应用610和620将定序消息头710(见图8)加到记录中,并确定将哪些记录送往哪些逻辑连接的哪些套接字。
如图24所示的方法2400表示最好由图6中AIOSCP 125执行的步骤。定序消息(即包含图8中的定序记录头710的记录)被服务器套接字650、652、660和662装配,然后完成的记录被套接字和AIOSCP 125接收(步骤2410)。针对每个逻辑ID,在套接字上对记录进行排序(步骤2420)。然后AIOSCP 125等待任何丢失的记录(步骤2430)。随后,完成的定序记录被发送到服务器应用(步骤2440)。
服务器应用124最好执行图25所示的方法2500中的步骤。配置一个或多个的AIOSCP(例如图6中的125)(步骤2510)。一旦AIOSCP配置好,服务器应用124可以从AIOSCP接收定序消息(步骤2520)。然后服务器应用124对这些记录进行处理(步骤2530)。必要地处理记录的能力意味着服务器应用知道存在多个逻辑ID,并且将接收的特定逻辑ID的记录引向适当的位置。在这个优选实施例中,方法2500循环回到步骤2520,并继续进行循环,直到服务器应用结束。
图25的步骤2510的一种适合的实施如图26所示。首先,在AIOSCP中定义记录格式(步骤2610)。下一个序列号被设置为1(步骤2620)。定义一个或多个具有对应逻辑ID的逻辑连接(步骤2630)。最后,使用记录格式,序列号和逻辑ID在每个套接字上启动异步接收操作(步骤2640)。因此,通过使用图26所示的步骤进行配置,AIOSCP 125准备好在多个套接字上接收一个或多个逻辑连接的定序记录。应当注意的是,图25和图26中的步骤2510的一种特定实施被示出为通过指令1002、1004、1006、1008和1009执行的步骤。
通过定义每个都能包含多个套接字的一个或多个逻辑连接,优选实施例大大增强了计算机系统之间网络通信的能力和灵活性。以这种方式,大量定序记录能够在多个套接字上并行地和不按次序地传输,其中在接收端上,在将记录递送到等待数据的应用之前对这些记录进行适当的排序。
本领域的技术人员应当理解,在本发明的范围之内可以进行各种改动。因此,尽管参照其中的优选实施例已经特别给出和描述了本发明,然而本领域中的技术人员应当理解,可以进行这些和其它形式和细节上的变化,只要不背离本发明的宗旨和范围。例如,这里给出的套接字作为网络连接的一个特定例子,但是显然可以将优选实施例延及任何和所有类型的网络连接,不管它是现在已知的还是将来开发的。此外,优选实施例是作为从客户机到服务器传输的数据来举例说明和描述的,但是这只是为了举例的目的。优选实施例显然可以延及任何两个计算机系统之间的定序记录的传输和接收,不管它们是作为客户计算机系统还是服务器计算机系统的特定指定或功能。
Claims (42)
1.一种设备,包括:
至少一个处理器;
连接到至少一个处理器的存储器;
驻留在存储器中并且由至少一个处理器执行的软件应用;
驻留在存储器中并且由至少一个处理器执行的异步完成端口,异步完成端口定义可以包含多个第一网络连接的至少一个逻辑连接,异步完成端口从多个第一网络连接接收多个定序消息,对多个定序消息进行排序,并将排序的消息传送到软件应用。
2.如权利要求1中的设备,其中多个定序消息每个都包含序列号和逻辑连接标识,其中异步完成端口使用每个定序消息的序列号和逻辑连接标识对多个定序消息进行排序。
3.如权利要求1中的设备,其中异步完成端口定义多个逻辑连接,其中多个逻辑连接中的至少一个包含多个第一网络连接。
4.如权利要求1中的设备,其中异步完成端口包括:
对应于逻辑连接的排序分级队列,对相应逻辑连接的多个定序消息进行排序;
从排序分级队列接收排序消息的异步I/O定序完成端口。
5.如权利要求1中的设备,其中异步完成端口定义多个逻辑连接,该异步完成端口包括:
与每个逻辑连接相对应的排序分级队列,每个排序分级队列对相应逻辑连接的多个定序消息进行排序;和
从每个排序分级队列接收排序消息的异步I/O定序完成端口。
6.如权利要求1中的设备,其中每个网络连接包括套接字。
7.如权利要求1中的设备,其中异步完成端口接收优先消息并加快该优先消息到软件应用的传送。
8.一种设备,包括:
至少一个处理器;
与至少一个处理器相连的存储器;
驻留在存储器中并且由至少一个处理器执行的软件应用;
驻留在存储器中并且由至少一个处理器执行的至少一个网络连接,至少一个网络连接接收多个消息,每个消息包含序列号和逻辑连接标识;
驻留在存储器中并且由至少一个处理器执行的异步完成端口,该异步完成端口定义至少一个逻辑连接,该异步完成端口接收多个消息,根据它们各自的序列号和逻辑连接标识对多个消息进行排序,并将排序消息传送到软件应用。
9.如权利要求8中的设备,其中异步完成端口定义多个逻辑连接,其中多个逻辑连接中的至少一个逻辑连接包含多个网络连接。
10.如权利要求8中的设备,其中异步完成端口包括:
对应于逻辑连接的排序分级队列,对相应逻辑连接的多个消息进行排序;
从排序分级队列接收排序消息的异步I/O定序完成端口。
11.如权利要求8中的设备,其中异步完成端口定义多个逻辑连接,该异步完成端口包括:
与每个逻辑连接相对应的排序分级队列,该排序分级队列对相应逻辑连接的多个定序消息进行排序;
从每个排序分级队列接收排序消息的异步I/O定序完成端口。
12.如权利要求8中的设备,其中每个逻辑连接包括套接字。
13.如权利要求8中的设备,其中异步完成端口接收优先消息并将该优先消息加快传送到软件应用。
14.一种设备,包括:
至少一个处理器;
与至少一个处理器相连的存储器;
驻留在存储器中并且由至少一个处理器执行的软件应用;
驻留在存储器中并且由至少一个处理器执行的多个套接字,每个套接字接收多个消息,每个消息包含序列号和逻辑连接标识;
驻留在存储器中并且由至少一个处理器执行的异步完成端口,该异步完成端口定义多个逻辑连接,其中多个逻辑连接中的至少一个包含多个套接字,异步完成端口包括:
与每个逻辑连接相对应的排序分级队列,该排序分级队列读出多个消息,并且根据它们各自的序列号和逻辑连接标识对相应逻辑连接的多个消息进行排序;和
异步I/O定序完成端口,从每个排序分级队列接收排序消息,并将排序消息传送到软件应用。
15.在通过网络连在一起的第一计算机系统和第二计算机系统之间进行通信的方法,该方法包括步骤:
定义可包含多个第一网络连接的至少一个逻辑连接;
从多个第一网络连接接收多个定序消息;
对多个定序消息进行排序。
16.如权利要求15中的方法,该方法进一步包括将排序消息传送到在第二计算机系统中运行的软件应用的步骤。
17.如权利要求15中的方法,进一步包括定义多个逻辑连接的步骤,其中多个逻辑连接中的至少一个逻辑连接包含多个网络连接。
18.如权利要求15中的方法,该方法进一步包括步骤:
对每个逻辑连接的多个定序消息进行排序;
将排序消息传送到软件应用。
19.如权利要求15中的方法,该方法进一步包括步骤:
接收优先消息;
加快传送优先消息到软件应用。
20.如权利要求15中的方法,其中多个定序消息均包含序列号和逻辑连接标识,其中对多个定序消息进行排序的步骤包括使用每个定序消息的序列号和逻辑连接标识对多个定序消息进行排序的步骤。
21.如权利要求15中的方法,其中每个网络连接包括套接字。
22.在通过网络连接在一起的第一计算机系统和第二计算机系统之间进行通信的方法,包括下列步骤:
(A)第一计算机系统通过网络发送多个消息给第二计算机系统,每个消息包含序列号和逻辑连接标识;
(B)第二计算机系统接收多个消息,并根据其各自的序列号和逻辑连接标识对多个消息进行排序。
23.如权利要求22中的方法,该方法进一步包括将排序消息传送到在第二计算机系统上运行的软件应用的步骤。
24.如权利要求22中的方法,该方法进一步包括定义多个逻辑连接的步骤,其中多个逻辑连接中的至少一个逻辑连接包含多个网络连接。
25.如权利要求22中的方法,该方法进一步包括下列步骤:
对每个逻辑连接的多个定序消息进行排序;
将排序消息传送到在第二计算机系统上运行的软件应用。
26.如权利要求22中的方法,该方法进一步包括下列步骤:
第二计算机系统从第一计算机系统接收优先消息;
第二计算机系统加快传送该优先消息到第二计算机系统上运行的软件应用。
27.如权利要求22中的方法,其中每个网络连接包括套接字。
28.在通过网络连接在一起的第一计算机系统和第二计算机系统之间进行通信的方法,该方法包括下列步骤:
(A)在第二计算机系统上定义多个逻辑连接,其中所选择的逻辑连接包含多个套接字;
(B)第二计算机系统通过多个套接字从第一计算机系统接收多个消息,每个消息包含序列号和逻辑连接标识;
(C)第二计算机系统根据多个接收消息中每个消息的序列号和逻辑连接标识对每个逻辑连接的多个接收消息进行排序;
(D)将排序消息传送到在第二计算机系统上运行的软件应用。
29.一种程序产品,包括:
(A)异步完成端口,定义可包含多个第一网络连接的至少一个逻辑连接,异步完成端口从多个第一网络连接接收多个定序消息,对该多个定序消息进行排序,并且将排序消息传送到软件应用;
(B)承载异步完成端口的计算机可读信号承载媒体。
30.如权利要求29中的程序产品,其中计算机可读信号承载媒体包括可读媒体。
31.如权利要求29中的程序产品,其中计算机可读信号承载媒体包括传输媒体。
32.如权利要求29中的程序产品,其中多个定序消息均包含序列号和逻辑连接标识,其中异步完成端口使用每个定序消息的序列号和逻辑连接标识对多个定序消息进行排序。
33.如权利要求29中的程序产品,其中异步完成端口定义多个逻辑连接,其中多个逻辑连接的至少一个包含多个第一网络连接。
34.如权利要求29中的程序产品,其中异步完成端口包括:
与逻辑连接相应的排序分级队列,该队列对相应逻辑连接的多个定序消息进行排序;
从排序分级队列接收排序消息的异步I/O定序完成端口。
35.如权利要求29中的程序产品,其中异步完成端口定义多个逻辑连接,该异步完成端口包括:
与每个逻辑连接相应的排序分级队列,每个排序分级队列对相应逻辑连接的多个定序消息进行排序;
从每个排序分级队列接收排序消息的异步I/O定序完成端口。
36.如权利要求29中的程序产品,其中每个网络连接包括套接字。
37.一种程序产品,包括:
(A)定义至少一个逻辑连接的异步完成端口,该异步完成端口接收多个消息,每个消息包含序列号和逻辑连接标识,根据其各自的序列号和逻辑连接标识对多个消息进行排序,并将排序消息传送到软件应用;
(B)计算机可读信号承载媒体,承载异步完成端口。
38.如权利要求37中的程序产品,其中计算机可读信号承载媒体包括可记录媒体。
39.如权利要求37中的程序产品,其中计算机可读信号承载媒体包括传输媒体。
40.如权利要求37中的程序产品,其中异步完成端口定义多个逻辑连接,其中多个逻辑连接中的至少一个逻辑连接包含多个网络连接。
41.如权利要求37中的程序产品,其中异步完成端口包括:
与逻辑连接相应的排序分级队列,排序分级队列对相应逻辑连接的多个定序消息进行排序;
从排序分级队列接收排序消息的异步I/O定序完成端口。
42.如权利要求37中的程序产品,其中异步完成端口定义多个逻辑连接,该异步完成端口包括:
与每个逻辑连接相应的排序分级队列,排序分级队列对相应逻辑连接的多个定序消息进行排序;
从每个排序分级队列接收排序消息的异步I/O定序完成端口。
43.如权利要求37中的程序产品,其中每个网络连接包括套接字。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/301,055 | 2002-11-21 | ||
US10/301,055 US7433955B2 (en) | 2002-11-21 | 2002-11-21 | Apparatus and method for processing sequenced records across multiple network connections |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1503152A true CN1503152A (zh) | 2004-06-09 |
CN100414530C CN100414530C (zh) | 2008-08-27 |
Family
ID=32324460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101149142A Expired - Fee Related CN100414530C (zh) | 2002-11-21 | 2003-11-13 | 处理多网络连接上的定序记录的设备和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7433955B2 (zh) |
CN (1) | CN100414530C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103391289A (zh) * | 2013-07-16 | 2013-11-13 | 中船重工(武汉)凌久高科有限公司 | 一种基于完成端口模型的多链路安全通信方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509378B2 (en) * | 2003-03-11 | 2009-03-24 | Bea Systems, Inc. | System and method for message ordering in a message oriented network |
JP4007240B2 (ja) * | 2003-04-09 | 2007-11-14 | ヤマハ株式会社 | データ変換規則の切替装置及びプログラム |
US7720973B2 (en) * | 2003-06-30 | 2010-05-18 | Microsoft Corporation | Message-based scalable data transport protocol |
KR100754651B1 (ko) * | 2003-12-23 | 2007-09-05 | 삼성전자주식회사 | 패킷 데이터 통신을 이용한 이동통신 단말기들 간의데이터 교환이 가능한 이동 통신 시스템 및 방법 |
US20050198302A1 (en) * | 2003-12-29 | 2005-09-08 | Microsoft Corporation | Multi-client support |
US7464121B2 (en) * | 2006-01-06 | 2008-12-09 | International Business Machines Corporation | Apparatus for sending a sequence of asynchronous messages to the same member of a clustered consumer |
WO2012106573A1 (en) * | 2011-02-04 | 2012-08-09 | Opnet Technologies, Inc. | Correlating input and output requests between client and server components in a multi-tier application |
US10904899B1 (en) | 2018-03-26 | 2021-01-26 | Lynq Technologies, Inc. | Generating transmission arrangements for device group communication sessions |
CN111083075B (zh) * | 2019-12-20 | 2022-01-11 | 苏州盛科通信股份有限公司 | 多核SoC处理报文的方法及应用其的SoC |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5619650A (en) * | 1992-12-31 | 1997-04-08 | International Business Machines Corporation | Network processor for transforming a message transported from an I/O channel to a network by adding a message identifier and then converting the message |
US5628005A (en) * | 1995-06-07 | 1997-05-06 | Microsoft Corporation | System and method for providing opportunistic file access in a network environment |
US6073177A (en) | 1997-08-05 | 2000-06-06 | Sterling Software, Inc. | Dynamic method for connecting a client to a server application |
US6070193A (en) * | 1997-11-26 | 2000-05-30 | International Business Machines Corp. | Apparatus and method for ordered transmission on networks |
US6643259B1 (en) * | 1999-11-12 | 2003-11-04 | 3Com Corporation | Method for optimizing data transfer in a data network |
WO2002015018A1 (en) * | 2000-08-11 | 2002-02-21 | 3Ware, Inc. | Architecture for providing block-level storage access over a computer network |
CN1154332C (zh) * | 2001-02-27 | 2004-06-16 | 华为技术有限公司 | 在移动智能网上提供短消息智能业务的方法 |
-
2002
- 2002-11-21 US US10/301,055 patent/US7433955B2/en not_active Expired - Fee Related
-
2003
- 2003-11-13 CN CNB2003101149142A patent/CN100414530C/zh not_active Expired - Fee Related
-
2008
- 2008-03-15 US US12/049,273 patent/US7886059B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103391289A (zh) * | 2013-07-16 | 2013-11-13 | 中船重工(武汉)凌久高科有限公司 | 一种基于完成端口模型的多链路安全通信方法 |
Also Published As
Publication number | Publication date |
---|---|
US7886059B2 (en) | 2011-02-08 |
US20080162656A1 (en) | 2008-07-03 |
US7433955B2 (en) | 2008-10-07 |
US20040103196A1 (en) | 2004-05-27 |
CN100414530C (zh) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112020002501T5 (de) | System und verfahren zur erleichterung eines effizienten lastausgleichs in einer netzwerkschnittstellensteuerung (nic) | |
US8326915B2 (en) | Pipeline systems and method for transferring data in a network environment | |
CN1212574C (zh) | 使用本地标识符的端节点分区 | |
CN1205562C (zh) | 总线系统的分隔事务协议 | |
US7808999B2 (en) | Method and apparatus for out-of-order processing of packets using linked lists | |
CN100351798C (zh) | 在多线程网络处理器中线程信令的分组处理方法和系统 | |
CN1306754C (zh) | 平衡网格计算环境中的工作负荷的方法和系统 | |
US20150195339A1 (en) | Asynchronous data protocol | |
US7886059B2 (en) | Processing sequenced records across multiple network connections | |
CN1151449C (zh) | 允许服务器远程访问未通电的客户计算机系统资产信息的数据处理系统和方法 | |
US20080301406A1 (en) | System and method for allocating communications to processors in a multiprocessor system | |
CN1627728A (zh) | 在计算机服务器中共享以太网适配器的方法和装置 | |
CN1520122A (zh) | 数据通信的方法和数据通信的输入/输入装置 | |
CN1879368A (zh) | 利用有序的加锁机制来维护诸如分组之类的项目的次序 | |
CN1449160A (zh) | 用于包括无阻塞交换结构和线路卡接口的系统的包调度 | |
CN113127139B (zh) | 一种基于数据面开发套件dpdk的内存分配方法和装置 | |
CN1293493C (zh) | 机群文件服务系统及其输入输出处理方法 | |
CN1826768A (zh) | 利用动态资源分配进行的大规模排队的可扩展方法 | |
CN1324499C (zh) | 处理不期望的完成分组和具有非成功完成状态的完成分组的方法 | |
CN1643874A (zh) | 使用定额和差额值进行调度 | |
CN101043446A (zh) | 数据转发处理的方法和装置 | |
US20050281286A1 (en) | Storage structure and method utilizing multiple protocol processor units | |
US7228375B1 (en) | System and method for efficient input/output of a computer system | |
JPH0690256A (ja) | パケット通信方法ならびにその送信装置および受信装置 | |
CN116383240A (zh) | 基于fpga多数据库加速查询方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080827 Termination date: 20201113 |