在计算机网络中接收包的方法和系统的制作方法

文档序号:7958912阅读:162来源:国知局
专利名称:在计算机网络中接收包的方法和系统的制作方法
技术领域
本发明涉及计算机网络,并且更具体地涉及用于提供若干以太网端口以及绕回(wrap)传输流的方法和系统。
背景技术
图1示出了用于在计算机网络中接收包的传统系统10。传统系统10包括(一个或多个)接收端口12、调度器14和处理器16。将从(一个或多个)端口12接收的包提供给调度器14。端口12可以是单个高速端口,诸如每秒10吉比特的端口,或是多个低速端口,例如双个每秒1吉比特的端口。调度器14使用试探法确定将来自哪个端口的哪些包提供给处理器16。处理器16对这些包执行所希望的处理。
虽然传统系统可以工作,但本领域的普通技术人员容易认识到其存在缺点。为了向该系统中不同的应用提供包,包被传输回网络,然后由传统系统10接收回来。因此可能引入延迟。此外,收到的通信流,包括传输回网络的包,不由该传统系统10调节。结果,收到的包可能被丢弃,这不是所希望的。
因此,需要一种用于处理多个应用以及多个低速流或单个高速流的通信流的更有效的方法和系统。本发明解决这种需求。

发明内容
本发明提供了一种用于在计算机网络中接收包的方法和系统。该方法和系统包括提供至少一个接收端口、缓冲器、调度器和绕回端口。该缓冲器具有输入和输出,该输入与所述至少一个接收端口连接。该调度器具有第一输入、第二输入和输出,第一输入与所述缓冲器的输出连接,第二输入与所述绕回端口连接。
根据公开于此的方法和系统,本发明可提高网络中包的传输效率。


图1是用于执行包头部查找的传统系统的示意图;图2是根据本发明的服务器系统的方框图;图3是根据本发明的主机以太网适配器的一个实施例的简单方框图;图4是根据本发明的带有MAC和Serdes层的更详细视图的主机以太网适配器的一个实施例的方框图;图5示出了根据本发明的RxNet的一个实施例的组件和数据流;图6示出了根据本发明的TxEnet的一个实施例的组件和数据流;图7是根据本发明的带有包加速和虚拟化层的更详细视图的主机以太网适配器的一个实施例的方框图;图8示出了根据本发明的RxAccel单元的一个实施例;图9示出了根据本发明的TxAccel单元的一个实施例;图10是根据本发明的带有主机接口层的更详细视图的主机以太网适配器的一个实施例的方框图;图11是根据本发明的带有接收包时所使用的组件的更详细视图的主机以太网适配器的一个实施例的方框图;图12是根据本发明的主机以太网适配器的一个实施例的方框图,其带有接收单个每秒10吉比特的接收端口的包时所使用的组件的更详细的视图;图13是根据本发明的主机以太网适配器的一个实施例的方框图,其带有接收双个每秒1吉比特的接收端口的包时所使用的组件的更详细的视图;图14是说明根据本发明的用于接收包的方法的一个实施例的流程图。
具体实施例方式
本发明涉及计算机网络。给出下面的描述以使本领域的普通技术人员能够实现和使用本发明,并且该描述是在专利申请和其要求的情境中提供的。对此处描述的优选实施例和一般原理和特征的各种修改对本领域的技术人员将是显而易见的。因此,本发明并非旨在限于给出的实施例,而是被给予与此处描述的原理和特征一致的最宽范围。
本发明提供了用于在计算机网络中接收包的方法和系统。该方法和系统包括提供至少一个接收端口、缓冲器、调度器和绕回端口。缓冲器具有输入和输出,该输入与所述至少一个接收端口连接。调度器具有第一输入、第二输入和输出,第一输入与所述缓冲器的输出连接,第二输入与所述绕回端口连接。
将根据一特定计算机系统描述本发明。然而,本领域的普通技术人员将容易理解,可将根据本发明的方法和系统结合到具有不同和/或其他组件的另一计算机系统内。
图2是根据本发明的服务器系统100的方框图。服务器系统100包括连接在存储器104和接口适配器芯片106之间的处理器102。接口适配器芯片106包括到处理器102的私有(Gx)总线的接口108和主机以太网适配器(HEA)110。HEA 110从处理器102接收信号和向处理器102传输信号。
HEA 110是集成的以太网适配器。提供了一组加速器特征,从而当需要时并且按照需要在服务器内的TCP/IP栈使用这些特征。通过绕开PCI总线,并且提供使能多路分解和多重排队以及包头部分离的接口技术,简化了处理器102和接口适配器芯片106之间的接口。这样做,提供了这样的以太网适配器,其虑及用于高速系统的改进的功能,而同时虑及与遗留服务器环境的兼容性。下面说明该改进的功能的某些关键特征。
加速功能HEA 110支持先进的加速功能。一个重要的观察是当前的加速功能在传输侧工作得很好(例如,从处理器传输包),但是在接收侧工作得不是很好(例如,通过适配器接收包)。HEA 110通过引入新的特征诸如包多路分解和多重排队以及头部分离解决这种差距。
所有的HEA 110新特征都是可选择的;如果需要并且当需要时,由TCP/IP栈决定利用它们。例如,基本(vanilla)TCP/IP栈可以使用HEA 110而不使用按连接排队特征,并且仍然利用HEA的其他特征,诸如吞吐量、低延迟和虚拟化支持。
包多路分解和多重排队多重排队和多路分解是支持诸如虚拟化、按连接排队和OS绕开等功能的关键特征。HEA多路分解使用队列对、完成队列和事件队列的概念。添加了增强以更好地解决OS协议栈需求以及短包延迟缩减。
根据系统需求和配置,HEA可以基于以下各项多路分解进入的包-目的MAC地址(每个分区通常有一个MAC地址和一个默认队列)-用于已建立的连接的连接标识符(协议、源IP地址、目的IP地址、源端口、目的端口)。
-用于TCP连接建立包(SYN)的目的端口以及可选地目的IP地址。
包头部分离HEA可选择地能够将TCP/IP头部从数据有效载荷分离开。该特征允许将头部引导到协议栈以便处理而不会污染由应用记入的接收缓冲器。该特征是使能进行零复制(zero copy)操作所需的组件。
增强的特征该服务器环境中的HEA 110提供了许多增强的特征。下面列出了这些特征中的一些。
(a)多个接收队列扩展了队列对的概念以支持每对多于一个接收队列。这使得所述栈能够更好地管理其缓冲池存储器。例如,可以给小包分配一个队列,给中等的包分配一个队列,并且给大包分配一个队列。HEA将根据接收的包的大小选择特别的队列。
(b)低延迟队列在传输侧,描述符(WQE)可以包含立即数,在这种情况下没有间接性,即,不需要从系统存储器的另外的DMA以得到要发送的数据。在接收侧,低延迟队列不提供缓冲器,而是接收立即包数据。HEA对接收队列写而不是读。短包利用这种特征从而导致DMA操作的极大减少每个包一个单个DMA写,而不是每个包一个DMA读和一个DMA写。
(c)接收低延迟队列还用于支持包头部分离将头部写到该低延迟队列,而将有效载荷DMA到特别的接收队列中指出的缓冲器。
总之,多路分解和多重排队、地址转换和包头部分离是虚拟化的基本构件并提供了操作中的低延迟。此外,应当注意这些特征还可以用于改进传统的OS协议栈性能,例如,按连接排队允许消除代码并且更重要地存储器访问以及有关的拖延(stall)/高速缓存污染,所述代码和存储器访问是在系统存储器内定位TCP连接控制块(TCB)时消耗的。
为了更详细地描述HEA 110的特征,现在结合附图参考下面的说明。
图3是根据本发明的HEA 110的简化方框图。如图所示,HEA 110具有三层体系结构。第一层包括媒体访问控制器(MAC)和串行化/解串行化(Serdes)层202,其提供来自以太网上其他设备和到以太网上其他设备的多个接口。在层202,使用相同的芯片I/O提供多个接口。例如,在优选实施例中,使用相同的芯片I/O提供10吉比特接口或1吉比特接口。
第二层包括包加速和虚拟化层204。层204提供接收包和多路分解包流以便使能虚拟化。层204基于这些包使能服务器的操作系统的虚拟化或分区。层204还提供包头部分离以使能零复制操作。还因为层204通过主机接口层206直接与私有总线(Gx)交互,所以提供了低延迟、高带宽的连接。
第三层包括主机接口层206。主机接口层206提供到处理器的Gx或私有总线的接口。层206提供每个队列对(QP)多个接收子队列以使能TCP栈的有效缓冲器管理。主机层206提供用于给定数据包流的上下文管理。
为了更详细地描述HEA 110的每个层202、204和206的特征,现在结合附图参考下面的说明。
MAC和Serdes层202图4是带有MAC和Serdes层202的更详细视图的HEA 110的方框图。如该实施例中所见,有一个10吉比特MAC 302和2个1吉比特MAC 304a到304b。MAC 302、304a和304b包括模拟编码单元308a、308b和308c,用于对接收到的包进行对齐和编码。MAC 302、304a和304b连接到高速串行化器/解串行化(HSS)306。HSS 306能够从1个10吉比特源或2个1吉比特源接收数据。
RxNet概述本节示出层202内的接收以太网功能的高层结构和通过该功能的流。如下面更详细解释的,Rx加速器单元400是包加速和虚拟化层204的一部分。
图5示出了一个RxNet的组件和数据流。数据到达XAUI接口302,并且由HSS304、模拟编码单元308a和308b以及MAC处理,在该实施例中MAC组装和对齐64位(10G)或32位(1G)并行数据总线中的包数据。还产生指示帧的开始和结束以及其他包信息的控制信号。数据和控制穿过RxAccel单元400,该单元执行分析、过滤、校验和以及查找功能以准备由层206的接收包处理器(RPP)进行处理(图2)。在该实施例中,在数据进入RxAccel单元400时,将时钟转换为4.6ns时钟,并且将数据宽度转换为128b。
当数据经过RxAccel单元400流向VLIM数据缓冲器时,RxAccel单元400探听所述控制和数据并且开始其处理。数据流在RxAccel单元400内被延迟,从而将RxAccel单元400的结果与包的结尾同步。此时,将RxAccel单元400的结果与来自MAC的某些原始控制信息一起传递给VLIM命令队列。将这种控制信息与所述数据一起存储在VLIM内。
如果RxAccel单元400没有缓存查找条目,它可能需要通过GX总线接口去到主存储器。GX总线以4.6ns操作。VLIM可以异步地从RxAccel单元400读队列对解析信息。
TxEnet概述本节提供对以太网和加速功能的传输结构和通过以太网和加速功能的流的概述。如下面将更详细解释的,Tx加速器单元500是包加速和虚拟化层204的一部分。
图6示出了一个TxEnet的组件和数据流。包数据和控制从HEA 110的Enop组件到达。Tx加速器(TxAccel)单元500解释该控制信息,并且修改包头部内的字段。它基于控制信息或该包头部内的信息做出绕回还是端口的决定。它还产生用于TxMAC 302和304的适当的控制。数据流在TxAccel单元500内被延迟,从而在数据流到MAC 302和304之前TxAccel单元500可以更新包头部。在TxEnet的出口处,将数据宽度从128位转换为64位(10G)或32位(1G)。数据和控制经过TxAccel单元500内的时钟转换功能以便进入MAC 302的不同的时钟域(clock domain)。MAC 302和304、模拟转换器508a和508b以及HSS 306为以太网XAUI接口对包进行格式化。
包加速和虚拟化层204图7是具有包加速和虚拟化层204的更详细视图的HEA 110的方框图。HEA层204包括接收加速(RxAccel)单元400和传输加速(TxAccel)单元500。RxAccel单元400包括接收主干(RBB)402、分析器过滤器校验和单元(PFC)404、查找引擎(LUE)406和MIB数据库408。TxAccel单元500包括传输主干502、查找检查504和MIB引擎506。下面将更详细地描述Rx加速单元400和Tx加速单元500的操作。
接收加速(Rx)单元400图8示出了由接收主干(RBB)402、分析器、过滤器和校验和单元(PFC)404、本地查找单元(LLU)406、远程查找单元(RLU)408和MIB数据库410组成的RxAccel单元400。
数据不经改变地从RxMAC流过RxAccel。RBB 402管理数据的流,并且负责时钟和数据总线宽度转换功能。PFC 404使用从RxMAC接收的控制和数据执行加速功能以及做出丢弃决定。PFC 404将从帧中提取的控制和数据-包括5元组关键字-传递到LLU 406以便解析RBB 402的队列对号(QPN)。LLU 406或是立即寻找QPN或是分配一高速缓存条目以便预留位置。如果当前关键字不在高速缓存内,则LLU 406在主存储器中搜索该关键字。PFC 404与MIB数据库410接口连接以存储包统计。
Tx加速500本节描述传输加速单元500(TxAccel)的高层结构和通过该单元的流。
图9示出了由两个传输主干(XBB)502a和502b、两个传输校验和单元(XCS)504a和504b、两个传输MIB 506a和506b、一个绕回单元(WRP)508和一个暂停单元(PAU)逻辑510组成的TxAccel单元500。数据从Enop流过TxAccel,并被修改以调整IP和TCP校验和字段。XBB 502a和502b管理数据的流,并且负责时钟和数据总线宽度转换功能。XCS 504a和504b使用从ENop接收的控制和数据执行校验和功能。在由MAC传输(或丢弃)该包后,传输状态返回到TxAccel以便记帐。XBB502将该信息转换到TxAccel的时钟域。将状态信息与XCS 504从该包获得的原始信息合并,并且传递给MIB计数器逻辑506a和506b。MIB逻辑506a和506b更新MIB阵列内适当的计数器。绕回单元(WRP)508负责将XCS 504a和504b已确定要绕回的包传输到接收侧。暂停单元(PAU)510基于接收缓冲器的占用率命令MAC传输暂停帧。
主机接口层206图10是具有主机接口层206的更详细视图的HEA 110的方框图。主机接口层206包括用于从层204接收包和向层204提供包的输入和输出缓冲器602和604。层206包括用于适当地处理输入缓冲器内的包的接收包处理器(RPP)606。上下文管理机构908提供每一队列的多个子队列,以使能TCP栈的有效的缓冲器管理。
多路分解功能层204的Rx单元400与主机接口层206的组件一起将包提供给处理器的适当部分。因此,必须对接收到的包多路分解以便确保它们流向服务器的适当部分。
为了描述这种多路分解功能的细节,现在结合图8和图9参考下面的说明。
HEA适配器上的多路分解实现在接收包处理器(RPP)606可以对接收到的包进行操作之前,必须检索队列对上下文。QP连接管理器使用QP号进行这种操作。因为QP号没有在TCP/IP包中被传输,必须以其他方法确定它。有两个一般的QP类别,即接连接的QP和默认QP。
按连接的QP旨在用于长期连接,其中不期望IP包的分段(fragmentation),并且期望低延迟。它们要求该应用利用支持由HEA 110提供的用户空间排队机制的用户空间套接字库。必须首先使用目的MAC地址寻找逻辑端口。对于按连接的QP存在三种类型的查找1.针对特定目的IP地址和目的TCP端口的新TCP连接。如果该包是TCP SYN包,则基于TCP/IP(DA、DP、逻辑端口)执行查找。
2.仅针对特定目的TCP端口的新TCP连接(忽略DA)。如果该包是TCP SYN包,则基于TCP/IP(DP、逻辑端口)执行查找。
3.现存的TCP/UDP连接。如果该包是未分段的单播TCP或UDP包,则基于TCP/IP 5元组加上逻辑端口执行查找。
如果不能为该包找到按连接的QP,或如果对于一MAC地址未使能按连接的查找,或如果该包是再循环的多播/广播包,则使用默认QP。一般地由OS中的内核连网栈或者系统管理程序(hypervisor)处理默认QP。在HEA 110中存在这些类型的默认QP1.按逻辑端口的默认OS队列。(一逻辑端口相应于具有其自己的默认队列的一逻辑以太网接口。每个逻辑端口在逻辑交换机(logicalswitch)上具有单独的端口。可以有属于LPAR的一个或多个逻辑端口。)基于MAC地址执行查找。
给再循环(绕回的)多播/广播包提供到默认的OS队列的直接索引(逻辑端口号)。
2.MC或BC队列如果包是不与MAC查找表内的一个MAC地址匹配的多播或广播包,则是一配置的值。
3.超级-默认UC队列如果UC包不与配置的MAC地址中的一个匹配,则可以使用默认的UCQPN。
该机制允许按连接排队和按逻辑端口排队(OS队列)这两个极端之间的灵活性。这两种模型可一起操作,其中某些连接具有它们自己的排队,而某些连接以默认逻辑端口队列排队。
由RxAccel单元400执行连接查找。针对每个端口组存在一个这种单元。在RxAccel单元400内,每个组件执行该过程的一部分。PFC从包头部提取需要的字段,并且基于目的MAC地址确定逻辑端口号。然后本地查找单元(LLU)406和远程查找单元(RLU)408负责解析QP号。LLU 406试图仅使用本地资源(高速缓存和寄存器)寻找QPN。
LLU 406的目的是试图确定与接收到的包相关联的QP号。VLIM和RPP606需要该QP号。如果可能,它本地执行该任务(即,不用访问系统存储器)。
可以用若干方法之一本地寻找QP号-在TS高速缓冲中查找-默认分区QP
-默认UC QP如果本地没有发现匹配,则在否定高速缓存(negative cache)上执行初步检查以查看该条目是否可能在系统存储器内。如果是,则调用RLU408执行搜索。如果RLU 408忙,则可形成一个将在RLU 408空闲时提供给它的请求的队列。
LLU 406与RBB 402通信,提供QP号和/或队列索引以用于临时排队。如果高速缓存内没有符合要求的条目,则LLU 406向RBB 402指出搜索忙。在这种情况下必须丢弃该包。
当请求队列索引解析并且已解决时,LLU 406将QPN提供给VLIM/卸载器。RLU试图使用系统存储器表来寻找QPN。
LLU利用本地64条目高速缓存以便寻找用于TCP/UDP包的QPN。如果在该高速缓存中找到了该条目,则不必调用RLU 408。如果在该高速缓存内未发现该条目,则在否定高速缓存内进行初步检查,以查看该条目是否可能在连接表内。否定高速缓存可用于在有少数配置的队列时消除对主存储器的不必要的访问。(注意因为否定高速缓存的大小很小,所以仅当表内的条目数相对小,即,大大小于1K时它才有用。当条目数接近并超过1K时,否定高速缓存将全部成为1,因此使得它无用。否定高速缓存的目的是当有少量QP时不会不利于OS查询。当有小量活动QP但有大量配置的QP时可能会产生问题。在这种情况下OS队列将遭受不利影响。)(例如,当使用大多数OS队列时)。
如果调用RLU 408,则它使用6元组(包括逻辑端口号)的散列来获得128字节的直接表(DT)条目。该DT条目包含多至8个6元组模式和相关的QPN。如果发现了匹配,不再需要另外的活动。如果有多于8个模式与该散列值相关,则可能需要获取冲突溢出表(COT)条目以得到另外的模式。如果发现了匹配,则以发现的QPN更新LLU 406高速缓存。
当必须调用RLU 408时,不能在正将包放置在输入缓冲器内时动态地确定QPN。事实上,可以在几个包之后确定QPN。出于该原因,RxAccel单元400可以给VLIM提供QPN或是队列索引以便进行包排队。如果提供QPN,则VLIM(卸载器)可以直接对包排队以便由RPP进行操作。如果提供队列索引,则VLIM(卸载器)必须保持该包,等待QPN的解析。总是在发派RPP之前确定QPN。
SYN包查找(2或3元组)使用与6元组查找相同的高速缓存和查找表。这里是基本原理和关键设计点-放松性能要求(不是真正稳态),从而可以多次访问系统存储器-重新使用6元组查找资源(表)-使用3元组寻找SYN包的高速缓存索引,以确保添加到该高速缓存列表内的所有包属于同一个QP,不论匹配3元组、2元组或没有匹配。使用这种6元组不好,因为如果非SYN进入,它将被添加到该列表,并且被发送到3/2元组QP。使用2元组将不可行,因为包可能最后不与2元组匹配。具有相同2元组的多个包可被添加到该高速缓存条目内的列表,并且可能最后被移动到错误的QP。
-当包是SYN时不对6元组匹配进行检查。留给主机检查已在SYN上打开的连接。
连接设置-如果是2元组SYN路由(LPAR,DP),则将该模式作为<logical_port#,DA=0,DP,SA=0,SP=0,prot=0>(TCP=0)安装在该表内-如果是3元组SYN路由(LPAR,DP,DA),将该模式作为<logical_port#,DA,DP,SA=0,SP=0,prot=0>安装在该表内,但是将它安装在由2元组给出的索引处的DT内(即,DA=0)。
为了更具体地描述本发明,参考图11。图11是根据本发明的具有用于接收包的组件600的更详细视图的HEA 110的一部分的一个实施例的方框图。系统600包括至少一个接收端口602、接收缓冲器604、内部绕回端口606、调度器608和处理器610。
接收端口602优选地或是单个高速流端口(例如,每秒10吉比特的端口)或是多个低速流端口(例如双个每秒1吉比特的端口)。因为(一个或多个)接收端口602从外部源接收包,所以向(一个或多个)接收端口602提供包的速度不由系统600控制。从(一个或多个)端口602接收的包被提供给接收缓冲器604。接收缓冲器604优选地是先进先出(FIFO)SRAM。优选地还以128位的段访问接收缓冲器604。内部绕回端口606将包从传输侧(图11中未示出)直接提供到接收侧。因为内部绕回端口606来自传输侧,所以可以控制内部绕回端口606中接收绕回包的速度。将缓冲器604和内部绕回端口606的输出作为输入提供给调度器608。调度器608将其输出提供给处理器610。调度器还在由接收缓冲器604和内部绕回端口606提供的输入之间进行选择。
在操作中,将接收到的包从(一个或多个)接收端口602提供到接收缓冲器604。根据接收缓冲器604内的数据量和内部绕回端口606是否有等待接收的包,调度器608可以选择从哪个输入读包。因此,可由调度器608读来自接收缓冲器604的接收的包或是来自内部绕回端口606的绕回包。另外,在图11中示出的实施例中,不存在内部绕回端口606和(一个或多个)接收端口602之间的包数据的交错。
通过使用内部绕回端口606,可以将包传递回接收侧而不用访问网络。因此,允许计算机系统的应用之间通信而不需要在网络上传输包。此外,使用接收缓冲器604可以允许在调度器608忙于处理来自内部绕回端口606的包或是来自接收缓冲器604的另一包时,存储来自(一个或多个)接收端口602的包。因此,可以有较少的被丢弃的来自(一个或多个)接收端口602的包。因此,改善了性能。
图12是根据本发明的主机以太网适配器的一个实施例的方框图,其中有用于接收单个每秒10吉比特接收端口的包的组件600’的更详细的视图。系统600’包括高速接收端口602’、接收缓冲器604’、内部绕回端口606’和调度器608’。这些组件602’、604’、606’和608’分别与图11中的组件602、604、606和608类似。再参考图12,还示出了阈值612、读/写控制信号614、写指针616、读指针608、端口地址620和调度器控制线622。
端口602’是高速端口,诸如每秒10吉比特的端口。接收缓冲器604’优选地是FIFO SRAM。优选地以128位的段访问接收缓冲器604’。读指针618指向正被读以便给调度器608’提供包的接收缓冲器604’的那个部分。写指针616指向正被写以便接收来自接收端口602’的包的接收缓冲器604’的那个部分。
系统600’如图系统600那样工作。因此,将来自接收端口602’的进入包写到接收缓冲器604’。调度器608’从接收缓冲器604’或内部绕回端口606’读。注意,在优选实施例中,不需要在接收缓冲器604’中积累整个包,除非绕回端口606’当前正在接收将提供给调度器608’的绕回包。因此,几乎一当写数据就可以读接收缓冲器604’。在这种情况下,实际上绕开了接收缓冲器604’。优选地,调度器608’使用下面的准则在接收缓冲器604’和内部绕回端口606’之间进行选择。如果没有内部绕回包并且接收缓冲器604’不为空,则优选地读接收缓冲器604’。在这样的实施例中,如果在读的过程中有绕回包到达,则优选地阻塞在内部绕回端口606’内接收绕回包。如果在内部绕回端口606’处有内部绕回包,缓冲器不为空但是还没有达到阈值612,则调度器608’优选地以轮转(round-robin)方式交替地从缓冲器和绕回端口读。在这种情况下,在调度器610’读绕回包的同时,在接收缓冲器604’内将积累在端口602’接收的包。如果在接收缓冲器602’内已经达到或超过了阈值612,则调度器610’优选地从接收缓冲器602’读包。一旦调度器608’已经读了包,调度器可将该包提供到处理器610(图12中未示出)。
通过使用内部绕回端口606’,可将包传递回接收侧而不用访问网络。因此,允许计算机系统的应用之间通信而不需要在网络上传输包。此外,使用接收缓冲器604’可以允许存储来自高速接收端口602’的包。因此,可以有较少的被丢弃的来自高速接收端口602’的包。因此,改善了性能。
图13是根据本发明的主机以太网适配器的一个实施例的方框图,其中有用于接收双个每秒1吉比特接收端口的包的组件600”的更详细的视图。系统600”包括双个低速接收端口602”、接收缓冲器604”、内部绕回端口606”和调度器608”。这些组件602”、604”、606”和608”分别与图11中的组件602、604、606和608类似。再参考图13,还示出了阈值612A和612B、读/写控制信号614’、写指针616A和616B、读指针618A和618B、端口地址620’和调度器控制线622’。
端口602”是双个低速端口,诸如一对每秒1吉比特的端口。接收缓冲器604”优选地是FIFO SRAM。将接收缓冲器604”在逻辑上分割以便在端口602A和端口602B之间划分接收缓冲器604”的容量。因此,优选地接收缓冲器604”被对半划分。每个部分604A和604B分别具有相应的阈值612A和612B。优选地以128位的段访问接收缓冲器604”的每个部分604A和604B。读指针618A和618B分别指向相应于端口602A和602B的正被读以便给调度器608’提供包的接收缓冲器604”的那个部分。写指针616A和616B分别指向正被写以便从接收端口602A或602B接收包的接收缓冲器604’的那个部分。
系统600”类似于系统600那样工作。因此,将来自接收端口602A的进入包写到相应于端口602A的接收缓冲器604”的部分604A。类似地,将来自接收端口602B的进入包写到相应于端口602B的接收缓冲器604”的部分604B。注意,在该实施例中,接收来自端口602A或602B的整个包,从而这两个通信流对上层(图13中未示出)来说是透明的。
调度器608”从接收缓冲器604”或内部绕回端口606”读。优选地,调度器608”使用下面的准则在接收缓冲器604”的部分604A和604B和内部绕回端口606”之间进行选择。如果在内部绕回端口606”处没有绕回包,并且接收缓冲器604”的部分604A和604B不为空,则调度器608”优选地以轮转方式交替地从接收缓冲器604”的第一部分604A和第二部分604B读。如果内部绕回端口606”处没有绕回包,并且接收缓冲器604”的第一部分604A和第二部分604B中只有一个不为空,则调度器608”优选地唯一地从接收缓冲器604”的不为空的部分读。如果内部绕回端口606”处有绕回包,并且缓冲器的部分604A和604B为空,则调度器608”优选地从内部绕回端口606”读。如果内部绕回端口606”处有绕回包,并且缓冲器的部分604A和604B中至少一个不为空,并且分别没有达到阈值612A和612B,则调度器以轮转方式交替地从缓冲器604”的不为空的部分604A和604B以及内部绕回端口606”读。如果内部绕回端口606”处有绕回包,并且已经达到或超过了阈值612A和/或612B,则调度器608”从缓冲器604”的部分604A和/或604B读。一旦调度器608”已经读了包,调度器可将该包提供到处理器610(图12中未示出)。
通过使用内部绕回端口606”,可将包传递回接收侧而不用访问网络。因此,允许计算机系统的应用之间通信而不需要在网络上传输包。此外,使用接收缓冲器604”可以允许分别在缓冲器604”的适当部分存储来自接收端口602A和602B的包。因此,可以有较少的被丢弃的来自双端口602A和602B的包。因此,改善了性能。
图14是一流程图,其示出了根据本发明的用于接收包的方法700的一个实施例。在系统600的情境中描述了方法700。然而,本领域的普通技术人员将易于理解,方法700可与其他系统一起使用。通过步骤702,将从(一个或多个)接收端口602接收到的包提供给接收缓冲器604。通过步骤704,通过使用内部绕回端口606,在系统600内还允许绕回包。通过步骤706,接收到的包的一部分和绕回包的一部分被有选择地提供给调度器608。在步骤706,调度器608”有选择地从缓冲器604的某个部分和内部绕回端口606读。在优选实施例中,使用上面所述用于系统600’和600”的准则确定在步骤706分别从组件604、604’、604A或604B以及606、606’或606”中的哪个读包。
使用方法700,可以管理内部绕回端口606和(一个或多个)接收端口602,以允许应用之间通过绕回端口606通信,同时减少或消除被丢弃的来自(一个或多个)接收端口602的包。由此改善了性能。
已经公开了一种用于更有效地执行包头部查找的方法和系统。根据示出的实施例描述了本发明,并且本领域的普通技术人员将易于理解,可以有所述实施例的多种变形,并且任何这些变形都将在本发明的精神和范围内。因此,本领域的普通技术人员可以做出许多修改而不脱离所附权利要求的精神和范围。
权利要求
1.一种用于在计算机网络中接收包的系统,包括至少一个接收端口;具有输入和输出的缓冲器,所述输入连接到所述至少一个接收端口;具有第一输入、第二输入、和输出的调度器,所述缓冲器的输出连接到所述调度器的第一输入;连接到所述调度器的第二输入的绕回端口。
2.如权利要求1的系统,其中所述缓冲器是SRAM。
3.如权利要求1的系统,其中所述至少一个接收端口是每秒10吉比特的端口。
4.如权利要求1的系统,其中所述至少一个端口包括第一端口和第二端口。
5.如权利要求4的系统,其中将所述缓冲器划分为相应于所述第一端口的第一部分和相应于所述第二端口的第二部分。
6.如权利要求5的系统,其中所述第一端口和所述第二端口中的每一个是每秒1吉比特的端口。
7.如权利要求6的系统,其中所述缓冲器的第一部分和第二部分中的每一个具有一半缓冲器容量的最大容量。
8.一种用于在计算机网络中接收包的方法,该方法包括从至少一个接收端口向具有输入和输出的缓冲器提供多个接收到的包,所述输入连接到所述至少一个接收端口;允许在绕回端口中接收多个绕回包;以及有选择地将所述多个接收到的包的一部分和所述多个绕回包的一部分提供给具有第一输入、第二输入以及输出的调度器,所述缓冲器的输出与所述调度器的第一输入连接,并且所述绕回端口连接到所述第二输入。
9.如权利要求8的方法,其中所述缓冲器具有接收阈值。
10.如权利要求9的方法,其中所述至少一个接收端口是每秒10吉比特的端口。
11.如权利要求10的方法,其中所述有选择地提供的步骤还包括如果没有内部绕回包,并且所述缓冲器不为空,则从所述缓冲器读;如果有内部绕回包,所述缓冲器不为空并且没有达到所述阈值,则交替地从所述缓冲器和所述绕回端口读;以及如果达到了所述阈值,则从所述缓冲器读。
12.如权利要求9的方法,其中所述至少一个端口包括第一端口和第二端口。
13.如权利要求12的方法,其中将所述缓冲器划分为相应于所述第一端口的第一部分和相应于所述第二端口的第二部分。
14.如权利要求13的方法,其中所述第一端口和第二端口中的每一个是每秒1吉比特的端口。
15.如权利要求14的方法,其中所述缓冲器的第一部分和所述缓冲器的第二部分中的每一个具有一半缓冲器容量的最大容量。
16.如权利要求14的方法,其中所述有选择地提供的步骤还包括如果没有内部绕回包,所述缓冲器的第一部分不为空并且所述缓冲器的第二部分不为空,则交替地从所述缓冲器的第一部分和第二部分读;如果没有内部绕回包,并且或是所述缓冲器的第一部分不为空或是所述缓冲器的第二部分不为空,则唯一地从所述缓冲器不为空的部分读;如果有内部绕回包,所述缓冲器不为空并且没有达到所述阈值,则交替地从所述缓冲器的第一部分、所述缓冲器的第二部分和所述绕回端口读;以及如果有内部绕回包,并且已经达到或超过了所述缓冲器的第一部分或所述缓冲器的第二部分的阈值,则从所述缓冲器的第一部分或第二部分读。
17.计算机可读介质,包含用于在计算机网络中接收包的程序,所述程序包括用于实现前面的方法权利要求中的任何方法的指令。
全文摘要
公开了一种用于在计算机网络中接收包的方法和系统。该方法和系统包括提供至少一个接收端口、缓冲器、调度器和绕回端口。所述缓冲器具有输入和输出,所述输入连接到所述至少一个接收端口。所述调度器具有第一输入、第二输入和输出,第一输入连接到所述缓冲器的输出,第二输入连接到所述绕回端口。
文档编号H04L12/56GK1842059SQ20061006705
公开日2006年10月4日 申请日期2006年3月31日 优先权日2005年4月1日
发明者C·巴索, C-J·常, N·瓦伊达亚纳塔, C·B·韦里利, J·L·卡尔维尼亚克, P·戴蒙, F·J·韦普兰肯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1