在fcp内对tcp卸载引擎的编码的制作方法

文档序号:7633798阅读:382来源:国知局
专利名称:在fcp内对tcp卸载引擎的编码的制作方法
技术领域
本发明涉及计算机网络。更具体而言,本发明涉及用于与传输控制协议(“TCP”)卸载引擎(“TOE”)通信的方法和设备。
背景技术
近年来,联网系统中的通信速度已经超过很多网络设备中的微处理器性能的成长速度。例如,以太网已经成为局域网的最常用的联网协议。从10Mb/s以太网到10Gb/s以太网的速度增长尚未被在大多数网络设备中使用的处理器的性能的同等增长所匹配。
这种现象已经产生了一种输入/输出(I/O)瓶颈,因为网络设备处理器无法一直跟上通过网络的数据流的速率。该瓶颈的一个重要原因在于TCP/IP栈以慢于网络速度的速率被处理。对TCP/IP的处理通常由在服务器的中央处理器上运行的软件执行。重组乱序分组、处理中断以及执行存储器复制给CPU带来极大的负担。在高速网络中,这样的CPU对于网络流量比对于运行其它应用可能需要更强的处理能力。
TCP/IP卸载引擎(“TOE”)通过从微处理器和I/O子系统中移除处理TCP/IP的负担(卸载)来缓解这一I/O瓶颈。TOE通常被实现在主机总线适配器(“HBA”)或网络接口卡(“NIC”)中。
诸如因特网协议存储(“IPS”)之类网络存储应用的越发流行已经给网络设备带来甚至更大的TCP/IP处理负担。iSCSI(因特网小计算机系统接口)协议常用来建立和维护基于IP的存储设备、主机和客户端之间的连接。iSCSI采用经封装的SCSI协议,该协议用于映射TCP/IP网络上面向块的存储数据。作为iSCSI会话一部分的每个TCP连接包括用于例如建立/拆除连接、窗口管理、拥塞控制、校验和计算、中断、存储器复制等等的TCP处理开销。因此,非常希望实现TCP卸载机制来增强网络存储性能。
除了给网络设备带来TCP/IP处理负担之外,由于其它原因,使用iSCSI(或类似协议)的IP存储的实现方式还有问题。例如,相关的iSCSI协议数据单元(“PDU”)可能通过不同路径通过网络并且不按顺序到达。有时,由于作为其一部分的TCP分段没有按顺序传递,因此可能在希望接收iSCSI头部时未接收到iSCSI头部。在某些实例中,一个或多个PDU可能根本没有到达。
当网络应用涉及经由IP网络对作为光纤信道(“FC”)网络的一部分的存储设备的访问时,将引入其它复杂情况。该存储设备例如可以是FC网络上经由IP网络被NAS客户端访问的网络附接存储(“NAS”)设备。由NAS服务器常用的两个应用协议是网络文件系统(“NFS”)和通用因特网文件系统(“CIFS”)。很多NAS系统还支持超文本传输协议(“HTTP”),从而允许NAS客户端使用Web浏览器从支持HTTP的NAS服务器下载文件。
现有技术TOE没有提供用于处理来自TCP/IP网络上的NAS客户端的定向到FC网络上的NAS服务器的流量的满意的方法。在这种系统中,不存在到NAS服务器的TCP连接。现有技术的系统不允许NAS服务器将来自TOE的数据放置在特定存储器位置中,并且要求来自IP网络的数据从各个存储器位置复制,以在FC侧进行重建。将希望开发用于解决现有技术的某些或全部限制的系统和方法。

发明内容
本发明定义了一种用于与卸载引擎通信的新协议,所述卸载引擎提供了光纤信道(“FC”)架构上传输控制协议(“TCP”)的终止。卸载引擎终止到TCP之前并且包括TCP的所有协议,并且执行与这些层相关的处理。卸载协议确保传递并被封装在FCP格式的帧中。因此,TCP流被可靠地传递到主机。另外,使用该方案,卸载引擎可以提供对TCP流的解析以进一步辅助主机。本发明还提供了被配置用于执行前述方法的网络设备(及其组件)。本发明还定义了网络附接存储(“NAS”)协议数据单元(“PDU”)是如何被解析和传递的。
本发明还提供了被配置用于至少部分执行前述方法的设备,例如线路卡(即“刀片”)、主机、交换机和路由器。本发明还包括这些设备可通过其操作以执行本发明的某些方面的网络。根据某些实现方式,中央组件是经由FC架构与卸载引擎通信的主机。卸载引擎具有对联网接口的访问权限。此外,本发明包括可以根据本发明的某些方面来实现的商业方法。
本发明的某些方法提供了用于实现网络存储的方法。该方法包括以下步骤存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息;解析所述被存储的信息;以及将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备。该方法还包括在FC网络上终止到传输控制协议(TCP)之前并包括TCP的所有协议。
本发明的其他方面提供了用于实现网络存储的其它方法。某些这样的方法包括以下步骤存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的数据读取请求,所述数据读取请求指向被存储在光纤信道(FC)网络上的存储设备中的数据;解析所述被存储的信息;以及分配执行所述解析步骤的卸载引擎的存储器空间,所述分配步骤是根据所述解析步骤的结果来执行的。
本发明的另外其它方法包括以下步骤在因特网协议(IP)网络上的网络附接存储(NAS)客户端和光纤信道(FC)网络上的NAS设备之间提供接口;以及在所述FC网络上终止到传输控制协议(TCP)之前并且包括TCP协议在内的所有协议。
本发明的某些实施例提供了一种线路卡,包括光纤信道(FC)接口;以太网接口;存储器;和卸载引擎。所述卸载引擎被配置用于存储经由所述以太网接口从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息;解析所述被存储的信息;以及经由所述FC接口将来自所述解析步骤的结果发送到光纤信道网络上的NAS设备。本发明的其它实施例提供了包括所述线路卡的网络设备。本发明的另外其它实施例提供了包括所述网络设备和NAS设备的计算机网络。在某些实施例中,所述网络设备包括线路卡和NAS设备。
本发明的某些实施例提供了一种网络附接存储(NAS)设备,包括光纤信道(FC)接口;存储器;以及一个或多个处理器,所述处理器被配置用于根据经由所述FC接口从传输控制协议(TCP)卸载引擎接收的NAS头部信息来分配所述存储器中的空间,所述头部信息对应于来自因特网协议(IP)网络上的NAS客户端的命令。
本发明的另外其它实施例提供了存储在机器可读介质上的计算机程序。该计算机程序包括用于控制传输控制协议(TCP)卸载引擎来执行以下步骤的指令存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息;解析所述被存储的信息;以及将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备。
本发明的另外其它实现方式提供了一种用于向用户可靠地提供账户信息的方法。该方法包括存储对从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的账户信息的请求;解析所述被存储的请求;将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备;根据所述结果分配所述NAS设备的存储器中的空间;从所述FC网络上的存储设备获取所述被请求的账户信息;以及在所述被分配的存储器空间中存储所述被请求的账户信息。
在以下本发明的说明书和附图中将更详细地描述本发明的这些和其它特征和优点,附图以示例方式示出了本发明的原理。


通过结合附图参考以下描述,可以最好地理解本发明,附图例示出本发明的特定实施例。
图1A和图1B是示出可在其中实现本发明的某些上下文的网络图。
图2是示出根据本发明实施例包括卸载引擎的刀片(blade)的框图。
图3是示出根据本发明实施例的图2的刀片的软件组件的框图。
图4是示出根据本发明实施例包括用于实现NAS设备的组件的刀片的框图。
图5是示出根据本发明某些实现方式的命令聚集和解析的高级视图。
图6是示出根据本发明某些实现方式的卸载套接字(offload socket)状态的状态图。
图7是指示可能丢弃帧的状况的框图。
图8是示出根据本发明某些实现方式的直接数据放置的流程图。
图9是示出根据本发明实施例的NAS设备的软件组件的框图。
图10示出根据本发明某些方面,将数据直接放置到缓冲区缓存中的过程。
具体实施例方式
现在将详细参考本发明的某些特定实施例,其中包括发明人想到的用于实现本发明的最佳方式。这些特定实施例的示例在附图中被示出。虽然结合特定实施例描述了本发明,但是将会理解,不希望将本发明局限于所述实施例。相反,希望覆盖由所附权利要求书限定的包括在本发明的精神和范围内的替代、修改和等同物。
例如,应该注意,本发明的技术可被应用到各种不同的协议和网络。在以下描述中,提出了多个特定细节,以便提供对本发明的全面理解。无需这些特定细节的某些或全部,也可以实施本发明。在其它示例中,没有详细描述公知的过程操作,以免模糊本发明。
网络存储已经变得越来越流行,并且已经成为提供给各类行业的重要服务,所述行业例如是银行、信用卡公司、经纪公司、制造公司、研发公司、政府实体、学术机构、内容供应商和很多其它公共和私人实体。在某些应用中,网络存储被用来备份容宿在远程数据中心的用户数据或内容。这里使用的术语“数据”将包括一般所称的“内容”。数据例如可以是由金融机构(例如银行、信用卡公司或经纪公司)、因特网服务供应商、通信公司、航空公司或在私人或公共地区的任意其它实体(例如因特网税收服务)维护的用户账户和事务信息。本领域技术人员将意识到,可以包括很多其它类型的数据。
在某些这样的应用中,用户数据在网络上被保持连续同步。快速改变或易失性数据可在数据中心被连续复制。可替换地,在外部源存储容宿应用中,用户的网络设备可以访问用于主要数据存储的数据中心的存储设备。远程数据中心例如可以在同一城市中,或者在不同的地理区域中。所有上述应用(以及本领域技术人员公知的应用)可以通过实现本发明的方法来增强。
本发明提供了用于实现网络存储解决方案的改进方法和设备。具体而言,本发明定义了用于包含TOE的通信的新协议(这里有时称之为“卸载协议”)。卸载协议在用于与网络存储应用相关的通信时尤其有利。
在优选实现方式中,TOE提供FC架构上的TCP终止。TOE将终止到TCP之前和包括TCP的所有协议,并将执行与这些层相关联的处理。例如,TOE优选地提供TCP校验和处理、TCP重传等等。卸载协议保证传递并被封装在FCP格式的帧中。因此,TCP流被可靠地传递到主机。另外,使用该方案,卸载引擎可以在TCP流内提供对例如NAS协议的解析,以进一步协助主机。
本发明还提供了诸如主机、交换机和路由器之类的网络设备(及其组件),这些网络设备被配置用于至少部分地执行这里所述的方法。例如,在某些实现方式中,TOE被实现在网络设备的线路卡(即“刀片”)中,该“刀片”有时被称为“IPS刀片”。当本发明被用于实现网络存储(包括FC网络中的存储设备)时,网络设备还包括FC刀片。
本发明的优选实现方式涉及TOE和NAS设备之间的通信。在本发明的某些实施例中,NAS设备一侧的通信由包括IPS刀片的同一机架中的刀片(有时称之为“NSM刀片”)实现。例如,这两种刀片都被并入在本发明受让人制造的MDS机架中。在这样的实现方式中,NSM刀片将通用处理引擎与MDS光纤信道交换基础设施集成在一起。IPS刀片被用作用于NSM刀片上运行的软件(例如NAS软件)的TCP/UDP卸载处理器。到存储设备的连接可以通过现有的光线信道线路卡来提供。但是,在本发明的其它实施例中,NSM刀片是另一网络设备的一部分。
本发明还包含网络,设备可以通过所述网络工作,以执行本发明的某些方面。根据某些实现方式,中央组件是经由FC架构与卸载引擎通信的主机。卸载引擎具有对联网接口的访问权限。此外,本发明包括可以根据本发明的某些方面来实现的商业方法。
图1A是示出用于实现本发明某些方面的一种示例性网络配置的网络图。网络配置100包括NAS客户端105,其经由TCP/IP网络110与网络设备120的NAS设备125通信。在该示例中,NAS设备125是被配置用于实现本发明某些方面的服务器,如下面将详细描述的。如本领域技术人员所公知的,网络文件系统(“NFS”)应用协议或通用因特网文件系统(“CIFS”)应用协议都常用于与NAS设备的通信。NAS客户端105例如可以是由用户(例如上述用户之一)操作的设备,例如膝上型或桌上型计算机。
IPS刀片115提供网络设备120和TCP/IP网络110之间的接口,并且在该示例中,IPS刀片115包括根据本发明配置的卸载引擎。类似地,FC刀片130提供网络设备120和FC网络135之间的接口。因此,网络设备120是TCP/IP网络110和FC网络135之间的中介。因此,NAS设备125可以访问FC网络135的存储设备140,以为NAS客户端105提供网络存储服务。
NAS设备125处于与IPS刀片115和FC刀片130相同的机架内。在该示例中,网络设备120是由本发明的受让人生产的MDS 9000系列多层交换机。NAS设备125、IPS刀片115和FC刀片130经由内部FC网络互连。这些设备随后将更详细描述。
图1B示出用于实现本发明的替换网络配置150。在网络配置150中,NAS服务器170位于与网络设备165分离的机架中,该网络设备165包括卸载引擎168。在网络配置150中,NAS服务器170和存储设备180是FC网络175的一部分。网络设备165包括类似于刀片115和FC刀片130的FC和IP设备(未示出),用于提供与基于IP的网络160和FC网络175之间的接口。据此,NAS客户端155可以经由网络设备165访问基于IP网络160上的NAS服务器170。
图2是示出根据本发明某些实施例的IPS刀片200的某些特征的框图。在该示例中,IPS刀片200包括多个TOE 225,这里也称之为“卸载核心”或“卸载引擎”。每个卸载核心将在初始化过程期间被发现。在一个示例性实施例中,IPS刀片200是八端口以太网线路卡。存在其它四个处理器被用于提供以太网接口。每个处理器具有两个处理核心。这些核心被用于提供联网功能,例如TCP/IP、iSCSI和FCIP。
每个TOE 225包括一个FC接口205。IPS刀片200将使用卸载连接215与NAS设备210(运行NAS协议的服务器)通信。卸载连接类似于套接字型接口。因此,每个TCP连接将具有一个不同的卸载连接,包括任意监听者。管理消息和控制信息将通过FC接口205被发送。卸载核心将提供用于NAS设备210的TCP终止。
NSM、IPS和FC刀片可被划分在分别作为同一FC架构的一部分的多个互连的机架中。例如,NAS设备210可以与TOE 225位于同一机架中(例如如图1A所示)或位于别处(例如在FC网络上,如图1B所示)。
在本发明的很多实现方式中,NAS客户端将从IP网络访问NAS设备210。因此,每个TOE 225还包括以太网接口220和以太网驱动器235,用于与IP网络通信。卸载引擎将终止到TCP之前和包括TCP的所有协议。TCP/IP模块240执行与这些层相关的处理并且可以对TCP流提供解析以进一步辅助NAS设备。IPS刀片端口的某些实施例可被配置用于iSCSI、FCIP和TCP终止。模块245提供与管理任务相关的处理,例如创建卸载连接225和获取针对这些连接的统计量。
根据本发明的方法,在FCP之上将使用专门协议,以用于TOE 225和NAS设备210之间的通信。直接数据放置将被用来允许NAS设备210将套接字数据放置在本地存储器中的特定位置。该特征有益于NAS设备210的缓冲区缓存。在优选实施例中,TOE 225的一个或多个组件(例如TCP/IP模块240)执行以下功能TCP/IP卸载;TCP终止;TCP校验和;基于每个套接字处理数据的聚集;TCP重传;UDP卸载;和IP分段处理。
TOE 225辅助被发送到NAS服务器软件的NAS PDU的成帧过程。该特征有助于使数据在NAS设备210中的移动最小化。
图3指示IPS刀片200的某些示例性软件组件300。这些软件组件中的多数可以以与传统软件组件相同的方式工作。例如,以太网驱动器305和TCP/IP栈310可能具有本领域技术人员熟悉的类型。FCIP模块315可以根据本领域技术人员公知的方法提供FCIP封装/解封装,或者可以是本发明的受让人开发的专门软件。2003年1月23日递交的题为“MethodsAnd Devices For Transmitting Data Between Storage Area Networks”的美国专利申请No.10/351,167和No.10/350,574,据此通过参考并入这两个专利申请。FC接口320可以是用于处理例如低级FC成帧的传统接口。FCP目标340可以根据标准的FC协议实现方式来构建。
但是,NAS卸载335提供了根据本发明的新功能。NAS卸载335获取在TCP/IP流中接收的NAS PDU,并适当地使它们成帧,以形成发生在卸载引擎和NAS设备210之间的FCP请求。在FCP协议内存在“发起者”,其启动与“目标”之间的事务(即请求“目标”的操作)。根据本发明的新协议,卸载引擎将是FC目标。NAS设备210(例如NAS服务器)将发起到FCP目标340的事务。NAS卸载335接收NAS分组,对分组进行解析并适当地响应于这样的FCP请求。NAS卸载335将利用FCP协议在NAS设备210和IPS刀片200之间运载命令。对于在以太网接口中到达的数据而言,该过程更复杂。这些过程随后将更详细描述。
NAS设备210觉察到NAS卸载335(和FC目标340)是新的SCSI设备类型,这种新型SCSI设备的功能是在TCP/NAS到穿过FC网络的SCSI命令和数据之间建立一座桥。NAS卸载335根据由本发明的发明人开发的命令集(例如这里提出的命令集)执行该任务和其它任务。因此,IPS刀片200的优选实施例将能够被同时用于iSCSI、FCIP和NAS。当被用于NAS时,核心将为NAS设备210提供TCP终止功能。
图4示出根据本发明某些方面的示例性NSM刀片的某些组件。图4示出与IPS刀片200和监管器420位于同一机架401内的NSM刀片210。IPS刀片200包括根据本发明配置的TOE。NSM刀片210的主要组件是CPU 405、处理器模块410和机架连接模块415。虽然CPU 405和处理器模块410被配置用于执行本发明的方法,但是CPU 405和处理器模块410可能是分别如此配置的任意CPU和芯片组。例如,CPU 405可以是Pentium III微处理器并且处理器模块410可以包括一个或多个Xeon芯片组。
在以下段落中,将提出NSM刀片的各种功能及其与IPS刀片200和监管器420之间的相互影响。本领域技术人员将意识到,这里描述的功能的具体细节仅仅是示例性的,具有类似本质的很多其它功能也在本发明的范围内。
CPU 405将使用引导加载器进行引导,以从闪存加载模块镜像。在引导期间,处理器模块410将维持在复位中。CPU 405此时注册到监管器420。如果在注册期间发现镜像版本不匹配,则从监管器420下载CPU405的新固件,并且复位NSM刀片。如果版本匹配,处理器模块410复位线则在机架连接模块415被初始化并且处理器模块管理器425被启动之后被释放。
处理器模块410将根据存储在其闪存中的引导代码进行引导。在该示例性实施例中,处理器模块410具有集成驱动电子(“IDE”)盘,并且引导代码将从IDE盘加载先前的固件版本。当固件初始化时,处理器模块410启动与CPU 405的通信并注册到处理器模块管理器425。在该示例中,这些通信通过10/100以太网连接发生。在注册之后,处理器模块管理器425将立即证实处理器模块410的处理器正运行正确的版本。如果活动版本不正确,处理器则重新加载正确的版本。如果在IDE盘上没有找到正确的镜像版本,固件则将利用例如到CPU 405的10/100以太网连接启动镜像的下载。
在该示例中,NAS软件440的固件和配置数据将被存储在处理器模块410的IDE盘上。NAS软件440可以按照需要被升级。例如,升级可以经由内部以太网来执行。
在本发明的某些实施例中,用户可以经由监管器420的管理以太网端口430来配置NAS软件440。当机架401是MDS时,用户将使用MDS命令线路接口(“CLI”)的“附接”命令连接到在特定NSM刀片上运行的NAS CLI。附接命令在内部使用telnet通过内部以太网连接到适当的NSM刀片。telnet会话将被扩展到在处理器模块410上运行的NAS固件。
用于FC端口和SCSI发起者435的驱动器将利用处理器模块410上的NAS固件来加载。NAS固件将使用SCSI发起者435与在FC架构上可获得的设备通信。NAS固件还将用于与由IPS刀片200提供的TCP卸载能力通信。
现在将论述IPS刀片200和NSM刀片210之间的各种交互。当以太网接口被配置为NAS终止引擎时,将在启动期间为卸载连接分配附加的全球端口名(“WWPN”)。该WWPN将被用于卸载处理器和NSM刀片210之间的所有卸载连接。卸载处理器将WWPN安装到构架的名字服务器中。
NSM刀片210将表现得像任意架构用户一样,登录到架构并查询名字服务器来发现所有设备。卸载引擎将以这种方式被发现,并且随后可以对每个卸载处理器形成卸载连接。
NSM刀片210将启动到每个卸载引擎的卸载连接。在一个实施例中,每个卸载核心支持64K连接。但是,连接标识符的大小可被确定为(例如32位)允许所支持的连接的数目按需要增加。每个卸载连接可被认为是一个联网套接字。每个连接将由其连接标识符来唯一地标识。NAS软件还将被配置用于它将使用的IP地址。光纤信道接口(例如图2所示的光纤信道接口205)可被用来使用传输协议FCP传输消息。
但是,一个给定的卸载核心可能支持多个IP地址。可能存在多个IP地址被配置用于一个特定的以太网接口。VLAN可以被采用,其中每个VLAN接收其自己的IP地址。
在NAS软件从FC名字服务器发现卸载核心之后,它将打开到每个核心的卸载连接。使用管理原语,NAS软件将能够获取在每个核心处配置的所有IP地址。
卸载协议概述在优选实施例中,FCP信息单元将被用于运载卸载协议。本部分提供用于实现本发明的一个示例性协议的概述。本部分主要集中在FCP_CMND、FCP_DATA和FCP_RESP命令被如何用在MDS系统中。但是,本领域技术人员将意识到,这里论述的特定命令的变体处于本发明的范围内。
如上所述,将在卸载核心和NAS设备之间形成连接,所述NAS设备可以是一个分离的NAS服务器,也可以是处于同一机架中的NSM刀片。这些连接类似于套接字。每个连接将具有一个ProviderConnectionId和一个UserConnectionId。当连接被创建时,NAS设备将定义UserConnectionId,而卸载核心将定义ProviderConnectionId。在大多数情况下,发送到NAS设备的数据将包含UserConnectionId,而发送到卸载核心的数据将包含ProviderConnectionId。
FCP_CMNDFCP_CMND FCP_LUN将被设置为全零。
某些FCP_CMND FCP_CNTL字段将被允许。命令标号将被用于检测丢弃的帧,部分4.3在这方面提供了更多细节。任务代码必须是Simple_Q。除了Clear ACA之外,任务管理标志将被支持,其中ClearACA必须保持为0。执行管理代码将被用于指示数据传输的方向。
专门命令描述符块(“CDB”)构成协议的基础。在一种实现方式中,CDB具有16个字节,与FCP的标准一样,在CDB之后跟随有FCP_DL字段。
在一个示例中,FCP_CMND CDB的格式如下


OffioadClass可以被设置为MgmtClass、SocketClass、TcpClass或UdpClass。其中每一个将在随后的部分中描述。在优选实现方式中,OffioadClass值将与SCSI操作代码中所定义的群组代码全部一致。在某些这样的实现方式中,这将被用于指示我们的CDB的长度为16字节。
OffioadTimeout值被用于限制卸载引擎必须响应于命令的时间。零指示不存在与命令相关联的超时。该时间值以秒为单位来指定。
FCP_RESPFCP_RESP将被用来完成到发起者的命令,在本发明的优选实现方式中,发起者是NAS设备。FCP_STATUS中的有效性标志将与FCP_RESID一起被用来指示还有多少与命令有关的数据剩余。这些通常与数据路径流量一起使用。存在三种常用值。在第一实例中,FCP_RESID_UNDER和FCP_RESID_OVER都不设置并且FCP_RESID=0。这种组合指示命令被完全处理,所请求的数据被返回,并且没有可进一步获得的数据(FCP_DL是被发送的数据的量)。
第二组合是FCP_RESID_UNDER被设置并且FCP_RESID>0。该组合指示不是所有数据都可获得。FCP_RESID将被设置为没有与被请求的命令一起返回的数据量。换言之,这意味着FCP_DL大于实际返回的数据量。
在第三种情形中,FCP_RESID_OVER被设置并且FCP_RESID>0。这种组合指示所有数据都被返回,并且对于NAS设备来说,仍有附加的FCP_RESID数据量可被读取(FCP_DL对于可获得的数据量来说不够)。
SCSI状态字节的值将从SAM-2规范中获取。差错信息将在响应的读数据中提供。SCSI状态字节将被设置为CHECK CONDITION(0x02)并且供应商特定值将在ASC/ASCQ字节中定义差错。这些差错包括STATUS_INVALD_CONNECTION、STATUS_NVALID_PARAMETER等等。
发起者命令本部分定义了可由NAS设备向卸载引擎发布的命令。在正常情况下,没有命令应该超时。当请求无法被卸载引擎完成时,FCP_RESP将在NAS设备的命令超时值之前被生成。该状态将反映命令的状态。
在该实施例中,由NAS设备发起管理命令,并且通过将CDB中的OffloadClass字段设置为MgmtClass来标识管理命令。NAS设备将发起这样的FCP_CMND,其中CDB被设置为特定类型的管理请求。FCP_CMND将是一个读取请求,其长度基于响应被设置为期望的数据量。以下命令作为FCP读取数据命令被执行读取IP地址请求——该命令被NAS设备用来从卸载核心读出所有IP地址。FCP_DL将被设置为足够大的值,以读取卸载核心中的所有IP地址。
读取状态请求——该命令被NAS设备用来从卸载核心读出所有统计量。这些统计量将与特定的卸载连接相关。
套接字命令以下命令将被用于TCP和UDP连接两者。这些命令都是作为FCP读取数据命令来执行的SocketBind——该命令被NAS设备用来在卸载核心上建立连接。
SocketClose——SocketClose请求被用于关闭现有连接或防止创建新打开的监听者连接。
SocketStats——该命令被用于读取连接的所有统计量。
TCP命令TCP命令是通过将OffloadClass设置为TcpClass来标识的。这些命令被用于创建新连接、传输数据以及执行与TCP连接相关联的其它任务。除非另外指出,否则TCP命令都是作为FCP读取数据命令来执行的SocketConnect——该命令被NAS设备用于在卸载核心上建立连接。
SocketListen——该命令被用于等待连接到达监听者。即使已经建立了多个监听者,也可以使用单个SocketListen,因为当SYN分组被接收时,在响应中提供了SocketClientConnectionId。
SocketAccept——该命令被NAS设备用于响应于SocketListen在卸载核心上建立连接。
SocketNasPeek——SocketNasPeek是NAS设备用于从卸载引擎获取数据的起始点。它被用来请求来自当前没有被NAS设备“偷窥”到的任意TCP连接的经解析的NAS命令。一旦在连接上接收到数据,NAS头部就将与SocketNasPeek FCP_RESP一起被返回。在优选实现方式中,连接将以FIFO方式被处理。
SocketRead——该请求被用于读取来自特定连接的数据。当NAS设备已经知道在套接字上有多少数据时,该命令通常响应于SocketNasPeek被使用。该命令被用于从套接字读取数据并将数据放置在NAS设备上的指定位置中。
SocketWrite(FCP写数据)——该命令被用于将数据和NAS响应发送到TCP连接上的NAS客户端。所有数据都将被放置在连接中。
UDP命令UDP命令通过将OffioadClass设置为UdpClass来标识。这些命令被用来创建新连接、传输数据,以及执行与UDP连接相关联的其它任务。除非另外指定,否则这些命令都作为FCP读取数据命令被执行SocketNasPeek——该命令被用来等待将在UDP连接上到达的数据。即使已经建立多个连接,也可以使用单个SocketNasPeek,因为在接收分组时,在响应中提供了SocketClientConnectionId。
SocketRead——该请求被用于从特定连接读取数据。当NAS设备已经知道在套接字上有多少数据时,该命令通常是响应于SocketNasPeek被使用的。该命令被用来从套接字读取数据,以及将数据放置在NAS设备上的特定位置中。
SocketWrite(FCP写数据)——该命令被用于在UDP端口上发送数据。优选地,所有数据都将被放置在单个IP分组中。
NAS设备可能不按顺序读取UDP分组。最初,分组头部按顺序发送,但是NAS设备将可能按任意顺序读取分组的其余部分。如果需要,卸载引擎可以对来自同一源的分组进行排队,并一个接一个地传递分组。如果在这种情况下,RES_ID将反映活动分组剩余的数据量。
数据传输概述对于TCP和UDP两者,数据可以与适当的写命令一起发送。一个好的FCP_RESP让NSM知道数据被正确地发送。接收数据更复杂,因为在优选实现方式中,NAS设备是发起者,并且考虑到效率,使未决请求的数目保持最小是很重要的。TCP和UDP都将使用常用的“偷窥后读取”方法,如下面更详细描述的。
解析现在将参考图5来描述简化的数据传输过程500。在“卸载引擎”一侧的块指示卸载引擎通过IP网络从NAS客户端接收的数据和命令。
来自NAS设备的SocketNasPeek命令启动接收过程。SocketNasPeek希望获取与NAS请求相关的所有控制信息。通常,FCP_DL将被设置为一个值,该值足以获取最大的命令信息。卸载核心将解析接收流,并且优选地,将仅在SocketNasPeek响应510中返回头部信息。该头部将保持在套接字中。
在NAS写请求的情况下,NAS设备将随后在连接上发布SocketRead515,以获取与命令相关的数据。SocketRead 515优选地具有如下参数,该参数将允许在传输开始之前从流中卸下指定量的数据(SocketRead响应520)。该机制防止头部被传输多次。
因此,当多个命令处在特定连接的接收缓冲区中时,它们可以与单个SocketNasPeek响应一起被传递到NAS设备。在该实现方式中,响应受SocketNasPeek FCP_DL值的大小(没有部分命令将被传递到NAS设备)或NAS写命令的出现所限制。
数据获取下面将参考图6来描述示例性的数据获取过程。图6指示数据获取过程和相关过程期间卸载引擎的各种状态。
利用TCP,SocketNasPeek 605被NAS设备所发布。任意多个SocketNasPeek可被同时发布,因为它们可以从任何套接字接收数据。当在TCP连接上接收到数据时,SocketNasPeek将在来自卸载核心的FCP_DATA和FCP_RESP序列(610)中返回UserConnectionId以及被请求的数据。
如果最后一个NAS命令是写命令(615),该连接则随后移动到“等待SocketRead”状态620。随后该连接将经由一系列SocketRead 625被读取。带有新命令标号的SocketRead还充当对在前一读取上发送的数据的确认,并且将允许卸载引擎释放被确认的数据。在NAS写的情况下,SocketRead在从客户端传递了所有数据之前可能超时。当这种情况发生时,将指示欠载运行(under-run),并且NAS设备必须生成另一SocketRead来收集写数据的其余部分。
如果最后一个命令是任意的其它命令,该连接则停止,直到数据被NSM确认为止。因此,将移动到“等待Peek Ack”状态630。随后的SocketNasPeek命令将提供对在上一SocketNasPeek FCP_RESP中传递的数据的确认。
UDP使用非常类似的机制。针对每个监听者存在一个连接。当接收到UDP分组时,某些或全部数据响应于SocketNasPeek被传递。SocketNasPeek响应具有一个头部,该头部位于将标识远程客户端的这些数据、监听者连接id和将被用于读取分组的其余部分的标签之前。与TCP一样,UDP分组的其余部分随后将使用一个或多个SocketRead来读取。
对于TCP和UDP两者,所有NAS头部与一个SocketNasPeek的FCP_RESP一起被传递到NAS设备。随后的SocketNasPeek优选地还捎带确认,因此接收的数据可以被释放。在NAS写命令的情况下,数据的其余部分使用一个或多个SocketRead被读取,最终最后一个数据以长度为零的SocketRead来确认。
保障传递卸载命令将通过FC第3类来发送。因此,帧在没有更低层恢复的情况下被丢弃是可能的。但是,因为这一般将穿过内部交换机,因此这种帧丢弃应该是很罕见的。
一种处理丢弃的帧的方法是检测丢失的帧并简单地丢弃连接,以及让客户端重新连接并重新发布它们的请求。可替换地,卸载协议可以恢复和重新发布命令。
检测丢失的帧的关键将是FCP_CNTL命令标号和计时器。在某些实现方式中,命令标号将在以下类别中循环(a)每个TCP连接;(b)每个UDP监听者;(c)管理命令;(d)TCP SocketNasPeek和SocketListen;以及(e)UDP SocketNasPeek。在一种这样的实现方式中,命令标号字段的宽度为8位。
图7示出所有可能的阶段,其中当使用该示例性实现方式时,数据帧可能丢失。如图7所示,当FCP_CMD(读数据)命令被发送到卸载引擎时(情况1),当FCP_CMD(写数据)命令被发送到卸载引擎时(情况4),或者当FCP_DATA命令被发送到卸载引擎时(情况5),帧可能被丢弃。当FCP_DATA命令被发送到NAS设备时(情况2)或者当FCP_RESP命令被发送到NAS设备时(情况3和6),帧也可能被丢弃。
下表指示针对本发明的一个示例性实现方式,对于每个命令参考类别和“丢失帧”的情况,丢失帧状况中的每一种是如何被处理的。

状况“A”是命令超时,其中NAS设备将发布中止任务命令,并且一旦中止结束,就重新发布命令(以相同的命令标号)。状况“B”是命令超时,其中NAS设备将发布中止任务命令并发布新命令(以新的命令标号)。
在状况“C”到“F”中,命令包括丢失数据。对于状况“C”,NAS设备的FCP发起者的命令完成状态(与FCP_RESP一道)将指示卸载引擎发送了比NAS设备实际接收的更多的数据。NAS设备将丢弃所有接收的数据,并以相同的命令标号重新发布命令。对于状况“D”,NAS设备将以新的命令标号重新发布命令。
状况“E”指示NAS设备无法检测哪个连接接收数据。由于在正常情况下,SocketNasPeek不会超时,因此命令将被中止并以新的命令标号被发布。中止将触发卸载引擎在另一SocketNasPeek上返回数据。在状况“F”中,FCP_RESP将指示被传输的数据量。由于数据可能已经被转发出以太网接口,因此NAS设备将从正确的位置开始发布新的写命令。
状况“G”指示命令超时。这里,NAS设备将发布中止任务,并且一旦中止任务结束,就以同样的命令标号重新发布命令。卸载核心随后将丢弃所有数据并返回好的FCP_RESP。
如果通信完全失败,IPS刀片则将不会接收任何新命令。在优选实现方式中,超时将发生,这将丢弃所有连接并丢弃接收的数据。NAS设备优选地具有类似的计时器。
FCP封装示例FCP协议将优选地被用于执行从卸载处理器到NAS设备上的数据缓存的直接数据放置。上述定制CDB被封装在FCP内,以执行卸载/NAS交互。该部分定义了根据本发明某些实现方式,FCP命令如何被一起用于在NAS设备上执行直接数据放置。
TCP示例NAS设备将充当发起者并且卸载处理器将是目标。NAS设备将发起固定数目的SocketNasPeek,这些命令将被挂起,直到通过任何现有套接字接收到数据为止。被请求的数据长度将被设置为典型的头部数据量加上足以覆盖选择响应头部的量。在选择上返回的FCP_DATA将具有响应头部(其至少包括连接标识符),后面跟着典型的头部数据量。所产生的FCP_RESP将被用来指示实际传输的数据量和有多少数据保留在套接字中。
以上过程描述了NAS命令是如何被接收的。在NAS写上的数据将以与其被从SCSI盘中读取时相同的方式被放置到缓冲区缓存中。选择过程赋予NAS设备关于哪个连接具有数据的知识以及NAS命令。随后的SocketRead将与关于在何处放置数据的细节一道被提供给NAS设备的FC驱动器。
对NAS读取的响应仅仅是一个SocketWrite。SocketWrite包含将被推入卸载连接的所有数据,包括任意NAS头部及其相关数据。
作为优化,FCP_RESP总是包含套接字中剩余数据的总量。当在当前命令完成之前接收到后一NAS命令时,这将触发NAS设备发布用于所选套接字的新的SocketRead。没有原因使用与SocketNasPeek相关联的附加开销。此外,如果有多个命令被堆叠在套接字中,NAS设备则可以将针对特定响应的数据直接放置到数据缓存中,同时针对下一命令的头部被读到不同的控制结构中,从而加速下一命令的发布。
在图8中描述了一种这样的多命令情形。在该示例中,卸载引擎中的数据的所有组成在几乎相同的时间到达(来自NAS客户端穿过IP网络)。这些组成可以是71字节的NAS写头部802、32K NAS写数据816、66字节的NAS读头部826、71字节NAS写头部836和32K NAS写数据840。在该示例中,NAS读和NAS写头部被分开发送。但是,在替换实现方式中,NAS读和NAS写头部可以一起发送(如图5所示)。
这里,NAS设备通过向卸载引擎发送SocketNasPeek命令804来发起过程800。卸载引擎已经解析了数据组成并发送了响应806,其指示其连接ID和数据组成802的NAS写头部。NAS写头部被放置在NAS设备的控制结构808中。写头部指示有32K写数据到达,并且在NAS设备的缓冲区缓存820中分配了空间。
卸载引擎还发送响应810,其指示卸载引擎中三个头部组成的大小(71+66+71)以及数据总量(64K)。此时,NAS设备发送另一不带Ack的SocketNasPeek命令812,在任意给定时间,大量SocketNasPeek命令可能都是未决的。通过发送该命令,NAS设备本质上正在邀请另一卸载引擎指示它可能必须发送的数据。
然后,NAS设备发送SocketRead命令814,该命令指定将从卸载引擎发送到NAS设备的NAS写数据816并指导卸载引擎丢弃或清除组成802(“丢弃=71”)。此时,卸载引擎清除组成802。卸载引擎发送数据(818),并且NAS设备将这些数据放置在缓冲区的指定部分。卸载引擎随后发送响应822,该响应指示将被发送的剩余数据。NAS设备发送命令824,该命令是指示由卸载引擎发送的数据的成功接收的“Ack”。此时,卸载引擎清除组成816。卸载引擎随后发送响应828,该响应指示将被发送的剩余数据。
在响应830中,卸载引擎发送组成826的NAS读取头部。NAS读取头部被放置在NAS设备的控制结构808中。卸载引擎发送响应834,该响应指示将被发送的剩余数据。NAS设备发送带有Ack的SocketNasPeek命令838,以及丢弃组成826的指令。卸载引擎遵从执行。然后NAS设备发送SocketWrite命令842,该命令指示将被写入的数据的大小和数据将被写入的卸载引擎ID。NAS设备随后向卸载引擎发送数据(844)。
在传输848中,卸载引擎发送组成836的NAS写头部。卸载引擎NAS设备在其缓冲区中准备用于写数据840的空间。然后卸载引擎发送响应850,该响应指示卸载引擎的缓冲区中的剩余数据。NAS设备发送另一SocketNasPeek命令(852),然后发送指向NAS写数据840的SocketRead命令854。卸载引擎在传输856中发送NAS写数据840并且NAS设备将这些数据写入其缓冲区缓存的指定部分。然后卸载引擎发送响应858,该响应指示所有数据已被发送。在从NAS设备接收到Ack之后(860),卸载引擎清除组成840,然后发送响应862,该响应指示不存在另外的待发送数据。
图9是指示驻留在NAS设备上的某些组件的简化框图,无论NAS设备是分离的NAS服务器,还是在与卸载引擎同一机架上的NSM刀片都可能有这些组件。NAS设备包括FC发起者,并且使用其与卸载处理器和SCSI设备通信。卸载I/F 910被建立得与SCSI接口915非常类似。它接受读取请求以及关于将数据放置在缓冲区缓存920中何处的指示。
如上所述,该过程开始于SocketNasPeek,其用于获取NAS命令的头部信息。一旦已经解析了头部并解释了命令,SocketRead或SocketWrite就可以开始。在NAS写的情况下,SocketRead将针对客户端写入的数据的长度来确定格式。数据的目的地和长度将在为FC驱动器905建立的请求中指定。
假设正被写入的数据将跨越三个数据缓存条目,图10示出如何针对FC请求建立数据描述符。对于第一数据缓存条目1005,数据描述符指示长度和地址,该地址指示从何处开始写入数据。在该示例中,地址是数据缓存条目1005中的偏移量。对于下一数据缓存条目1010,数据描述符指示长度(数据缓存条目1010的长度)和地址,该地址是数据缓存条目1010的开始地址。对于第三数据缓存条目1015,数据描述符指示长度(数据缓存条目1015的大小减去将不要求写入数据的剩余部分的量)和地址,该地址是数据缓存条目1015的开始地址。因此,不管用于向NAS设备传递NAS数据的FCP DATA帧的数目是多少,NAS数据都被直接放置到数据缓存中。
UDP示例UDP像TCP一样工作。SocketNasPeek命令被用来获取命令的头部。然后,SocketRead被用于将数据直接放置在NSM存储器中。
由于信息和程序指令可被用来实现这里描述的系统/方法,因此本发明涉及包括程序指令、状态信息等的机器可读介质,用于执行这里描述的各种操作。机器可读介质的示例包括(但不局限于)磁介质,例如硬盘、软盘和磁带;光介质,例如CD-ROM盘;磁光介质;和特别配置用于存储和执行程序指令的硬件设备,例如只读存储器器件(ROM)和随机访问存储器(RAM)。本发明还可以包含在通过诸如无线电波、光线路、电线路等适当的介质行进的载波中。程序指令的示例包括机器代码(例如由编译器产生的机器代码)和包含高级代码的文件,所述高级代码可以由使用解释器的计算机执行。
上述设备和材料是计算机硬件和软件领域的技术人员所熟悉的。虽然为了方便以单数形式描述了很多组件和过程,但是本领域技术人员将意识到,多个组件和重复过程也可被用于实现本发明的技术。
虽然已经参考特定实施例示出和描述了本发明,但是本领域技术人员将会理解,在不脱离本发明的精神或范围的情况下,可以在形式和细节上对所公开的实施例进行修改。例如,本发明的实施例可以被用于各种体系结构。
本发明的替换实施例甚至可以为NAS设备提供更高的卸载和编程效率。例如,卸载引擎可能对任意类型的NAS协议提供解析辅助;卸载引擎可以对NAS数据提供附加的数据完整性校验,例如MD5或CRC机制;并且缓冲区缓存本身可以被移到卸载引擎中,以使数据不被移到NSM设备125中,而是经由115内的卸载引擎在存储设备140和NAS客户端105之间直接移动。
因此,本发明希望被解释为包括落入本发明的真实精神和范围内的所有变体和等同物。
权利要求
1.一种用于实现网络存储的方法,该方法包括存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息;解析所述被存储的信息;以及将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备。
2.如权利要求1所述的方法,还包括在所述FC网络上终止到传输控制协议(TCP)之前并且包括TCP协议在内的所有协议。
3.如权利要求1所述的方法,其中所述发送步骤是响应于来自所述NAS设备的查询而被执行的。
4.如权利要求1所述的方法,其中所述结果包括NAS头部信息。
5.如权利要求1所述的方法,其中所述发送步骤还包括发送连接标识信息。
6.如权利要求1所述的方法,其中所述解析步骤包括解析所述被存储的信息的NAS协议。
7.如权利要求1所述的方法,还包括根据所述结果分配所述NAS设备的存储器空间。
8.如权利要求1所述的方法,还包括对从所述NAS客户端或所述NAS设备接收的数据执行数据完整性校验。
9.如权利要求7所述的方法,还包括将由所述结果描述的数据发送到所述NAS设备;以及将所述被发送的数据存储在所述被分配的存储器空间中。
10.如权利要求9所述的方法,其中所述被发送的数据是从所述FC网络上的存储设备发送的。
11.如权利要求9所述的方法,其中所述被发送的数据是从所述NAS客户端发送的。
12.一种用于实现网络存储的方法,该方法包括存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的数据读取请求,所述数据读取请求指向被存储在光纤信道(FC)网络上的存储设备中的数据;解析所述被存储的信息;以及分配执行所述解析步骤的卸载引擎的存储器空间,所述分配步骤是根据所述解析步骤的结果来执行的。
13.如权利要求12所述的方法,还包括直接从所述存储设备接收响应于所述数据读取请求的数据;以及将所述响应的数据存储在所述被分配的存储器空间中。
14.一种用于实现网络存储的方法,该方法包括在因特网协议(IP)网络上的网络附接存储(NAS)客户端和光纤信道(FC)网络上的NAS设备之间提供接口;以及在所述FC网络上终止到传输控制协议(TCP)之前并且包括TCP协议在内的所有协议。
15.一种线路卡,包括光纤信道(FC)接口;以太网接口;存储器;以及卸载引擎,该卸载引擎被配置用于存储经由所述以太网接口从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息;解析所述被存储的信息;以及经由所述FC接口将来自所述解析步骤的结果发送到光纤信道网络上的NAS设备。
16.如权利要求15所述的线路卡,其中所述卸载引擎响应于来自所述NAS设备的查询而发送所述结果。
17.如权利要求15所述的线路卡,其中所述结果包括NAS头部信息。
18.如权利要求15所述的线路卡,其中所述卸载引擎还被配置用于利用所述解析步骤的结果发送连接标识信息。
19.如权利要求15所述的线路卡,其中所述卸载引擎解析所述被存储的信息的NAS协议。
20.如权利要求15所述的线路卡,其中所述卸载引擎还被配置用于对从所述NAS客户端或所述NAS设备接收的数据执行数据完整性校验。
21.一种包括如权利要求15所述的线路卡的网络设备。
22.一种包括如权利要求15所述的线路卡和NAS设备的计算机网络。
23.如权利要求21所述的网络设备,还包括所述NAS设备。
24.一种网络附接存储(NAS)设备,包括光纤信道(FC)接口;存储器;以及一个或多个处理器,所述处理器被配置用于根据经由所述FC接口从传输控制协议(TCP)卸载引擎接收的NAS头部信息来分配所述存储器中的空间,所述头部信息对应于来自因特网协议(IP)网络上的NAS客户端的命令。
25.一种传输控制协议(TCP)卸载引擎,包括用于存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息的装置;用于解析所述被存储的信息的装置;以及用于将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备的装置。
26.如权利要求25所述的TCP卸载引擎,还包括用于在所述FC网络上终止到传输控制协议(TCP)之前并且包括TCP协议在内的所有协议的装置。
27.如权利要求25所述的TCP卸载引擎,其中所述发送装置响应于来自所述NAS设备查询来发送所述结果。
28.如权利要求25所述的TCP卸载引擎,还包括用于对从所述NAS客户端或所述NAS设备接收的数据执行数据完整性校验的装置。
29.一种存储在机器可读介质上的计算机程序,该计算机程序包括用于控制传输控制协议(TCP)卸载引擎来执行以下步骤的指令存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的信息;解析所述被存储的信息;以及将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备。
30.如权利要求29所述的计算机程序,还包括用于控制所述TCP卸载引擎来在所述FC网络上终止到TCP协议之前并且包括TCP协议在内的所有协议的指令。
31.如权利要求29所述的计算机程序,其中所述指令控制所述TCP卸载引擎响应于来自所述NAS设备查询来发送所述结果。
32.如权利要求29所述的计算机程序,还包括用于控制所述TCP卸载引擎来对从所述NAS客户端或所述NAS设备接收的数据执行数据完整性校验的指令。
33.一种用于向用户可靠地提供账户信息的方法,该方法包括存储从因特网协议(IP)网络上的网络附接存储(NAS)客户端接收的对账户信息的请求;解析所述被存储的请求;将来自所述解析步骤的结果发送到光纤信道(FC)网络上的NAS设备;根据所述结果分配所述NAS设备的存储器中的空间;从所述FC网络上的存储设备获取所述被请求的账户信息;以及在所述被分配的存储器空间中存储所述被请求的账户信息。
全文摘要
本发明定义了一种用于与卸载引擎通信的新协议,所述卸载引擎提供了光纤信道(“FC”)架构上传输控制协议(“TCP”)的终止。卸载引擎终止到TCP之前并且包括TCP的所有协议,并且执行与这些层相关的处理。卸载协议确保传递并被封装在FCP格式的帧中。因此,TCP流被可靠地传递到主机。另外,使用该方案,卸载引擎可以提供对TCP流的解析以进一步辅助主机。本发明还提供了被配置用于执行前述方法的网络设备(及其组件)。本发明还定义了网络附接存储(“NAS”)协议数据单元(“PDU”)是如何被解析和传递的。
文档编号H04J3/16GK1954527SQ200580004483
公开日2007年4月25日 申请日期2005年2月16日 优先权日2004年2月27日
发明者蒂莫西·库伊克, 大卫·汤普森, 斯蒂芬·德古特, 马拉里·巴萨瓦埃赫, 阿南德·帕塔塞拉斯 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1