CN101827019A - 网络接口设备 - Google Patents
网络接口设备 Download PDFInfo
- Publication number
- CN101827019A CN101827019A CN201010112715A CN201010112715A CN101827019A CN 101827019 A CN101827019 A CN 101827019A CN 201010112715 A CN201010112715 A CN 201010112715A CN 201010112715 A CN201010112715 A CN 201010112715A CN 101827019 A CN101827019 A CN 101827019A
- Authority
- CN
- China
- Prior art keywords
- port
- context
- processor
- nic
- network interface
- 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
- 230000006854 communication Effects 0.000 claims abstract description 94
- 238000004891 communication Methods 0.000 claims abstract description 87
- 230000004044 response Effects 0.000 claims description 28
- 238000007689 inspection Methods 0.000 claims 6
- 230000005540 biological transmission Effects 0.000 description 148
- 230000015572 biosynthetic process Effects 0.000 description 27
- 239000000872 buffer Substances 0.000 description 27
- 238000005755 formation reaction Methods 0.000 description 27
- 238000012546 transfer Methods 0.000 description 22
- 238000000034 method Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state 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/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
Abstract
本发明提供了一种网络接口设备。所述网络接口设备连接到计算机并且经由网络执行通信,其包括:第一管理单元,其通过端口号来识别通信连接,并且通过存储在存储单元中并且与端口号相关联的上下文来管理每个端口的通信连接状态;第二管理单元,其管理上下文的存储状态;以及控制单元,其参考上下文,并且在端口间执行建立通信连接的示例性操作和切断通信连接的示例性操作。
Description
对相关申请的交叉引用
本申请涉及并且要求2009年2月6日提交的日本专利申请2009-26533号的优先权,并且通过引用将其合并于此。
技术领域
这里讨论的实施例涉及一种网络接口设备。
背景技术
已知具有经由网络连接的多个示例性操作节点的并行计算机。针对这种并行计算机中的节点间的低延迟通信,可以在所有节点间维持用于通信控制的连接。
并行计算机中的每个节点具有用于与网络建立连接的网络接口设备。网络接口设备可以包括网络接口控制器或者网络接口卡(在下文中被称为“NIC”)。每个节点使用网络接口设备来经由网络与其它节点进行通信。因此,具有几万个节点的大规模并行计算机需要能够维持几万个通信连接的网络接口设备。
Web(网络)服务器、数据库服务器等的计算机可以使用频繁地连接和断开与终端的通信的通信协议(诸如HTTP(超文本传输协议))。为了在这种计算机中实现较高的处理速度,需要减少用于建立和切断通信连接的处理器上的协议处理负荷。
近年来,例如,正如在千兆位以太网中所见到的那样,网络通信速度已经极大地提高。在这种趋势下,通信处理占据了由计算机处理器进行的大部分处理,并且较低比例的应用程序处理的问题变得更严重。术语“应用程序”在下文中将被称为术语“应用”。因此,卸载(offloading)功能的安装变得更普遍,以将通常由处理器执行的部分通信处理卸载到网络接口设备。
日本专利申请公布2006-191537号和2003-333076号公开了有关卸载功能的技术。
日本专利申请公布2006-191537号公开了一种NIC使用其来执行通信处理的卸载引擎。
日本专利申请公布2003-333076号公开了一种方法,该方法通过在处理器建立通信连接之后将通信上下文移到NIC来基于连接单元选择性地卸载通信处理。
使用日本专利申请公布2006-191537号中公开的NIC,安装在卸载引擎中的存储器的容量小于每个处理器的主存储装置的容量。因此,根据日本专利申请公布2006-191537号,节点间的最大通信连接数是有限的。
使用日本专利申请公布2003-333076号中公开的NIC,用于建立通信连接的每个处理器上的处理负荷较大。因此,根据日本专利申请公布2003-333076号,每个处理器的应用处理能力较低。
发明内容
这里讨论的实施例的一方面是提供一种网络接口,该网络接口能够经由网络来执行在节点间的通信中通常由处理器执行的通信连接建立和断开的示例性操作,并且能够维持节点间的大量通信连接。
上述方面可以通过连接到计算机并且经由网络执行通信的网络接口设备来实现,该网络接口设备包括:第一管理单元,其通过端口号来识别通信连接,并且通过存储在存储单元中并且与端口号相关联的上下文来管理每个端口的通信连接状态;第二管理单元,其管理上下文的存储状态;以及控制单元,其参考上下文,并且在端口间执行建立通信连接的示例性操作和切断通信连接的示例性操作。
上述方面可以通过能够维持大量通信连接的网络接口设备来实现。另外,通过执行通常由处理器执行的通信连接建立和断开的示例性操作,所公开的网络接口设备降低了处理器上的通信处理负荷。
随后将清楚的这些以及其它方面和优点存在于下文中参照构成其部分的附图来更充分地描述和声明的结构和示例性操作的细节中,其中相同标号始终指示相同部件。
附图说明
图1示出了并行计算机的示例性实施例;
图2示出了示例性NIC;
图3示出了处理器的示例性主存储装置;
图4示出了示例性实施例中的端口定义;
图5示出了端口上下文的示例性数据结构;
图6A、6B和6C示出了要由处理器写入传送命令队列中的描述符的示例性数据结构;
图7A、7B和7C示出了要由NIC的传送完成通知队列控制器写入传送完成通知队列中的传送完成状态的描述符的示例性数据结构;
图8A、8B、8C和8D示出了要由NIC的接收完成通知队列控制器写入接收通知队列中的接收状态的描述符的数据结构;
图9示出了控制分组的示例性数据结构;
图10示出了传输数据分组的示例性数据结构;
图11示出了实施例中的单向通信示例性操作;
图12示出了要由源处理器执行的、用于指示相应的源NIC发出“连接请求”的示例性操作;
图13示出了要由目标NIC执行的、用于从源NIC接收连接请求分组并且将“连接许可”响应分组传送到源NIC的示例性操作;
图14示出了在接收到来自目标NIC的“连接许可”响应分组时要由源NIC执行的示例性操作;
图15示出了用于从源端口传送传输数据的示例性操作;
图16示出了要由目标端口执行的、用于接收从源端口传送的传输数据的示例性操作;
图17示出了要由源端口执行的、用于将断开通知传送到目标端口的示例性操作;以及
图18示出了要由目标端口执行的、用于从源端口接收断开通知的示例性操作。
具体实施方式
有关通信连接的术语可定义如下。
“端口”被定义为具有下面的属性:
1)端口位于通信连接的两端;
2)存在两种类型的端口:源端口,其被指定为通信连接的发起者;以及目标端口,其被指定为通信连接的目标;
3)端口是与应用等价,并且由各个节点的处理器来执行的程序。
“应用”被定义为通过属于OSI(开放式系统互连)参考模型的会话层的通信程序来实现的通信资源。“应用”可以是属于应用层并且建立或者取消用于传送和接收数据的虚拟连接的应用。
“端口号”被定义为要由应用用于识别端口的标识信息。
端口号可以是用于识别由各个节点的处理器执行的应用所建立的通信连接的数字。每个端口号被唯一地分配给通信连接。根据示例性实施例,“0”、“1”、“2”、...“n”(n是正整数)的序列号作为端口号被分配给各个端口。
根据示例性实施例,“通信连接管理”被定义为与端口号相关联的通信连接的管理。
通信连接表示通信和连接的形式,并且可以是在OSI参考模型的传输层的节点间通信连接(端到端通信连接)。
根据示例性实施例,使用端口号来控制端到端通信。根据示例性实施例,要支持的通信连接可以是在OSI参考模型的传输层的协议通信连接、iSCSI(互联网小型计算机系统接口)协议通信连接等。
图1示出了根据示例性实施例的并行计算机系统。
图1所示的并行计算机系统1包括(n+1)个节点10(10-0、10-1、...、10-49、10-50、10-51、...、10-n)以及网络20。这里,“n”是正整数。
(n+1)个节点10经由网络20彼此进行通信。网络20是互连网络、LAN(局域网)等。节点10中的每个例如基于MPI(消息传递接口)传送和接收命令、数据等。要在节点10间传送和接收的命令和数据例如采用分组的形式。
节点10-i(i=0到n)中的每个包括处理器11(处理器0到处理器n)、主存储装置12以及网络接口控制器(NIC)13。
每个处理器11包括微处理器、芯片集等。每个主存储装置12是半导体存储器(诸如ROM(只读存储器)或者RAM(随机存取存储器))。每个NIC 13例如是网络接口控制器或者网络接口卡。
每个主存储装置12包括用于存储软件(诸如要由处理器执行的操作系统(OS)、中间件以及应用程序)的区域。除了软件存储区之外,每个主存储装置12还具有用于存储端口上下文的区域(端口上下文存储区),以及用于存储管理端口上下文的端口表(端口管理表)的区域,其中端口上下文是在通信处理(诸如通信连接建立和断开)中使用的信息。稍后将详细地描述端口上下文和端口表。
每个NIC 13能够卸载处理器的通信处理。
每个相应的NIC 13从每个主存储装置12读取要从相应的处理器11传送到其他节点10的处理器11的命令和数据。NIC 13将所读取的命令和数据经由网络20传送到其他节点10的NIC 13。NIC 13还经由网络20接收从其他节点10的NIC 13传送的命令和数据,并且将所接收的命令和数据存储到主存储装置12中。例如,使用分组来执行命令和数据的传送和接收。
图1示出了如下示例性实施例:其中在节点10中的每个的主存储装置12中提供具有四个端口条目(端口0到端口3)的端口表121。在图1中,示意性地示出了节点10-0的端口0(具有端口号“0”的端口,同样适用于下面的示例))和节点10-51的端口2之间的通信连接30。通信连接30例如是在OSI参考模型的传输层的通信连接。如图1所示,根据实施例的每个端口表121按端口号的降序来存储与端口号对应的端口条目。
图2示出了图1的每个NIC 13的示例性实施例。
如图2所示,每个NIC 13包括PIO(Programmed Input/Output,程控输入/输出)控制器131、DMA(Direct Memory Access,直接存储器访问)控制器132、传送命令队列控制器133、分组传送处理器134、传送完成通知队列控制器135、分组接收处理器136以及接收完成通知队列控制器137。DMA控制器132经由总线138连接到传送命令队列控制器133、传送完成通知队列控制器135、分组传送处理器134、分组接收处理器136以及接收完成通知队列控制器137。
PIO控制器131和传送命令队列控制器133通过信号线139彼此连接。传送命令队列控制器133和分组传送处理器134通过信号线140彼此连接。分组传送处理器134和传送完成通知队列控制器135通过信号线141彼此连接。分组接收处理器136和接收完成通知队列控制器137通过信号线142彼此连接。
图3示出了每个处理器11的主存储装置12的示例性实施例。
如图3所示,主存储装置12具有端口表121、端口上下文123、端口缓冲器125、传送命令队列127、传送完成通知队列128以及接收通知队列129。稍后将详细地描述端口表121、端口上下文123、端口缓冲器125、传送命令队列127、传送完成通知队列128以及接收通知队列129的结构和功能。
PIO控制器131电连接到处理器11。PIO控制器131与处理器11进行命令和数据的传送和接收。PIO控制器131还根据需要中断处理器11。DMA控制器132直接访问处理器11的主存储装置12而无需处理器11的干预,并且与主存储装置12进行数据传输。
传送命令队列控制器133经由DMA控制器132从处理器11的主存储装置12中提供的传送命令队列127中读取“传送命令”的描述符。然后,传送命令队列控制器133经由信号线140将在所读取的描述符中描述的用于创建传送分组的必要信息发送到分组传送处理器134。
在接收到来自传送命令队列控制器133的信息时,分组传送处理器134基于所接收的信息生成控制分组或者传输数据分组(也被称为“数据通信分组”)。然后,分组传送处理器134经由网络20将所生成的分组传送到由传送命令指定的节点10的NIC 13。在完成分组传送之后,分组传送处理器134经由信号线141向传送完成通知队列控制器135通知所传送的分组的类型。
在接收到来自分组传送处理器134的通知时,传送完成通知队列控制器135创建“传送完成通知”的描述符。然后,传送完成通知队列控制器135经由DMA控制器132将所创建的描述符写入处理器11的主存储装置12中提供的传送完成通知队列128中。
分组接收处理器136经由网络20接收从目标节点10的NIC 13传送的分组。如果所接收的分组是数据通信分组,则分组接收处理器136从分组提取传输数据,并且经由DMA控制器132将所提取的传输数据写入处理器11的主存储装置12中提供的端口缓冲器125中。当从网络20接收到分组时,分组接收处理器136经由信号线142向接收完成通知队列控制器137通知所接收的分组的类型。
在接收到来自分组接收处理器136的通知时,接收完成通知队列控制器137创建“接收通知”的描述符,并且经由DMA控制器132将所写入的描述符写入处理器的主存储装置12中提供的接收通知队列129中。
图4示出了根据示例性实施例的端口定义。
根据示例性实施例,结合端口号来管理通信连接。使用端口表121、端口上下文123以及端口缓冲器125来管理通信连接。
端口上下文123是用于管理相应端口的通信连接状态的信息。端口缓冲器125是存储要传送的传输数据或者所接收的传输数据的缓冲器。
端口表121是管理每个端口的端口上下文123和端口条目1211的表。端口表121管理各个端口的端口上下文123以及与端口号相关联的端口条目1211。端口表121中的端口条目1211的条目号对应于端口号。
因此,具有端口号“n”(n是0或者正整数)的端口条目1211被登记在端口表121中具有条目号“n”的条目中。
如图4所示,端口条目1211存储包含项目“启用”、“类型”、“上下文地址”、“缓冲器地址”以及“缓冲器大小”的信息。项目“启用”是表示端口条目1211是否有效的标志。如果端口条目1211有效,则“启用”标志为“1”,而如果无效,则“启用”标志为“0”。项目“类型”是表示“接收”或者“传送”的信息。项目“上下文地址”是在主存储装置12中存储相应端口的端口上下文123的地址。项目“缓冲器地址”表示相应端口的端口缓冲器125的顶端地址。项目“缓冲器大小”是表示端口缓冲器125的大小的信息,诸如在端口缓冲器125中可以存储的字节数。
图5示出了每个端口上下文123的示例性数据结构。
如图5所示,端口上下文123包括以下信息:协议类型1231和通信状态1232。协议类型1231是表示在端口间的通信中使用的通信协议的类型的信息。通信状态1232是表示端口间的通信连接的状态的信息。通信状态1232表示“待机状态”、“连接状态”、“请求连接状态”、“完成断开通知接收状态”等。
公开了在每个队列中设置的描述符的内容。
根据示例性实施例,将每个处理器11的通信处理卸载到每个相应的NIC 13。将“通信连接建立”、“通信断开”以及“数据通信(数据传输)”的处理卸载到NIC 13。使用传送命令队列127、传送完成通知队列128以及接收通知队列129来执行卸载处理。处理器11和NIC 13通过对这些队列执行描述符的读取/写入来交换信息,并且实现卸载。
传送命令队列127是由处理器11用来指示NIC 13“建立通信连接(连接请求)”、“传送数据(传输数据)”以及“断开通信线路”的队列。处理器11将所述三个命令写入传送命令队列127中,并且NIC 13读取写入传送命令队列127中的命令。通过这么做,处理器11向NIC 13通知所述三个命令。
在经由传送命令队列127接收到来自处理器11的命令时,NIC 13根据命令创建传送分组,并且经由网络20将传送分组传送到通信目标的NIC 13。传送分组例如是“连接请求分组”、“连接响应分组”、“传输数据分组”或者“断开通知分组”。
图6A到6C示出了要由处理器11写入传送命令队列127中的描述符的数据结构。如图6A到6C所示,在本实施例中存在三种要写入传送命令队列127中的描述符。
图6A所示的连接请求命令描述符1331是要由处理器11写入传送命令队列127中以指示NIC 13“请求连接”的描述符。连接请求命令描述符1331具有设置如下信息的字段:所述信息包括命令ID 1331a、源端口号1331b、目标地址1331c以及目标端口号1331d。
命令ID 1331a是分配给要从处理器11发送到NIC 13的“连接请求”命令的ID(标识符)。源端口号1331b是通信中的源端口的端口号。目标地址1331c是在通信中由目标节点10使用的、OSI参考模型的网络层的地址。目标端口号1331d是通信中的目标端口的端口号。
端口号等于分配给分组源的应用程序的端口号,其中由具有目标地址的节点10d执行该应用程序。这里,节点10d是通信的目标。
图6B所示的数据传输命令描述符1332包括以下信息:命令ID1332a、源端口号1332b、数据顶端地址1332c以及数据长度1332d。
数据传输命令描述符1332是要由处理器11写入传送命令队列127中以指示NIC 13“传输数据”的描述符。命令ID 1332a是被分配给要从处理器11发送到NIC 13的“数据传输”命令的ID。源端口号1332b是通信中的源端口的端口号。数据顶端地址1332c是存储要设置在传输数据分组(数据通信分组)中的传送数据的端口缓冲器125的顶端地址。数据长度1332d是存储在端口缓冲器125中的数据的大小。
图6C所示的断开通知传送命令描述符1333包括命令ID 1333a和源端口号1333b。断开通知传送命令描述符1333是要由处理器11写入传送命令队列127中以指示NIC 13“断开通信线路”的描述符。命令ID 1333a是分配给要从处理器11发送到NIC 13的“断开通知传送”命令的ID。源端口号1333b是通信中的源端口的端口号。
传送完成通知队列128是由NIC 13用来向处理器11通知完成从处理器11请求的分组传送的队列。当完成从处理器11请求的分组传送时,NIC13将“传送完成状态”的描述符写入传送完成通知队列128中。处理器11从传送完成通知队列128读取传送完成状态,以确认由处理器11指定的分组已经被传送到通信目标的NIC 13。
图7A到7C示出了要由传送完成通知队列控制器135写入传送完成通知队列128中的传送完成状态的描述符的数据结构。图7A所示的连接请求传送命令完成描述符1351是表示由NIC 13响应于来自处理器11的“连接请求传送”命令执行的处理的结果的描述符。连接请求传送命令完成描述符1351包括状态代码1351a。状态代码1351a是表示由NIC 13执行的处理是成功还是失败的代码,即,“成功”或者“失败”。由NIC 13的传送完成通知队列控制器135将连接请求传送命令完成描述符1351作为连接请求传送的“传送完成状态”写入传送完成通知队列128中。
NIC 13读取由处理器11写入传送命令队列127中的“连接请求”,并且经由网络20将连接请求分组传送到连接目标的NIC 13。然后,NIC13创建具有设置在状态代码1351a中的连接请求分组的传送结果的连接请求传送命令完成描述符1351,并且将所创建的连接请求传送命令完成描述符1351写入传送完成通知队列128中。
当正确地完成了连接请求分组的传送时,将连接请求传送命令完成描述符1351的状态代码1351a设置为表示处理成功的代码(例如,“0”)。当连接请求分组的传送失败时,将连接请求传送命令完成描述符1351的状态代码1351a设置为表示处理失败的代码(例如,“1”)。处理器11从传送完成通知队列128读取连接请求传送命令完成描述符1351。然后,处理器11参考连接请求传送命令完成描述符1351的状态代码1351a,以检查处理器11指示NIC 13传送的连接请求分组是否已经被正确地传送到目标节点10的NIC 13。
图7B所示的数据传输命令完成描述符1352是表示由NIC 13响应于从处理器11发出到NIC 13的“数据传输”命令而执行的处理的结果的描述符。数据传输命令完成描述符1352包括状态代码1352a和传送数据长度1352b。状态代码1352a是表示由NIC 13执行的处理是成功还是失败的代码。传送数据长度1352b是表示传输数据长度的信息。由NIC 13的传送完成通知队列控制器135将数据传输命令完成描述符1352作为传输数据传送的“传送完成状态”写入传送完成通知队列128中。
NIC 13从传送命令队列127读取由处理器11写入的“数据传输”命令,然后确认数据要被传送到的端口处于“请求连接状态”。在确认端口的状态之后,NIC 13从端口缓冲器125读取传输数据。NIC 13生成其中设置有所读取的传输数据的传输数据分组,并且经由网络20将所创建的传输数据分组传送到目标节点10的NIC 13。在完成传输数据分组的传送之后,NIC 13创建数据传输命令完成描述符1352。
在数据传输命令完成描述符1352中,传输数据分组的传送结果被设置在状态代码1352a中,而传输数据的数据长度被设置在传送数据长度1352b中。NIC 13将所创建的数据传输命令完成描述符1352写入传送完成通知队列128中。
图7C所示的断开通知传送完成描述符1353是表示由NIC 13响应于从处理器11发出到NIC 13的“断开通知传送”命令而执行的处理的结果的描述符。断开通知传送完成描述符1353包括状态代码1353a。状态代码1353a是表示由NIC 13响应于从处理器11发出到NIC 13的“断开通知传送”命令而执行的处理的结果的代码。由NIC 13将断开通知传送完成描述符1353作为断开通知传送的“传送完成状态”写入传送完成通知队列128中。
NIC 13从传送命令队列127读取由处理器11写入的“断开通知传送”命令,并且经由网络20将断开通知分组传送到连接目标的NIC 13。当完成断开通知分组的传送时,NIC 13创建具有设置在状态代码1353a中的传送结果的断开通知传送完成描述符1353,并且将所创建的断开通知传送完成描述符1353写入传送完成通知队列128中。
如果正确地完成断开通知分组的传送,则将断开通知传送完成描述符1353中的状态代码1353a设置为表示传送成功的代码(例如,“0”)。如果断开通知分组的传送失败,则将断开通知传送完成描述符1353中的状态代码1353a设置为表示传送失败的代码(例如,“1”)。
处理器11从传送完成通知队列128读取断开通知传送完成描述符1353。然后,处理器11参考断开通知传送完成描述符1353,并且检查处理器指示NIC 13传送的断开通知分组是否已经被正确地传送到目标节点10的NIC 13。
接收通知队列129是由NIC 13用来向处理器11通知从通信连接目标的NIC 13接收到的分组的类型的队列。在接收到来自通信连接目标的NIC 13的分组时,NIC 13将与所接收的分组的类型对应的接收状态写入接收通知队列129中。
处理器11从接收通知队列129读取接收状态,并且分析所读取的接收状态的内容,以确定从通信连接目标节点10的处理器11传送的通知的内容。
存在以下类型的接收分组:“连接请求分组”类型、“连接响应分组”类型、“传输数据分组”类型、“断开通知分组”类型等。这些类型的分组被归类为控制分组。
图8A到8D示出了表示要由NIC 13的接收完成通知队列控制器137写入接收通知队列129中的接收状态的描述符的数据结构。如图8A到8D所示,存在四种要写入分组传送或者接收方的NIC 13的接收通知队列129中的描述符。
图8A所示的连接请求描述符1371是当NIC 13接收到连接请求分组时,由NIC 13写入接收通知队列129中以向节点10中的处理器11通知来自通信连接目标的“连接请求”的描述符。
连接请求描述符1371包括以下信息:接收通知ID 1371a、端口号1371b、请求者地址1371c以及请求者端口号1371d。
接收通知ID 1371a是分配给“连接请求”的接收通知的ID。端口号1371b等于设置在控制分组中的“目标端口号”。请求者地址1371c等于设置在连接请求分组中的“发起者地址”。请求者端口号1371d等于设置在连接请求分组中的“源端口号”。
图8B所示的连接响应描述符1372是当NIC 13接收到连接响应分组时,由NIC 13写入接收通知队列129中以向处理器11通知接收到“连接响应分组”的描述符。
连接响应描述符1372包括以下信息:接收通知ID 1372a、端口号1372b、响应者地址1372c以及响应端口号1372d。
接收通知ID 1372a是分配给“连接响应”的接收通知的ID。端口号1372b是设置在连接响应分组中的字段“目标端口号”中的端口号。响应者地址1372c是设置在连接响应分组中的字段“发起者地址”中的地址。响应端口号1372d是设置在连接响应分组中的字段“源端口号”中的端口号。稍后将详细地描述连接响应分组。
图8C所示的数据传输描述符1373是当NIC 13接收到传输数据分组时,由NIC 13写入接收通知队列129以向处理器11通知接收到“数据传输分组”的描述符。数据传输描述符1373包括以下信息:接收通知ID1373a、端口号1373b、数据顶端地址1373c以及数据长度1373d。
接收通知ID 1373a是分配给“传输数据”的接收通知的ID。端口号1373b等于设置在传输数据分组中的“目标端口号”。数据顶端地址1373c是表示端口缓冲器125中的传输数据的顶端位置的地址。由NIC 13从传输数据分组提取传输数据并且将其存储到端口缓冲器125中。数据长度1373d是存储在端口缓冲器125中的传输数据的数据长度。稍后将详细地描述传输数据分组。
图8D所示的断开通知描述符1374是当NIC 13接收到分组时,由NIC 13写入接收通知队列129中以向处理器11通知接收到“断开通知分组”的描述符。
接收通知ID 1374a是分配给“断开通知”的接收通知的ID。端口号1374b是断开通知发送者的端口号(源端口号)。端口号1374b等于设置在断开通知分组中的“源端口号”。
图9示出了每个控制分组的数据结构。
如图9所示,控制分组50包括网络层报头510和传输层报头520。网络层报头510是相当于OSI参考模型的网络层报头的报头。传输层报头520是相当于OSI参考模型的传输层报头的报头。
网络层报头510包括分组长度511、目标地址512以及发起者地址513。分组长度511是整个控制分组50的大小(诸如字节长度)。目标地址512是控制分组50要被传送到的目标节点10的网络层地址(诸如IP地址)。发起者地址513是传送控制分组50的节点10的网络层地址(诸如IP地址)。
传输层报头520包括目标端口号521、源端口号522、协议类型523以及分组类型524。
目标端口号521是通信连接的目标的应用程序的端口号。源端口号522是通信连接的发起者的应用程序的端口号。协议类型523是表示在通信连接中使用的传输层协议的类型的信息。分组类型524是表示在通信连接中使用的控制分组的类型的信息。
本实施例中使用的控制分组例如包括“连接请求分组”、“连接响应分组”以及“断开通知分组”。分组类型524表示控制分组类型之一。换句话说,当接收到控制分组50时,可以通过参考设置在分组类型524中的信息来确定控制分组50的类型。
图10示出了传输数据分组的数据结构。
如图10所示,传输数据分组60包括网络层报头610、传输层报头620以及传输层数据630。
网络层报头610包括分组长度611、目标地址612以及发起者地址613。
分组长度611是表示整个传输数据分组的大小的信息。目标地址612和发起者地址613分别与控制分组50的网络层报头510的目标地址512和发起者地址513相同。
传输层报头620包括目标端口号621、源端口号622、协议类型623以及分组类型624。目标端口号621、源端口号622以及协议类型623分别与控制分组50的传输层报头520的目标端口号521、源端口号522以及协议类型523相同。分组类型624是表示传输数据分组60的类型的信息。
传输层数据630是关于由传输数据分组60运载的传输层协议(诸如TCP(传输控制协议))的数据。
公开了示例性操作。
图11示出了单向通信示例性操作。
图11示出了在本实施例的系统中将数据从图1所示的源节点10(在下文中被称为“源节点10s”)传输到图1所示的目标节点10(在下文中被称为“目标节点10d”)的示例性操作的序列。在图11中,源节点10s的处理器11和NIC 13分别被示出为处理器11s和NIC 13s。同样,目标节点10d的处理器11和NIC 13分别被示出为处理器11d和NIC 13d。
通过以下过程来执行从在源节点10s的处理器11s处执行的端口到在目标节点10d的处理器11d处执行的端口的数据传输:
(1)源节点10s的处理器11s(在下文中处理器11s将被称为“源处理器11s”)向源节点10s的NIC 13s(在下文中NIC 13s将被称为“源NIC13s”)通知“连接请求命令”。
(2)在接收到来自源处理器11s的连接请求命令时,源NIC 13s将“连接请求”传送到目标节点10d的NIC 13d(在下文中NIC 13d将被称为“目标NIC 13d”)。
(3)在接收到来自源NIC 13s的连接请求时,目标NIC 13d将连接许可响应返回到源NIC 13s。
(4)然后,目标NIC 13d向目标节点10d的处理器11d(在下文中处理器11d将被称为“目标处理器11d”)通知接收到连接请求。
(5)在接收到来自目标NIC 13d的连接许可响应时,源NIC 13s向源处理器11s通知接收到连接许可响应。
(6)在接收到来自源NIC 13s的连接响应接收的通知时,源处理器11s指示源NIC 13s执行“数据传输”。
(7)在接收到来自源处理器11s的数据传输命令时,源NIC 13s将由源处理器11s指定的“传输数据”传送到目标NIC 13d。
(8)在接收到来自源NIC 13s的传输数据时,目标NIC 13d向目标处理器11d通知接收到传输数据。重复以上过程(6)到(8)直至源处理器11s将所有传输数据传送到目标处理器11d。
(9)在将所有传输数据传送到目标处理器11d之后,源处理器11s指示源NIC 13s传送“断开通知”。
(10)在接收到来自源处理器11s的断开通知传送命令时,源NIC 13s将“断开通知”传送到目标NIC 13d。
(11)在接收到来自源NIC 13s的断开通知时,目标NIC 13d向目标处理器11d通知接收到断开通知。
执行示例性过程(1)到(11),以便在源NIC 13s和目标NIC 13d之间建立通信连接,并且将数据从源处理器11s传送到目标处理器11d。在源处理器11s将所有传输数据传送到目标处理器11d之后,切断源NIC13s和目标NIC 13d之间的通信连接。通信连接是在OSI参考模型的传输层的通信连接。
如上所述,根据本实施例,源NIC 13s和目标NIC 13d执行处理来建立用于传输数据的通信连接。使用端口表121、端口上下文123以及端口缓冲器125来发送处理器11和NIC 13之间的每个命令和通知。结合端口号来管理这些部件121、123和125。
公开了连接请求传送。
图12示出了要由源处理器11s执行的、用于指示源NIC 13s发出“连接请求”的示例性操作,以便建立通信连接。下面描述图12所示的过程。
(1)初始设置:源处理器11s在相应主存储装置12(在下文中被称为“主存储装置12s”)中取得端口上下文123,并且将端口上下文123中的通信状态1232设置为“待机状态”((1)-1)。然后,源处理器11s将端口上下文123登记在主存储装置12s的端口表121中((1)-2)。
(2)连接请求命令:源处理器11s将连接请求传送命令的描述符1331写入传送命令队列127中。
(3)连接请求传送命令读出:源NIC 13s从传送命令队列127读取连接请求传送命令的描述符1331。
(4)端口表读出:源NIC 13s从连接请求传送命令的描述符1331读取源端口号1331b。然后,源NIC 13s根据所读出的端口号1331b从端口表121中的端口条目1211读取源端口的端口上下文123的存储地址。
(5)端口上下文读出:源NIC 13s从所读出的存储地址读取端口上下文123,并且检查写入端口上下文123中的通信状态1232是否被设置为“待机状态”。
(6)连接请求分组传送:源NIC 13s创建要发送到目标NIC 13d的连接请求分组50cd,并且将所创建的连接请求分组50cd传送到网络20。连接请求分组50cd是具有图9所示格式的控制分组50,并且其分组类型624被设置为“连接请求”。
(7)端口上下文更新:源NIC 13s将端口上下文123中的通信状态1232更新为“请求连接状态”。
(8)传送完成通知写入:源NIC 13s将“传送完成状态”的描述符写入传送完成通知队列128中。“传送完成状态”的描述符是具有图7A所示格式的描述符1351。
(9)传送完成通知读出:源处理器11s从传送完成通知队列128读取传送完成状态的描述符。参考传送完成状态的描述符,源处理器11s检查连接请求分组50cd是否已经被正确地传送到目标处理器11d。如果传送完成状态被设置为“成功”,则源处理器11s确定连接请求分组50cd已经被正确地传送到目标处理器11d。如果传送完成状态被设置为“失败”,则源处理器11s确定源NIC 13s未能传送连接请求分组50cd。
公开了连接请求接收。
图13示出了在接收到来自源NIC 13s的连接请求分组50cd之后,由目标NIC 13d执行的、用于将“连接许可”的响应分组传送到源NIC 13s的示例性操作。下面描述图13所示的示例性过程。
(1)初始设置:目标NIC 13d在相应主存储装置12(在下文中被称为“主存储装置12d”)中取得端口上下文123,并且将端口上下文123中的通信状态1232设置为“待机状态”((1)-1)。然后,目标NIC 13d将端口上下文123登记在主存储装置12d的端口表121中((1)-2)。
(2)连接请求分组接收:目标NIC 13d经由网络20接收从源NIC 13s传送的连接请求分组50cd。
(3)端口表读出:目标NIC 13d从写入连接请求分组50cd中的字段目标端口号1331d读取端口号,并且参考端口表121中与端口号对应的端口条目1211。然后,目标NIC 13d读取设置在主存储装置12d中的端口条目1211的“上下文地址”中的地址。该地址是目标端口的端口上下文123的存储地址(上下文存储地址),该目标端口具有在主存储装置12d中分配给其的端口号。
(4)端口上下文读出:目标NIC 13d从主存储装置12d中的目标端口的上下文存储地址读取端口上下文123,并且检查端口上下文123中的通信状态1232是否被设置为“待机状态”。
(5)连接响应分组传送:在检查通信状态之后,目标NIC 13d创建连接许可响应分组50ca,并且将所创建的连接许可响应分组50ca传送到网络20。连接许可响应分组50ca是具有图9所示格式的控制分组50,并且其分组类型624被设置为“连接许可”。
(6)端口上下文更新:目标NIC 13d将端口上下文123更新为“请求连接状态”
(7)接收通知写入:目标NIC 13d将“接收状态”的描述符写入主存储装置12d中的接收通知队列129中。该描述符是图8A所示的描述符1371。
(8)接收通知读出:目标处理器11d从接收通知队列129读取接收状态的描述符。目标处理器11d检查接收状态是否被设置为“成功”。如果接收状态被设置为“成功”,则目标处理器11d确定目标NIC 13d已经正确地接收到从源处理器11s传送的连接请求分组50cd。如果接收状态被设置为“失败”,则目标处理器11d确定目标NIC 13d未能接收连接请求分组50cd。
如果目标NIC 13d在过程(4)中识别目标端口的端口上下文123中的通信状态1232不是“待机状态”,则目标NIC 13d在过程(5)中将连接拒绝响应分组传送到网络20。
公开了连接请求响应接收。
图14示出了在接收到来自目标NIC 13d的“连接许可”响应分组50ca时由源NIC 13s执行的示例性操作。下面描述图14所示的过程。
(1)连接响应分组接收:源NIC 13s从网络20接收“连接许可”响应分组50ca。
(2)端口表读出:源NIC 13s从所接收的响应分组50ca中的字段目标端口号1331d读取端口号。然后,源NIC 13s读取设置在与所读取的端口号对应的、主存储装置12s的端口表121中的端口条目1211的字段“上下文地址”中的地址。
(3)端口上下文读出:源NIC 13s访问主存储装置12s中的所读取的地址,并且从该地址读取端口上下文123。然后,源NIC 13s检查所读取的端口上下文123中的通信状态1232是否被设置为“请求连接状态”。
(4)端口上下文更新:在检查通信状态之后,源NIC 13s将主存储装置12s的端口上下文123中的通信状态1232更新为“连接状态”。
(5)接收通知写入:源NIC 13s将“接收状态”的描述符写入主存储装置12s的接收通知队列129中。该接收状态的描述符是具有图8A所示格式的描述符1371。
(6)接收通知读出:源处理器11s从接收通知队列129读取“接收状态”的描述符。源处理器11s检查接收状态是否被设置为“成功”。如果接收状态被设置为“成功”,则源处理器11s确定目标NIC 13d已经允许“连接请求”。因此,在源端口和目标端口之间建立通信连接。
源NIC 13s可以在上面的过程(1)中接收连接拒绝响应分组,并且可以在过程(3)中确认与目标端口号1331d对应的端口上下文123中的通信状态1232为“连接状态”。在这种情况下,源NIC 13s将端口上下文123的通信状态1232返回到“待机状态”。这里,目标NIC 13d不向源NIC 13s传送“连接许可”响应分组。
图15示出了用于从连接端口(源端口)传送传输数据的示例性操作。下面描述图15所示的过程。
(1)传输数据写入:源处理器11s将“传输数据”存储到主存储装置12s的端口缓冲器125中。
(2)数据传输命令:源处理器11s将数据传输命令描述符1332(参见图6B)写入主存储装置12s的传送命令队列127中。
(3)传送命令读出:源NIC 13s从写入传送命令队列127中的传送命令队列127读取数据传输命令描述符1332。
(4)端口表读出:源NIC 13s基于设置在描述符1332的字段源端口号1332b中的源端口号,从端口表121读取主存储装置12s中的目标端口的端口上下文123的地址。更具体地,源NIC 13s从端口表121读取与端口号对应的端口条目1211的内容。设置在端口条目1211的字段“上下文地址”中的地址被视为目标端口的端口上下文123的存储地址。
(5)端口上下文读出:源NIC 13s从主存储装置12s中的存储地址读取端口上下文123,并且检查通信状态1232是否被设置为“连接状态”。
(6)传输数据读出:源NIC 13s基于设置在端口条目1211中的字段“缓冲器地址”中的地址以及设置在字段“缓冲器大小”中的缓冲器大小,从主存储装置12s中的端口缓冲器125读取传输数据。
(7)传输数据分组传送:源NIC 13s创建具有图10所示格式的传输数据分组60,并且将所创建的传输数据分组60传送到网络20。
(8)传送完成通知写入:源NIC 13s将传送完成状态描述符写入传送完成通知队列128中。该传送完成状态描述符是具有图7B所示格式的描述符1352。
(9)传送完成通知读出:源处理器11s从传送完成通知队列128读取传送完成状态。然后,源处理器11s检查传送完成状态是否被设置为“成功”。如果传送完成状态被设置为“成功”,则源处理器11s确定源NIC 13s正确地传送了传输数据分组60。在这种情况下,正确地完成了从源端口到目标端口的传输数据的传送。
如果传送完成状态被设置为“失败”,则源处理器11s确定源NIC 13s未能传送传输数据分组60。在这种情况下,从源端口到目标端口的传输数据分组60的传送失败。
图16示出了要由所连接的目标端口执行的、用于接收从源端口传送的传输数据的示例性操作。下面描述图16所示的过程。
(1)传输数据分组接收:目标NIC 13d经由网络20接收从源NIC 13s传送的传输数据分组60。
(2)端口表读出:目标NIC 13d从传输数据分组60提取目标端口号621,并且从主存储装置12d的端口表121中与目标端口号621对应的端口条目1211读取“上下文地址”。
(3)端口上下文读出:目标NIC 13d从主存储装置12d中的上下文存储地址读取端口上下文123。参考端口上下文123中的通信状态1232,目标NIC 13d检查接收到传输数据分组60的端口是否处于“连接状态”。
(4)传输数据写入:目标NIC 13d读取存储在传输数据分组60中的传输数据630,并且将所读取的传输数据630存储在主存储装置12d的端口缓冲器125中。
(5)接收通知写入:目标NIC 13d将接收状态写入主存储装置12d的接收通知队列129中。该接收状态是图8B所示的数据传输描述符1373。
(6)接收通知读出:目标处理器11d从接收通知队列129读取接收状态。
(7)传输数据读出:目标处理器11d参考接收状态中的数据顶端地址1373c和数据长度1332d,并且从端口缓冲器125读取传输数据。以此方式,目标端口接收从源端口传送的传输数据。
公开了断开通知传送。
图17示出了要由所连接的源端口执行的、用于将断开通知传送到目标端口的示例性操作。下面描述图17所示的过程。
(1)断开通知传送命令:源处理器11s将“断开通知传送命令”的描述符写入主存储装置12s的传送命令队列127中。断开通知传送命令的描述符与图6C所示的断开通知传送命令描述符1333相同。
(2)断开通知传送命令读出:源NIC 13s从传送命令队列127读取断开通知传送命令描述符1333。
(3)端口表读出:源NIC 13s从所读取的断开通知传送命令描述符1333读取源端口号1333b,并且从端口表121中与源端口号1333b对应的端口条目1211读取“上下文地址”。
(4)端口上下文读出:源NIC 13s从主存储装置12s中的上下文存储地址读取端口上下文123,并且检查所读取的端口上下文123中的通信状态1232是否处于“连接状态”。
(5)断开通知分组传送:源NIC 13s创建断开通知分组50dc,并且将所创建的断开通知分组50dc传送到网络20。断开通知分组50dc是具有图9所示格式的控制分组50,并且其分组类型624被设置为“断开通知”。
(6)端口上下文更新:源NIC 13s将端口上下文123中的通信状态1232更新为“完成断开通知状态”。
(7)传送完成通知写入:源NIC 13s将“传送完成状态”写入主存储装置12s的传送命令队列127中。该传送完成状态与图7C所示的断开通知传送完成描述符1353相同。
(8)传送完成通知读出:源处理器11s从传送命令队列127读取传送完成状态。如果传送完成状态被设置为“成功”,则源处理器11s确定源NIC 13s已经正确地将断开通知分组50dc传送到目标NIC 13d。在这种情况下,正确地完成了从源端口到目标端口的断开通知的传送。如果传送完成状态被设置为“失败”,则源处理器11s确定源NIC 13s未能传送断开通知分组50dc。在这种情况下,断开通知未从源端口传送到目标端口。
公开了断开通知接收。
图18示出了要由所连接的目标端口执行的、用于从源端口接收断开通知的示例性操作。下面描述图18所示的过程。
(1)断开通知分组接收:目标NIC 13d从网络20接收断开通知分组50dc。
(2)端口表读出:目标NIC 13d从所接收的断开通知分组50dc读取目标端口号621,并且从主存储装置12d的端口表121中与目标端口号621对应的端口条目1211读取“上下文地址”。
(3)端口上下文读出:目标NIC 13d从主存储装置12d中的上下文存储地址读取端口上下文123(目标端口的上下文),并且检查端口上下文123中的通信状态1232是否被设置为“连接状态”。
(4)端口上下文更新:目标NIC 13d将端口上下文123中的通信状态1232更新为“完成断开通知接收状态”。
(5)接收通知写入:目标NIC 13d将“接收状态”写入主存储装置12d的接收通知队列129中。该接收状态描述符与图8C所示的描述符1374相同。
(6)接收通知读出:目标处理器11d从接收通知队列129读取接收状态。如果接收状态被设置为“成功”,则目标处理器11d确定目标NIC 13d已经正确地接收到断开通知分组50dc。因此,源端口和目标端口之间的通信连接被切断。如果接收状态被设置为“失败”,则目标处理器11d确定目标NIC 13d未能接收断开通知分组50dc。在这种情况下,源端口和目标端口之间的通信连接未被切断。
根据示例性实施例,每个NIC 13建立单向通信连接。在使用本实施例的NIC 13执行双向通信的情况下,处理器仅仅需要使用NIC 13来建立两个单向通信连接。与使用常规NIC的情况比较,当使用本实施例的NIC 13来执行双向通信时,处理器上的处理负荷减小。此外,根据示例性实施例,每个端口上下文123可以定义通信连接被切断的状态。
因此,通过参考每个相应的端口上下文123,每个处理器11可以延迟高负荷示例性操作(诸如采集通信资源),并且可以在适当的时机集体执行这些示例性操作。
根据示例性实施例,基于在每个处理器11的主存储装置12中提供的端口上下文123执行通信连接建立示例性操作。因此,与使用具有卸载引擎并且执行通信处理的传统NIC的情况相比,可以维持更多的通信连接数。更具体地,由于端口上下文123被保存在每个具有较大存储容量的主存储装置12中,因此可以维持的通信连接数变得更多。
另外,本实施例的每个NIC 13使用相应处理器11的主存储装置12来管理端口间的通信连接。因此,本实施例的NIC 13具有硬件成本低于具有卸载引擎的传统NIC的优点。此外,在将本实施例应用于经常具有通信连接建立和断开的应用(诸如Web应用)的情况下,可以预期,与具有卸载引擎的传统NIC的情况一样,主机处理器上的处理负荷也减小。
本发明不限于以上实施例,并且可以对实施例进行各种修改而不背离本发明的范围。
例如,在实施例中,在每个处理器11的主存储装置12中提供端口上下文123和端口表121。然而,本发明不限于该结构。例如,可在每个相应处理器中的专用寄存器或者存储器中提供每个端口上下文和每个端口表。在这种情况下,期望可以从网络接口设备直接访问专用寄存器或者存储器。
可以在计算硬件(计算装置)和/或软件中实现实施例,诸如(在非限制性示例中)可以存储、取回、处理和/或输出数据和/或与其它计算机进行通信的任何计算机。可以在计算硬件的显示器上显示所产生的结果。实现实施例的程序/软件可以记录在包括计算机可读记录介质的计算机可读介质上。实现实施例的程序/软件也可以通过传输通信介质进行传送。计算机可读记录介质的例子包括磁记录装置、光盘、磁光盘、和/或半导体存储器(例如,RAM、ROM等等)。磁记录装置的示例包括硬盘设备(HDD)、软盘(FD)以及磁带(MT)。光盘的示例包括DVD(数字多功能盘)、DVD-RAM、CD-ROM(致密盘-只读存储器)以及CD-R(可记录)/RW。通信介质的示例包括载波信号。
此外,根据实施例的一方面,可以提供所述特征、功能和/或操作的任意组合。
实施例的许多特征和优点根据详细说明书是清楚的,并且因此,所附权利要求意欲覆盖落入其真实精神和范围内的实施例的所有这些特征和优点。此外,由于本领域的技术人员将容易地进行大量修改和改变,因此不期望将本发明实施例限于所示出和描述的具体结构和操作,并且因此可以采用落入其范围的所有适当的修改和等同方案。
Claims (16)
1.一种连接到计算机并且经由网络执行通信的网络接口设备,所述网络接口设备包括:
第一管理单元,其通过端口号来识别通信连接,并且通过存储在存储单元中并且与端口号相关联的上下文来管理每个端口的通信连接状态;
第二管理单元,其管理所述上下文的存储状态;以及
控制单元,其参考所述上下文,并且在端口间执行建立通信连接的操作和切断通信连接的操作。
2.根据权利要求1所述的网络接口设备,其中,
当所述计算机的处理器发出传送连接请求分组的命令时,所述控制单元检查与所述命令中被指定为发起者的端口号对应的上下文,并且当所述上下文被设置为“待机状态”时,所述控制单元将所述连接请求分组传送到所述网络。
3.根据权利要求2所述的网络接口设备,其中,
在传送所述连接请求分组之后,所述控制单元向所述处理器通知传送完成。
4.根据权利要求2所述的网络接口设备,其中,
当接收到所述连接请求分组时,所述控制单元检查与所述分组中被指定为目标的端口号对应的上下文;
当所述上下文被设置为“待机状态”时,所述控制单元将连接许可响应分组传送到所述网络,并且将所述上下文更新为“连接状态”;并且
当所述上下文未被设置为“待机状态”时,所述控制单元将连接拒绝响应分组传送到所述网络。
5.根据权利要求4所述的网络接口设备,其中,
所述控制单元接收所述连接请求分组并传送所述响应分组,根据需要更新所述上下文,并且向所述处理器通知接收到所述连接请求分组。
6.根据权利要求4所述的网络接口设备,其中,
当接收到所述连接许可响应分组时,所述控制单元检查与所述响应分组中被指定为发起者的端口号对应的上下文,并且,当所述上下文被设置为“请求连接状态”时,所述控制单元将所述上下文更新为“连接状态”。
7.根据权利要求4所述的网络接口设备,其中,
当接收到所述连接拒绝响应分组时,所述控制单元检查与所述响应分组中被指定为发起者的端口号对应的上下文,并且,当所述上下文被设置为“连接状态”时,所述控制单元将所述上下文返回到“待机状态”。
8.根据权利要求6所述的网络接口设备,其中,
在接收所述响应分组并且更新所述上下文之后,所述控制单元向所述处理器通知接收到所述响应分组。
9.根据权利要求1所述的网络接口设备,其中,
当所述计算机的处理器发出传送断开通知分组的命令时,所述控制单元检查与所述命令中被指定为发起者的端口号对应的上下文,并且,当所述上下文被设置为“连接状态”时,所述控制单元将所述断开通知分组传送到所述网络。
10.根据权利要求9所述的网络接口设备,其中,
当接收到所述断开通知分组时,所述控制单元检查与所述分组中被指定为目标的端口号对应的上下文,并且,当所述上下文被设置为“连接状态”时,所述控制单元将所述上下文更新为“完成断开通知接收状态”。
11.根据权利要求1所述的网络接口设备,其中,
在所述处理器的主存储装置中提供所述上下文以及管理机制。
12.根据权利要求1所述的网络接口设备,其中,
所述上下文以及管理机制存储在所述处理器的专用寄存器中;并且
所述第一管理单元访问所述专用寄存器,以管理每个端口的连接状态。
13.根据权利要求1所述的网络接口设备,其中,
在所述处理器的专用存储器中提供所述上下文以及管理机制;并且
所述第一管理单元访问所述专用存储器,以管理每个端口的连接状态。
14.根据权利要求11所述的网络接口设备,其中,
所述管理机制是表;
所述第二管理单元通过所述表来管理所述上下文;并且
所述表中的条目至少包括关于所述上下文的存储位置的信息。
15.根据权利要求1所述的网络接口设备,其中,
所述上下文至少包括关于协议类型的信息以及关于所述端口的通信状态的信息。
16.一种网络接口设备,其包括:
第一管理单元,其能够通过存储在存储单元中并且与端口号相关联的上下文来管理端口的连接状态;
第二管理单元,其管理所述上下文的存储状态;以及
控制单元,其基于所述上下文控制端口间的连接。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009-026533 | 2009-02-06 | ||
JP2009026533A JP5353278B2 (ja) | 2009-02-06 | 2009-02-06 | 通信装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101827019A true CN101827019A (zh) | 2010-09-08 |
CN101827019B CN101827019B (zh) | 2014-09-10 |
Family
ID=42235671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010112715.8A Expired - Fee Related CN101827019B (zh) | 2009-02-06 | 2010-02-04 | 网络接口设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8725879B2 (zh) |
EP (1) | EP2216955B1 (zh) |
JP (1) | JP5353278B2 (zh) |
KR (1) | KR101101216B1 (zh) |
CN (1) | CN101827019B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789708A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200085B (zh) * | 2013-04-16 | 2016-05-25 | 中航网信(北京)科技有限公司 | 一种实现vxlan报文线速收发的方法及系统 |
US9747227B1 (en) * | 2013-05-24 | 2017-08-29 | Qlogic, Corporation | Method and system for transmitting information from a network device |
JP6463898B2 (ja) * | 2014-03-13 | 2019-02-06 | 株式会社東芝 | 通信装置、情報処理装置、通信方法及び通信プログラム |
JP6175389B2 (ja) * | 2014-03-13 | 2017-08-02 | 株式会社東芝 | 通信装置、情報処理装置、通信方法および通信プログラム |
US9853101B2 (en) | 2015-10-07 | 2017-12-26 | Taiwan Semiconductor Manufacturing Company, Ltd. | Strained nanowire CMOS device and method of forming |
JP6958440B2 (ja) | 2018-03-08 | 2021-11-02 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
JP2019164713A (ja) * | 2018-03-20 | 2019-09-26 | 東芝メモリ株式会社 | ストレージシステム及びデータ転送方法 |
KR20220033055A (ko) | 2019-09-10 | 2022-03-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 패킷 처리 방법 및 장치 그리고 칩 |
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
US11935120B2 (en) | 2020-06-08 | 2024-03-19 | Liquid-Markets GmbH | Hardware-based transaction exchange |
US20210150074A1 (en) * | 2020-12-23 | 2021-05-20 | Jose Niell | Vm encryption of block storage with end-to-end data integrity protection in a smartnic |
US11301408B1 (en) * | 2021-06-07 | 2022-04-12 | Liquid-Markets-Holdings, Incorporated | Asymmetric read / write architecture for enhanced throughput and reduced latency |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07210433A (ja) | 1994-01-18 | 1995-08-11 | Hitachi Ltd | ファイルサーバ |
JP2939707B2 (ja) | 1994-12-19 | 1999-08-25 | 日本電気エンジニアリング株式会社 | 通信制御システムの同期制御方法 |
US6697868B2 (en) * | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6687758B2 (en) * | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
JP2001230812A (ja) * | 2000-02-14 | 2001-08-24 | Hitachi Ltd | 通信開始処理をオフロードするネットワーク接続装置およびそれを用いた方法 |
JP3757904B2 (ja) * | 2002-05-27 | 2006-03-22 | 日本電気株式会社 | 通信制御装置 |
US7007103B2 (en) * | 2002-04-30 | 2006-02-28 | Microsoft Corporation | Method to offload a network stack |
JP2004173166A (ja) * | 2002-11-22 | 2004-06-17 | Matsushita Electric Ind Co Ltd | 通信端末装置およびデータ送信方法 |
US7412488B2 (en) * | 2003-06-05 | 2008-08-12 | Nvidia Corporation | Setting up a delegated TCP connection for hardware-optimized processing |
US7533176B2 (en) * | 2004-07-14 | 2009-05-12 | International Business Machines Corporation | Method for supporting connection establishment in an offload of network protocol processing |
US7930422B2 (en) * | 2004-07-14 | 2011-04-19 | International Business Machines Corporation | Apparatus and method for supporting memory management in an offload of network protocol processing |
EP1772771A4 (en) * | 2004-07-15 | 2008-06-25 | Matsushita Electric Ind Co Ltd | COHERENT LIGHT SOURCE AND OPTICAL APPARATUS USING THE SAME |
US7783880B2 (en) * | 2004-11-12 | 2010-08-24 | Microsoft Corporation | Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management |
JP4921142B2 (ja) * | 2006-12-12 | 2012-04-25 | キヤノン株式会社 | 通信装置 |
-
2009
- 2009-02-06 JP JP2009026533A patent/JP5353278B2/ja not_active Expired - Fee Related
- 2009-12-09 EP EP09178493.4A patent/EP2216955B1/en not_active Not-in-force
- 2009-12-28 KR KR20090131786A patent/KR101101216B1/ko not_active IP Right Cessation
-
2010
- 2010-02-03 US US12/699,392 patent/US8725879B2/en not_active Expired - Fee Related
- 2010-02-04 CN CN201010112715.8A patent/CN101827019B/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789708A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
CN106789708B (zh) * | 2016-12-06 | 2020-10-09 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100306387A1 (en) | 2010-12-02 |
CN101827019B (zh) | 2014-09-10 |
KR20100090629A (ko) | 2010-08-16 |
EP2216955A1 (en) | 2010-08-11 |
KR101101216B1 (ko) | 2012-01-04 |
JP5353278B2 (ja) | 2013-11-27 |
JP2010183450A (ja) | 2010-08-19 |
US8725879B2 (en) | 2014-05-13 |
EP2216955B1 (en) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101827019B (zh) | 网络接口设备 | |
CN100520758C (zh) | 提高tcp重发处理速度 | |
US6757746B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
US10592464B2 (en) | Methods for enabling direct memory access (DMA) capable devices for remote DMA (RDMA) usage and devices thereof | |
US8874797B2 (en) | Network interface for use in parallel computing systems | |
US6490291B1 (en) | Device for data communications between wireless application protocol terminal and wireless application server, and method thereof | |
US5613155A (en) | Bundling client write requests in a server | |
CN103999068B (zh) | 共享的发送队列 | |
US20030158906A1 (en) | Selective offloading of protocol processing | |
US6487619B1 (en) | Multiprocessor system that communicates through an internal bus using a network protocol | |
US11025564B2 (en) | RDMA transport with hardware integration and out of order placement | |
CN1514977A (zh) | 根据共享属性而由压缩的队列对来建立多重虚拟队列对的配置 | |
US20090319634A1 (en) | Mechanism for enabling memory transactions to be conducted across a lossy network | |
US11068412B2 (en) | RDMA transport with hardware integration | |
WO1999033226A1 (en) | Intelligent communication server and communication system incorporating same | |
JPH04299758A (ja) | ソフトウエア間通信のためのデータ交換装置 | |
CN1985492B (zh) | 支持iSCSI读操作和iSCSI烟囱的方法和系统 | |
US8885653B2 (en) | Protocol translation | |
TW200409497A (en) | Data processing systems | |
CN1829231B (zh) | 直接接收入站数据的方法和装置 | |
CN104205079A (zh) | Rdma网络上的子网管理数据的高效分配 | |
JP2006121699A (ja) | 第1のデータネットワークから第2のデータネットワークへのデータパケットのカーネルレベルの通過のための方法及び装置 | |
WO2022017454A1 (zh) | 一种报文处理方法、网络设备以及相关设备 | |
CN101273341A (zh) | 用于应用服务器和基于交易的系统中的请求的集群隧道式传递的系统和方法 | |
US7624198B1 (en) | Sequence tagging system and method for transport offload engine data lists |
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 |
Granted publication date: 20140910 Termination date: 20180204 |
|
CF01 | Termination of patent right due to non-payment of annual fee |