CN1599319A - 用于管理通过网络的数据传输的方法,系统和程序 - Google Patents

用于管理通过网络的数据传输的方法,系统和程序 Download PDF

Info

Publication number
CN1599319A
CN1599319A CN200410056658.0A CN200410056658A CN1599319A CN 1599319 A CN1599319 A CN 1599319A CN 200410056658 A CN200410056658 A CN 200410056658A CN 1599319 A CN1599319 A CN 1599319A
Authority
CN
China
Prior art keywords
message
dma
memory access
direct memory
destination
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
Application number
CN200410056658.0A
Other languages
English (en)
Other versions
CN100438403C (zh
Inventor
H·T·贝弗利
A·楚巴尔
G·Y·曹
A·L·阿里兹佩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1599319A publication Critical patent/CN1599319A/zh
Application granted granted Critical
Publication of CN100438403C publication Critical patent/CN100438403C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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]
    • 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/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

提供用于管理通过网络从信源到目的地的数据传输的方法、系统和程序。目的地在信源上施加窗口值,该窗口值限制在未接收到由目的地接收的确认的情况下可从信源向目的地发送的数据分组的数量。在一种实施例中,信源施加小于目的地窗口值的第二窗口值,这进一步限制在未接收到由目的地接收的确认的情况下可从信源向目的地发送的数据分组的数量。在另一种实施例中,在信源和多个目的地的多个指定存储单元之间建立多个直接存储器存取连接。信源施加多个消息限制,每个消息限制对从信源向与该消息限制相关的直接存储器存取连接的指定存储单元发送的且缺少由与该消息限制相关的直接存储器存取连接的目的地接收的消息确认的消息的数量施加用于每个直接存储器存取连接的独立限制。

Description

用于管理通过网络的数据传输的方法,系统和程序
技术领域
本发明涉及用于管理通过网络的数据传输的方法、系统和程序。
背景技术
在网络环境中,诸如以太网控制器、光纤通道控制器等的主计算机上的网络适配器将接收输入/输出(I/O)请求或对从主机中发出的I/O请求的响应。通常,主计算机操作系统包括设备驱动器来与网络适配器硬件通信,以管理在网络上传输的I/O请求。主计算机还包括传输协议驱动器,它把将要在网络上传输的数据打包成分组,每个分组包含目的地址以及将要传输的数据的一部分。在网络适配器上接收到的数据分组通常存储在主机存储器中可用的已分配的分组缓冲器中。传输协议驱动器处理在分组缓冲器中存储的由网络适配器接收的分组,并访问嵌入在分组中的任何I/O命令或数据。
例如,传输协议驱动器可以执行传输控制协议(TransmissionControl Protocol)(TCP)和因特网协议(Internet Protocol)(IP)来编码和寻址用于传输的数据,并解码和访问在网络适配器上接收到的TCP/IP分组中的有效负载数据。IP规定分组(也称为数据报)的格式以及寻址方案。TCP是在目的地和信源之间建立连接的更高层协议。还一更高层协议(即,远程直接存储器存取Remote Direct MemoryAccess(RDMA))建立更高层连接,并且除了其它的操作之外,还允许在目的地上在规定的存储单元上数据的直接布局。
设备驱动器可使用大量的主机处理器资源来处理至网络适配器的网络传输请求。降低主机处理器上的负载的一种技术是使用TCP/IP卸载引擎(Offload Engine)(TOE),其中与设备驱动器相反,TCP/IP协议相关操作在网络适配器硬件内执行,从而使主机处理器免于必须执行一些或全部TCP/IP协议相关操作。这些传输协议操作包括利用校验和和其它信息打包TCP/IP分组内的数据,以及拆开在网络上接收到的TCP/IP分组以访问有效负载或数据。
图1图示在TCP连接中从信源主机发送给目的主机的TCP/IP分组流10。在如在工业接受的TCP RFC(注释请求)中规定的TCP协议中,给每个分组分配唯一的顺序号。当将每个分组成功地发送给目的主机时,由目的主机向信源主机发送一个确认,利用分组顺序号通知信源主机成功接收该分组。因此,流10包括已经被发送的并被确认为由目的主机接收的分组的一部分12。流10还包括已经被信源主机发送的但是尚未被确认为由目的主机接收的分组的一部分14。信源主机保持TCP未确认数据指针16,它指向第一未确认发送分组的顺序号。TCP未确认数据指针16被存储在协议控制块18a、18b、......、18n的字段17a、17b、......、17n(图2)中,每个用于启动和维持在信源主机和一个或多个目的主机之间的多条相关TCP连接之一。
用于存储在目的主机上接收的数据分组的分组缓冲器的容量的大小通常是有限的。根据TCP协议,目的主机通过发送在图1中标记为20在此称作TCP窗口的数值来广告它所具有的可用缓存器空间的大小。因此,信源主机使用TCP窗口来限制发送给目的主机的未完成分组的数量,即信源主机尚未接收到确认的发送分组的数量。用于每个TCP连接的TCP窗口值存储在控制相关TCP连接的协议控制块18a、18b、......、18n的字段21a、21b、......、21n中。
例如,如果目的主机发送用于特定TCP连接的128KB(千字节)的TCP窗口值,则信源主机将根据TCP协议将它在TCP连接上发送的数据量限制到128KB,直到它从目的主机接收到已接收到一些或全部数据的确认。如果目的主机确认它已接收到全部128KB,则信源主机可以发送另外的128KB。反之,如果目的主机确认仅接收了96KB,例如,信源主机将在TCP连接上仅发送附加的96KB,直到它接收到进一步的确认。
在相关协议控制块18a、18b、......、18n的字段23a、23b、......、23n内存储的TCP下一数据指针22指向将要发送给目的主机的下一个分组的顺序号。TCP下一数据指针22和TCP窗口20的末尾28之间的数据流10的一部分24代表尚未发送的但是被允许在TCP协议下发送而不等待任何附加确认的分组,因为这些分组依然在图1所示的TCP窗口内。不允许在TCP协议下发送在TCP窗口20的末尾边界28之外的数据流10的一部分26,除非接收到附加的确认。
当目的主机将确认发送给信源主机时,TCP未确认数据指针16移动以指示用于该连接的附加分组的确认。TCP窗口20的开始边界30随着TCP未确认数据指针16一起移动,以便TCP窗口末尾边界28也移动,因此可以发送该连接的附加分组。
图3图示通过网络在信源主机的各个软件应用和一个或多个目的主机的各个存储单元之间的多个RDMA连接50a、50b、......、50n。每个RDMA连接50a、50b、......、50运行在TCP连接上。在RDMA协议中,如在工业接受的RDMA RFC(注释请求)中定义的,每个RDMA连接50a、50b、......、50n包括队列对51a、51b、......、51n,包括利用软件应用创建的队列52a、52b、......、52n,所述软件应用预定发送存储在目的主机的指定存储单元上的消息。每个应用队列52a、52b、......、52n存储将利用相关的软件应用发送的消息。每个队列52a、52b、......、52n的大小可以相当大或相对小,这取决于将利用相关应用发送的消息的数量。
每个RDMA连接50a、50b......、50n的每个队列对51a、51b、......、51n还包括与软件应用的相关应用队列52a、52b、......52n成对的网络接口队列60a、60b、......、60n。网络接口62包括各种硬件,典型地网络接口卡,和各种软件,包括由主机执行的驱动程序。网络接口还可以包括卸载引擎以执行协议操作。
响应于来自应用的发送将在RDMA连接50a、50b、......、50n之一的另一端上在指定的目的主机存储器地址上存储的消息的请求,网络接口62从空消息的公用库64中获取标记为“空消息”的消息信用(credit)。库64的大小(即网络接口62能够处理的消息数量)通常是网络接口62的硬件容量的函数。如果从该库64可以获得空消息,则从请求应用的应用队列52a、52b、......、52n中获取一个消息,并将其排列在特定RDMA连接50a、50b、......、50n的队列对51a、51b、......、51n的相应网络接口队列60a、60b、......、60n内。将在网络接口队列60a、60b、......、60n中排队的消息在网络上发送给确认被成功接收并存储在指定存储地址上的每个消息的目的主机的指定存储地址。被发送的但是尚未被确认的消息在此称作“未完成的发送消息”。一旦一个消息被确认为由目的主机成功接收和存储,则一个空消息被恢复或补充在空消息的库64中。
根据RDMA协议,在所有的网络接口队列60a、60b、......、60n中排队的消息的总数加上由所有的RDMA连接50a、50b、......、50n发送的未完成的消息的总数通常并不允许超过空消息库64的大小。一旦RDMA连接50a、50b、......、50n之一达到利用空消息库64施加的限制,则不可以再排队和发送来自任何连接50a、50b、......、50n的RDMA消息,直到接收到附加确认。
尽管如此,在该技术领域中依然需要改进连接的性能。
附图说明
现在参考附图,在附图中相同的标号代表相应的部分:
图1图示根据现有技术TCP协议发送的数据流;
图2图示现有技术的根据TCP协议的协议控制块;
图3图示现有技术的网络接口和RDMA连接的消息队列;
图4图示其中实现本发明方面的计算环境的一种实施例;
图5图示现有技术分组结构;
图6图示根据本发明方面发送的数据流的一种实施例;
图7图示根据本发明方面的用于管理数据传输的操作的一种实施例;
图8图示根据本发明方面的存储用于管理数据传输的信息的数据结构的一种实施例;
图9图示图7的操作的一种模式;
图10图示根据本发明方面的用于RDMA连接的网络接口和消息队列的一种实施例;
图11图示根据本发明方面的用于管理数据传输的操作的另一种实施例;和
图12图示可以与所述实施例一起使用的结构。
具体实施方式
在下面的描述中,将参考附图,这些附图构成说明书的一部分并说明本发明的若干实施例。应当理解:在不脱离本发明的范围的情况下,也可以使用其它的实施例,并且可以进行结构和操作的改进。
图4图示其中可以实现本发明方面的计算环境。计算机102包括一个或多个中央处理单元(CPU)104(仅图示了一个)、易失性存储器106、非易失性存储装置108、操作系统110和网络适配器112。应用程序114进一步在存储器106中执行,并能够向远程计算机发送分组和从中接收分组。计算机102可以包括在本领域内公知的任何计算设备,例如主机、服务器、个人计算机、工作站、膝上型计算机、手持计算机、电话机设备、网络设备、虚拟化设备、存储控制器等。可以使用本领域内公知的任何CPU 104和操作系统110。存储器106内的程序和数据可以作为存储器管理操作的一部分交换到存储装置108内。
网络适配器112包括网络协议层116,用于实现物理通信层,以便通过网络118向远程设备发送网络分组和从其接收网络分组。网络118可以包括局域网(LAN)、因特网、广域网(WAN)、存储区域网(SAN)等等。这些实施例可以被配置为在诸如无线LAN、Bluetooth(蓝牙)等的无线网络或连接上发送数据。在某些实施例中,网络适配器112和网络协议层116可以执行以太网协议、令牌环协议、光纤通道协议、Infiniband(无限频带)、串行先进技术附件(SATA)、并行SCSI、串行连接SCSI电缆等等或者本领域中公知的任何其它网络通信协议。
设备驱动程序120在存储器106内执行,并包括网络适配器112特定命令,以便与网络适配器112通信,并在操作系统110和网络适配器112之间接口。在某些实施方式中,网络适配器112包括传输协议层121以及网络协议层116。例如,网络适配器112可以执行TCP/IP卸载引擎(TOE),其中与设备驱动程序120不同,在网络适配器112硬件内实现的传输协议层121的卸载引擎内执行传输层操作。
网络层116处理网络通信,并将接收的TCP/IP分组提供给传输协议层,以解密分组,如果加密的话。传输协议层121与设备驱动器120接口,并执行附加的传输协议层操作,例如处理在网络适配器112上接收的分组内包括的消息的解密内容,所述附加的传输层操作绕接(wrap)在传输层内,例如TCP和/或IP、因特网小计算机系统接口(iSCSI)、光纤通道SCSI、并行SCSI传输或本领域内公知的任何其它传输层协议。传输卸载引擎121可以从所接收的TCP/IP分组中拆解出有效负载,并将数据传送给设备驱动程序120,以便返回到应用114。
在某些实施方式中,网络适配器112还可以包括RDMA协议层122以及传输协议层121。例如,网络适配器112可以实现RDMA卸载引擎,其中与设备驱动器120不同,在网络适配器112硬件内实现的RDMA协议层122的卸载引擎内执行RDMA层操作。
因而,在RDMA连接上发送消息的应用114可以通过设备驱动器120和网络适配器112的RDMA协议层122发送消息。消息的数据可以发送给传输协议层121,以便打包在TCP/IP分组中。在将分组通过网络协议层116在网络118上发送之前,传输协议层121还可以加密该分组。
存储器106还包括文件对象124,这也可以称作插口对象(socketobject),包括在网络118上到远程计算机的连接的相关信息。应用114使用文件对象124内的信息来标识连接。应用114将使用文件对象124来与远程系统通信。文件对象124可以指示将用于与远程系统通信的本地端口或插口、在其中执行应用114的计算机102的本地网(IP)地址、应用114已经发送和接收的数据量以及应用114与之通信的远程端口与网络地址,例如IP地址。上下文信息126包括数据结构,此数据结构包括设备驱动器120保存的如下所述管理发送给网络适配器112的请求的信息。
图5图示在网络适配器112上接收或由其发送的网络分组150的格式。RDMA消息包括一个或多个这样的分组150。以网络协议114理解的格式,例如封装在将包含附加以太网组成部分的以太网帧内的格式,实现网络分组150,所述附加以太网组成部分例如标题和检错码(未图示)。传输分组152包括在网络分组150内。传输分组152可以包括能够由传输协议驱动器121处理的传输层,诸如TCP和/或IP协议、因特网小计算机系统接口(iSCSI)协议、光纤通道SCSI、并行SCSI传输等等。传输分组152包括有效负载数据154以及其它的传输层字段,例如标题和检错码。有效负载数据154包括被传送的基础内容,例如命令、状态和/或数据。操作系统110可以包括设备层,例如SCSI驱动器(未图示),以处理有效负载数据154的内容,并访问其中的任何状态、命令和/或数据。
如果当在TCP连接上向目的主机发送数据时,目的主机的特定TCP连接被给予相对大的TCP窗口20(图1),则意识到,具有大TCP窗口的TCP连接能够继续以用尽目的主机的资源以排除信源主机的其它TCP连接的方式发送数据。因此,信源主机的其它TCP连接可能被阻止发送数据。在如图6所示的一种实施方式中,当在TCP连接上发送数据时计算机102使用虚拟窗口200,它可能远小于由TCP连接的目的主机提供的TCP窗口。当TCP下一数据指针22抵达虚拟窗口200的末尾边界202时,主机信源102停止在该TCP连接上发送数据,即使TCP下一数据指针22尚未抵达TCP窗口20的末尾边界28。结果,给其它连接提供了使用计算机102的资源的机会,因此可以更加公平地共享资源。
图7图示在使用虚拟窗口200分配计算机102的数据传输资源时设备驱动器120和网络适配器122的操作。响应于软件应用114的请求,在计算机102和目的主机之间建立TCP连接(方框210)。在建立TCP连接时,以类似于图2的协议控制块18a、18b、......、18n的方式插装(populate)诸如协议控制块222a、222b、......、222n之一(图8)的协议控制块。根据TCP RFC,每个协议控制块222a、222b、......、222n具有用于存储TCP未确认数据指针16的字段17a、17b、......、17n、用于存储TCP窗口的字段21a、21b、......、21n和用于存储相关TCP连接的TCP下一指针的字段23a、23b、......、23n。
在这种实现方式中,用于这个TCP连接的虚拟窗口200具有在此称作虚拟窗口最大值的最大值,它存储在相关协议控制块222a、222b、......、222n的字段224a、224b、......、224n内。比较从TCP连接的目的主机接收的TCP窗口20的大小与虚拟窗口最大值的大小(方框230)。如果TCP窗口20不小于虚拟窗口最大值,则将虚拟窗口200的大小设置为在协议控制块222a、222b、......、222n的字段224a、224b、......、224n内存储的虚拟窗口最大值的大小,所述协议控制块控制此TCP连接。将虚拟窗口200的大小存储在控制此TCP连接的协议控制块222a、222b、......、222n的字段233a、233b、......、233n内。
在发送任何数据之前,将控制TCP连接的协议控制快222a、222b、......、222n的TCP未确认数据指针16设置为将要发送的第一数据分组的顺序号。计算机102开始发送数据分组到目的主机(方框234)。在这一步骤内发送的数据量可以根据特定的应用而变化。然而,在许多应用中,在这一步骤中发送的数据量将是虚拟窗口200的大小的相对小比例部分。将控制TCP连接的协议控制块222a、222b、......、222n的TCP下一数据指针22设置为将要发送的下一数据分组的顺序号。
在发送这些数据分组之后,执行检查(方框236),以确定目的主机是否已经确认接收到发送数据分组之中的任一数据分组。如果是的话,则通过向前移动控制TCP连接的协议控制块222a、222b、......、222n的TCP未确认数据指针16来移动虚拟窗口200(方框240)(图6)。按顺序地向前移动TCP未确认数据指针16以标记已经发送但是尚未确认的数据分组的顺序号的开始。已经发送但是尚未确认的那些数据分组在图6中表示为发送的数据分组的数据流250的一部分14。已经发送和确认的那些数据分组在图6中图示为部分12。TCP未确认数据指针16标记数据流150的发送且确认分组12和发送但未确认分组14之间的边界252。TCP未确认数据指针16还标记虚拟窗口200和TCP窗口20的开始边界254。
因此,当移动TCP未确认数据指针16时(方柜240),在目的主机确认(方框236)通过与计算机110的这个特定TCP连接接收数据分组时,也移动虚拟窗口200和TCP窗口20。可选择地,如果尚未确认分组(方框236),则虚拟窗口200、TCP窗口20和TCP未确认数据指针16保持不移动。
尚未发送但允许发送且没有接收到任何进一步确认的那些数据分组在图6中标记为部分256。TCP下一数据指针22标记部分256的开始边界258,虚拟窗口200的末尾边界202标记允许但是尚未发送的数据流部分256的末尾边界260。如果TCP下一数据指针22已经抵达虚拟窗口200的末尾边界202,表示发送的数据流已经抵达(方柜262)虚拟窗口200的末尾,部分256的大小为零,并且不能再发送其它的数据分组,直到从目的主机接收到附加的确认。一旦接收到附加的确认,则将移动虚拟窗口200(方框240),从而构成一个新部分256并允许发送附加分组。
注意:当抵达虚拟窗口200的末尾边界202而非较大TCP窗口20的末尾边界28时,暂停发送但未确认的数据分组流(部分14)。因而,停止发送已经被允许在不等待附加确认的情况下发送的在虚拟窗口200的末尾边界202和TCP窗口20的末尾边界28之间的数据流250的一部分264,直到接收到附加的确认。因此,其它的连接可以使用计算机110的资源来发送数据分组,而已经抵达其虚拟窗口200的末尾边界202的连接等待附加的确认。
如果TCP下一数据指针22尚未抵达虚拟窗口200的末尾边界202,表明发送数据流尚未抵达(方框262)虚拟窗口200的末尾,则部分256的大小为非零。因此,能够发送附加的数据分组(方框234),直到抵达虚拟窗口的末尾(方框262)。
认识到:目的主机可能开始用尽缓冲器空间,并因此广告更小的TCP窗口20。在这种情况下,可以将在相关协议控制块222a、222b、......、222n的字段21a、21b、......、21n内存储的TCP窗口的值重新设置为这个较小值。如果目的主机的TCP窗口20应当变得小于(方框230)虚拟窗口最大值,则可以将虚拟窗口200的大小重新设置(方柜270)为如图9所示的TCP窗口的大小。因而,虚拟窗口200的末尾边界202与TCP窗口20的末尾边界28一致。结果,虚拟窗口200将不超过如目的主机广告的TCP窗口200所表示的目的主机的容量。
在图7的实现方式中,将虚拟窗口200设置为TCP窗口20和虚拟窗口最大值中的较小者。显然可以使用各种方法来设置虚拟窗口。例如,虚拟窗口最大值可以是固定大小,例如16KB。可选择地,虚拟窗口的大小可以作为目的主机所广告的TCP窗口的大小的函数而变化。例如,可以将虚拟窗口设置为TCP窗口的一部分。这一部分例如可以是一个固定部分。此外,可以将虚拟窗口设置为驱动器或网络适配器的有效连接的数量的函数。因而,例如,可以将虚拟窗口设置为TCP窗口的1/N部分,其中N是驱动器或网络适配器的有效连接的数量。
更进一步地,可以编程每个虚拟窗口最大值224a、224b、......、224n,以允许通过为希望获得更高服务质量(QoS)的那些连接提供更大的虚拟窗口最大值来允许一条连接获得比另一条连接更高的服务质量(QoS)。而且,虚拟窗口最大值可以在特定连接期间在任意时间上被改变。因而,可以使用随意改变与特定连接相关的虚拟窗口最大值的能力来在连接的寿命期间在任意时间上改变QoS。
进一步理解:对于某些应用来说,计算机102的应用114之一(图4)可以生成用于RDMA连接50a、50b、......、50n的应用队列52a、52b、......、52n(图3),这远大于空消息的整个库64。例如,如果应用具有大量消息要在RDMA连接上存储在目的主机的指定存储单元内,则可能出现这种情况。具有大应用队列的RDMA连接可以控制该库64的空消息的使用,并因而继续以用尽信源主机的资源以排除信源主机的其它RDMA连接的方式来发送消息。因此,信源主机的其它RDMA连接可能被阻止发送消息。
在如图10所示的一种实现方式中,当在RDMA连接350a、350b、......、350n上发送消息时,计算机102对RDMA连接350a、350b、......、350n中的任一连接可消耗的网络接口366的库364的空消息的数量施加限制。更具体地说,将空消息的库364划分成多个空消息的有限库372a、372b、......、372n,每个都可以远小于整个空消息库364。当RDMA连接350a、350b、......、350n之一已经抵达由其相关的空消息的有限库372a、372b、......、372n所施加的限制时,主机信源102停止从该特定RDAM连接的相关应用队列52a、52b、......、52n中提取(pull)消息,即使其它的空消息在空消息库364内保持未用。当其它的空消息被补充在相关的空消息的有限库372a、372b、......、372n内时,主机信源102重新开始从该特定RDMA连接的相关应用队列52a、52b、......、52n中提取消息。因此,给其它的RDMA连接提供使用计算机102的资源的机会,从而可以更公平地共享资源。
图11图示在使用有限空消息库372a、372b、......、372n来分配计算机102的消息传输资源时设备驱动器120和网络适配器122的操作。在这个例子中,讨论RDMA连接350a。其它的RDMA连接350b、......、350n以类似的方式操作。
响应于软件应用114的请求,在计算机102和目的主机之间建立RDMA连接350a(方框410)。在一种实现方式中,RDMA连接350a在TCP连接上运行。因而,在建立RDMA连接350a时,插装协议控制块222a、222b、......、222n的协议控制块222a(图8)以包括用于存储TCP未确认数据指针16的字段17a、用于存储TCP窗口的字段21a和用于存储根据TCP RFC的相关TCP连接的TCP下一指针的字段23a。此外,如上面所讨论的,TCP连接可以使用虚拟窗口200来提供计算机102的TCP连接之间的公平性。因此,可以将虚拟窗口最大值存储在相关的协议控制块222a的字段224a内。
将特定RDMA连接350a的有限空消息库372a的大小设置为在相关协议控制块222a的字段424a内存储的消息限制值的大小。在所图示的实施例中,将RDMA连接参数存储在与TCP连接参数相同的协议控制块内。显然,可以将RDMA连接参数存储在完全独立的控制块内,或者存储在其它数据结构内。
计算机102通过从特定RDMA连接350a的队列对51a的应用队列52a中提取消息来开始发送消息到目的主机的指定地址,并将该消息排队(方框434)在网络接口队列60a内,所述网络接口队列60a与软件应用的相关应用队列52a是成对的。网络接口队列60a内消息的排队消耗用于如此排队的每个消息的RDMA连接350a的相关有限空消息库372a中的一个空消息。在这个步骤中排队的消息数量可以根据特定应用而改变。然而,在许多应用中,排队的数据量将是消息限制大小的一个相对小比例部分。
在这个消息或多个消息排队之后,执行检查(方框436),以确定目的主机是否已经确认接收在RDMA连接350a中发送的任一消息。如果是的话,则将空消息补充在用于如此确认的每个消息的RDMA连接350a的相关有限空消息库372a中。
执行检查(方框450)以确定RDMA连接350a的相关有限空消息库372a是否为空。如果是的话,则没有来自特定RDMA连接350a的RDMA消息可以在网络接口队列60a中排队以便发送给目的主机,直到接收到附加的确认。因此,控制返回到方框436,以等待对RDMA连接350a的进一步确认。另一方面,如果RDMA连接350a的有限空消息库372a不为空(方框450),则可以在网络接口队列60a中排队RDMA连接350a的应用队列52a的附加RDMA消息以便发送给目的主机。以这种方式,在网络接口队列60a中排队的消息总数加上利用RDMA连接350a发送的未完成消息的总数可以不超过用于设置RDMA连接350a的有限空消息库372a的大小。
RDMA连接350b、......、350n以类似的方式操作。因此,将消息限制存储在与每个RDMA连接350b、......、350n相关的协议控制块222b、......、222n的字段424b、......、424n中。
在图11的实现方式中,将RDMA连接350a、350b、......、350n的每个有限空消息库372a、372b、......、372n的大小设置为在与每个RDMA连接350a、350b、......、350n相关的协议控制块222a、222b、......、222n中存储的消息限制。显然,可以使用各种方法来设置每个有限空消息库372a、372b、......、372n的大小。例如,消息限制可以是固定大小,例如固定消息数量。而且,可以将用于每个RDMA连接的消息限制的大小设置为空消息库364的大小的一个固定小部分。可选择地,用于每个RDMA连接的消息限制的大小可以作为相关应用队列52a、52n、......、52n的大小的函数而变化。例如,可以将用于每个RDMA连接的消息限制的大小设置为空消息库364的大小的一小部分,其中每个小部分的大小与相关应用队列52a、52n、......、52n的大小成比例。此外,可以将用于每个RDMA连接的消息限制设置为驱动器或网络适配器的有效连接的数量的函数。例如,可以将用于每个RDMA连接的消息限制的大小设置为空消息库364的大小的1/N,其中N是驱动器或网络适配器的有效连接的数量。在这个例子中,所有的有限空消息库372a、372b、......、372n的总数将保持等于或小于整个空消息库364。而且,每个队列对51a、51b、......、51n可以具有用于每个RDMA连接350a、350b、......、350n的独立的空消息库。
更进一步地,每个有限空消息库372a、372b、......、372n可以被编程,以便通过为希望更高QoS的那些连接提供更大的有限空消息库来允许一条连接超过另一连接的更高的服务质量(QoS)。而且,可以在特定连接期间在任意时间上改变有限空消息库。因而,可以使用任意改变与特定连接相关的有限空消息库的能力来在此连接的寿命期间在任意时间上改变QoS。
因而,可以看出可以为每条连接编程虚拟窗口最大值224a、224b、......、224n和有限空消息库372a、372b、......、372n,以允许根据应用的需要能够优选表现的不同等级的服务质量(QoS)。而且,可以在连接的寿命期间在任意时间上改变虚拟窗口最大值224a、224b、......、224n和有限空消息库372a、372b、......、372n以改变QoS。
附加的实施例细节
所描述的用于处理涉及网络卡的请求的技术可以使用标准的编程和/或工程技术来实施为方法、设备或制造的物品(article),以生成软件、固件、硬件或者其组合。在此使用的术语“制造物品”是指在硬件逻辑(例如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)内实现的代码或逻辑或者计算机可读媒体,例如磁存储媒体(例如硬盘驱动器、软盘、磁带等等)、光存储设备(CD-ROM、光盘等)、易失性和非易失性存储设备(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等等)。由处理器访问和执行在计算机可读媒体中的代码。还可以通过传输媒体或者在网络上从文件服务器访问实现优选实施例的代码。在这些情况下,其中实现代码的制造物品可以包括传输媒体,例如网络传输线、无线传输媒体、通过空间、无线电波和红外信号等传播的信号。因而,“制造物品”可以包括其中实施代码的媒体。另外,“制造物品”可以包括其中实施、处理和执行代码的硬件和软件组件的组合。当然,本领域的技术人员将认识到,在不脱离本发明的范围的情况下可以对这种结构进行许多修改,并且制造的物品可以包括在本领域内公知的任何信息承载媒体。
在所描述的实施例中,某些操作描述为利用设备驱动器120或者利用网络适配器112的协议层来执行。在可选择的实施例中,描述为利用设备驱动器120执行的操作可以利用网络适配器112来执行,反之亦然。
在所描述的实施例中,在网络上从网络适配器卡向远程计算机发送分组。在可选择的实施例中,利用协议层或设备驱动器处理的所发送和所接收的分组可以被发送给在同一计算机中执行的独立处理程序,其中设备驱动器和传输协议驱动器执行。在这些实施例中,并不使用网络卡,因为在同一计算机和/或操作系统中的处理之间传送分组。
在某些实施方式中,设备驱动器和网络适配器实施例可以包括在计算机系统中,该计算机系统包括存储控制器以及控制器,所述存储控制器例如是SCSI、集成驱动电子设备(IDE)、独立磁盘冗余阵列(RAID)等等,所述控制器管理至诸如磁盘驱动器、磁带媒体、光盘、等等的非易性存储设备的存取。在可选择的实施方式中,网络适配器实施例可以包括在并不包括存储控制器的系统中,例如某些集线器和交换机。
在某些实施方式中,设备驱动器和网络适配器实施例可以在计算机系统中实现,所述计算机系统包括视频控制器以再现信息,从而在与计算机系统耦合的监视器上显示,所述计算机系统包括设备驱动器和网络适配器,例如计算机系统包括台式机、工作站、服务器、主机、便携式计算机、手持式计算机等等。可选择地,网络适配器和设备驱动器实施例可以在并不包括诸如交换机和路由器等的视频控制器的计算设备中实现。
在某些实施方式中,网络适配器可以被配置为通过连接到网络适配器上的端口的电缆来发送数据。可选择地,网络适配器实施例可以被配置为在诸如无线LAN、蓝牙等的无线网络或连接上发送数据。
图8图示用于插装协议控制块的信息。在可选择的实施方式中,这些数据结构可以包括附加的或者与附图中所示信息不同的信息。
图7和图11所图示的逻辑图示了以某种顺序出现的某些事件。在可选择的实施例中,可以以不同的顺序来执行某些操作,并且某些操作可以被修改或删除。此外,可以将步骤添加到上述逻辑,并且依然符合上述实施例。而且,在此所描述的操作可以顺序地出现,或者可以并行地处理某些操作。此外,可以利用单个处理单元或者利用分布式处理单元来执行操作。
图12图示诸如图4和图10所示的主机和存储设备的网络组件的计算机结构500的一种实现方式。该结构500可以包括处理器502(例如微处理器)、存储器504(例如易失性存储设备)和存储装置506(例如非易失性存储装置,例如磁盘驱动器、光盘驱动器、磁带驱动器等等)。存储装置506可以包括内部存储设备或连接的或网络可访问的存储装置。将存储装置506内的程序装载到存储器504内,并由处理器502以现有技术中公知的方式来执行。此网络结构还包括网络卡508,以便能够与诸如以太网和光纤通道仲裁环等网络进行通信。此外,在某些实施例中,该结构可以包括视频控制器509,以便在显示监视器上再现信息,其中视频控制器509可以在视频卡上实现,或者集成在安装在主板上的集成电路组件上。如所讨论的,某些网络设备可以具有多个网络卡。使用输入设备510来将用户输入提供给处理器502,并可以包括键盘、鼠标、指示笔、麦克风、触摸显示屏或者任何其它的本领域内公知的启动或输入机构。输出设备512能够再现从处理器502或者诸如显示监视器、打印机和存储装置等其它组件发送的信息。
网络适配器508可以在诸如外围元件互连(PCI)卡或某个其它I/O卡的网络卡上、或在安装在主板上的集成电路组件上或者在软件内实现。
已经为了说明和描述的目的进行了本发明各种实施例的上述描述。这并不打算是穷举性的或者将本发明限制为所公开的精确形式。在上述教导的启示下,可进行多种修改和变化。预定本发明的范围将不利用详细的说明而是利用权利要求书来限制。上述说明、实例和数据提供了本发明组成的制造和使用的完整描述。因为可以在不脱离本发明的精神和范围的情况下实现本发明的许多实施例,所以本发明存在于下面所附的权利要求书中。

Claims (39)

1.用于发送数据的一种方法,包括:
建立适合于在主机和目的地之间发送数据分组的有效连接;
从目的地接收代表第一数据分组数量的第一窗口值;
从所述主机向所述目的地发送数据分组;
从所述目的地接收由所述目的地接收的每个数据分组的确认,其中所述第一窗口值代表由所述目的地在所述主机上施加的对从所述主机向所述目的地发送的并缺少由目的地接收的确认的数据分组的数量的限制;和
将由所述主机发送的但是未被确认为由所述目的地接收的分组的数量限制为小于所述第一窗口值的第二数据分组数量。
2.权利要求1的方法,其中该连接是主机和目的地之间的传输控制协议连接,和其中所述第一窗口值是传输控制协议发送窗口值。
3.权利要求1的方法,还包括:
在主机和多个目的地之间建立多个有效连接;
从每个目的地接收代表用于此连接的第一数据分组数量的第一窗口值;
从所述主机向每个目的地发送数据分组;
从每个目的地接收由每个目的地接收的每个数据分组的确认,其中每个连接的第一窗口值代表由该连接的目的地在所述主机上施加的对从所述主机发送给该连接的目的地的并缺少由该连接的目的地接收的确认的数据分组的数量的限制;和
将由所述主机向每个连接发送的但是未被确认为由每个连接的目的地接收的分组数量限制到小于该连接的窗口值的第二数据分组数量;
其中小于连接的窗口值的每个连接的第二数量至少部分地基于主机的有效连接的数量。
4.权利要求2的方法,其中所述主机具有多个传输控制协议连接,每个传输控制协议连接具有协议控制块,该协议控制块存储传输控制协议发送窗口值和小于所述传输控制协议发送窗口值的虚拟窗口值,其中每个虚拟窗口值将由所述主机发送的但是未被确认为由每个传输控制协议连接的目的地接收的分组的数量限制到利用传输控制协议连接的虚拟窗口值定义的第二数据分组数量。
5.权利要求3的方法,还包括:
响应于目的地将传输控制协议发送窗口值的大小降低到小于第二数量的第三数量,将由所述主机发送的但是未被确认为由所述目的地接收的分组数量限制为不大于传输控制协议发送窗口值的降低大小的第四数据分组数量。
6.权利要求1的方法,还包括:
在所述主机和多个目的地的多个指定存储单元之间建立多个有效的直接存储器存取连接;
将多个消息发送给直接存储器存取连接的目的地的指定存储单元,其中每个消息包括多个数据分组;
接收消息确认,对于由目的地接收的每个消息,由该目的地发送每个消息确认;和
建立多个消息限制,每个消息限制对从所述主机发送给与该消息限制相关的直接存储器存取连接的指定存储单元的并缺少由与该消息限制相关的直接存储器存取连接的目的地接收的消息确认的消息的数量施加用于每个直接存储器存取连接的独立限制。
7.权利要求6的方法,其中每个直接存储器存取连接包括在所述主机的应用和将所述主机连接到多个目的地的网络之间的网络接口,和其中所述网络接口包括用于每个直接存储器存取连接并适合于排队将通过与每个队列相关的直接存储器存取连接发送的消息的队列,和其中所述的将消息每次发送给直接存储器存取连接的目的地的指定存储单元包括在与直接存储器存取连接相关的网络接口队列中排队消息;和其中当从所述主机向相关的直接存储器存取连接的指定存储单元发送的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的数量达到对与网络接口队列相关的直接存储器存取连接施加的独立消息限制时,暂停与直接存储器存取连接相关的网络接口队列中消息的排队。
8.权利要求7的方法,其中当从所述主机发送给相关的直接存储器存取连接的指定存储单元的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的数量少于对与网络接口队列相关的直接存储器存取连接施加的独立消息限制时,重新开始与直接存储器存取连接相关的网络接口队列中消息的排队。
9.权利要求8的方法,其中分组发送连接是在主机和目的地之间的传输控制协议连接,和其中每个直接存储器存取连接是主机和直接存储器存取连接的目的地之间的远程直接存储器存取连接。
10.权利要求10的方法,其中所述网络接口具有空消息库,它对从所述主机向所有的直接存储器存取连接的所有的指定存储单元发送的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的总量施加限制,并且其中每个消息限制少于空消息的网络接口库。
11.权利要求6的方法,其中每个消息限制至少部分地基于主机的有效直接存储器存取连接的数量。
12.权利要求6的方法,还包括在通过相关的直接存储器存取连接发送一些消息之前,改变有效直接存储器存取连接的消息限制的大小。
13.权利要求6的方法,其中每个消息限制至少部分地基于主机的有效直接存储器存取连接的数量。
14.权利要求1的方法,还包括在发送一些分组之前改变限制由主机发送的但是未被确认为由目的地接收的分组的数量的第二分组数量的大小。
15.适合于与数据存储装置和具有存储单元的目的地通信的一种系统,包括:
系统存储器;
处理器,耦合到该系统存储器;
网络适配器;
数据存储控制器,用于管理至数据存储装置的输入/输出(I/O)访问;
该存储器中可由该处理器执行的设备驱动器,其中设备驱动器和网络适配器之中的至少之一适合于:
(i)建立适合于在主机和目的地之间发送数据分组的有效连接;
(ii)从目的地接收代表第一数据分组数量的第一窗口值;
(iii)从该系统向所述目的地发送数据分组;
(iv)对于由所述目的地接收的每个数据分组,从所述目的地接收确认,其中所述第一窗口值代表由所述目的地在所述系统上施加的对从所述系统向所述目的地发送的并缺少由目的地接收的确认的数据分组的数量的限制;和
(v)将由所述系统发送的但是未被确认为由所述目的地接收的分组的数量限制为小于所述第一数量的第二数据分组数量。
16.权利要求15的系统,其中数据存储装置包括磁存储媒体。
17.权利要求15的系统,其中所述连接是主机和目的地之间的传输控制协议连接,和其中所述第一窗口值是传输控制协议发送窗口值。
18.权利要求15的系统,其中设备驱动器和网络适配器之中的至少一个还适合于:
在该系统和多个目的地之间建立多个有效连接;
从每个目的地接收代表用于此连接的第一数据分组数量的第一窗口值;
从所述系统向每个目的地发送数据分组;
对于由每个目的地接收的每个数据分组,从每个目的地接收确认,其中每个连接的第一窗口值代表由该连接的目的地在所述系统上施加的对从所述系统发送给该连接的目的地的并缺少由该连接的目的地接收的确认的数据分组的数量的限制;和
将由所述系统向每个连接发送的但是未被确认为由每个连接的目的地接收的分组数量限制到小于该连接的窗口值的第二数据分组数量;
其中小于该连接的窗口值的每个连接的第二数量至少部分地基于该系统的有效连接的数量。
19.权利要求17的系统,其中设备驱动器和网络适配器之中的至少一个适合于建立多个传输控制协议连接,每个传输控制协议连接具有协议控制块数据结构,该协议控制块数据结构存储传输控制协议发送窗口值和小于所述传输控制协议发送窗口值的虚拟窗口值,其中每个虚拟窗口值将由所述系统发送的但是未被确认为由每个传输控制协议连接的目的地接收的分组的数量限制到利用传输控制协议连接的虚拟窗口值定义的第二数据分组数量。
20.权利要求19的系统,其中设备驱动器和网络适配器之中的至少一个适合于:
响应于目的地将传输控制协议发送窗口值的大小降低到少于第二数量的第三数量,将由所述系统发送的但是未被确认为由所述目的地接收的分组的数量限制为不大于传输控制协议发送窗口值的降低大小的第四数据分组数量。
21.权利要求15的系统,其中设备驱动器和网络适配器之中的至少一个适合于:
在所述系统和多个目的地的多个指定存储单元之间建立多个有效直接存储器存取连接;
将多个消息发送给直接存储器存取连接的目的地的指定存储单元,其中每个消息包括多个数据分组;
接收消息确认,对于由目的地接收的每个消息,由该目的地发送每个消息确认;和
建立多个消息限制,每个消息限制对从所述系统发送给与消息限制相关的直接存储器存取连接的指定存储单元的并缺少由与该消息限制相关的直接存储器存取连接的目的地接收的消息确认的消息的数量施加用于每个直接存储器存取连接的独立限制。
22.权利要求21的系统,其中设备驱动器和网络适配器之中的至少一个适合于提供用于每个直接存储器存取连接并适合于排队将通过与每个队列相关的直接存储器存取连接发送的消息的队列,和其中在将消息每次发送给直接存储器存取连接的目的地的指定存储单元时,设备驱动器和网络适配器之中的至少之一适合于:在与直接存储器存取连接相关的队列中排队消息;和当从所述系统向相关的直接存储器存取连接的指定存储单元发送的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的数量达到对与该队列相关的直接存储器存取连接施加的独立消息限制时,暂停与直接存储器存取连接相关的队列中消息的排队。
23.权利要求22的系统,其中设备驱动器和网络适配器之中的至少一个适合于:当从所述系统发送给相关的直接存储器存取连接的指定存储单元的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息数量少于对与网络接口队列相关的直接存储器存取连接施加的独立消息限制时,重新开始与直接存储器存取连接相关的队列中消息的排队。
24.权利要求23的系统,其中分组发送连接是在该系统和分组发送连接的目的地之间的传输控制协议连接,和其中每个直接存储器存取连接是该系统和直接存储器存取连接之间的远程直接存储器存取连接。
25.权利要求24的系统,设备驱动器和网络适配器之中的至少之一适合于提供空消息库,它对从所述系统向所有的直接存储器存取连接的所有的指定存储单元发送的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的总量施加限制,并且其中每个消息限制少于空消息库。
26.一种制造物品,用于管理通过网络的数据传输,其中该制造物品引起将被执行的操作,所述操作包括:
建立适合于在主机和目的地之间发送数据分组的有效连接;
从目的地接收代表第一数据分组数量的第一窗口值;
从所述主机向所述目的地发送数据分组;
对于由所述目的地接收的每个数据分组,从所述目的地接收确认,其中所述第一窗口值代表由所述目的地在所述主机上对从所述主机向所述目的地发送的并缺少由目的地接收的确认的数据分组的数量施加的限制;和
将由所述主机发送的但是未被确认为由所述目的地接收的分组的数量限制为小于所述第一数量的第二数据分组数量。
27.权利要求26的制造物品,其中所述连接是主机和目的地之间的传输控制协议连接,和其中所述第一窗口值是传输控制协议发送窗口值。
28.权利要求27的制造物品,其中所述操作还包括:
在主机和多个目的地之间建立多个有效连接;
从每个目的地接收代表用于此连接的第一数据分组数量的第一窗口值;
从所述主机向每个目的地发送数据分组;
对于由每个目的地接收的每个数据分组,从每个目的地接收确认,其中每个连接的第一窗口值代表由该连接的目的地在所述主机上对从所述主机发送给该连接的目的地的并缺少由该连接目的地接收的确认的数据分组数量施加的限制;和
将由所述主机向每个连接发送的但是未被确认为由每个连接的目的地接收的分组数量限制到小于该连接的窗口值的第二数据分组数量;
其中小于连接的窗口值的每个连接的第二数量至少部分地基于该主机的有效连接的数量。
29.权利要求28的制造物品,其中所述主机具有多个传输控制协议连接,每个传输控制协议连接具有协议控制块,该协议控制块存储传输控制协议发送窗口值和小于所述传输控制协议发送窗口值的虚拟窗口值,其中每个虚拟窗口值将由所述主机发送的但是未被确认为由每个传输控制协议连接的目的地接收的分组的数量限制到利用传输控制协议连接的虚拟窗口值定义的第二数据分组数量。
30.权利要求28的制造物品,其中所述操作还包括:
响应于目的地将传输控制协议发送窗口值的大小降低到小于第二数量的第三数量,将由所述主机发送的但是未被确认为由所述目的地接收的分组的数量限制为不大于传输控制协议发送窗口值的降低大小的第四数据分组数量。
31.权利要求26的制造物品,其中所述操作还包括:
在所述主机和多个目的地的多个指定存储单元之间建立多个有效的直接存储器存取连接;
将多个消息发送给直接存储器存取连接的目的地的指定存储单元,其中每个消息包括多个数据分组;
接收消息确认,对于由目的地接收的每个消息,由该目的地发送每个消息确认;
建立多个消息限制,每个消息限制对于从所述主机发送给与该消息限制相关的直接存储器存取连接的指定存储单元的并缺少由与该消息限制相关的直接存储器存取连接的目的地接收的消息确认的消息的数量施加用于每个直接存储器存取连接的独立限制。
32.权利要求31的制造物品,其中每个直接存储器存取连接包括在所述主机的应用和将所述主机连接到多个目的地的网络之间的网络接口,和其中所述网络接口包括用于每个直接存储器存取连接并适合于排队将通过与每个队列相关的直接存储器存取连接发送的消息的队列,和其中所述的每次将消息发送给直接存储器存取连接的目的地的指定存储单元包括在与直接存储器存取连接相关的网络接口队列中排队消息;和其中当从所述主机向相关的直接存储器存取连接的指定存储单元发送的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的数量达到对与该网络接口队列相关的直接存储器存取连接施加的独立消息限制时,暂停与直接存储器存取连接相关的网络接口队列中消息的排队。
33.权利要求32的制造物品,其中当从所述主机发送给相关的直接存储器存取连接的指定存储单元的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的数量少于施加在与该网络接口队列相关的直接存储器存取连接上的独立消息限制时,重新开始与直接存储器存取连接相关的网络接口队列中消息的排队。
34.权利要求33的制造物品,其中分组发送连接是在主机和目的地之间的传输控制协议连接,和其中每个直接存储器存取连接是在主机和该直接存储器存取连接的目的地之间的远程直接存储器存取连接。
35.权利要求34的制造物品,其中所述网络接口具有空消息库,它对从所述主机向所有的直接存储器存取连接的所有的指定存储单元发送的且缺少由相关的直接存储器存取连接的目的地接收的消息确认的消息的总量施加限制,并且其中每个消息限制少于空消息的网络接口库。
36.权利要求31的制造物品,其中每个消息限制至少部分地基于主机的有效直接存储器存取连接的数量。
37.权利要求31的制造物品,还包括在通过相关的直接存储器存取连接发送一些消息之前,改变有效直接存储器存取连接的消息限制的大小。
38.权利要求31的制造物品,其中每个消息限制至少部分地基于主机的有效直接存储器存取连接的数量。
39.权利要求26的制造物品,还包括在发送一些分组之前改变限制由主机发送的但是未被确认为由目的地接收的分组数量的第二分组数量的大小。
CNB2004100566580A 2003-09-15 2004-08-13 用于管理通过网络的数据传输的方法和系统 Expired - Fee Related CN100438403C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/663,026 US7870268B2 (en) 2003-09-15 2003-09-15 Method, system, and program for managing data transmission through a network
US10/663026 2003-09-15

Publications (2)

Publication Number Publication Date
CN1599319A true CN1599319A (zh) 2005-03-23
CN100438403C CN100438403C (zh) 2008-11-26

Family

ID=34274265

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100566580A Expired - Fee Related CN100438403C (zh) 2003-09-15 2004-08-13 用于管理通过网络的数据传输的方法和系统

Country Status (2)

Country Link
US (1) US7870268B2 (zh)
CN (1) CN100438403C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106953797A (zh) * 2017-04-05 2017-07-14 广东浪潮大数据研究有限公司 一种基于动态连接的rdma数据传输的方法与装置

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529778B1 (en) 2001-12-12 2009-05-05 Microsoft Corporation System and method for providing access to consistent point-in-time file versions
US7761529B2 (en) * 2004-06-30 2010-07-20 Intel Corporation Method, system, and program for managing memory requests by devices
US7617256B2 (en) * 2004-07-19 2009-11-10 Microsoft Corporation Remote file updates through remote protocol
US20060168274A1 (en) * 2004-11-08 2006-07-27 Eliezer Aloni Method and system for high availability when utilizing a multi-stream tunneled marker-based protocol data unit aligned protocol
WO2006124357A2 (en) 2005-05-11 2006-11-23 Bigfoot Networks, Inc. Distributed processing system and method
EP1727055B1 (en) * 2005-05-25 2016-09-07 Microsoft Technology Licensing, LLC Data communication coordination with sequence numbers
US8332526B2 (en) 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
US9455844B2 (en) * 2005-09-30 2016-09-27 Qualcomm Incorporated Distributed processing system and method
US7990861B1 (en) * 2006-04-03 2011-08-02 Juniper Networks, Inc. Session-based sequence checking
WO2007139426A1 (en) * 2006-05-31 2007-12-06 Intel Corporation Multiple phase buffer enlargement for rdma data transfer
US20080085970A1 (en) * 2006-10-02 2008-04-10 The Yokohama Rubber Co., Ltd. Rubber composition for tire inner liner and pneumatic tire using the same
WO2008118807A1 (en) * 2007-03-26 2008-10-02 Bigfoot Networks, Inc. Method and system for communication between nodes
US7921177B2 (en) * 2007-07-18 2011-04-05 International Business Machines Corporation Method and computer system for providing remote direct memory access
TWI423032B (zh) * 2009-04-30 2014-01-11 Ralink Technology Corp 提升資料傳輸效能的方法
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
CN104883335B (zh) * 2014-02-27 2017-12-01 王磊 一种全硬件tcp协议栈实现系统
CN105138410A (zh) * 2015-08-31 2015-12-09 北京锐安科技有限公司 一种基于磁盘缓存的消息队列的实现方法及装置
US10623341B2 (en) * 2015-09-30 2020-04-14 International Business Machines Corporation Configuration of a set of queues for multi-protocol operations in a target driver
US10498654B2 (en) 2015-12-28 2019-12-03 Amazon Technologies, Inc. Multi-path transport design
US9985904B2 (en) * 2015-12-29 2018-05-29 Amazon Technolgies, Inc. Reliable, out-of-order transmission of packets
US9985903B2 (en) * 2015-12-29 2018-05-29 Amazon Technologies, Inc. Reliable, out-of-order receipt of packets
US10148570B2 (en) 2015-12-29 2018-12-04 Amazon Technologies, Inc. Connectionless reliable transport
US11144496B2 (en) 2016-07-26 2021-10-12 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10346041B2 (en) 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US20180032471A1 (en) * 2016-07-26 2018-02-01 Samsung Electronics Co., Ltd. Self-configuring ssd multi-protocol support in host-less environment
US10372659B2 (en) 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US20190109720A1 (en) 2016-07-26 2019-04-11 Samsung Electronics Co., Ltd. Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd
US11461258B2 (en) 2016-09-14 2022-10-04 Samsung Electronics Co., Ltd. Self-configuring baseboard management controller (BMC)
US10891253B2 (en) * 2016-09-08 2021-01-12 Microsoft Technology Licensing, Llc Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks
SE540244C2 (en) 2016-09-26 2018-05-08 Scania Cv Ab Method in a bus gateway for load balancing traffic for non-cyclic messages between different segments of the bus
US20180088978A1 (en) * 2016-09-29 2018-03-29 Intel Corporation Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container
US11025564B2 (en) 2019-02-22 2021-06-01 Microsoft Technology Licensing, Llc RDMA transport with hardware integration and out of order placement
US11068412B2 (en) * 2019-02-22 2021-07-20 Microsoft Technology Licensing, Llc RDMA transport with hardware integration
US11467873B2 (en) * 2019-07-29 2022-10-11 Intel Corporation Technologies for RDMA queue pair QOS management

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6473793B1 (en) 1994-06-08 2002-10-29 Hughes Electronics Corporation Method and apparatus for selectively allocating and enforcing bandwidth usage requirements on network users
FI98174C (fi) * 1995-05-09 1997-04-25 Nokia Telecommunications Oy Datansiirtojärjestelmä, jossa on liukuvaan ikkunaan perustuva datavuonohjaus
US6219713B1 (en) * 1998-07-07 2001-04-17 Nokia Telecommunications, Oy Method and apparatus for adjustment of TCP sliding window with information about network conditions
US6862622B2 (en) 1998-07-10 2005-03-01 Van Drebbel Mariner Llc Transmission control protocol/internet protocol (TCP/IP) packet-centric wireless point to multi-point (PTMP) transmission system architecture
US6742021B1 (en) 1999-01-05 2004-05-25 Sri International, Inc. Navigating network-based electronic information using spoken input with multimodal error feedback
US6711137B1 (en) 1999-03-12 2004-03-23 International Business Machines Corporation System and method for analyzing and tuning a communications network
US6560243B1 (en) * 1999-04-30 2003-05-06 Hewlett-Packard Development Company System and method for receiver based allocation of network bandwidth
US6674717B1 (en) * 2000-03-30 2004-01-06 Network Physics, Inc. Method for reducing packet loss and increasing internet flow by feedback control
US7380006B2 (en) 2000-12-14 2008-05-27 Microsoft Corporation Method for automatic tuning of TCP receive window based on a determined bandwidth
WO2003040735A1 (en) * 2001-11-07 2003-05-15 Cyneta Networks Inc. Resource aware session adaptation system and method for enhancing network throughput
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US7385923B2 (en) * 2003-08-14 2008-06-10 International Business Machines Corporation Method, system and article for improved TCP performance during packet reordering
US7103683B2 (en) 2003-10-27 2006-09-05 Intel Corporation Method, apparatus, system, and article of manufacture for processing control data by an offload adapter
US20050141425A1 (en) 2003-12-24 2005-06-30 Foulds Christopher T. Method, system, and program for managing message transmission through a network
US7562158B2 (en) 2004-03-24 2009-07-14 Intel Corporation Message context based TCP transmission

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106953797A (zh) * 2017-04-05 2017-07-14 广东浪潮大数据研究有限公司 一种基于动态连接的rdma数据传输的方法与装置
CN106953797B (zh) * 2017-04-05 2020-05-26 苏州浪潮智能科技有限公司 一种基于动态连接的rdma数据传输的方法与装置

Also Published As

Publication number Publication date
US20050060442A1 (en) 2005-03-17
US7870268B2 (en) 2011-01-11
CN100438403C (zh) 2008-11-26

Similar Documents

Publication Publication Date Title
CN100438403C (zh) 用于管理通过网络的数据传输的方法和系统
US20220214919A1 (en) System and method for facilitating efficient load balancing in a network interface controller (nic)
CN1864376B (zh) 从卸载适配器利用主机存储器的方法、系统和制品
CN1606290A (zh) 为通过网络的数据传输管理存储器的方法、系统和程序
CN1458590A (zh) 用网络栈同步和上载已卸载网络栈连接的方法
US7929442B2 (en) Method, system, and program for managing congestion in a network controller
US20050141425A1 (en) Method, system, and program for managing message transmission through a network
US7664892B2 (en) Method, system, and program for managing data read operations on network controller with offloading functions
US8010707B2 (en) System and method for network interfacing
US8392565B2 (en) Network memory pools for packet destinations and virtual machines
US9813283B2 (en) Efficient data transfer between servers and remote peripherals
US9021142B2 (en) Reflecting bandwidth and priority in network attached storage I/O
CN1315077C (zh) 有效处理网络数据的系统和方法
US7613132B2 (en) Method and system for controlling virtual machine bandwidth
WO2013095654A1 (en) Shared send queue
CN1647054A (zh) 网络设备驱动体系结构
CN1747444A (zh) 数据处理系统网络中从主机单元分担数据流的方法及引擎
CN1520556A (zh) 使用本地标识符的端节点分区
CN1905524A (zh) 基于处理器负载进行动态分段的方法和系统
CN103176780A (zh) 一种多网络接口绑定系统及方法
US7627899B1 (en) Method and apparatus for improving user experience for legitimate traffic of a service impacted by denial of service attack
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US7404040B2 (en) Packet data placement in a processor cache
CN1581853A (zh) 用于处理要在网络上发送的分组的方法、系统和程序
CN1949203A (zh) 小型计算机系统接口目标器的架构和数据传输方法

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081126

Termination date: 20100813