CN1742469A - 用于在存储区域网之间传输数据的方法和设备 - Google Patents

用于在存储区域网之间传输数据的方法和设备 Download PDF

Info

Publication number
CN1742469A
CN1742469A CN200380109101.2A CN200380109101A CN1742469A CN 1742469 A CN1742469 A CN 1742469A CN 200380109101 A CN200380109101 A CN 200380109101A CN 1742469 A CN1742469 A CN 1742469A
Authority
CN
China
Prior art keywords
grouping
tcp
network
storage area
transmission
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.)
Pending
Application number
CN200380109101.2A
Other languages
English (en)
Inventor
艾力·戈尔杉
尼利马·梅塔
帕格斯·克里沙姆尔斯
马德哈里·克里
德维·普拉萨德·伊瓦图里
文卡特斯·扎拉克拉曼
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN1742469A publication Critical patent/CN1742469A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

本发明公开了用于在存储区域网之间有效地传输数据的方法和设备。根据本发明的某些方面,提供了用于处理由存储区域网发送的(或接收自存储区域网的)数据的新型方法。本发明的这些方面包括在封装或解封装过程期间,在单个存储单元中存储分组(或分组的一部分)。没有采用在处理期间重复复制分组的做法,而是传递指示单个存储单元的指针信息。在本发明的某些方面中,在数据传输之后,分组的分段边界被保留。如果分组中的数据需要被重传,则重传具有相同分段边界的分组。本发明的某些方面提供了一种“瘦身的”TCP栈,它不具有套接字层。

Description

用于在存储区域网之间传输数据的方法和设备
技术领域
本发明一般地涉及数据网络。更具体而言,本发明涉及用于在存储区域网之间传输数据的方法和设备。
背景技术
存储区域网(“SAN”)正在逐渐成为企业、大学和政府机构所普遍使用的网络。这种网络通常经由光纤连接,它能够实现高速的数据传输。很多SAN都将光纤信道(“FC”)协议用于经由光纤传输的数据。
当一个SAN向远端SAN发送数据或从远端SAN接收数据时,会出现困难。如果SAN使用FC协议并且经由因特网传输数据,那么来自SAN的FC分组必须根据TCP/IP协议被封装,以用于因特网上的传输。但是,当FC分组应对跨越很大距离的网络时,对FC分组进行封装和解封装的传统方法不仅昂贵,而且效率低。这些缺点会削弱与SAN相关的优点。
发明内容
本发明提供了用于在存储区域网之间更有效地传输数据的方法和设备。根据本发明的某些方面,提供了用于处理由存储区域网发送的(或接收自存储区域网的)数据的新型方法。本发明的这些方面包括在封装或解封装过程期间,在单个存储单元中存储分组(或分组的一部分)。优选地,在存储单元中预留了“临时数据(scratch pad)”空间,在该空间中可以写入头部信息。没有采用在处理期间重复复制分组的做法,而是传递指示单个存储单元的指针信息。
在本发明的某些方面中,在数据传输之后,分组的分段边界被保留。如果分组中的数据需要被重传(例如,如果在预定时间内没有接收到ACK),则重传具有相同分段边界的分组。
本发明的某些方面提供了一种用于在存储区域网之间传输数据的方法。该方法包括以下步骤:接收来自第一存储区域网的分组;将所述分组作为具有分段边界的分段存储在存储单元中;准备所述分组,以用于因特网协议网络上的传输;在因特网协议网络上传输所述分组;以及在传输步骤之后,将分段和分段边界在存储器中保留一段预定时间。
分段和分段边界可以被保留在存储单元中,直到接收到确认(指示分组已被接收)为止。如果在预定时间内没有接收到指示分组已被接收的确认,则可以重传具有相同分段边界的分组。在存储单元内,可以为头部预留存储器空间。所述准备步骤可以包括在预留的存储器空间中添加第一头部。
所述第一存储区域网可以是光纤信道网。所述分组可以以光纤信道格式被接收,并且可以根据传输控制协议被封装。
如果在预定时间内没有接收到确认(指示所述分组已被接收),则在预留的存储器空间中添加第二头部,并且重传具有相同分段边界和第二头部的分组。
本发明的某些方面提供了在存储区域网之间传输数据的替换方法。这些方法包括以下步骤:接收来自第一存储区域网的分组;将所述分组作为分段存储在第一存储单元中;准备所述分组,以在无需将分组复制到第二存储单元的情况下,在因特网协议网络上传输分组;以及在因特网协议网络上传输所述分组。
所述第一存储区域网可以是光纤信道网。所述分组可以以光纤信道格式被接收,并且可以根据传输控制协议被封装。所述方法还包括以下步骤:将指针信息从光纤信道驱动器传输到传输控制协议模块。所述指针信息可以指示第一存储单元。在传输步骤之后,指针信息中的至少一些可以被删除。
本发明的其他方面提供了在光纤信道网络之间传输数据的替换方法。这些方法包括以下步骤:接收来自第一光纤信道网络的分组,其中所述分组经由因特网协议网络被传输;将所述分组作为分段存储在第一存储单元中;准备所述分组,以在无需将分组复制到第二存储单元的情况下,由第二光纤信道网络接收分组;以及将分组传输到第二光纤信道网络。
所述准备步骤可以包括将指针信息从因特网协议驱动器传输到传输控制协议模块,其中所述指针信息可以指示第一存储单元。分组可以根据传输控制协议的格式来封装,并且所述准备步骤可以包括解封装分组。
根据本发明的某些方面,提供了一种“瘦身的”TCP栈,其通过在中断级上执行TCP处理,从而消除了与存在于传统TCP栈中的环境交换(从中断级到过程级)相关联的开销。本发明还提供了一种用于消除存在于传统TCP栈中的缓冲区复制的方法。这两种因素(无缓冲区复制以及中断级处理)减少了大量处理开销。存在于传统TCP栈中的套接字层的消除同样增加了上述优势。消除套接字层的一个优点在于套接字缓冲区和相关缓冲区到缓冲区复制的消除。
套接字层接口的消除还有助于简化TCP连接建立过程。通常,TCP端点以客户端-服务器的模式进行交互。在这种操作模式中,服务器在尝试建立TCP连接之前监听来自可能客户端的连接请求。客户端发起连接建立过程。传统栈中的套接字层更复杂,以允许上述方式的客户端和服务器操作。在本发明的某些方面中,两个TCP端点都被看作客户端,它们同时尝试建立连接。这样,可以消除与服务器相关的状态以及它们的复杂性。
本发明的某些方法提供了一种包含在计算机可读介质中的TCP栈,其用于控制在存储区域网之间传输的数据。该TCP栈与应用层进行交互,该应用层负责封装来自第一存储区域网的传出帧,并且解封装来自第二存储区域网的传入帧。该TCP栈包括:TCP层,该层直接从所述应用层接收传出帧;IP层,该层与所述TCP层进行交互;以及链路层,该层与所述IP层进行交互。但是,所述TCP栈不包括套接字层。
所述应用层包括FCIP层。所述链路层可以是以太网层。根据本发明的某些方面,所述TCP栈在中断环境中执行处理。
本发明的其他方面提供了一种用于控制在存储区域网之间传输的数据的方法。由于TCP处理是在中断环境中执行的,因此必须确保在单个中断环境中,花费有限的时间量。该“瘦身的”TCP栈有助于实现这个目标。另外,该方法包括以下步骤:在接收到第一FCIP分组时,可以将TCP头部添加到FCIP分组,并且将FCIP分组传输到因特网,所有这些步骤都是在同一中断环境中完成的。对于后续的FCIP分组,根据本发明的某些方面,将在接收到之前发送的分组的确认时执行传输。中断环境可以为命令分组分配比数据分组更高的优先级。
接收、添加和传输步骤可以被看作“循环”。因此,在将FCIP分组传输到因特网之前,为了限制在单个中断环境中执行的处理,可以判断在中断环境期间,是否已经出现最大循环次数。
上述方法中的全部都可以根据计算机程序中的命令来执行。网络设备可以被配置为执行上述方法。
本发明的某些方面包括通过宣称恒定的宣称窗口(随后将详细说明)来减少包括在分组的TCP处理中的步骤数目。为了适应这种改变,(无需影响TCP的主要功能),只在FCIP分组被成功传递到FCIP应用之后,才发送TCP确认。这与传统栈有所不同,在传统栈中,只要TCP可靠地且按顺序接收到分组就发送TCP确认,即使应用出于各种原因而未能接收到分组也是如此。
附图说明
通过结合附图参考以下描述,可以最好地理解本发明,附图举例说明了本发明的具体实施例。
图1是概述本发明某些一般特征的框图。
图2示出了示例性的FCIP分组。
图3示出了本发明的一个实施例。
图4是概述根据本发明一个方面的建立连接过程的流程图。
图5A示出了具有典型TCP/IP格式的分组。
图5B示出了去掉套接字层的TCP/IP分组。
图6是概述根据本发明一个方面的从SAN发送分组的过程的流程图。
图7示出了FC驱动器的缓冲区、存储器、发送队列以及重组队列。
图8A和图8B示出了根据本发明的某些方面,FC驱动器的缓冲区、存储器和PAK之间的交互。
图9示出了根据本发明的某些方面,发送队列、发送缓冲区和存储器之间的交互。
图10示出了在已发出分组之后,但是在接收到ACK之前,存储在发送队列中的剩余指针。
图11示出了存储器空间中的临时数据。
图12示出了可以被配置为执行本发明各个方面的网络设备。
具体实施方式
图1示出了根据本发明某些方面的系统100。系统100包括存储区域网(“SAN”)105,在本示例中,该SAN 105位于旧金山。SAN 105包括多个主机、数据存储设备、交换机和/或路由器、服务器以及其他本领域技术人员公知的组件。这里,SAN 105使用光纤互连。光纤信道(“FC”)协议被用于中继SAN 105中的信息。SAN 110是类似的存储区域网,其位于纽约。显而易见,SAN 105和SAN 110可以位于世界上的任何地方。此外,虽然图1中仅示出两个SAN,但是在系统100中可以互连任意数目的SAN。
在目前条件下,SAN的最大半径在10英里的数量级上。这种情况部分由于本地或地方网络中的光纤分布有限。但是,经常出现以下情况:在一个SAN(例如SAN 105)中的用户想要访问另一SAN(例如SAN110)中的数据。穿过很长距离访问数据的最常用方法是经由因特网或类似网络。这种网络通常使用TCP/IP协议的TCP层来执行这种长距离路由。图1中的IP云120示出了这种网络。
FC帧112和135必须被封装或以其他方式变形为可由IP云120识别的格式。这是通过将FC帧封装成“FCIP”分组117和122而实现的。这里,这种封装分别由网络设备118和125的卡115和130来执行。网络设备118和125可以是路由器、交换机或其他类型本领域公知的网络设备。卡115和120可以是端口适配器卡,例如由受让人制造的Cat6500交换机中的光纤信道端口适配器(“FCPA”)。封装过程将参考图2和图3来更详细的说明。
在某些优选实施例中,在卡115和130之间形成TCP隧道。在这些实施例中,形成每条隧道包括2个TCP连接的TCP隧道。第一连接用于命令,所述命令可以是SCSI命令、FC控制(诸如类F帧之类的控制分组)等等。第二连接用于数据。在某些实施例中,命令传输具有比数据传输更高的优先级。但是,也可以形成每条隧道只包括1个TCP连接的TCP隧道。在这种实施例中,命令和数据都在相同的TCP连接上发送。如果卡115和130是FCPA卡,则支持4条隧道,从而允许SAN 105或SAN 110最多连接4个远端SAN。
在典型的TCP连接中,“客户端”网络设备发起传输,并且“服务器”网络设备在这种传输期间进入“监听”模式。本发明的优选实施例不使用客户端/服务器模型。相反,卡115和130在“中断”环境中同时发送,随后将对此进行更详细的描述。
在某些实施例中,每个TCP连接由四个属性来限定,这里它们被统称为“四元组”。这些属性是源端口、目的地端口、源IP地址和目的地IP地址。根据本发明的某些实施例,命令连接和数据连接具有不同的四元组,其包括不同的端口,但是具有相同的IP地址。“五元组”是四元组加上一种指定的协议类型,根据本发明的优选方面,该指定协议类型将是TCP协议。
图2示出了根据本发明某些实施例的FCIP分组117的格式。载荷205和FC头部210是从被封装的FC帧(例如FC帧112)中遗留下来的。在某些情况下,传入的FC帧可以被切割成多个分段。FCIP帧头部215帮助接收侧以本领域技术人员公知的方式适当地重组这些分段。在本示例中,卡115已经添加了FCIP帧头部215、TCP头部220和IP头部225以构成FCIP分组117,该分组117可以在IP云120上传输。
图3示出了用于执行根据本发明的各种方法的示例性体系结构300。在该实施例中,体系结构300包括五个主要模块:CLI 305、连接管理器310、FC驱动器315、TCP模块320、TCP加速器325、IP驱动器330和重组管理器335。在某些实施例中,体系结构300中的所有模块都被包含在单个组件(例如卡115或卡130)中。在其他实施例中,体系结构300被分布在多个组件(例如路由处理器和诸如光纤信道端口适配器卡之类的卡)中。下面简要概述该示例性实施例的组件。
FC驱动器315包括FCIP模块317,该模块接收来自SAN 105的FC帧,并且判断FC帧是数据帧还是命令帧。FCIP模块317可以作为硬件、软件或两者的组合来实现。FCIP模块317将FC帧封装为FCIP帧,并且将FCIP帧转发到FC驱动器315的数据帧缓冲区或命令帧缓冲区。下面将参考图7到图11来更详细地描述这些缓冲区的操作。
在FC驱动器315接收到来自FCIP模块317的FCIP帧之后,FC驱动器315呼叫TCP加速器325,该TCP加速器325提供了FC驱动器315和TCP模块320之间的接口。TCP加速器325还提供IP驱动器330和TCP模块320之间的接口,从而协助将分组转发到IP云120中,或从IP云120中转发出分组。
CLI模块305是软件块,该软件块发起建立TCP连接的过程。CLI305支持用户(例如网络管理员)对TCP配置的管理。在本示例中,网络设备118是路由器,并且CLI模块305具有两个组件,其中一个组件位于路由器118的路由处理器上,而另一个组件位于路由器118的FCPA卡上。
CLI模块305中安装在路由处理器上的部分支持隧道的用户配置,检查TCP连接四元组的有效性,将配置信息发送到FCPA卡,并且处理来自FCPA卡的连接相关消息。
连接管理器310的主要功能是建立连接。连接管理器310处理其消息队列,填充本地数据库,并且管理TCP连接。此外,连接管理器310在建立或关闭连接时,分别打开或关闭网络设备118的FC端口。
TCP模块320做以下核心工作:使分段能够被可靠地传输到其目的地以及传输到应用。TCP模块320通过封装FC帧以及解封装FCIP帧来完成这个工作。在封装过程期间,TCP模块320添加头部信息,并且执行TCP所需的所有功能(例如执行校验和)。
在传统的TCP处理中,发送和接收实体以分段的形式交换数据。传统上,一个分段由20字节的头部(以及可选字段)以及后面跟随的零个或多个数据字节所构成。TCP软件确定分段的尺寸。这种软件可以通过对一个分段的多次写入来累积数据,或者通过对多于一个分段的一次写入来拆分数据。
IP驱动器330是IP云120和TCP加速器325之间的接口。IP驱动器330例如可以是来自Intel公司的Fx1000芯片,它可以是千兆位以太网卡的一部分。
以下描述将说明当正在建立连接时,连接管理器310和TCP模块320的功能。在图4的步骤405中,诸如网络管理员之类的用户将用于连接的配置信息提供到CLI 305,所述连接包括将在卡115和130之间形成的TCP隧道。这种信息包括源端口、源IP地址、目的地端口和目的地IP地址,即上述四元组信息。在某些实施例中,每条隧道包括两个连接,一个用于命令,一个用于数据。
在步骤410中,该配置信息被从CLI 305发送到连接管理器310,连接管理器310出于这个目的而维护配置文件。连接管理器310还维护关于由IP驱动器330接收自IP云120的分组的信息的文件。
优选地,每个TCP连接将具有相关的TCP控制块,该TCP控制块由连接管理器310创建,并被存储在TCP模块320中。TCP控制块保持跟踪如下信息:例如在发送侧和接收侧可获得的缓冲区空间量、发送的最后一个字节、已接收到其确认的最后一个字节、可以发送的最大量、字节序列号、期望的下一字节以及可以接收的最大量、期望使用的隧道的带宽量以及其他信息。在某些实施例中,由用户所配置的信息将是TCP控制块中信息的子集。
在步骤415中,连接管理器310将配置信息和TCP控制块与请求TCP模块320发起连接的请求一道传递到TCP模块320。TCP模块320获得所有建立连接所需的剩余信息。
在步骤420中,TCP模块320发送SYN,接收SYN-ACK,从而建立TCP连接。
在步骤425中,TCP模块320通知连接管理器310隧道已经建立。连接管理器基于该信息在步骤430中更新连接表。
在某些实施例中,连接管理器310使用连接表,以用于指导流量去往正确连接。例如,当从IP云120接收到分组时,可以访问这种信息,以便指导分组去往合适的隧道以及该隧道内的合适连接。
在这些实施例中,连接管理器310基于五元组信息产生散列功能,并且将所产生的散列值和连接索引一道存储在散列表中。传入的分组将包括源端口、目的地端口、源IP和目的地IP信息。TCP加速器325接收分组,使用连接管理器310的API对五元组信息进行散列操作,并且从连接表中获取相应的连接索引。相应的连接索引将指向连接表中的一个条目,该条目具有路由该分组所需的所有适当的信息。
对于典型的客户端/服务器配置,客户端发起连接,而服务器被动地监听网络。这被称为“被动打开”配置。但是,根据本发明的某些实施例,TCP端点被看作对等体而非客户端或服务器。对等体两者同时尝试建立连接。这种情况被称为“同时打开”。本发明的某些方面除去了用于建立连接的套接字层功能(例如“监听”、“接受”和“绑定”)的复杂性。TCP代码运行在中断级上,当接收到分段时,对它们进行处理。因此,使处理时间最小化,并且加速了SAN之间的数据传输。
在这些实施例中,通过从TCP栈中除去套接字层接口,建立了这种“对等级”配置。图5A示出了传统TCP栈500的结构,其包括链路层505(在本示例中是以太网层)、IP层510、TCP层515、套接字层520以及应用层525。本领域技术人员将理解传统TCP栈500中存在的变化。例如,虽然以太网层505是公共链路层,但是存在其他本领域公知的服务于类似目的的链路层,例如串行线路IP(“SLIP”)以及点对点协议(“PPP”)。
当应用发送信息时,应用层525与套接字层520进行交互,套接字层520与TCP层515进行交互,以此类推。对于传统的TCP栈500,套接字层520维护其自身的单独的缓冲区。无论应用想要发送的数据是什么,该数据都要首先被放置在套接字缓冲区中,并且随后被从套接字缓冲区复制到TCP缓冲区中。因此,应用层、套接字层和TCP层之间的交互包含大量的缓冲区到缓冲区的复制。
本发明的某些方面提供了一种TCP栈,该TCP栈消除了传统TCP栈500的某些特征。图5B示出了“瘦身的”TCP栈550,该TCP栈550根据本发明的某些优选方面被配置。以太网层555、IP层560和TCP层565对应于传统TCP栈500中的以太网层505、IP层510和TCP层515。但是,已经除去了套接字层520。根据本发明的某些实施例,FCIP层570是应用层,其包括用于封装FC帧以及解封装FCIP帧以及其他功能的软件。该软件可以被例如FCIP模块317所使用。FCIP层570直接与TCP层565进行交互。
除去套接字层接口具有若干优点。去掉套接字层520的一个优点在于去掉了套接字缓冲区以及相关的缓冲区到缓冲区复制。无论FCIP层570想要发送的数据是什么,都无需将该数据首先放置在套接字缓冲区中,然后再从套接字缓冲区复制到TCP缓冲区中。相反,这些数据可以被直接发送到TCP层565。去掉这些缓冲区复制可以减少大量开销。
此外,套接字层接口包括用于实现监听状态的代码。因此,通过去掉套接字层520,可以消除监听状态。这种情况能够实现在中断级上的TCP处理,而无需利用监听状态执行客户端/服务器操作。
根据本发明的某些优选方面,控制帧的中断比数据帧中断的优先级要高。具有较高优先级中断的FC帧将在具有较低优先级中断的FC帧之前被处理。这允许控制帧在某些数据帧(例如大约与该控制帧同时到达的那些数据帧)之前被处理。
下面将参考图3来描述从SAN 105向SAN 110发送分组的过程概观。首先,FC分组(例如图1中的FC分组112)从SAN 105进入到FC驱动器315中。FCIP模块317封装FC分组,并且创建FCIP分组。与FC分组一道,FC驱动器315接收到中断。从而,处理步骤进入中断环境中。FC驱动器315读取分组,并且利用指向存储的FC分组的指针呼叫TCP加速器325。
TCP加速器325确定来自SAN 105或IP云120的帧的合适连接。在接收到来自FC驱动器315或IP驱动器330的分组之后,TCP加速器325获得将在其上发送分组的连接所适合的TCP控制块,然后将分组和TCP控制块转发到TCP模块320以待进一步处理和路由。TCP控制块具有发送分组所需的所有必要信息。TCP模块320调用如下例程:该例程用于将FCIP分组包括进来以作为TCP载荷的一部分,并且将分组经由IP驱动器330发送到IP云120。
在本发明的某些实施例中,FCIP模块317包括如下逻辑:该逻辑用于例如通过解析FC帧的光纤信道头部,来区分FC数据帧和FC控制帧。FCIP模块317将数据帧发送到由FC驱动器315维护的第一缓冲区,并且FCIP模块317将控制帧发送到由FC驱动器315维护的第二缓冲区。在某些优选实施例中,这些缓冲区被称为“FIFO缓冲区”。其中“FIFO”的意思是“先进先出”。FC驱动器315知道在第一缓冲区中的帧是数据帧,并且在第二缓冲区中的帧是控制帧。FIFO缓冲区与系统中其他元件之间的交互将随后参考图7到图11进行描述。
下面将参考图6来进一步描述从SAN 105向IP云120发送帧的过程。在步骤605中,TCP加速器325接收到来自FC驱动器315的FCIP分组。FC驱动器315根据FCIP模块317的判断,基于存储分组的缓冲区来指示分组的连接索引。
在步骤610中,TCP加速器325获得将在其上发送FCIP分组的连接所适合的TCP控制块,然后在步骤615中,将FCIP分组和TCP控制块转发到TCP模块320。
在步骤620中,TCP模块320判断是否存在可用于向IP云120发送FCIP分组的窗,并且执行TCP开销所需的其他任务。例如,TCP模块320完成对FCIP分组的封装(包括添加TCP头部),执行校验和等等。
在步骤625中,TCP模块320将FCIP分组转发到IP驱动器330,IP驱动器330在步骤630中将分组转发到IP云120。
当分组从IP云120进入时,IP驱动器330将分组转发到TCP加速器325。通过散列化从分组中获得的五元组信息来确定连接索引。使用该连接索引来获得相应的TCP控制块。然后,分组被与TCP控制块一道转发到TCP模块320。分组被解封装,并被转发到FC驱动器315,并且进而被转发到SAN 105。
传统的TCP过程以字节流的形式传输数据。例如,如果将发送100个字节,那么传统过程可以发出字节1到20以作为一个分段,然后发出字节21到40以作为第二分段,以此类推。在传输之前,将头部添加到每个20字节的分段中。
但是,并没有存储分段之间的边界以用于后续重传。如果没有接收到用于指示特定分段已经到达其目的地的确认(“ACK”)分组,那么将创建新分组以重传该分段。新分组可能包括与原始分段不同的数据量。例如,如果没有接收到包括字节1到20的分段的ACK,那么可能将字节1到30作为一个分段来重传。
这种传统方法需要在存储器(例如缓冲区)中存储大量数据,以便确保数据中的任意分段都可以被重传。在前述示例中,在接收到所有已发送数据的ACK分组之前,需要将这100字节的数据全部存储在缓冲区中。
本发明的某些方面使用新型方法来存储从SAN发送的数据以及由SAN接收的数据。根据本发明的某些方面,对于所有已发送的数据,都要保留分段边界。根据本发明的某些方面,通过将由SAN接收和发送的分组存储在单个存储单元中,并且只保留具有指向该存储单元的指针的缓冲区拷贝,来进一步减少缓冲区复制。某些这种方法基本上减少了缓冲区复制,而其他这种方法完全消除了缓冲区复制。在本发明的某些方面,诸如指针信息之类的信息被存储在与每个分组相关联的TCP控制块中。
图7到图11示出了本发明的某些方面和实施例。在一个实施例中,图7中的缓冲区705是FIFO缓冲区,如上所述。这里,缓冲区705是与FC驱动器315相关联的两个FIFO缓冲区之一。在本示例中,缓冲区705是数据分组缓冲区,而另一这样的缓冲区是命令分组缓冲区。图7到图11中所示的缓冲区单元数量、存储器地址等等仅仅是示例性的。IP驱动器330具有一个或多个缓冲区,这些缓冲区以与下面根据FC驱动器315的缓冲区705所描述的方式相类似的方式进行操作。
缓冲区705包括单元710,每个单元都具有相关指针715。在本示例中,单元720是起始缓冲区空间,而单元725是终止缓冲区空间。因此,当第一数据分组从SAN 105发送到FC驱动器时(例如在如下所述的中断环境中),指针727将单元720与存储器735的存储单元730相关联,其中在接收到指示第一分组已被接收的ACK之前,第一数据分组将被存储。根据本发明的某些方面,在接收到已发送的分组数据的ACK之前,第一数据分组被存储在存储器735中的存储单元730中。该存储单元通常是线路卡1268的I/O存储器的一部分,但是也可以是任意方便的位置。
关于第一分组的指针信息被发送到TCP加速器325,并被传递到TCP模块320。由于第一分组是传出分组,因此TCP模块320在第一分组被发送到IP云120之后,将存储单元730与发送队列745中的条目740相关联。在本示例中,条目740包括指针738。如果第一分组是传入分组,TCP模块320则将存储单元730与重组队列750中的一个条目相关联。在优选实施例中,发送队列745和重组队列750都被保留在与TCP模块320相关联的存储器中。但是,这些队列也可以被保留在任意方便的存储器中。
如上所述,每个TCP连接优选地具有相关的TCP控制块,该TCP控制块由连接管理器310创建并被存储在TCP模块320中。在优选实施例中,与每个数据分组相关联的指针信息被编码到TCP控制块中。优选地,每个TCP控制块包括用于编码至少发送队列745和重组队列750的指针信息的部分。
如果确定还未接收到第一数据分组,则简单地重传第一数据分组。虽然重传的分组的头部可能被稍稍修改,但是无需为了重传第一分组中的数据而创建新分组,这是因为保留了第一分组的分段边界。
图8到图11提供了根据本发明某些方面的指针操作的其他详细内容。图8A示出了在第一时刻的缓冲区705和存储器735,并且图8B示出了在第二时刻的缓冲区705、存储器735和分组结构(“PAK”)810。
如图8A所示,当FC驱动器315接收到第一分组时,指针805指示缓冲区空间720可用。从而,FC驱动器315将第一分组存储在存储单元730中,并且将缓冲区空间720的指针727与存储单元730相关联。FC帧可以被存储在单个存储单元中,但是一些FC帧相当大,足以跨越若干存储单元。
然后(例如,响应于中断),FC驱动器315经由指针815将存储单元730与PAK 810相关联,并且断开存储单元730与缓冲区空间720之间的链接。该过程释放缓冲区空间720,该缓冲区空间720随后经由指针825与存储单元820相关联。指针805移动到缓冲区空间830,该缓冲区空间830经由指针840与存储单元835相关联。存储单元835可用于接收关于随后接收到的分组的信息。
优选地,PAK 810至少包括关于指针815的指针信息以及关于第一数据分组的尺寸信息。因此,FC驱动器315将PAK 810(关于数据分组的信息的传播媒介)发送到TCP加速器325和TCP模块320。
如图9所示,TCP模块320使用PAK 810中的信息,经由指针738将发送队列745中的条目740与存储单元730相关联。传出接口(这里是IP驱动器330)包括发送缓冲区910,在本示例中,该发送缓冲区910用于以太网驱动器。发送缓冲区910中的条目905包括指针915,该指针将条目905与存储单元730相关联。
根据本发明的优选方面,在将分组发送到IP云120之后,释放了尽可能多的存储器。根据本发明的某些方面,如图10所示,在第一分组被发送之后,只有发送队列745保留指向存储单元730的指针。在某些实施例中,发送队列745的条目740一直被保留到接收到ACK为止,所述ACK指示SAN 110已经接收到第一数据分组。在其他实施例中,条目740在第一分组被发送到IP云120之后的预定时间内被保留。其他实施例可以使用本领域公知的可替换方法来判断分组是否已被接收。
根据本发明的优选方面,指针并未指向存储单元的起始端。如图11所示,指针815没有指向存储单元730的起始端,而是允许在载荷1110之前存在偏移量,在这段偏移量中放置临时数据1105。根据其他方面,临时数据1105被放置在载荷1110之后。当在传输之前将头部信息添加到分组中时,头部信息可以被简单地放置在存储单元730的临时数据1105中。
在普通的TCP处理中,每个分组需要大量开销以在中断环境中处理分组。这种开销中的一部分是由于需要在常规的“过程环境”和中断环境之间进行转换。例如,假设在接收到中断时正在执行过程A。过程A被中止,并且保存过程A的状态。然后,系统切换到中断环境,并且调度和处理与中断相关的服务例程。在完成中断过程之后,系统返回过程环境。然后,调度程序必须重新调度过程A并且取回该过程中止时过程A的状态。因此,改变环境增加了大量开销。
此外,在传统系统中,与中断过程相关联的存储器不同于可由常规过程访问的存储器。因此,每次在过程环境和中断环境之间进行环境转换时,必须将数据从一个存储器复制到另一存储器中。在常规过程的环境中,希望分组存储器连续,而在中断过程的环境中不需要如此。中断过程可以将多个离散的缓冲区用作分组存储器。
在本发明的优选方面中,所有分组都在经修改的中断环境中被处理,以便缓解这些问题。虽然以下论述将大量描述控制由SAN发送到IP云的分组的中断处理的示例,但是,在本发明的某些实施例中,过程是对称的,并且可同样应用于接收自IP云的分组。
当接收到(例如由FC驱动器315)中断时,在同一中断环境中执行所有过程(包括方法600中的步骤605到630以及上述缓冲区过程)。由于数据无需被从一个缓冲区复制到另一缓冲区中,因此上述指针操作有助于在中断环境中执行所有这些步骤。一个分组与每个中断相关联,并且每个分组与关联于FC驱动器315的存储器的一部分(例如上述FIFO缓冲区)相关联。
一般,中断过程不会被取代,相反,它可以持续到中断过程完成。但是,用于传入数据的缓冲区只能够存储有限数目的传入分组。因此,如果中断处理持续时间太长,就会丢弃随后的传入分组。本方法的优选方面对中断处理加以控制。
控制中断处理的一种方法是对单向中断处理强加最大寿命,以便防止分组被丢弃。该寿命可以以CPU周期或“循环”的形式被测量。根据本发明的某些方面,在TCP模块320已经致使一个这样的分组被发送之后,TCP模块320询问FC驱动器315是否要发送另一分组。假设要发送另一分组。然后,对该分组(与缓冲区的另一部分相关联)进行处理并发送。如果该过程持续到缓冲区中的分组被排空,那么很可能在另一方向上(即从IP云到线路卡)的传入分组将被丢弃,因为在另一方向上的中断处理占用了所有的CPU周期。
从而,在本发明的优选方面中,在传出分组的中断处理终止之前,该“循环”只允许发生一定次数,每次循环与单个分组相关联。根据这些方面,命令分组具有比数据分组更高的优先级,并且因此允许在处理停止之前执行更多次循环。根据本发明的一个方面,命令分组的最大循环次数为4,数据分组的最大循环次数为3。
控制被发送到IP云的数据的中断处理的另一方法是通过对被发送的数据加以限制。例如本发明的某些方面根据“TCP滑动窗”限制了在接收到确认分组(“ACK”)之前发送的数据量。例如,该限制可以等同于在接收到ACK之前发送64kb数据。在已经达到数据传输限制之后,对FC驱动器的存储器中的分组的中断处理被悬挂。在接收到ACK之后,TCP滑动窗“打开”,TCP模块询问FC驱动器是否要发送任意分组。如果回答是“否”,则重新使能中断过程。然后,来自FC一侧的分组可以再次在中断环境中被处理并被发送,直到达到传输限制为止。
根据本发明的某些方面,接收任意传入数据将阻止达到数据传输限制。例如,当IP驱动器330接收到数据分组时,TCP模块320需要致使ACK分组被发送。在发送ACK分组之前,TCP模块320询问FC驱动器315以判断在其存储器中是否存在可以被“捎带”的分组,并且与ACK分组一道被发送到IP云。
从而,本发明的优选实施例在部分时间中,保持禁止FC一侧的中断环境。在某些实施例中,在大多数时间中禁止中断处理。当中断环境被禁止,并且中断进入FC驱动器时,FC驱动器不获知中断。
中断可以被看作FC端口适配器和FC驱动器之间的通知机制。中断处理只在某些时刻被使能。例如,当系统上线时,中断“通知机制”被使能。这时,当FC驱动器接收到分组时,分组立即通过方法600的步骤,并被发送到IP云。
在某些后续时刻,对传出分组的中断处理将由于超出循环次数、超出数据传输限制,或者对中断处理的某些其他控制而被停止。
现在参考图12,适合于实现本发明的技术的网络设备1260包括主中央处理单元(CPU)1262、接口1268以及总线1267(例如PCI总线)。当在适当的软件或固件的控制下动作时,CPU 1262可以负责实现与所需网络设备的功能相关联的特定功能。例如,当被配置为中间路由器时,CPU 1262可以负责分析FC分组,封装分组,以及将用于传输的分组转发到IP云。根据某些实施例,CPU 1262在包括操作系统(例如WindowsNT)的软件以及任意适当的应用软件的控制下实现所有这些功能。
CPU 1262可以包括一个或多个处理器1263,例如来自Motorola微处理器族的处理器或者来自MIPS微处理器族的处理器。在可替换的实施例中,处理器1263被特别设计为用于控制网络设备1260的操作的硬件。在具体实施例中,存储器1261(例如非易失性RAM和/或ROM)也构成CPU 1262的一部分。但是,还存在很多可以将存储器耦合到系统的不同方法。存储器块1261可以被用于多种目的,例如缓存和/或存储数据、程序指令等。
接口1268通常被设置为接口卡(有时被称为“线路卡”)。一般,它们控制网络上数据分组的发送和接收,并且有时支持网络设备1260所使用的其他外设。可以提供的接口包括FC接口、以太网接口、帧中继接口、线缆接口、DSL接口、令牌环接口等等。另外,可以提供各种甚高速接口,例如快速以太网接口、千兆位以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、ASI接口、DHEI接口等等。
一般,接口1268包括适合于与适当媒体进行通信的端口。在某些实施例中,接口1268中的一个或多个至少包括一个独立处理器,并且在某些情况下,还包括易失性RAM。根据这些实施例,这些独立处理器至少执行体系结构300的功能中的一些,例如封装FC帧等等。在某些实施例中,接口1268中的一个或多个控制通信密集型任务,例如媒体控制和管理。通过为通信密集型任务提供单独的处理器,接口1268允许主微处理器1262有效地执行其他功能,例如路由计算、网络诊断、安全功能等等。
虽然图12所示的系统示出了本发明的一个特定网络设备,但是这并不意味着只能在这种网络设备体系结构上实现本发明。例如,经常使用具有单个处理器的体系结构,这个处理器处理通信以及路由计算等。此外,也可以将其他类型的接口和媒体用于该网络设备。
无论网络设备的配置如何,它都可以采用一个或多个存储器或存储器模块(例如存储器块1265),这些存储器或存储器模块被配置为存储数据、用于通用网络操作的程序指令,和/或与这里所述技术的功能相关的其他信息。所述程序指令例如可以控制操作系统的操作和/或一个或多个应用。
由于这种信息和程序指令可以被用于实现这里所描述的系统/方法,因此本发明涉及包括了用于执行这里所述的各种操作的程序指令、状态信息等的机器可读介质。机器可读介质的示例包括,但不局限于,诸如硬盘、软盘和磁带之类的磁介质;诸如CD-ROM盘之类的光介质;磁光介质;以及被具体配置为存储和执行程序指令的硬件设备,例如只读存储设备(ROM)和随机访问存储器(RAM)。本发明还可以被体现在穿过适当介质(例如无线电波、光线路、电线路等等)的载波中。程序指令的示例包括如由编译器所生成的机器代码,以及包含可以由计算机使用解释器执行的更高级代码的文件。
虽然已经参考特定实施例具体示出并且描述了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神或范围的情况下,可以对所公开的实施例在形式和细节上进行修改。例如,本发明的某些方面通过使成功命中TCP头部预测代码的次数最大化,使每个按顺序的分组所执行的TCP指令数最小化。
TCP头部预测是用于最一般情况的传入分组的TCP处理的优化版本,所述最一般情况的传入分组例如是在最标准的TCP栈中出现的按顺序的数据和确认。对于每个传入分组执行检查,以判断该分组是否需要基本数据和ACK功能之外的额外处理。如果分组不具有这种需求,则以头部预测代码来处理该分组,所述头部预测代码与原始代码相比,具有很少的指令数目,所述原始代码不做出关于分组的任意假设,而是对分组执行所有可能的检查。由头部预测代码所执行的一种检查是判断从上一分组开始,在传入分组的头部中所宣称的窗口是否已经改变。如果已经改变,则不执行头部预测代码。
在分组头部中所宣称的窗口代表在发送该分组的终端主机处可用的接收缓冲区的量。该特征有助于在发送端和接收端之间的流控制。如果终端主机接收到按顺序的数据,但是应用还未使用该数据,终端主机则减小在其发出的下一ACK中所宣称的窗口。这样一来,其对等体获得恒定反馈,并且将不会用数据攻击终端主机,即使TCP的拥塞窗口(由于拥塞而用于减慢传输)以其他方式允许这种攻击也将如此。
虽然这可以发生在较慢或停滞应用的真实情况下,但是这也可以发生在足够快速地消耗数据的应用的瞬时阶段。这依赖于在任意时间点,由于各种原因引起的流量模式的剧烈程度。对于后面的情况,为了避免不使用头部预测的开销,本发明的某些方面提供了一种经修改的TCP,其具有恒定的宣称窗。本发明的这些方面包括只在FCIP应用消耗数据时发送确认,这与典型的TCP栈有所不同。本发明的这些方面在无需损害TCP的流控制的情况下优化了头部预测。
本发明的某些方面包含将最大重传次数从12到14次(常规的TCP)降低到更低的最大值。本发明的这些方面提供的重传最大次数为4。
鉴于这些和其他改变,本发明的范围应该参考所附权利要求来确定。

Claims (32)

1.一种用于在存储区域网之间传输数据的方法,包括:
接收来自第一存储区域网的分组;
将所述分组作为具有分段边界的分段存储在存储单元中;
准备所述分组,以用于因特网协议网络上的传输;
在所述因特网协议网络上传输所述分组;以及
在所述传输步骤之后,将所述分段和所述分段边界在所述存储器中保留一段预定时间。
2.如权利要求1所述的方法,其中所述分段和所述分段边界被保留在所述存储单元中,直到接收到指示所述分组已被接收的确认为止。
3.如权利要求1所述的方法,还包括:
如果在预定时间内没有接收到指示所述分组已被接收的确认,则重传具有相同分段边界的分组。
4.如权利要求1所述的方法,其中所述存储步骤包括在所述存储单元内,为头部预留存储器空间,并且其中所述准备步骤包括在所述预留的存储器空间中添加第一头部。
5.如权利要求1所述的方法,其中所述第一存储区域网是光纤信道网,其中所述分组以光纤信道格式被接收,并且其中所述准备步骤包括根据传输控制协议封装所述分组。
6.如权利要求4所述的方法,其中如果在预定时间内没有接收到指示所述分组已被接收的确认,则执行以下步骤:
在所述预留的存储器空间中添加第二头部;以及
重传具有相同分段边界和所述第二头部的分组。
7.一种包含在计算机可读介质中的计算机程序,其用于在存储区域网之间传输数据,所述计算机程序包括用于控制网络设备以执行以下步骤的指令:
接收来自第一存储区域网的分组;
将所述分组作为具有分段边界的分段存储在存储单元中;
准备所述分组,以用于因特网协议网络上的传输;
在所述因特网协议网络上传输所述分组;以及
在所述传输步骤之后,将所述分段和所述分段边界在所述存储器中保留一段预定时间。
8.如权利要求7所述的计算机程序,其中所述计算机程序控制所述网络设备将所述分段和所述分段边界保留在所述存储单元中,直到接收到指示所述分组已被接收的确认为止。
9.如权利要求7所述的计算机程序,还包括如下指令:如果在预定时间内没有接收到指示所述分组已被接收的确认,所述指令则控制所述网络设备重传具有相同分段边界的分组。
10.如权利要求7所述的计算机程序,其中所述存储步骤包括在所述存储单元内,为头部预留存储器空间,并且其中所述准备步骤包括在所述预留的存储器空间中添加第一头部。
11.如权利要求7所述的计算机程序,其中所述第一存储区域网是光纤信道网,其中所述分组以光纤信道格式被接收,并且其中所述准备步骤包括根据传输控制协议封装所述分组。
12.如权利要求7所述的计算机程序,其中如果在预定时间内没有接收到指示所述分组已被接收的确认,所述计算机程序则控制所述网络设备执行以下步骤:
在所述预留的存储器空间中添加第二头部;以及
重传具有相同分段边界和所述第二头部的分组。
13.一种用于在存储区域网之间传输数据的网络设备,该网络设备被配置为执行以下步骤:
接收来自第一存储区域网的分组;
将所述分组作为具有分段边界的分段存储在存储单元中;
准备所述分组,以用于因特网协议网络上的传输;
在所述因特网协议网络上传输所述分组;以及
在所述传输步骤之后,将所述分段和所述分段边界在所述存储器中保留一段预定时间。
14.如权利要求13所述的网络设备,其中所述分段和所述分段边界被保留在所述存储单元中,直到接收到指示所述分组已被接收的确认为止。
15.如权利要求13所述的网络设备,其中所述网络设备被配置为如果在预定时间内没有接收到指示所述分组已被接收的确认,则重传具有相同分段边界的分组。
16.如权利要求13所述的网络设备,其中所述存储步骤包括在所述存储单元内,为头部预留存储器空间,并且其中所述准备步骤包括在所述预留的存储器空间中添加第一头部。
17.如权利要求13所述的网络设备,其中所述第一存储区域网是光纤信道网,其中所述分组以光纤信道格式被接收,并且其中所述准备步骤包括根据传输控制协议封装所述分组。
18.如权利要求17所述的网络设备,其中所述网络设备被配置为如果在预定时间内没有接收到指示所述分组已被接收的确认,则执行以下步骤:
在所述预留的存储器空间中添加第二头部;以及
重传具有相同分段边界和所述第二头部的分组。
19.一种用于在存储区域网之间传输数据的装置,包括:
用于接收来自第一存储区域网的分组的装置;
用于将所述分组作为具有分段边界的分段存储在存储单元中的装置;
用于准备所述分组,以用于因特网协议网络上的传输的装置;
用于在所述因特网协议网络上传输所述分组的装置;以及
用于在所述传输步骤之后,将所述分段和所述分段边界在所述存储器中保留一段预定时间的装置。
20.如权利要求19所述的装置,其中所述分段和所述分段边界被保留在所述存储单元中,直到接收到指示所述分组已被接收的确认为止。
21.如权利要求19所述的装置,还包括:
用于如果在预定时间内没有接收到指示所述分组已被接收的确认,则重传具有相同分段边界的分组的装置。
22.一种包含在机器可读介质中的TCP栈,其用于控制在存储区域网之间传输的数据,所述TCP栈包括:
应用层,该层用于封装来自第一存储区域网的传出帧,并且解封装来自第二存储区域网的传入帧;
TCP层,该层直接从所述应用层接收传出帧;
IP层,该层与所述TCP层进行交互;以及
链路层,该层与所述IP层进行交互,
其中所述TCP栈不包括套接字层。
23.如权利要求22所述的TCP栈,其中所述应用层包括FCIP层。
24.如权利要求22所述的TCP栈,其中所述链路层包括以太网层。
25.如权利要求22所述的TCP栈,其中所述TCP栈在中断环境中执行处理。
26.一种用于控制在存储区域网之间传输的数据的方法,包括:
接收第一FCIP分组;
将TCP头部添加到所述第一FCIP分组;以及
将所述第一FCIP分组传输到因特网,其中所述接收、添加和传输步骤都在中断环境中被执行。
27.如权利要求26所述的方法,其中所述中断环境为命令分组分配比数据分组更高的优先级。
28.一种包含在机器可读介质中的计算机程序,其用于控制在存储区域网之间传输的数据,所述计算机程序包括用于控制网络设备执行以下步骤的指令:
接收第一FCIP分组;
将TCP头部添加到所述第一FCIP分组;以及
将所述第一FCIP分组传输到因特网,其中所述接收、添加和传输步骤都在中断环境中被执行。
29.如权利要求28所述的计算机程序,其中所述中断环境为命令分组分配比数据分组更高的优先级。
30.一种用于控制在存储区域网之间传输的数据的装置,该装置被配置为执行以下步骤:
接收第一FCIP分组;
将TCP头部添加到所述第一FCIP分组;以及
将所述第一FCIP分组传输到因特网,其中所述接收、添加和传输步骤都在中断环境中被执行。
31.如权利要求30所述的装置,其中所述中断环境为命令分组分配比数据分组更高的优先级。
32.如权利要求21所述的装置,其中所述装置包括路由器、交换机或光纤信道端口适配器卡中的一种。
CN200380109101.2A 2003-01-23 2003-11-14 用于在存储区域网之间传输数据的方法和设备 Pending CN1742469A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/350,574 2003-01-23
US10/351,167 US7957409B2 (en) 2003-01-23 2003-01-23 Methods and devices for transmitting data between storage area networks
US10/351,167 2003-01-23

Publications (1)

Publication Number Publication Date
CN1742469A true CN1742469A (zh) 2006-03-01

Family

ID=32735741

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200380109101.2A Pending CN1742469A (zh) 2003-01-23 2003-11-14 用于在存储区域网之间传输数据的方法和设备

Country Status (2)

Country Link
US (2) US7957409B2 (zh)
CN (1) CN1742469A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488910B (zh) * 2007-12-18 2012-05-23 阿尔卡特朗讯公司 用于在多个套接字之间通信的方法
CN101662798B (zh) * 2009-09-22 2012-06-06 北京科技大学 无线传感器网络低功耗邀请重传方法及其装置
CN110418218A (zh) * 2019-07-26 2019-11-05 新华三技术有限公司成都分公司 报文处理方法、装置及fcf交换设备
CN111245809A (zh) * 2020-01-07 2020-06-05 北京同有飞骥科技股份有限公司 跨层数据处理方法及系统

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7782784B2 (en) * 2003-01-10 2010-08-24 Cisco Technology, Inc. Port analyzer adapter
US7899048B1 (en) 2003-01-15 2011-03-01 Cisco Technology, Inc. Method and apparatus for remotely monitoring network traffic through a generic network
US7738493B2 (en) * 2003-01-23 2010-06-15 Cisco Technology, Inc. Methods and devices for transmitting data between storage area networks
US7957409B2 (en) 2003-01-23 2011-06-07 Cisco Technology, Inc. Methods and devices for transmitting data between storage area networks
US7356587B2 (en) * 2003-07-29 2008-04-08 International Business Machines Corporation Automatically detecting malicious computer network reconnaissance by updating state codes in a histogram
US7474666B2 (en) 2003-09-03 2009-01-06 Cisco Technology, Inc. Switch port analyzers
US8165136B1 (en) 2003-09-03 2012-04-24 Cisco Technology, Inc. Virtual port based SPAN
US20060151549A1 (en) * 2005-01-12 2006-07-13 Fisher David G Agricultural spreading device
US20080256271A1 (en) * 2006-12-12 2008-10-16 Breed Paul T Methods and apparatus for reducing storage usage in devices
US8412831B2 (en) * 2009-08-03 2013-04-02 Brocade Communications Systems, Inc. Per priority TCP quality of service
US8745243B2 (en) * 2009-08-03 2014-06-03 Brocade Communications Systems, Inc. FCIP communications with load sharing and failover
CN102790717B (zh) * 2012-06-01 2016-03-02 上海斐讯数据通信技术有限公司 以太网数据包中控制信息的获取方法及系统
US9374106B2 (en) 2013-08-28 2016-06-21 International Business Machines Corporation Efficient context save/restore during hardware decompression of DEFLATE encoded data
US9800640B2 (en) * 2013-10-02 2017-10-24 International Business Machines Corporation Differential encoder with look-ahead synchronization
US20160065699A1 (en) * 2014-08-26 2016-03-03 Qsan Technology, Inc. Bi-directional data transmission method and electronic device using the same
US20190253351A1 (en) * 2016-07-08 2019-08-15 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for handling scalable network connections

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742760A (en) * 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US5742607A (en) 1995-12-20 1998-04-21 Intel Corporation Method and apparatus for controlling two way communication via disparate physical media
US5987519A (en) 1996-09-20 1999-11-16 Georgia Tech Research Corporation Telemedicine system using voice video and data encapsulation and de-encapsulation for communicating medical information between central monitoring stations and remote patient monitoring stations
US7167927B2 (en) * 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US6401171B1 (en) * 1998-02-27 2002-06-04 Cisco Technology, Inc. Method and device for storing an IP header in a cache memory of a network node
US6611495B1 (en) * 1999-02-22 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for improved data transfer in packet-switched communication networks
US6400730B1 (en) 1999-03-10 2002-06-04 Nishan Systems, Inc. Method and apparatus for transferring data between IP network devices and SCSI and fibre channel devices over an IP network
WO2001028179A2 (en) 1999-10-14 2001-04-19 Bluearc Uk Limited Apparatus and method for hardware implementation or acceleration of operating system functions
US20020078028A1 (en) 2000-12-18 2002-06-20 Trevalon Inc. Network server
JP4483100B2 (ja) 2001-02-20 2010-06-16 株式会社日立製作所 ネットワーク間接続装置
US7114009B2 (en) * 2001-03-16 2006-09-26 San Valley Systems Encapsulating Fibre Channel signals for transmission over non-Fibre Channel networks
EP1244255A1 (de) * 2001-03-20 2002-09-25 Telefonaktiebolaget L M Ericsson (Publ) Verfahren und Vorrichtung zur Verbesserung eines Datendurchsatzes
US20020156924A1 (en) * 2001-04-23 2002-10-24 Moshe Czeiger Method for communicating between fibre channel systems
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US7164680B2 (en) * 2001-06-04 2007-01-16 Koninklijke Philips Electronics N.V. Scheme for supporting real-time packetization and retransmission in rate-based streaming applications
US6985490B2 (en) 2001-07-11 2006-01-10 Sancastle Technologies, Ltd. Extension of fibre channel addressing
US7171440B2 (en) * 2001-07-17 2007-01-30 The Boeing Company System and method for virtual packet reassembly
US7809852B2 (en) 2001-07-26 2010-10-05 Brocade Communications Systems, Inc. High jitter scheduling of interleaved frames in an arbitrated loop
JP2005503699A (ja) 2001-08-31 2005-02-03 アダプテック・インコーポレイテッド コンピュータネットワークでホストベースのセキュリティを行うシステムおよび方法
US7404000B2 (en) * 2001-09-28 2008-07-22 Emc Corporation Protocol translation in a storage system
US20030084219A1 (en) 2001-10-26 2003-05-01 Maxxan Systems, Inc. System, apparatus and method for address forwarding for a computer network
US7308001B2 (en) 2001-11-16 2007-12-11 Computer Network Technology Corporation Fibre channel frame batching for IP transmission
US20030204620A1 (en) * 2002-04-29 2003-10-30 Intel Corporation Network device with improved routing characteristics
US7142540B2 (en) * 2002-07-18 2006-11-28 Sun Microsystems, Inc. Method and apparatus for zero-copy receive buffer management
US7957409B2 (en) 2003-01-23 2011-06-07 Cisco Technology, Inc. Methods and devices for transmitting data between storage area networks

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488910B (zh) * 2007-12-18 2012-05-23 阿尔卡特朗讯公司 用于在多个套接字之间通信的方法
CN101662798B (zh) * 2009-09-22 2012-06-06 北京科技大学 无线传感器网络低功耗邀请重传方法及其装置
CN110418218A (zh) * 2019-07-26 2019-11-05 新华三技术有限公司成都分公司 报文处理方法、装置及fcf交换设备
CN110418218B (zh) * 2019-07-26 2021-06-29 新华三技术有限公司成都分公司 报文处理方法、装置及fcf交换设备
CN111245809A (zh) * 2020-01-07 2020-06-05 北京同有飞骥科技股份有限公司 跨层数据处理方法及系统

Also Published As

Publication number Publication date
US8724656B2 (en) 2014-05-13
US7957409B2 (en) 2011-06-07
US20110206059A1 (en) 2011-08-25
US20040146063A1 (en) 2004-07-29

Similar Documents

Publication Publication Date Title
CN1742469A (zh) 用于在存储区域网之间传输数据的方法和设备
US7571247B2 (en) Efficient send socket call handling by a transport layer
US6981032B2 (en) Enhanced multicast-based web server
JP4327496B2 (ja) ネットワークスタックをオフロードする方法
US7213077B2 (en) Method and system for providing buffer management in a performance enhancing proxy architecture
US7050437B2 (en) Wire speed reassembly of data frames
US7487424B2 (en) Bitmap manager, method of allocating a bitmap memory, method of generating an acknowledgement between network entities, and network entity implementing the same
US6665729B2 (en) Data transmission utilizing pre-emptive acknowledgements with transaction-oriented protocols
CN1778079A (zh) 用于协调tcp/ip网络与其他网络之间的流控制的方法和设备
US20070255866A1 (en) Method and system for a user space TCP offload engine (TOE)
CN1458590A (zh) 用网络栈同步和上载已卸载网络栈连接的方法
CN1606290A (zh) 为通过网络的数据传输管理存储器的方法、系统和程序
CN1881945A (zh) 改进型分布式核心操作系统
EP1586182B1 (en) Methods and devices for transmitting data between storage area networks
MXPA01010839A (es) Servidor proxy para mejorar el desempeno y metodo para mejorar el desempeno.
CN1736063A (zh) 分组网络中表示几种不同阻塞原因的阻塞通知方法及设备
US6983334B2 (en) Method and system of tracking missing packets in a multicast TFTP environment
CN1633796A (zh) 针对广播或无线网络修改tcp/ip
CN1595935A (zh) 支持故障切换事件的网络状态对象的多个卸载
US20040267960A1 (en) Force master capability during multicast transfers
CN1571418A (zh) 一种流控传输协议中数据传输实现方法及系统
US20040073724A1 (en) Network stack layer interface
JP2003304248A (ja) データ転送方法及び装置
US7010548B2 (en) Sparse and non-sparse data management method and system
US7738493B2 (en) Methods and devices for transmitting data between storage area networks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20060301