CN100544310C - 为通过网络的数据传输管理存储器的方法、系统和程序 - Google Patents
为通过网络的数据传输管理存储器的方法、系统和程序 Download PDFInfo
- Publication number
- CN100544310C CN100544310C CN200410077181.4A CN200410077181A CN100544310C CN 100544310 C CN100544310 C CN 100544310C CN 200410077181 A CN200410077181 A CN 200410077181A CN 100544310 C CN100544310 C CN 100544310C
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- main frame
- address
- transmission agency
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/106—Mapping addresses of different types across networks, e.g. mapping telephone numbers to data network addresses
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/35—Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
提供一种为通过网络的数据传输管理存储器的方法、系统和程序。待发送数据的虚拟存储地址被提供给发送代理。发送代理向主机提供所请求数据的虚拟地址。作出响应,通过所请求数据的虚拟地址或物理存储单元来寻址的所请求数据被提供给发送代理,以便发送到目标。
Description
技术领域
本发明涉及为通过网络的数据传输管理存储器的方法、系统和程序。
背景技术
在网络环境中,主机上的网络适配器,诸如以太网控制器、光纤信道控制器等,将接收输入/输出(I/O)请求或者从主机发起的对I/O请求的响应。主机操作系统通常包括与网络适配器硬件通信的设备驱动程序,以便管理网络上传送的I/O请求。主机还包括传输协议驱动程序,它把要通过网络传输的数据包装成数据包,其中每个数据包具有目标地址以及要传送的数据部分。在网络适配器上接收的数据包通常存储在主机内存中可用的所分配的包缓冲器中。传输协议驱动程序处理由网络适配器接收的、存储在包缓冲器中的数据包,并存取嵌入数据包中的任何I/O命令或数据。
例如,传输协议驱动程序可实现传输控制协议(TCP)和因特网协议(IP),从而对要传送的数据进行编码和编址,以及对网络适配器上接收的TCP/IP数据包中的净荷数据进行解码和存取。IP指定又称作数据报的数据包的格式以及寻址方案。TCP是高层协议,它建立目标和源之间的连接。
设备驱动程序可能利用大量主处理器资源来处理送往网络适配器的网络传输请求。减少主处理器上负荷的一种技术是使用TCP/IP卸载引擎(TOE),其中TCP/IP协议相关操作是在网络适配器硬件中实现的,与设备驱动程序相反,从而使主处理器不需要执行部分或全部TCP/IP协议相关操作。传输协议操作包括把数据与校验和及其它信息包装在TCP/IP数据包中并发送该数据包。这些发送操作通过发送代理来执行,发送代理可通过TOE、网络接口卡或集成电路、驱动程序、TCP/IP栈、主处理器或这些单元的组合来实现。传输协议操作还包括从网络上接收TCP/IP数据包以及对TCP/IP数据包拆包,以便存取净荷或数据。这些接收操作由接收代理来执行,接收代理同样可通过TOE、驱动程序、主处理器或这些单元的组合来实现。
图1说明在TCP连接中由源主机的发送代理发送给目标主机的TCP/IP数据包的数据流10。在行业接受的TCP RFC(请求注解)所指定的TCP协议中,各数据包被分配唯一的序列号。当各数据包被成功地发送到目标主机时,目标主机向源主机发送确认,通过该数据包成功接收的包序列号来通知源主机。因此,流10包含已被发送和确认被目标主机所接收的一部分12数据包。流10还包含已被源主机发送但未确认被目标主机接收的一部分14数据包。发送代理维护TCP未确认数据指针16,它指向第一个未确认已发送数据包的序列号。
用来存储在目标主机上接收的数据包的包缓冲器的容量一般大小有限。根据TCP协议,目标主机通过发送在本文中称作TCP窗口(在图1中以20指示)的值,通告它具有的可用缓冲空间的大小。因此,源主机发送代理使用TCP窗口值来限制发送到目标主机的未完成数据包的数量、即源主机仍未收到确认的已发送数据包的数量。TCP下一个数据指针22指向要发送到目标主机的下一个数据包的序列号。数据流10在TCP下一个数据指针22与TCP窗口20结尾之间的部分24表示这样的数据包:它们尚未被发送,但允许在TCP协议下发送,而不需要等待任何附加确认,因为这些数据包仍然在TCP窗口20内,如图1所示。数据流10在TCP窗口20的结束边界28之外的部分26不允许在收到附加确认之前在TCP协议下发送。
当目标主机把确认发送到源主机时,TCP未确认数据指针16移动以指明对该连接的附加数据包的确认。TCP窗口20的起始边界30随TCP未确认数据指针16移动,使得TCP窗口结束边界28也移动,从而可为该连接发送其它数据包。如果数据流10的部分14中的数据包在一定时段之后仍未被确认,则发送代理通常将重发未确认的数据包,直至收到对那些数据包的确认。
为了开始发送数据,源主机通常把数据流10的数据存储在可由发送代理存取的缓冲器中。一种这样的缓冲器称作“循环缓冲器”,其中待传输的数据被复制并且通常保留在其中,直到循环缓冲器10中的所有数据已经被发送(以及根据需要被重传)并且所有数据已经被确认为成功接收为止。
循环缓冲器采用通常把数据短期存储在集成电路中的物理存储器来实现,它的一个实例是随机存取存储器、即RAM。通常可以较快地从这类物理存储器中存取数据。主机通常具有诸如硬盘和光盘之类的附加物理存储器,以便较长期地存储数据。这些基于非集成电路的存储器往往比物理存储器更慢地检索数据。
计算机的操作系统通常利用虚拟存储空间,它往往比计算机的短期物理存储器的存储空间大得多。图2表示虚拟存储空间50和短期物理存储空间52的一个实例。如硬盘之类的长期存储器的存储空间以54表示。数据流10中待发送的数据最初可存储在各种存储装置的非邻接部分、即不连续的存储地址中。例如,以10a和10b表示的两个部分可以存储在物理存储器的物理存储空间52的非邻接部分,而以10c表示的另一个部分可存储在硬盘驱动器中,如图2所示。计算机的操作系统采用虚拟存储地址空间50来跟踪数据流10的部分10a、10b和10c的实际位置。因此,虚拟存储地址空间50的部分50a被映射到其中存储数据部分10a的物理存储空间52的物理存储地址。同样,虚拟存储地址空间50的部分50b被映射到其中存储数据部分10b的物理存储空间52的物理存储地址。此外,虚拟存储地址空间50的部分50c被映射到其中存储数据部分10c的长期硬盘驱动器存储空间54的物理存储地址。空白部分50d表示虚拟存储地址空间50的未分配或未映射部分。
由于物理存储器中的存储空间通常比较有限,因此存储在物理存储器中的数据的部分可被复制,即被“交换”到硬盘驱动器或其它长期存储器,以便为其它数据让出物理存储器中的空间。因此,数据部分10c可以从物理存储器交换到硬盘驱动器。当数据部分10c被交换到硬盘驱动器时,被交换数据部分的虚拟存储地址被映射到如图2所示的硬盘驱动器存储空间54而非先前存储部分10c的物理存储空间52的新的硬盘驱动器物理存储地址。
图3表示用于根据TCP/IP RFC系列的Berkeley软件设计(BSD)TCP/IP栈来发送数据的先有技术操作。响应发送数据的数据流10的请求,可包括计算机操作系统或驱动程序或者这两者的主机从物理存储器和长期存储装置的各个单元收集(框70)数据流10的各种数据部分10a、10b...10n。如图4所示,主机把所收集的数据流部分10a、10b...10n存储在物理存储空间52的毗连存储单元中。这样,数据流10的数据被组装,以便传输。
另外,主机通过主机操作系统“锁定”(框72)包含数据流10的物理存储单元。锁定这些存储单元以防止其它应用程序在数据流10的传输过程中使数据流10的数据的一些部分被换出到长期存储器。主机向发送代理发送(框74)包含数据流10的锁定物理存储单元的物理存储地址。进行响应,发送代理开始从锁定存储单元发送(框76)包含数据的数据包,并在数据包被成功发送和接收时开始从目标主机接收(框78)确认。发送代理继续发送(框76)数据包以及接收(框78)确认。未确认数据包被重发(框76),直到它们被确认(框78)为止。一旦数据流10的所有数据包已经被成功地发送和确认(框80),主机释放(框82)包含数据流10的数据的物理存储单元。释放之后,存储在释放物理存储单元中的数据可根据需要被交换到长期存储器。
然而,本领域中一直需要提高数据传输中存储器使用的性能。
发明内容
根据本发明的第一方面,提供一种把数据从源发送到目标的方法,包括:主机,向源的发送代理提供待发送到目标的数据的虚拟存储地址,其中数据被存储在源的多个物理单元中,各单元具有物理地址以及映射到物理地址的虚拟存储地址;发送代理向主机提供待发送到目标的数据的至少部分虚拟存储地址;主机向发送代理标识数据,所标识的数据由发送代理提供的虚拟存储地址来寻址;以及发送代理向目标发送所标识的数据。
在本发明的一个实施例中,主机向发送代理标识数据包括:主机向发送代理提供由发送代理提供的虚拟地址来寻址的数据,所述方法还包括发送代理把从主机接收的数据存储在发送代理的缓冲器中。
在本发明的一个实施例中,主机向发送代理标识数据包括:主机向发送代理提供包含由发送代理提供的虚拟存储地址来寻址的数据的存储单元的物理地址。
在本发明的一个实施例中,物理单元包括第一存储器的单元和第二存储器的单元,主机所标识的数据存储在第一存储器中,主机提供的物理存储地址是包含由发送代理提供的虚拟地址来寻址的数据的第一存储器的物理存储单元,所述方法还包括锁定主机向发送代理提供的第一存储器的物理存储单元,以便防止由发送代理提供的虚拟地址来寻址的数据被交换到第二存储器。
在本发明的一个实施例中,所述方法还包括:发送代理从第一存储器的锁定的物理存储单元中检索由发送代理提供的虚拟地址来寻址的数据;以及在发送代理向目标发送由发送代理提供的虚拟地址来寻址的数据之后,释放第一存储器的锁定的物理存储单元。
在本发明的一个实施例中,所述方法还包括从目标接收对发送代理成功发送且目标成功接收的数据的确认;其中发送代理提供给主机的虚拟存储地址是发送代理发送到目标、但未被确认为目标成功接收的数据的虚拟地址。
在本发明的一个实施例中,所述方法还包括:从目标接收对发送代理成功发送且目标成功接收的数据的确认;发送代理向主机提供由发送代理发送到所述目标、但未被确认为目标成功接收的数据的虚拟地址;主机对发送代理标识由发送代理提供的虚拟存储地址来寻址的未确认数据;以及发送代理向目标重发标识的未确认数据。
在本发明的一个实施例中,主机向发送代理提供虚拟地址包括:主机向发送代理提供至少一种数据结构,所述数据结构包括:地址字段,包含存储待发送到目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;以及序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值。
在本发明的一个实施例中,主机向发送代理提供虚拟地址包括:主机向发送代理提供多个数据结构,其中各数据结构包括:地址字段,存储待发送到所述目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;序列号字段,包含表示与所述数据块中的数据相关的所述数据包序列号的值;以及链接字段,包含所述多个数据结构中的另一个数据结构的虚拟地址。
在本发明的一个实施例中,所述物理单元包括第一存储器和第二存储器的单元,以及待发送到目标的数据存储在第一存储器中,所述方法还包括:锁定存储待发送数据的第一存储器的单元,以便防止待发送数据被交换到第二存储器;除了待发送数据的虚拟存储地址之外,主机还向发送代理提供存储待发送数据的第一存储器的单元的物理地址;发送代理从第一存储器的锁定单元中检索待发送数据;以及在发送代理从存储待发送数据的第一存储器的锁定单元中检索数据之后,释放存储待发送数据的第一存储器的锁定单元。
根据本发明的第二方面,提供一种适合与目标通信的系统,包括:存储器;耦合到系统存储器的处理器;可由处理器在存储器中执行的操作系统;网络适配器;数据存储装置;适合管理对数据存储装置的输入/输出访问的数据存储装置控制器;以及可由处理器在存储器中执行的设备驱动程序。存储器和数据存储装置均包括适合存储数据的物理单元,各单元具有物理地址和映射到物理地址的虚拟地址。操作系统和设备驱动程序中的至少一个适合提供主机,以及设备驱动程序和网络适配器中的至少一个适合提供发送代理,其中:(i)主机向发送代理提供待发送到目标的数据的虚拟存储地址;(ii)发送代理向主机提供待发送到目标的数据的至少部分虚拟存储地址;(iii)主机对发送代理标识由发送代理提供的虚拟存储地址来寻址的数据;以及(iv)发送代理向目标发送标识的数据,建立适合在系统与目标之间发送数据包的有效连接。
在本发明的一个实施例中,所述系统还包括缓冲器,以及主机向发送代理标识数据包括:主机向发送代理提供由发送代理提供的虚拟地址来寻址的数据,以及发送代理还适合把从主机接收的数据存储在缓冲器中。
在本发明的一个实施例中,主机向发送代理标识数据包括:主机向发送代理提供包含由发送代理提供的虚拟存储地址来寻址的数据的存储单元的物理地址。
在本发明的一个实施例中,主机标识的数据存储在存储器中,以及主机所提供的物理地址是包含由发送代理提供的虚拟地址来寻址的数据的存储器的物理单元,系统还包括锁定主机提供给发送代理的存储器的物理存储单元,以便防止由发送代理提供的虚拟地址来寻址的数据被交换到数据存储装置。
在本发明的一个实施例中,发送代理还适合从存储器的锁定的物理存储单元中检索由发送代理提供的虚拟地址来寻址的数据;以及发送代理和主机中的至少一个还适合在发送代理向目标发送由发送代理提供的虚拟地址来寻址的数据之后,释放存储器的锁定的物理存储单元。
在本发明的一个实施例中,发送代理还适合从目标接收对发送代理成功发送且目标成功接收的数据的确认;以及发送代理提供给主机的虚拟存储地址是发送代理发送到目标、但未被确认为目标成功接收的数据的虚拟地址。
在本发明的一个实施例中,发送代理还适合于:从目标接收对发送代理成功发送且目标成功接收的数据的确认;以及向主机提供由发送代理发送到目标、但未被确认为目标成功接收的数据的虚拟地址;其中主机还适合对发送代理标识由发送代理提供的虚拟存储地址来寻址的未确认数据;以及发送代理还适合向目标重发标识的未确认数据。
在本发明的一个实施例中,主机向发送代理提供虚拟地址包括主机向发送代理提供至少一种数据结构,数据结构包括:地址字段,包含存储待发送到目标的数据块的多个单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;以及序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值。
在本发明的一个实施例中,主机向发送代理提供虚拟地址包括主机向发送代理提供多个数据结构,其中各数据结构包括:地址字段,包含存储待发送到目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值;以及链接字段,包含所述多个数据结构中的另一个数据结构的虚拟地址。
在本发明的一个实施例中,待发送到目标的数据存储在存储器中,以及主机和发送代理中的至少一个适合于:锁定存储待发送数据的存储器的单元,以便防止待发送数据被交换到数据存储装置;其中,除了待发送数据的虚拟存储地址之外,主机还适合向发送代理提供存储待发送数据的存储器的单元的物理地址;其中,发送代理还适合从存储器的锁定单元检索待发送数据;以及在发送代理从存储待发送数据的存储器的锁定单元检索数据之后,释放存储待发送数据的存储器的锁定单元。
根据本发明的第三方面,提供一种把数据从源发送到目标的装置,所述装置包括:用于使主机能够向源的发送代理提供待发送到目标的数据的虚拟存储地址的部件,其中数据存储在源的多个物理单元中,各单元具有物理地址以及映射到物理地址的虚拟存储地址;用于使发送代理能够向主机提供待发送到目标的数据的至少部分虚拟存储地址的部件;用于使主机能够对发送代理标识由发送代理提供的虚拟存储地址来寻址的数据的部件;以及用于使发送代理能够向目标发送标识的数据的部件。
在本发明的一个实施例中,用于使主机能够标识数据的部件包括用于使主机能够向发送代理提供由发送代理提供的虚拟地址来寻址的数据的部件,所述装置还包括用于使发送代理能够把从主机接收的数据存储在发送代理的缓冲器中的部件。
在本发明的一个实施例中,用于使主机能够标识数据的部件包括用于使主机能够向发送代理提供包含由发送代理提供的虚拟存储地址来寻址的数据的存储单元的物理地址的部件。
在本发明的一个实施例中,物理单元包括第一存储器的单元和第二存储器的单元,主机所标识的数据存储在第一存储器中,主机所提供的物理存储地址是包含由发送代理提供的虚拟地址来寻址的数据的第一存储器的物理存储单元,所述装置还包括用于锁定主机提供到发送代理的第一存储器的物理存储单元,以便防止由发送代理提供的虚拟地址来寻址的数据被交换到第二存储器的部件。
在本发明的一个实施例中,所述装置还包括:用于使发送代理能够从第一存储器的锁定的物理存储单元中检索由发送代理提供的虚拟地址来寻址的数据的部件;以及用于在发送代理向目标发送由发送代理提供的虚拟地址来寻址的数据之后释放第一存储器的锁定的物理存储单元的部件。
在本发明的一个实施例中,所述装置还包括用于从目标接收对发送代理成功发送且目标成功接收的数据的确认的部件;以及发送代理提供给主机的虚拟存储地址是发送代理发送到目标、但未被确认为目标成功接收的数据的虚拟地址。
在本发明的一个实施例中,所述装置还包括:用于从目标接收对发送代理成功发送且目标成功接收的数据的确认的部件;用于使发送代理能够向主机提供发送代理发送到目标、但未被确认为目标成功接收的数据的虚拟地址的部件;用于使主机能够对发送代理标识由发送代理提供的虚拟存储地址来寻址的未确认数据的部件;以及用于使发送代理能够向目标重发标识的未确认数据的部件。
在本发明的一个实施例中,用于使主机能够向发送代理提供虚拟地址的部件包括用于使主机能够向发送代理提供至少一种数据结构的部件,数据结构包括:地址字段,包含存储待发送到目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;以及序列号字段,包含表示与数据块中的数据相关的数据包序列号的值。
在本发明的一个实施例中,用于使主机能够向发送代理提供虚拟地址的部件包括用于使主机能够向发送代理提供多个数据结构的部件,其中各数据结构包括:地址字段,存储待发送到目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示数据块大小的值;序列号字段,包含表示与数据块中的数据相关的数据包序列号的值;以及链接字段,包含多个数据结构中的另一个数据结构的虚拟地址。
在本发明的一个实施例中,物理单元包括第一存储器和第二存储器的单元,以及待发送到目标的数据存储在第一存储器中,所述装置还包括:用于锁定存储待发送数据的第一存储器的单元,以便防止待发送数据被交换到第二存储器的部件;用于除了待发送数据的虚拟存储地址之外,使主机能够还向发送代理提供存储待发送数据的第一存储器的单元的物理地址的部件;用于使发送代理能够从第一存储器的锁定单元中检索待发送数据的部件;以及用于在发送代理从存储待发送数据的第一存储器的锁定单元中检索数据之后,释放存储待发送数据的第一存储器的锁定单元的部件。
附图说明
现在参照附图,其中各图中类似的参考标号表示相应的部分:
图1说明根据先有技术TCP协议传输的数据流;
图2说明存储在存储器中的数据流的数据的先有技术虚拟和物理存储地址;
图3说明在通过网络传送数据时的先有技术操作;
图4说明数据流的数据在物理存储器中的先有技术存储;
图5说明其中实现本发明的若干方面的计算环境的一个实施例;
图6说明先有技术的数据包体系结构;
图7说明根据本发明的若干方面的实际毗连数据流的数据结构的一个实施例;
图8说明根据本发明的若干方面传送数据流所执行的操作的一个实施例;
图9说明根据本发明的若干方面重传数据流的数据所执行的操作的一个实施例;
图10说明根据本发明的若干方面重传数据流的数据所执行的操作的另一个实施例;
图11说明根据本发明的若干方面传送数据流所执行的操作的另一个实施例;
图12说明根据本发明的若干方面传送数据流所执行的操作的又一个实施例;以及
图13说明可与所述实施例配合使用的一种体系结构。
具体实施方式
在以下说明中,参照附图,附图构成说明的组成部分并说明本发明的若干实施例。应当理解,只要没有背离本发明的范围,可采用其它实施例,并且可进行结构和操作变更。
图5说明其中可实现本发明的若干方面的计算环境。计算机102包括一个或多个中央处理器(CPU)104(仅示出一个)、内存106、非易失性存储装置108、操作系统110和网络适配器112。应用程序114还在内存106中运行,并且能够从远程计算机发送和接收数据包。计算机102可包括本领域已知的任何计算装置,例如大型计算机、服务器、个人计算机、工作站、膝上型电脑、手持计算机、电话装置、网络设备、虚拟化设备、存储控制器等等。可采用本领域已知的任何CPU 104和操作系统110。作为内存管理操作的一部分,内存106中的程序和数据可被交换到存储装置108。
网络适配器112包括网络协议层116,用于实现通过网络118向远程装置发送或从远程装置接收网络数据包的物理通信层。网络118可包括局域网(LAN)、因特网、广域网(WAN)、存储区域网(SAN)等。实施例可配置成通过无线网络或连接、如无线LAN、蓝牙等传送数据。在某些实施例中,网络适配器112和网络协议层116可实现以太网协议、令牌环网协议、光纤信道协议、Infiniband、串行高技术配件(SATA)、并行SCSI、串行附加SCSI电缆等,或者本领域已知的其它任何网络通信协议。
设备驱动程序120在内存106中运行,并且包括与网络适配器112通信的网络适配器112专用命令以及操作系统110与网络适配器112之间的接口。在某些实现中,网络适配器112包括传输协议层121以及网络协议层116。例如,网络适配器112可实现TCP/IP卸载引擎(TOE),其中传输层操作在网络适配器112硬件内实现的传输协议层121的卸载引擎中被执行,与设备驱动程序120相反。
网络层116处理网络通信,以及把所接收的TCP/IP数据包提供给传输协议层121,以便在已加密的情况下对数据包进行解密。传输协议层121与设备驱动程序120接口,并执行其它传输协议层操作,例如处理在网络适配器112上接收的数据包中包含的、在传输层被包装的消息的解密内容,诸如TCP和/或IP、因特网小计算机系统接口(iSCSI)、光纤信道SCSI、并行SCSI传输或本领域已知的其它任何传输层协议。传输卸载引擎121可从所接收的TCP/IP数据包中将净荷拆包,并把数据传递到设备驱动程序120,以便返回给应用程序114。
通过网络118传送数据的应用程序114向设备驱动程序120提供数据。数据可被发送到传输协议层121,从而被封装成TCP/IP数据包。传输协议层121还可在通过网络协议层116在网络118上传送数据包之前对数据包进行加密。
内存106还包括文件对象124,它又可称作套接字对象,包括关于通过网络118到远程计算机的连接的信息。应用程序114采用文件对象124中的信息来标识该连接。应用程序114采用文件对象124与远程系统通信。文件对象124可指明将被用来与远程系统通信的本地端口或套接字、在其中运行应用程序114的计算机102的本地网络(IP)地址、应用程序114已发送和接收的数据数量、以及应用程序114与其通信的远程端口和网络地址、如IP地址。上下文信息126包括一种数据结构,其中包含设备驱动程序120所维护的用以管理发送到网络适配器112的请求的信息,如以下所述。
在所述实施例中,经编程、由内存106的软件来操作的CPU 104提供与网络适配器112交互的主机130,其中所述软件包括一个或多个操作系统110、应用程序114以及设备驱动程序120。因此,发送代理132包括网络接口112的传输协议层121和网络协议层116。但是,发送代理132可通过TOE、网络接口卡或集成电路、驱动程序、TCP/IP栈、主处理器或这些单元的组合来实现。
图6说明通过网络适配器112接收或发送的网络数据包150的格式。网络数据包150以网络协议114所理解的格式来实现,例如封装在以太网帧中,它包括其它以太网成分、如首标和检错码(未示出)。传输数据包152包含在网络数据包150中。传输数据包152可包括能够由传输协议驱动程序121来处理的传输层,例如TCP和/或IP协议、因特网小计算机系统接口(iSCSI)协议、光纤信道SCSI、并行SCSI传输等。传输数据包152包括净荷数据154以及其它传输层字段、如首标和检错码。净荷数据52包括被传送的基本内容,如命令、状态和/或数据。操作系统110可包括设备层、如SCSI驱动程序(未示出),以便处理净荷数据154的内容以及存取其中的任何状态、命令和/或数据。
如上所述,当发送数据流、如数据流10时,主机通常已经预先把数据流的数据存储在物理存储器中,并且锁定物理存储器的那些单元,直到数据流的所有数据包已经由发送代理成功发送并被目标所确认为止。因此,在数据传输过程中可能占用物理存储器的大量部分。
根据可在数据传输过程中改善内存资源管理的一个实施例,主机130向发送代理132发送待发送数据的虚拟存储地址。如上所述,主机130可包括操作系统或驱动程序或者这两者。发送代理132可通过TOE、网络接口卡或集成电路、驱动程序、TCP/IP栈、主处理器或这些单元的组合来实现。当发送代理132准备在传送或重传中发送数据时,发送代理132向主机提供它准备发送的、可以只是要发送的整个数据流的一部分的数据的虚拟地址。作出响应,主机向发送代理132提供所请求数据的物理地址或实际数据本身。因此,物理存储器的锁定可被减少或消除,如以下更详细说明。
图7表示虚拟存储空间50的虚拟存储地址的块200a。块200a的各虚拟存储地址被映射到包含待发送数据流210的数据块210a的多个物理存储单元。存储数据块210a的物理存储单元可以处于物理存储单元52或者长期物理存储单元54中。虚拟存储地址的另一个块200b被映射到包含待发送数据的另一个块210b的另一组多个物理存储单元。存储数据块210b的物理存储单元也可以处于物理存储单元52或者长期物理存储单元54中,并且不一定处于与块210a相同类型的存储器中。虚拟存储地址的其它块被映射到包含待发送数据流的其它数据块的物理存储单元。存储其它数据块的物理存储单元同样可以处于物理存储单元52或者长期物理存储单元54中,并且不一定全部处于相同类型的存储器中。虚拟存储地址的块200n被映射到包含待发送数据流210的最后一个数据块210n的最后一组物理存储单元。
可采用各种格式对发送代理132标识虚拟存储地址的各块200a、200b...200n。图7说明数据结构的一个实例,该数据结构在本文中称作“虚拟上下文”,它标识虚拟存储地址的块。在本例中,虚拟存储地址的各块200a、200b...200n分别由相关虚拟上下文220a、220b...220n来标识。各虚拟上下文220a、220b...220n具有虚拟地址字段222a、222b...222n,它们可包含相关数据块210a、210b...210n的数据的起始数据包的虚拟地址。或者,起始数据包的虚拟地址可由与偏移字段224a、224b...224n中所存储的偏移值组合的虚拟地址字段222a、222b...222n中所存储的虚拟地址来标识。
各数据块210a、210b...210n的大小在数据大小字段226a、226b...226n中标识。因此,在所述实施例中,各数据块210a、210b...210n的大小对于不同块可以不同。或者,固定大小可能对于一些应用是适当的。另外,数据块210a、210b...210n的第一数据包的TCP序列号或其它发送协议序列号在起始序列号字段228a、228b...228n中标识。
在所述实施例中,虚拟上下文220a、220b...220n可通过指针字段230a、230b...230n链接在一起,其中指针字段230a、230b...230n指向包含数据流210的下一个虚拟上下文220a、220b...220n的虚拟存储单元的地址。因此,例如,数据块210a的虚拟存储地址块200a的虚拟上下文220a的指针字段230a指向包含数据块210b的虚拟存储地址块200b的下一个虚拟上下文220b的虚拟存储单元的地址,数据块210b的虚拟存储地址块200b的虚拟上下文220b的指针字段230b指向包含数据块210c的虚拟存储地址块200c的下一个虚拟上下文220c的虚拟存储单元的地址,依此类推。
如上所述,数据块210a、210b...210n的各块可存储在不同类型的物理存储器中。另外,存储在同一个存储器中的数据块210a、210b...210n的那些块不需要处于邻接存储在特定存储器中的其它数据块的存储单元的存储单元中。尽管如此,虚拟上下文220a、220b...220n的链接表可被看作是提供数据块210a、210b...210n的虚拟连续数据流210,这些数据块不一定实际上存储在毗连存储器中。
图8表示在通过网络向目标发送数据流210时主机130和发送代理132的操作。数据流210的传送通过主机130向发送代理132发送(框250)虚拟上下文220a、220b...220n的链接表来发起,这些虚拟上下文标识数据流210的虚拟连续数据的数据块210a、210b...210n的虚拟存储地址块200a、200b...200n。这些虚拟地址可采用诸如本领域的技术人员已知的SO_SEND和SO_SENDMSG等已知套接字函数发送到发送代理132。在本申请中,SO_SEND函数可用于单个虚拟地址块,以及SO_SENDMSG函数可用于若干虚拟地址块。
一旦发送代理准备发送数据流210的数据包块,发送代理132向主机130发送(框252)该数据块的虚拟地址。例如,发送代理132可在数据包块进入TCP连接的TCP窗口内时准备发送那个块。在所述实施例中,发送代理132首先向主机130发送第一数据包块、即数据流210的数据块210a的虚拟地址。数据块210a的虚拟地址由虚拟上下文220a标识。
采用发送代理132所提供的虚拟地址,主机130在数据块210a没有在快速存取存储器、如物理存储单元52中时把它存储(框254)在这类存储单元中。另外,主机130锁定(框256)包含数据块210a的物理存储单元52,以便防止其它应用程序把那些存储单元交换到长期存储器。要注意,在所述实施例中,主机130可把锁定的物理存储器限制到正被发送的特定数据块的存储单元,而不是计划传送的整个数据流的存储单元。
主机向发送代理132发送(框260)包含数据块210a的锁定物理存储单元52的物理存储地址。发送代理开始向目标主机发送(框262)数据块210a的数据包。一旦数据块210a的所有数据包已经被发送代理132发出(框264),主机130可释放(框266)包含数据块210a的物理存储单元52。
在成功地收到发送代理132发送的数据包时,发送代理将从目标主机接收(框268)确认,通过数据包序列号来标识目标主机成功接收的每个数据包。要注意,在所述实施例中,主机130可在从目标主机接收任何或全部确认之前释放包含数据块210a的物理存储单元(框266)。如果没有收到(框270)对数据块210a的每个已发送数据包的确认,则发送代理132在一定时段中(框272)将继续接收(框268)可能由目标主机发送的其它任何确认。但是,如果已发送数据包在一定时段内(框272)没有被确认,则发送代理132将开始重传(框274)数据块210a的未确认数据包,以下会更详细说明。
一旦已经收到对数据块210a的所有数据包的确认(框270),如果仍未发送完所有数据块(框276),则发送代理132可向目标主机发送数据块210b...210n中的下一个数据块。因此,发送代理132向主机130发送数据流210的下一个数据包块210b的虚拟地址。
采用发送代理132所提供的虚拟地址,主机130在数据块210b没有在快速存取存储器52中时把它存储(框254)在物理存储单元52中,并锁定(框256)包含数据块210b的物理存储器单元52。
主机向发送代理132发送(框260)包含数据块210b的锁定物理存储单元的物理存储地址。发送代理开始向目标主机发送(框262)数据块210b的数据包。一旦数据块210b的所有数据包已经被发送代理132发出(框264),主机130可释放(框266)包含数据块210b的物理存储单元。
如果已发送数据包在一定时段内(框272)没有被确认,则发送代理132将开始重传(框274)数据块210b的未确认数据包。以这种方式传送数据流210的剩余数据块,直到所有数据块已被成功发送和确认(框276),以及完成数据流210的传送(框278)。
图9表示在重传(图8的框274)通过网络向目标发送的数据流210的数据块的未确认数据包时主机130和发送代理132的操作。发送代理132向主机130发送(框282)在图8的框272的时段内没有被目标主机确认的那些数据包的虚拟地址。
采用发送代理132所提供的虚拟地址,主机130收集(框284)未确认数据包,并在未确认数据包没有在物理存储器52中时将其存储在物理存储单元52中。在所述实施例中,未确认数据包可以存储在物理存储器52的毗连存储单元中或者存储在非毗连单元中。另外,主机130锁定(框286)包含未确认数据包的物理存储单元52,以便防止其它应用程序把那些存储单元交换到长期存储器。
主机130向发送代理132发送(框288)包含被发送数据块的未确认数据包的数据的锁定物理存储单元的物理存储地址。发送代理开始向目标主机重发(框290)未确认数据包。一旦所有未确认数据包已经由发送代理132重发(框292),主机130可释放包含被重发数据块的未确认数据包的物理存储单元(框294)。
控制返回到(框296)图8的传送例程,以便从目标主机接收(框268)确认。要注意,在所述实施例中,主机130可在从目标主机接收确认之前释放包含未确认数据包的物理存储单元(框294)。如果先前未确认的数据包的已重发数据包在一定时段内(框272)没有被确认,则发送代理132将再次开始按照以上结合图9所述的方式重传(框274)被传送的数据块的未确认数据包。
图10表示根据一个备选实施例、在重传通过网络向目标传送的数据流210的数据块的未确认数据包时主机130和发送代理132的操作。通过与图9的操作相同的方式,发送代理132向主机130发送(框300)在图8的框272的时段内没有被目标主机确认的那些数据包的虚拟地址。
采用发送代理132所提供的虚拟地址,主机130收集未确认数据包,以及主机130不是发送未确认数据包的物理存储地址,而是把实际数据发送(框302)到发送代理132,发送代理132把未确认数据包的数据存储(框304)在网络接口112的缓冲存储器306(图5)中。
发送代理开始采用来自缓冲器306的数据向目标主机发送(框308)未确认数据包。控制返回到(框310)图8的传输例程,以便从目标主机接收(框268)确认。如果先前未确认的数据包的已发送数据包在一定时段内(框272)没有被确认,则发送代理132将开始按照以上结合图9或图10所述的一种或多种方式重传(框274)被传送的数据块的未确认数据包。
在上述图8-10的实例中,讲述了数据块210a、210b...210n的每次传输。应当理解,由发送代理进行的数据块的传输不需要被限制为每次仅一个数据块未完成。随应用而定,几个或更多数据块可在没有收到确认的情况下被发送。因此,在TCP上下文中,发送代理可发送达到TCP窗口(图1)的数据,这个数据可包含若干数据块,由不同虚拟上下文来指示,而不需要收到任何确认。发送代理采用TCP下一个数据指针22和TCP发送窗口20的值来跟踪在没有收到确认时可发送的数据数量,如上所述。
图11表示根据一个备选实施例、在通过网络向目标传送数据流210时主机130和发送代理132的操作。通过与图8的操作相同的方式,数据流210的传输通过主机130向发送代理132发送(框350)虚拟上下文220a、220b...220n的链接表来发起,链接表标识虚拟连续数据流210的数据块210a、210b...210n的虚拟存储地址块200a、200b...200n。一旦发送代理准备发送数据流210的数据包块,发送代理132向主机130发送(框352)该数据块的虚拟地址。
采用发送代理132所提供的虚拟地址,主机130不是发送数据块的物理存储地址,而是把该块的数据发送(框354)到发送代理132,发送代理132把该块的数据存储(框356)在网络接口112的缓冲存储器306中。
发送代理开始把数据块210a的数据包从发送代理缓冲器306发送(框362)到目标主机,直到数据块210的所有数据包已经由发送代理132发送(框364)为止。在成功地收到发送代理132发送的数据包时,发送代理将从目标主机接收(框368)确认,通过数据包序列号来标识由目标主机成功接收的每个数据包。如果没有收到对数据块210的每个已发送数据包的确认(框370),则发送代理132在一定时段中(框372)将继续接收(框368)可能由目标主机发送的其它任何确认。但是,如果已发送数据包在该时段内(框372)没有被确认,则发送代理132将开始按照重传程序、如以上结合图9和图10所述的一个或多个重传操作来重传(框374)数据块210的未确认数据包。
一旦已经收到对数据块210a的所有数据包的确认(框370),如果仍未发送完所有数据块(框376),则发送代理132可向目标主机发送数据块210b...210n中的下一个数据块。如果不是,则发送代理132向主机130发送(框352)数据流210的下一个数据包块的虚拟地址。一旦所有数据块210a、210b...210n已经被成功发送和确认(框376),则数据流10已经被成功发送(框378)。
应当理解,响应发送代理所提供的虚拟地址,主机130可通过各种方式对发送代理标识那些虚拟地址所寻址的数据包。例如,图8和图9描述传输和重传操作,其中,主机130采用发送代理132所提供的虚拟地址来锁定包含由虚拟地址寻址的数据包的物理存储单元52,并向发送代理132发送包含数据包的锁定物理存储单元的物理存储地址。通过比较,图11和图10描述传输和重传操作,其中,主机130采用发送代理132所提供的虚拟地址、通过向发送代理132发送虚拟地址寻址的实际数据而存储在发送代理缓冲器中来标识数据。应当理解,主机130可通过其它技术来标识由发送代理所提供的虚拟地址寻址的数据包。
图12表示根据又一个实施例、在通过网络向目标传送数据流210时主机130和发送代理132的操作。数据流210的传送通过主机130收集(框450)数据流210的数据包并在它们没有被存储在物理存储器中时将其存储在物理存储单元52中来发起。在所述实施例中,数据流210可以存储在物理存储单元52的毗连存储单元中或者非毗连单元中。另外,主机130锁定(框452)包含数据流210的物理存储单元52,以便防止其它应用程序把那些存储单元交换到长期存储器。
主机130向发送代理132发送(框454)包含被发送数据流210b的锁定物理存储单元的物理存储地址。另外,主机130向发送代理132发送虚拟上下文220a、220b...220n的链接表,虚拟上下文标识虚拟连续数据流210的数据块210a、210b...210n的虚拟存储地址块200a、200b...200n。
发送代理132开始采用来自快速存取存储单元52的锁定物理存储单元的数据向目标主机发送(框456)数据流210的数据包。一旦数据流的所有数据包已经被发送代理132发出(框464),主机130可释放(框466)包含数据流210的物理存储单元。
在成功地收到发送代理132发送的数据包时,发送代理将从目标主机接收(框468)确认,通过数据包序列号来标识由目标主机成功接收的每个数据包。如果没有收到(框470)对数据流210的每个已发送数据包的确认,则发送代理132在一定时段中(框472)将继续接收(框468)可能由目标主机发送的其它任何确认。但是,如果已发送数据包在该时段内(框472)没有被确认,则发送代理132将开始按照重传程序、如图9或图10所述的操作来重传(框474)数据流210的未确认数据包。一旦已经收到对数据流210的所有数据包的确认(框470),数据流10已经被成功发送(框476)。
其它实施例详细说明
为通过网络的数据传输管理存储器的所述技术可利用标准编程和/或工程技术以产生软件、固件、硬件或其任意组合,作为方法、设备或制造产品来实现。术语“制造产品”在本文中用来表示以硬件逻辑(如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)或者计算机可读媒体、如磁存储媒体(如硬盘驱动器、软盘、磁带等)、光存储装置(CD-ROM、光盘等)、易失性和非易失性存储装置(如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等)来实现的代码或逻辑。计算机可读媒体中的代码由处理器存取和执行。实现优先实施例所用的代码也可以是通过传输媒体可存取的或者是通过网络从文件服务器可存取的。在这些情况下,其中实现代码的制造产品可包括传输媒体,诸如网络传输线、无线传输媒体、经空间传播的信号、无线电波、红外信号等等。因此,“制造产品”可包括其中包含代码的媒体。另外,“制造产品”可包括其中包含、处理和执行代码的硬件和软件部件的组合。本领域的技术人员当然知道,可对本配置进行许多修改,只要没有背离本发明的范围,以及制造产品可包括本领域已知的任何信息承载媒体。
在所述实施例中,某些操作被描述成通过操作系统110、设备驱动程序120或网络接口112来执行。在备选实施例中,描述为通过其中之一执行的操作可通过操作系统110、设备驱动程序120或网络接口112中的一个或多个来执行。例如,描述为通过主机130执行的锁定和释放操作可由发送代理132来执行。
在所述实现中,传输协议层121以网络适配器112硬件来实现。在备选实现中,传输协议层可通过设备驱动程序或主机内存106来实现。
在所述实施例中,数据包通过网络从网络适配卡传送到远程计算机。在备选实施例中,由协议层或设备驱动程序所处理的发送和接收数据包可被传送到设备驱动程序和传输协议驱动程序在其中执行的同一个计算机中执行的独立进程。在这些实施例中,没有使用网卡,因为数据包在同一个计算机和/或操作系统中的进程之间传递。
在某些实现中,设备驱动程序和网络适配器实施例可包含在计算机系统中,该系统包括存储控制器,诸如SCSI、集成驱动电路(IDE)、冗余独立磁盘阵列(RAID)等控制器,管理对例如磁盘驱动器、磁带媒体、光盘等非易失性存储装置的存取。在备选实现中,网络适配器实施例可包括在没有包含存储控制器的系统中,例如某些集线器和交换机。
在某些实现中,设备驱动程序和网络适配器实施例可以在一种计算机系统中实现,这种系统包括呈现在耦合到包含设备驱动程序和网络适配器的计算机系统的监视器上显示的信息的视频控制器,例如包括台式电脑、工作站、服务器、大型计算机、膝上型电脑、手持计算机等在内的计算机系统。或者,网络适配器和设备驱动程序实施例可在没有包含视频控制器的计算装置中实现,如交换机、路由器等。
在某些实现中,网络适配器可配置成通过连接到网络适配器的端口的电缆来传送数据。或者,网络适配器实施例可配置成通过无线网络或连接、如无线LAN、蓝牙等传送数据。
图8-12的所示逻辑表示以某个顺序发生的某些事件。在备选实施例中,某些操作可按照不同的顺序来执行或修改或取消。此外,可对上述逻辑增加步骤,并且仍然符合所述实施例。另外,本文所述操作可依次发生,或者某些操作可并行处理。此外,操作可由单个处理单元来执行或者由分布式处理单元来执行。
图7说明用来标识虚拟地址的信息。在备选实现中,这些数据结构可包括附图所述之外的其它或不同信息。
图13说明诸如图5所示的主机和存储装置之类的网络组件的计算机体系结构500的一个实现。体系结构500可包括处理器502(例如微处理器)、内存504(例如易失性存储装置)以及存储装置506(例如非易失性存储装置,诸如磁盘驱动器、光盘驱动器、磁带驱动器等)。存储装置506可包括内部存储装置或者附加或网络可存取存储装置。存储装置506中的程序被装入内存504,并由处理器502以本领域已知的方式来执行。该体系结构还包括实现与网络通信的网卡508,如以太网、光纤信道仲裁环路等。此外,在某些实施例中,该体系结构还可包括在显示监视器上呈现信息的视频控制器509,其中视频控制器509可在视频卡上实现或者在安装到主板上的集成电路组件上集成。如上所述,某些网络装置可具有多个网卡。输入装置510用来向处理器502提供用户输入,并且可包括键盘、鼠标、指示笔、话筒、触摸显示屏或者本领域已知的其它任何激活或输入机构。输出装置512能够呈现从处理器502或其它部件传送的信息,诸如显示监视器、打印机、存储装置等。
网络适配器508可以在网卡、如外设部件互连(PCI)卡或其它某种I/O卡、或者安装在主板上的集成电路部件中实现。
本发明的各种实施例的以上描述是为了说明和描述而提供的。它不是意在涵盖本发明的各个方面或将本发明限定在所公开的形式。根据以上理论,许多修改和变更都是可行的。本发明的范围不是由本详细描述来限制,而是由所附权利要求来限制。以上说明、实例和数据提供了对本发明的构成的制造和使用的完整描述。由于在不背离本发明的精神和范围的前提下可实现本发明的许多实施例,因此本发明在于以下所附权利要求。
Claims (30)
1.一种把数据从源发送到目标的方法,包括:
主机,向所述源的发送代理提供待发送到目标的数据的虚拟存储地址,其中所述数据被存储在所述源的多个物理单元中,各单元具有物理地址以及映射到所述物理地址的虚拟存储地址;
所述发送代理向所述主机提供待发送到所述目标的所述数据的至少部分所述虚拟存储地址;
所述主机向所述发送代理标识数据,所标识的数据由所述发送代理提供的所述虚拟存储地址来寻址;以及
所述发送代理向所述目标发送所标识的数据。
2.如权利要求1所述的方法,其特征在于,所述主机向所述发送代理标识数据包括:所述主机向所述发送代理提供由所述发送代理提供的所述虚拟地址来寻址的数据,所述方法还包括所述发送代理把从所述主机接收的数据存储在所述发送代理的缓冲器中。
3.如权利要求1所述的方法,其特征在于,所述主机向所述发送代理标识数据包括:所述主机向所述发送代理提供包含由所述发送代理提供的所述虚拟存储地址来寻址的所述数据的存储单元的物理地址。
4.如权利要求3所述的方法,其特征在于,所述物理单元包括第一存储器的单元和第二存储器的单元,所述主机所标识的所述数据存储在所述第一存储器中,所述主机提供的所述物理存储地址是包含由所述发送代理提供的所述虚拟地址来寻址的所述数据的所述第一存储器的物理存储单元,所述方法还包括锁定所述主机向所述发送代理提供的所述第一存储器的所述物理存储单元,以便防止由所述发送代理提供的所述虚拟地址来寻址的所述数据被交换到所述第二存储器。
5.如权利要求4所述的方法,其特征在于还包括:
所述发送代理从所述第一存储器的所述锁定的物理存储单元中检索由所述发送代理提供的所述虚拟地址来寻址的所述数据;以及
在所述发送代理向所述目标发送由所述发送代理提供的所述虚拟地址来寻址的所述数据之后,释放所述第一存储器的所述锁定的物理存储单元。
6.如权利要求1所述的方法,其特征在于还包括从所述目标接收对所述发送代理成功发送且所述目标成功接收的数据的确认;其中所述发送代理提供给所述主机的所述虚拟存储地址是所述发送代理发送到所述目标、但未被确认为所述目标成功接收的数据的虚拟地址。
7.如权利要求1所述的方法,其特征在于还包括:
从所述目标接收对所述发送代理成功发送且所述目标成功接收的数据的确认;
所述发送代理向所述主机提供由所述发送代理发送到所述目标、但未被确认为所述目标成功接收的数据的虚拟地址;
所述主机对所述发送代理标识由所述发送代理提供的所述虚拟存储地址来寻址的所述未确认数据;以及
所述发送代理向所述目标重发所述标识的未确认数据。
8.如权利要求1所述的方法,其特征在于,所述主机向所述发送代理提供虚拟地址包括:所述主机向所述发送代理提供至少一种数据结构,所述数据结构包括:地址字段,包含存储待发送到所述目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;以及序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值。
9.如权利要求1所述的方法,其特征在于,所述主机向所述发送代理提供虚拟地址包括:所述主机向所述发送代理提供多个数据结构,其中各数据结构包括:地址字段,存储待发送到所述目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;序列号字段,包含表示与所述数据块中的数据相关的所述数据包序列号的值;以及链接字段,包含所述多个数据结构中的另一个数据结构的虚拟地址。
10.如权利要求1所述的方法,其特征在于,所述物理单元包括第一存储器和第二存储器的单元,以及待发送到所述目标的所述数据存储在所述第一存储器中,所述方法还包括,
锁定存储所述待发送数据的所述第一存储器的单元,以便防止所述待发送数据被交换到所述第二存储器;
除了所述待发送数据的所述虚拟存储地址之外,所述主机还向所述发送代理提供存储所述待发送数据的所述第一存储器的所述单元的物理地址;
所述发送代理从所述第一存储器的所述锁定单元中检索所述待发送数据;以及
在所述发送代理从存储所述待发送数据的所述第一存储器的所述锁定单元中检索所述数据之后,释放存储所述待发送数据的所述第一存储器的所述锁定单元。
11.一种适合与目标通信的系统,包括:
存储器;
耦合到所述系统存储器的处理器;
可由所述处理器在存储器中执行的操作系统;
网络适配器;
数据存储装置;
适合管理对所述数据存储装置的输入/输出访问的数据存储装置控制器;以及
可由所述处理器在所述存储器中执行的设备驱动程序;
其中所述存储器和所述数据存储装置均包括适合存储数据的物理单元,各单元具有物理地址和映射到所述物理地址的虚拟地址;以及
其中所述操作系统和设备驱动程序中的至少一个适合提供主机,以及所述设备驱动程序和所述网络适配器中的至少一个适合提供发送代理,其中:
(i)所述主机向所述发送代理提供待发送到目标的数据的虚拟存储地址;
(ii)所述发送代理向所述主机提供待发送到所述目标的所述数据的至少部分所述虚拟存储地址;
(iii)所述主机对所述发送代理标识由所述发送代理提供的所述虚拟存储地址来寻址的数据;以及
(iv)所述发送代理向所述目标发送所述标识的数据,建立适合在所述系统与目标之间发送数据包的有效连接。
12.如权利要求11所述的系统,其特征在于,所述系统还包括缓冲器,以及所述主机向所述发送代理标识数据包括:所述主机向所述发送代理提供由所述发送代理提供的所述虚拟地址来寻址的所述数据,以及所述发送代理还适合把从所述主机接收的所述数据存储在所述缓冲器中。
13.如权利要求11所述的系统,其特征在于,所述主机向所述发送代理标识数据包括:所述主机向所述发送代理提供包含由所述发送代理提供的所述虚拟存储地址来寻址的所述数据的存储单元的物理地址。
14.如权利要求13所述的系统,其特征在于,所述主机标识的所述数据存储在所述存储器中,以及所述主机所提供的所述物理地址是包含由所述发送代理提供的所述虚拟地址来寻址的所述数据的所述存储器的物理单元,所述系统还包括锁定所述主机提供给所述发送代理的所述存储器的所述物理存储单元,以便防止由所述发送代理提供的所述虚拟地址来寻址的所述数据被交换到所述数据存储装置。
15.如权利要求14所述的系统,其特征在于,所述发送代理还适合从所述存储器的所述锁定的物理存储单元中检索由所述发送代理提供的所述虚拟地址来寻址的所述数据;以及
所述发送代理和所述主机中的至少一个还适合在所述发送代理向所述目标发送由所述发送代理提供的所述虚拟地址来寻址的所述数据之后,释放所述存储器的所述锁定的物理存储单元。
16.如权利要求11所述的系统,其特征在于,所述发送代理还适合从所述目标接收对所述发送代理成功发送且所述目标成功接收的数据的确认;以及所述发送代理提供给所述主机的所述虚拟存储地址是所述发送代理发送到所述目标、但未被确认为所述目标成功接收的数据的虚拟地址。
17.如权利要求11所述的系统,其特征在于,所述发送代理还适合于:
从所述目标接收对所述发送代理成功发送且所述目标成功接收的数据的确认;以及
向所述主机提供由所述发送代理发送到所述目标、但未被确认为所述目标成功接收的所述数据的所述虚拟地址;
其中所述主机还适合对所述发送代理标识由所述发送代理提供的所述虚拟存储地址来寻址的所述未确认数据;以及
所述发送代理还适合向所述目标重发所述标识的未确认数据。
18.如权利要求11所述的系统,其特征在于,所述主机向所述发送代理提供虚拟地址包括所述主机向所述发送代理提供至少一种数据结构,所述数据结构包括:地址字段,包含存储待发送到所述目标的数据块的多个单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;以及序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值。
19.如权利要求11所述的系统,其特征在于,所述主机向所述发送代理提供虚拟地址包括所述主机向所述发送代理提供多个数据结构,其中各数据结构包括:地址字段,包含存储待发送到所述目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值;以及链接字段,包含所述多个数据结构中的另一个数据结构的虚拟地址。
20.如权利要求11所述的系统,其特征在于,待发送到所述目标的所述数据存储在所述存储器中,以及所述主机和所述发送代理中的至少一个适合于:
锁定存储所述待发送数据的所述存储器的所述单元,以便防止所述待发送数据被交换到所述数据存储装置;
其中,除了所述待发送数据的所述虚拟存储地址之外,所述主机还适合向所述发送代理提供存储所述待发送数据的所述存储器的所述单元的物理地址;
其中,所述发送代理还适合从所述存储器的所述锁定单元检索所述待发送数据;以及在所述发送代理从存储所述待发送数据的所述存储器的所述锁定单元检索所述数据之后,释放存储所述待发送数据的所述存储器的所述锁定单元。
21.一种把数据从源发送到目标的装置,所述装置包括:
用于使主机能够向所述源的发送代理提供待发送到目标的数据的虚拟存储地址的部件,其中所述数据存储在所述源的多个物理单元中,各单元具有物理地址以及映射到所述物理地址的虚拟存储地址;
用于使所述发送代理能够向所述主机提供待发送到所述目标的所述数据的至少部分所述虚拟存储地址的部件;
用于使所述主机能够对所述发送代理标识由所述发送代理提供的所述虚拟存储地址来寻址的数据的部件;以及
用于使所述发送代理能够向所述目标发送所述标识的数据的部件。
22.如权利要求21所述的装置,其特征在于,所述用于使所述主机能够标识数据的部件包括用于使所述主机能够向所述发送代理提供由所述发送代理提供的所述虚拟地址来寻址的数据的部件,所述装置还包括用于使所述发送代理能够把从所述主机接收的所述数据存储在所述发送代理的缓冲器中的部件。
23.如权利要求21所述的装置,其特征在于,所述用于使所述主机能够标识数据的部件包括用于使所述主机能够向所述发送代理提供包含由所述发送代理提供的所述虚拟存储地址来寻址的所述数据的存储单元的物理地址的部件。
24.如权利要求23所述的装置,其特征在于,所述物理单元包括第一存储器的单元和第二存储器的单元,所述主机所标识的所述数据存储在所述第一存储器中,所述主机所提供的所述物理存储地址是包含由所述发送代理提供的所述虚拟地址来寻址的所述数据的所述第一存储器的物理存储单元,所述装置还包括用于锁定所述主机提供到所述发送代理的所述第一存储器的所述物理存储单元,以便防止由所述发送代理提供的所述虚拟地址来寻址的所述数据被交换到所述第二存储器的部件。
25.如权利要求24所述的装置,其特征在于,所述装置还包括:
用于使所述发送代理能够从所述第一存储器的所述锁定的物理存储单元中检索由所述发送代理提供的所述虚拟地址来寻址的所述数据的部件;以及
用于在所述发送代理向所述目标发送由所述发送代理提供的所述虚拟地址来寻址的所述数据之后释放所述第一存储器的所述锁定的物理存储单元的部件。
26.如权利要求21所述的装置,其特征在于,所述装置还包括用于从所述目标接收对所述发送代理成功发送且所述目标成功接收的数据的确认的部件;以及所述发送代理提供给所述主机的所述虚拟存储地址是所述发送代理发送到所述目标、但未被确认为所述目标成功接收的数据的虚拟地址。
27.如权利要求21所述的装置,其特征在于,所述装置还包括:
用于从所述目标接收对所述发送代理成功发送且所述目标成功接收的数据的确认的部件;
用于使所述发送代理能够向所述主机提供所述发送代理发送到所述目标、但未被确认为所述目标成功接收的数据的虚拟地址的部件;
用于使所述主机能够对所述发送代理标识由所述发送代理提供的所述虚拟存储地址来寻址的所述未确认数据的部件;以及
用于使所述发送代理能够向所述目标重发所述标识的未确认数据的部件。
28.如权利要求21所述的装置,其特征在于,所述用于使所述主机能够向所述发送代理提供虚拟地址的部件包括用于使所述主机能够向所述发送代理提供至少一种数据结构的部件,所述数据结构包括:地址字段,包含存储待发送到所述目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;以及序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值。
29.如权利要求21所述的装置,其特征在于,所述用于使所述主机能够向所述发送代理提供虚拟地址的部件包括用于使所述主机能够向所述发送代理提供多个数据结构的部件,其中各数据结构包括:地址字段,存储待发送到所述目标的数据块的多个存储单元其中之一的虚拟地址;大小字段,包含表示所述数据块大小的值;序列号字段,包含表示与所述数据块中的数据相关的数据包序列号的值;以及链接字段,包含所述多个数据结构中的另一个数据结构的虚拟地址。
30.如权利要求21所述的装置,其特征在于,所述物理单元包括第一存储器和第二存储器的单元,以及待发送到所述目标的所述数据存储在所述第一存储器中,所述装置还包括,
用于锁定存储所述待发送数据的所述第一存储器的所述单元,以便防止所述待发送数据被交换到所述第二存储器的部件;
用于除了所述待发送数据的所述虚拟存储地址之外,使所述主机能够还向所述发送代理提供存储所述待发送数据的所述第一存储器的所述单元的物理地址的部件;
用于使所述发送代理能够从所述第一存储器的所述锁定单元中检索所述待发送数据的部件;以及
用于在所述发送代理从存储所述待发送数据的所述第一存储器的所述锁定单元中检索所述数据之后,释放存储所述待发送数据的所述第一存储器的所述锁定单元的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/683,941 US7496690B2 (en) | 2003-10-09 | 2003-10-09 | Method, system, and program for managing memory for data transmission through a network |
US10/683941 | 2003-10-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1606290A CN1606290A (zh) | 2005-04-13 |
CN100544310C true CN100544310C (zh) | 2009-09-23 |
Family
ID=34422875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200410077181.4A Expired - Fee Related CN100544310C (zh) | 2003-10-09 | 2004-09-09 | 为通过网络的数据传输管理存储器的方法、系统和程序 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7496690B2 (zh) |
CN (1) | CN100544310C (zh) |
Families Citing this family (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2003209194A1 (en) | 2002-01-08 | 2003-07-24 | Seven Networks, Inc. | Secure transport for mobile communication network |
US8549345B1 (en) * | 2003-10-31 | 2013-10-01 | Oracle America, Inc. | Methods and apparatus for recovering from a failed network interface card |
WO2005048085A2 (en) | 2003-11-13 | 2005-05-26 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US7539190B2 (en) * | 2004-01-05 | 2009-05-26 | Topside Research, Llc | Multicasting in a shared address space |
US7302546B2 (en) * | 2004-01-09 | 2007-11-27 | International Business Machines Corporation | Method, system, and article of manufacture for reserving memory |
US8504795B2 (en) * | 2004-06-30 | 2013-08-06 | Intel Corporation | Method, system, and program for utilizing a virtualized data structure table |
US7580406B2 (en) * | 2004-12-31 | 2009-08-25 | Intel Corporation | Remote direct memory access segment generation by a network controller |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US7853957B2 (en) * | 2005-04-15 | 2010-12-14 | Intel Corporation | Doorbell mechanism using protection domains |
US8438633B1 (en) | 2005-04-21 | 2013-05-07 | Seven Networks, Inc. | Flexible real-time inbox access |
WO2006136660A1 (en) | 2005-06-21 | 2006-12-28 | Seven Networks International Oy | Maintaining an ip connection in a mobile network |
US7617262B2 (en) * | 2005-12-19 | 2009-11-10 | Commvault Systems, Inc. | Systems and methods for monitoring application data in a data replication system |
US7962709B2 (en) * | 2005-12-19 | 2011-06-14 | Commvault Systems, Inc. | Network redirector systems and methods for performing data replication |
US8661216B2 (en) | 2005-12-19 | 2014-02-25 | Commvault Systems, Inc. | Systems and methods for migrating components in a hierarchical storage network |
US7636743B2 (en) | 2005-12-19 | 2009-12-22 | Commvault Systems, Inc. | Pathname translation in a data replication system |
WO2007075587A2 (en) * | 2005-12-19 | 2007-07-05 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US7606844B2 (en) | 2005-12-19 | 2009-10-20 | Commvault Systems, Inc. | System and method for performing replication copy storage operations |
US7651593B2 (en) | 2005-12-19 | 2010-01-26 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US7710968B2 (en) * | 2006-05-11 | 2010-05-04 | Intel Corporation | Techniques to generate network protocol units |
US8726242B2 (en) | 2006-07-27 | 2014-05-13 | Commvault Systems, Inc. | Systems and methods for continuous data replication |
US8706987B1 (en) | 2006-12-01 | 2014-04-22 | Synopsys, Inc. | Structured block transfer module, system architecture, and method for transferring |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
US8289966B1 (en) | 2006-12-01 | 2012-10-16 | Synopsys, Inc. | Packet ingress/egress block and system and method for receiving, transmitting, and managing packetized data |
US8238624B2 (en) * | 2007-01-30 | 2012-08-07 | International Business Machines Corporation | Hybrid medical image processing |
US7876940B2 (en) * | 2007-01-30 | 2011-01-25 | International Business Machines Corporation | Universal image processing |
US8290808B2 (en) | 2007-03-09 | 2012-10-16 | Commvault Systems, Inc. | System and method for automating customer-validated statement of work for a data storage environment |
US8326092B2 (en) * | 2007-04-23 | 2012-12-04 | International Business Machines Corporation | Heterogeneous image processing system |
US8462369B2 (en) * | 2007-04-23 | 2013-06-11 | International Business Machines Corporation | Hybrid image processing system for a single field of view having a plurality of inspection threads |
US8331737B2 (en) * | 2007-04-23 | 2012-12-11 | International Business Machines Corporation | Heterogeneous image processing system |
US8805425B2 (en) | 2007-06-01 | 2014-08-12 | Seven Networks, Inc. | Integrated messaging |
KR101443376B1 (ko) * | 2007-10-24 | 2014-11-04 | 삼성전자주식회사 | 통신 시스템에서 확장성을 지원하는 데이터 송수신 방법 |
US8675219B2 (en) * | 2007-10-24 | 2014-03-18 | International Business Machines Corporation | High bandwidth image processing with run time library function offload via task distribution to special purpose engines |
US9135073B2 (en) | 2007-11-15 | 2015-09-15 | International Business Machines Corporation | Server-processor hybrid system for processing data |
US20090132582A1 (en) * | 2007-11-15 | 2009-05-21 | Kim Moon J | Processor-server hybrid system for processing data |
US9332074B2 (en) * | 2007-12-06 | 2016-05-03 | International Business Machines Corporation | Memory to memory communication and storage for hybrid systems |
US20090150556A1 (en) * | 2007-12-06 | 2009-06-11 | Kim Moon J | Memory to storage communication for hybrid systems |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US8107921B2 (en) | 2008-01-11 | 2012-01-31 | Seven Networks, Inc. | Mobile virtual network operator |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US20090193338A1 (en) | 2008-01-28 | 2009-07-30 | Trevor Fiatal | Reducing network and battery consumption during content delivery and playback |
US8229251B2 (en) * | 2008-02-08 | 2012-07-24 | International Business Machines Corporation | Pre-processing optimization of an image processing system |
US8379963B2 (en) * | 2008-03-28 | 2013-02-19 | International Business Machines Corporation | Visual inspection system |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
US8204859B2 (en) | 2008-12-10 | 2012-06-19 | Commvault Systems, Inc. | Systems and methods for managing replicated database data |
US9495382B2 (en) | 2008-12-10 | 2016-11-15 | Commvault Systems, Inc. | Systems and methods for performing discrete data replication |
CN102334335B (zh) * | 2009-12-25 | 2014-09-17 | 株式会社理光 | 传输管理系统、传输系统、计算机程序产品、程序提供系统和维护系统 |
US8504517B2 (en) | 2010-03-29 | 2013-08-06 | Commvault Systems, Inc. | Systems and methods for selective data replication |
US8504515B2 (en) | 2010-03-30 | 2013-08-06 | Commvault Systems, Inc. | Stubbing systems and methods in a data replication environment |
US8352422B2 (en) | 2010-03-30 | 2013-01-08 | Commvault Systems, Inc. | Data restore systems and methods in a replication environment |
US8725698B2 (en) | 2010-03-30 | 2014-05-13 | Commvault Systems, Inc. | Stub file prioritization in a data replication system |
US8489656B2 (en) | 2010-05-28 | 2013-07-16 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
PL3407673T3 (pl) | 2010-07-26 | 2020-05-18 | Seven Networks, Llc | Koordynacja ruchu w sieci komórkowej pomiędzy różnymi aplikacjami |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
WO2012060995A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
WO2012071384A2 (en) | 2010-11-22 | 2012-05-31 | Michael Luna | Optimization of resource polling intervals to satisfy mobile device requests |
GB2501416B (en) | 2011-01-07 | 2018-03-21 | Seven Networks Llc | System and method for reduction of mobile network traffic used for domain name system (DNS) queries |
GB2517815A (en) * | 2011-04-19 | 2015-03-04 | Seven Networks Inc | Shared resource and virtual resource management in a networked environment |
US8621075B2 (en) | 2011-04-27 | 2013-12-31 | Seven Metworks, Inc. | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
GB2504037B (en) | 2011-04-27 | 2014-12-24 | Seven Networks Inc | Mobile device which offloads requests made by a mobile application to a remote entity for conservation of mobile device and network resources |
US8934414B2 (en) | 2011-12-06 | 2015-01-13 | Seven Networks, Inc. | Cellular or WiFi mobile traffic optimization based on public or private network destination |
WO2013086225A1 (en) | 2011-12-06 | 2013-06-13 | Seven Networks, Inc. | A mobile device and method to utilize the failover mechanisms for fault tolerance provided for mobile traffic management and network/device resource conservation |
EP2788889A4 (en) | 2011-12-07 | 2015-08-12 | Seven Networks Inc | FLEXIBLE AND DYNAMIC INTEGRATION SCHEMES OF A TRAFFIC MANAGEMENT SYSTEM WITH VARIOUS NETWORK OPERATORS TO REDUCE NETWORK TRAFFIC |
WO2013086447A1 (en) | 2011-12-07 | 2013-06-13 | Seven Networks, Inc. | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
US20130159511A1 (en) | 2011-12-14 | 2013-06-20 | Seven Networks, Inc. | System and method for generating a report to a network operator by distributing aggregation of data |
US9298715B2 (en) | 2012-03-07 | 2016-03-29 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9471578B2 (en) | 2012-03-07 | 2016-10-18 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9628438B2 (en) * | 2012-04-06 | 2017-04-18 | Exablox | Consistent ring namespaces facilitating data storage and organization in network infrastructures |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
US9342537B2 (en) | 2012-04-23 | 2016-05-17 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US8775631B2 (en) | 2012-07-13 | 2014-07-08 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US9430491B2 (en) | 2013-01-11 | 2016-08-30 | Commvault Systems, Inc. | Request-based data synchronization management |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US8750123B1 (en) | 2013-03-11 | 2014-06-10 | Seven Networks, Inc. | Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network |
US9552382B2 (en) | 2013-04-23 | 2017-01-24 | Exablox Corporation | Reference counter integrity checking |
WO2014201270A1 (en) | 2013-06-12 | 2014-12-18 | Exablox Corporation | Hybrid garbage collection |
WO2014205286A1 (en) | 2013-06-19 | 2014-12-24 | Exablox Corporation | Data scrubbing in cluster-based storage systems |
US9934242B2 (en) | 2013-07-10 | 2018-04-03 | Exablox Corporation | Replication of data between mirrored data sites |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
US10248556B2 (en) | 2013-10-16 | 2019-04-02 | Exablox Corporation | Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session |
US9985829B2 (en) | 2013-12-12 | 2018-05-29 | Exablox Corporation | Management and provisioning of cloud connected devices |
US9753812B2 (en) | 2014-01-24 | 2017-09-05 | Commvault Systems, Inc. | Generating mapping information for single snapshot for multiple applications |
US9632874B2 (en) | 2014-01-24 | 2017-04-25 | Commvault Systems, Inc. | Database application backup in single snapshot for multiple applications |
US9639426B2 (en) | 2014-01-24 | 2017-05-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US9495251B2 (en) | 2014-01-24 | 2016-11-15 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
WO2015120071A2 (en) | 2014-02-04 | 2015-08-13 | Exablox Corporation | Content based organization of file systems |
US10042716B2 (en) | 2014-09-03 | 2018-08-07 | Commvault Systems, Inc. | Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent |
US9774672B2 (en) | 2014-09-03 | 2017-09-26 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US9648105B2 (en) | 2014-11-14 | 2017-05-09 | Commvault Systems, Inc. | Unified snapshot storage management, using an enhanced storage manager and enhanced media agents |
US9448731B2 (en) | 2014-11-14 | 2016-09-20 | Commvault Systems, Inc. | Unified snapshot storage management |
US20170060924A1 (en) | 2015-08-26 | 2017-03-02 | Exablox Corporation | B-Tree Based Data Model for File Systems |
US10503753B2 (en) | 2016-03-10 | 2019-12-10 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
US9846553B2 (en) | 2016-05-04 | 2017-12-19 | Exablox Corporation | Organization and management of key-value stores |
US10732885B2 (en) | 2018-02-14 | 2020-08-04 | Commvault Systems, Inc. | Block-level live browsing and private writable snapshots using an ISCSI server |
CN109358820B (zh) * | 2018-12-04 | 2022-04-19 | 北京和讯永源科技有限公司 | 数据访问方法、装置、电子设备及计算机可读存储介质 |
US11042318B2 (en) | 2019-07-29 | 2021-06-22 | Commvault Systems, Inc. | Block-level data replication |
CN112035379B (zh) * | 2020-09-09 | 2022-06-14 | 浙江大华技术股份有限公司 | 存储空间的使用方法、装置、存储介质以及电子装置 |
CN112073436B (zh) * | 2020-09-28 | 2022-04-22 | 山东产研集成电路产业研究院有限公司 | 一种降低toe中接收通道传输延迟量的方法 |
US11809285B2 (en) | 2022-02-09 | 2023-11-07 | Commvault Systems, Inc. | Protecting a management database of a data storage management system to meet a recovery point objective (RPO) |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175852A (en) * | 1987-02-13 | 1992-12-29 | International Business Machines Corporation | Distributed file access structure lock |
US5696926A (en) * | 1993-07-30 | 1997-12-09 | Apple Computer, Inc. | Method and apparatus for transparently compressing data in a primary storage device |
JPH08314794A (ja) * | 1995-02-28 | 1996-11-29 | Matsushita Electric Ind Co Ltd | 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム |
US5892970A (en) * | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | Multiprocessing system configured to perform efficient block copy operations |
US5966733A (en) * | 1997-06-24 | 1999-10-12 | Hewlett-Packard Company | Optimizing data movement with hardware operations |
US6266753B1 (en) * | 1997-07-10 | 2001-07-24 | Cirrus Logic, Inc. | Memory manager for multi-media apparatus and method therefor |
US6360220B1 (en) * | 1998-08-04 | 2002-03-19 | Microsoft Corporation | Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries |
US6269431B1 (en) * | 1998-08-13 | 2001-07-31 | Emc Corporation | Virtual storage and block level direct access of secondary storage for recovery of backup data |
US7409694B2 (en) * | 1998-09-09 | 2008-08-05 | Microsoft Corporation | Highly componentized system architecture with loadable virtual memory manager |
US6920537B2 (en) * | 1998-12-31 | 2005-07-19 | Emc Corporation | Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel |
US6487561B1 (en) * | 1998-12-31 | 2002-11-26 | Emc Corporation | Apparatus and methods for copying, backing up, and restoring data using a backup segment size larger than the storage block size |
US6747949B1 (en) * | 1999-05-21 | 2004-06-08 | Intel Corporation | Register based remote data flow control |
US6751583B1 (en) * | 1999-10-29 | 2004-06-15 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating a target processor using binary translation |
US6948039B2 (en) * | 2001-12-14 | 2005-09-20 | Voom Technologies, Inc. | Data backup and restoration using dynamic virtual storage |
JP4130615B2 (ja) * | 2003-07-02 | 2008-08-06 | 株式会社日立製作所 | ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ |
US20040249973A1 (en) * | 2003-03-31 | 2004-12-09 | Alkhatib Hasan S. | Group agent |
US20040249974A1 (en) * | 2003-03-31 | 2004-12-09 | Alkhatib Hasan S. | Secure virtual address realm |
US20050144402A1 (en) * | 2003-12-29 | 2005-06-30 | Beverly Harlan T. | Method, system, and program for managing virtual memory |
US7562158B2 (en) * | 2004-03-24 | 2009-07-14 | Intel Corporation | Message context based TCP transmission |
US20060004941A1 (en) * | 2004-06-30 | 2006-01-05 | Shah Hemal V | Method, system, and program for accessesing a virtualized data structure table in cache |
US20060004983A1 (en) * | 2004-06-30 | 2006-01-05 | Tsao Gary Y | Method, system, and program for managing memory options for devices |
US8504795B2 (en) * | 2004-06-30 | 2013-08-06 | Intel Corporation | Method, system, and program for utilizing a virtualized data structure table |
US20060136697A1 (en) * | 2004-12-16 | 2006-06-22 | Tsao Gary Y | Method, system, and program for updating a cached data structure table |
US7580406B2 (en) * | 2004-12-31 | 2009-08-25 | Intel Corporation | Remote direct memory access segment generation by a network controller |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US20070005927A1 (en) * | 2005-06-30 | 2007-01-04 | Khosravi Hormuzd M | Systems and methods for remote triggering of page faults |
-
2003
- 2003-10-09 US US10/683,941 patent/US7496690B2/en not_active Expired - Fee Related
-
2004
- 2004-09-09 CN CN200410077181.4A patent/CN100544310C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1606290A (zh) | 2005-04-13 |
US20050080928A1 (en) | 2005-04-14 |
US7496690B2 (en) | 2009-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100544310C (zh) | 为通过网络的数据传输管理存储器的方法、系统和程序 | |
US7475167B2 (en) | Offloading data path functions | |
US7734720B2 (en) | Apparatus and system for distributing block data on a private network without using TCP/IP | |
CN100552626C (zh) | 用网络栈同步和上载已卸载网络栈连接的方法 | |
JP4347247B2 (ja) | データ転送要求を実行するための方法、システム、およびプログラム | |
CN100438403C (zh) | 用于管理通过网络的数据传输的方法和系统 | |
US7519650B2 (en) | Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms | |
US7664892B2 (en) | Method, system, and program for managing data read operations on network controller with offloading functions | |
US7580406B2 (en) | Remote direct memory access segment generation by a network controller | |
US8099470B2 (en) | Remote direct memory access for iSCSI | |
CN1864376B (zh) | 从卸载适配器利用主机存储器的方法、系统和制品 | |
US8180928B2 (en) | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney | |
US7213045B2 (en) | Apparatus and method for transmit transport protocol termination | |
CN1985492B (zh) | 支持iSCSI读操作和iSCSI烟囱的方法和系统 | |
TWI295130B (en) | Method and device for use with a network and a receive buffer, system for use with a network, and article comprising a storage medium | |
US10476919B2 (en) | System and method for reliable messaging between application sessions across volatile networking conditions | |
CN101208892A (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: 20090923 Termination date: 20100909 |