针对网络设备以减小的缓冲器使用进行流控制的制作方法

文档序号:15567350发布日期:2018-09-29 03:39阅读:155来源:国知局

本发明的领域一般涉及计算机网络连接,更具体地但不排它地,涉及用于针对网络设备以减小的缓冲器使用来实施流控制。



背景技术:

对计算机网络的访问已经成为当今计算机使用中的普遍存在的一部分。无论是访问企业环境中的局域网(lan)以访问共享的网络资源,还是经由lan或其它接入点来访问因特网,似乎用户总是登录到经由计算机网络访问的至少一个服务。而且,基于云的服务的快速发展已经引起甚至对计算机网络的进一步使用,并且预计这些服务将变得越来越流行。

在基本层面上,通过一对链路对端(partner)之间的“链路”以有助于网络通信。例如,在lan中使用以太网链路,以有助于在链路的相对端处耦合的两个设备(例如,计算机与以太网交换机或集线器)之间的通信。这些链路是双向的、双工链路。对于每个方向,从发送设备的发射机将分组化数据流发送给接收设备的接收机。以太网交换机具有多个端口并且连接到多个设备,并且每个“端点”设备可能具有一个或多个物理网络端口,所述一个或多个物理网络端口在相对端处连接到交换机、另一个端点、或者另一种类型的网络元件。

为了有助于有效地使用网络带宽,使用了多种流控制机制。例如,在发射机与接收机之间的网络通信期间,可以使用一个或多个流控制机制来确保发射机不会使接收机处的数据超负荷。当接收到分组时,接收机结合接收机侧的对分组的处理来将这些分组进行暂时缓冲;依据要如何处理分组以及其它考虑(例如,端口和/或设备拥塞),缓冲器资源可能不足以支持发射机发送速率,这迫使所接收的分组将被丢弃(通常被称为“丢弃的”分组)。两种最常见的方案是点对点流控制(例如,使用媒体访问信道(mac)流控制数据报)以及基于端对端信用的流控制(例如,通过使用传输控制协议(tcp)发射窗)。在以太网链路上,在每一对链路对端之间使用点对点流控制。在http://en.wikipedia.org/wiki/ethernet_flow_control处可获得优先流控制的更多细节。

附图说明

因为通过结合附图参照下面的详细描述,能更好地理解本发明的前述方面和很多伴随的优点,所以将更加容易明白这些前述方面和优点,其中,贯穿各视图,除非另行规定,否则同样的附图标记指代同样的部分:

图1a-1d共同示出了用于响应于缓冲器溢出导致丢弃巨型(jumbo)帧来执行流控制的传统方法的示例;

图2a-2d共同示出了根据本发明的一个实施例的第一使用实例,其中,流控制消息可以对巨型帧的发送进行先占,以有助于更快速的流控制响应并且减少帧的丢弃;

图3a-3c共同示出了根据本发明的一个实施例的第二使用实例,其中,交换元件被配置为通过有助于立即暂停不能被交换元件接受的帧的发送的方式来执行流控制;以及

图4是示出示例性网络站的架构的示意图,该网络站被配置为实施本文所公开的实施例的多个方面。

具体实施方式

本文描绘了用于针对网络设备以减小的缓冲器使用来实施流控制的方法和装置的实施例。在下面的描述中,给出了大量具体细节以便对本发明的实施例有彻底理解。然而,相关领域的技术人员将会明白,在没有这些具体细节中的一个或多个具体细节的情况下或者使用其它方法、组件、材料等,也可以实施本发明。在其它情况下,为了不使本发明的多个方面变模糊,没有详细示出或描述公知的结构、材料或操作。

贯穿本申请文件,提到“一个实施例”或“实施例”指的是结合实施例所描述的具体特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本申请文件的不同位置中出现的短语“在一个实施例中”或者“在实施例中”不一定全部指代同一实施例。此外,在一个或多个实施例中,可以通过任何合适的方式来组合具体的特征、结构或特性。

流控制是一个难题,尤其是当网络拓扑复杂的时候。为了减少丢弃分组的出现,网络接口控制器(nic)和交换机被配置为具有缓冲器资源,缓冲器资源的大小相应于最差情形的状况并且往往是未被充分使用的。在点对点流控制下,超负荷的接收机通过以下操作做出反应:将流控制消息发送回发射机,以请求该发射机暂时暂停向该接收机发送数据。这引起链路上的额外业务,并且当链路两端的接收机都超负荷时可能导致死锁。随着网络拓扑的复杂度增大,有更多的点可能发生拥塞,导致流控制消息和/或丢弃的分组的更多出现。这些问题在交换机处恶化,因为在单个繁忙的端口上接收到暂停会导致交换机在多个端口上发送暂停分组,使得问题加剧。

为了实现无损,接收机需要保证足够的缓冲以补偿发射机用于接收流控制消息并根据流控制消息采取行动所花费的时间。根据一种方法,为了如此操作,保持高阈值和低阈值(往往被称为“水位线(watermark)”)。当达到较高阈值时,接收机发送“暂停”帧并在已达到较低阈值时停止。通常,高水位线所保留的缓冲器空间是每一链路(或者每一链路每一无损业务类型)两个巨型帧,因为在接收机(其现在需要发送“暂停”)中,在能够发送流控制消息之前该流控制消息可以等待巨型帧完成发送,现在需要停止发送的发射机可能刚刚开始发送第二巨型帧,其中需要在暂停能够生效之前完成第二巨型帧的发送。

图1a-1d示出了前述情形以及如何使用传统方法来对其处理的示例。在本实例中,站a和b是在经由链路100(例如,以太网链路)的通信中链接的。为了支持链路100上的通信,站a和b中的每一个站具有可应用的发射机(tx)组件和接收机((rx)组件,如由接收机102a和102b、以及发射机104a和104b所示。站a和b中的每一个站还具有两个缓冲池——rx缓冲池和tx缓冲池,如由rx缓冲池106a和106b、以及tx缓冲池108a和108b所示。

如图进一步所示,rx缓冲池106a和106b中的每一个包括用于处理不同类别的服务(在本文的图中标记为“类别1”和“类别2”)的缓冲器。通常,每个rx缓冲池将被配置为支持多个类别;为了方便以及篇幅限制,本文使用对类别1和类别2的rx缓冲器的描述来代表任何数量的rx缓冲池类别。

站a和b被配置为支持链路100上的双向双工通信。如所示出的,站a向站b发送分组流110,同时站b向站a发送分组流112。在图1a-1d中共同示出的分组流110的部分(依次)包括以下帧:1a、巨型帧1、巨型帧2、2a、3a、巨型帧3、4a和5a。在图1a-1d中共同示出的分组流112的部分(依次)包括以下帧:巨型帧5、巨型帧6、1b、巨型帧7、巨型帧8、2b、3b和巨型帧9。

使用tx缓冲器来暂时缓冲将被嵌入在通过链路100发送的分段中的分组化数据,如mac帧(例如,用于以太网链路的以太网帧)。在接收端,使用rx缓冲器来暂时缓冲已经在接收机(例如,以太网nic或网络适配器上的rx端口)处接收的并且已经从所接收的帧中提取出的分组化数据。在一个实施例中,站a和b中的每一个站是具有基于软件的联网设备的、运行操作系统的计算机。这些联网设备用于生成输出分组流以及处理接收的输入分组流。在一个方式中,输出分组流是由基于软件的联网设备生成的并且被存储在系统存储器中。当网络适配器或nic上的tx缓冲器变为可用时,例如经由直接存储器存取(dma)读取操作,将分组流的部分从系统存储器复制到相应的tx缓冲器。然后,经由由网络适配器/nic汇合的以太网帧来发送分组流的被写入到tx缓冲池的部分。

在一个传统方式中,tx缓冲池可以实现为先入先出(fifo)缓冲器、并且被操作以使得分组化数据被发送的次序反映出分组化数据被写入到fifo的次序。在一些实例中,例如在图1a-1d中所示出的,使用环形fifo。在使用更大或多个tx缓冲器的情况中,可以使用较小的fifo或类似的装置来存储指向存储在分离的tx缓冲器中的数据的指针。在本文附图中示出的rx和tx缓冲器中,每个缓冲器或“槽(slot)”的大小为1500字节,这是传统以太网帧的最大有效载荷大小;然而,这个大小仅仅是示例性的,以用于说明的目的。在一个实施例中,利用链路参数来设置该大小,如1500加上用于协议开销的小分配(例如,1-2%)。巨型以太网帧具有约9k字节的最大有效载荷,并且因此各自占据6个缓冲槽。尽管描绘为占据一个以上的缓冲槽(从而适应它们的标签),但是本文示出的传统帧1a、2a、3a、4a、5a、1b、2b和3b实际上的大小是1500字节或更小。本领域技术人员将会认识到,缓冲槽的大小可以不同于1500字节,并且本文使用1500字节仅仅是示例性的。

使用rx缓冲器来暂时缓冲经由在接收机处接收的以太网帧传送的流入分组。当帧到达时,在mac层执行的“解分组”操作期间,从帧中提取分组化数据,并且将该数据写入到rx缓冲器。与tx缓冲器相同,rx缓冲器可以包括fifo缓冲器,如环形缓冲器。也可以使用其它类型的rx缓冲器。将rx缓冲器中的分组化数据(例如,经由dma写操作)复制到系统存储器,在这里数据可以被基于软件的联网设备的接收侧存取以执行额外的分组处理操作。

如在图1a-1d中所示出的,每个rx缓冲池类别的大小被确定为存储两个巨型帧。这是为了应对最差情形的场景,在这种场景中可能在传输序列期间紧接着地接收与同类别服务对应的多个巨型帧,其中,在所述传输序列期间检测到拥塞事件,但是不能急时发送相应的流控制消息以防止发送同类别的后续巨型帧,从而造成缓冲器溢出。

在图1a-1d示出的示图中,示出了分组流伸向通过tx和rx缓冲器。实际上,数据本身不在fifo缓冲器内移动,而是移动被称为头和尾指针的一对指针以将缓冲器的头和尾增加至新的槽位置。对环形fifo来说,指针以循环方式从fifo的末端绕回到fifo的始端,因此而得名。

回到图1a,该图示出了第一时间点,在该第一时间点处,帧1a和巨型帧1已经从站a发出并且在站b处被接收和缓冲,并且巨型帧5和6已经从站b发出并且在站a处被接收和缓冲。在传统的方式中,当巨型帧的每个1500字节有效载荷部分被写入发射机中的组帧逻辑单元时,通过增加fifo头和尾指针来将相应的缓冲槽标记为可用。例如,在图1d中对此进行了描绘,其中,已经通过链路100发送了大约一半的巨型帧3,并且仅有三个缓冲槽存储了后续将被添加到巨型帧3的分组数据。此外,一旦巨型帧的有效载荷开始由组帧逻辑单元处理,包括有价值的有效载荷的整个巨型帧将被不间断地发送出去。

如在图1a中的站a的顶部所示,rx缓冲池106a的类别1的所有12个缓冲槽被来自巨型帧5和6的有效载荷数据所占据。结果是达到了高阈值或水位线。作为响应,站a需要向站b发送流控制(fc)消息,以请求站b暂时停止经由链路100向站a发送帧。在一个方式中,通过发送一个或多个暂停(pause)帧来实现流控制,直到rx缓冲池106a中的填充水平达到低阈值或水位线。

图1b示出了与发送(如在本文通过黑底白字的“fc”所绘出的)fc消息有关的更多细节。在所示出的传统方式中,在第一个可用的分组间间隙处发送fc消息。在该情况中,将在巨型帧2的整个有效载荷已经从发射机104a发送出去之后发送该fc消息。

如在图1b中进一步示出的,检测到高阈值的时刻与逻辑单元确定将要插入fc消息的时刻之间有一定的时间延迟。在此期间,示出了巨型帧2和帧1b中的每一个的开始部分的发送伸向其应用的接收机(与图1a中所示的相对)。如在本文中所描绘的,用宽轮廓线描绘的分组流的部分表示成帧的分组。此外,由于在允许的画图空间内针对缓冲器增加的速率和通过链路发送数据的速率(即,光速)使用相同的度量来示出这两者之间的相对时间度量是不可能的,所以在通过链路发送数据时,展开了用于识别帧的字母,以表明通过链路所花费的时间量非常小(在纳秒量级)。

图1c示出了在站b处接收和缓冲fc消息(例如,暂停帧)之后的时间点。如所示出的,fc消息跟在巨型帧2的发送之后。同时,在图1b和1c之间的时间帧期间,站a已经将巨型帧5和6的有效载荷数据以dma方式写入到系统存储器(未示出),已经接收和缓冲帧1b和巨型帧7,并且将要接收巨型帧8。此外,站b已经开始发送巨型帧8。

如在图1d中所示出的,在传统方式中,在接收到暂停帧时,站b将在正在发送的当前帧结束后停止发送帧,在该例子中,所述当前帧是巨型帧8。在接收到暂停帧和站b停止发送帧之间的延迟期间,巨型帧8已经到达接收机102a处,并且其分组有效载荷开始被缓冲。然而,由于没有足够的空间来放置帧1b、巨型帧7和巨型帧8的所有有效载荷数据,全部帧都停止,这是因为不能够执行针对帧的crc。

如上面所讨论的,在传统的操作中,只要给定缓冲器中的数据被传送到组帧逻辑单元或者直到发送了整个帧,网络适配器或nic的发送侧就丢弃缓冲的巨型帧的分组数据。相比而言,在现在描述的实施例中,在帧已经被发送之后,该帧将被保持一段预先设置的时间量。例如,对于txfifo缓冲器,尽管巨型帧的分组化有效载荷数据被组帧并且从发射机发送出去,但是不增加txfifo缓冲器的尾指针,直到发送了整个巨型帧,此时才将所述尾指针增加6个缓冲槽。结果,用于缓冲与当前帧对应的(被组帧并且被发送)的分组数据的缓冲槽保持被标记为不可用,从而防止了这些槽被与所发送的分组流中的后面的分组对应的数据所改写。这能够使得帧的发送被中止,并且然后在不丢失数据的情况下进行重传。如下面所描述的,这还能够使得通过先占(pre-empt)巨型帧的发送来将流控制消息立即发送至链路对端。

在图2a-2d中示出了该新颖方式的第一种使用实例。以与前面的例子类似的方式,经由站a和b之间的双向双工链路200来传输数据。站a和b中的每一个站具有可应用的发射机(tx)和接收机(rx)部件,如由接收机202a和202b以及发射机204a和204b所示。站a和b中的每一个站还具有缓冲器被划分为多个类别的rx缓冲池以及tx缓冲池,如由rx缓冲池206a和206b以及tx缓冲池208a和208b所示。站a向站b发送分组流210,同时站b向站a发送分组流212。

相对于在图1a-1d中示出的并且在上文中所讨论的传统大小而言,如在图2a-2d中进一步示出的,减小了每个类别的rx缓冲器的大小。在所示出的实施例中,每个类别的rx缓冲器的大小等于巨型帧的大小;然而,这是示例性的而不旨在进行限制,因为也可以使用其它的大小。如将在下面说明的,图2a-2d中实现的方案能够相对于传统方法而言减小每个类别的rx缓冲器的大小,同时仍然解决了缓冲器溢出。

图2a示出了初始数据传输状况,其在某种程度上与图1a中所示出的类似,除了rx缓冲池206的类别1仅仅缓冲巨型帧6。以与上文针对图1a所描述的类似的方式,站a的rx缓冲池206a已经达到高阈值,并且需要向站b发送fc消息,该fc消息用于请求站b停止通过链路200发送帧。

在图2b中继续,在发现高阈值状况后,站a能够立即向站b发送fc消息,以停止在链路200上进行发送。在所示出的实施例中,这是通过中止发送巨型帧2并且立即通过链路200从发射机204a发送出fc消息(例如,暂停帧)来完成的。实际上,巨型帧的发送被先占,以有利于fc消息。通常,在中止巨型帧时,已经发送了该帧的帧头和该帧的有效载荷的一部分。在一个实施例中,关于中止巨型帧的发送,帧校验序列循环冗余校验(crc)被附加到截断的帧并且被设置为预定的值或者被故意设置为不正确的值,使得当该截断的巨型帧被接收时,接收机中的mac层逻辑单元检测到该帧数据被损坏,并且丢弃在中止该巨型帧的发送之前所发送的该帧的部分。在另一个实施例中,mac层逻辑单元被配置为检测到其已经接收到不完整的帧(例如,通过检测到错误的长度,检测到丢失的帧检验序列crc等等)。在发送fc消息之前,还将发送帧间间隙标记(例如,96比特的空闲线路状态)。

图2c中示出了上述操作的结果,其中,巨型帧2中的已发送的部分(如附图标号214所示)被丢弃。通过不将这部分有效载荷数据写入rx缓冲池208b的类别1缓冲器,或者通过将这部分有效载荷数据写入类别1缓冲器并且将其标记为坏数据(如图所示),可以丢弃这部分有效载荷数据。例如,当接收到一个帧时,将其有效载荷数据实时地(onthefly)写入可用的rx缓冲器中。由于帧检验序列crc在帧的末端,所以该有效载荷数据中的在计算crc之前接收到的部分已经被缓冲。因此,将该数据标记为损坏。

如图2d所示,响应于接收到fc消息,如果当前发送的帧是巨型帧,则立即暂停该帧的发送,导致该巨型帧的发送被中止。在一个实施例中,如果当前发送的帧是常规的帧,则继续该帧的发送直到完成为止,在该完成的时间点处将暂停发送。如上所述,被中止的巨型帧中已被发送的截断部分将在接收机侧被丢弃(即,当在站a的接收机202a处被接收时,该截断部分被丢弃)。

如上所述,由于只有在已经发送了整个巨型帧之后(或者在额外的超时时间之后)才会丢弃巨型帧的有效载荷数据,所以被中止的巨型帧数据的整体都保持被缓冲。结果是,该数据可用于重传。在一个实施例中,巨型帧被中止以使得能够立即发送fc消息,跟随在该fc消息的发送之后重传该被中止的巨型帧。在图2c中示出了该结果,此时,该fc消息已经在站b的接收机202b处被接收到,并且在巨型帧2在链路200上传输的同时被缓冲在rx缓冲池208b的类别1缓冲器中。相似地,在由暂停帧标识的暂停持续时间段到期时(或者,当相继发送了多个暂停帧时,所有暂停帧的暂停持续时间段都到期时),站b将使发送操作重新开始。在一个实施例中,当在中止的巨型帧和传输暂停之后重新开始发送时,发射机将重发该巨型帧。

在另一个使用实例中,在诸如交换机或路由器的交换元件中实现改进的流控制和缓冲器管理。在一个实施例中,发送站(例如,终端站或另一交换机或路由器)通过第一链路与该交换机/路由器通信。这两个链路对端使用nack(否定确认)反馈方案,使该交换机/路由器能够通知发送站:用于传送该帧的输出(egress)端口拥塞或者目标站(由帧中的mac目的地址标识)暂时无法到达。此外,将nack反馈机制实现成使得:nack消息可以导致发送到发送站的巨型帧被先占,以有利于nack消息。在接收到nack消息后,发送站立即中止该帧的继续发送。在一个实施例中,该方法还使得发射机仅在从分组的发送完成起经过了预定时间量之后(按照用于一个常规分组的传输时间的量级)才丢弃分组。可替换地,或额外地,对于用于传送特定类别和/或交换输出端口的分组的帧,其发送可以暂时暂停,同时,用于传送属于其它类别或具有可通过不拥塞输出端口到达的目的地址的分组的帧被允许跳过被暂停的帧。

图3a-3c中示出了这个使用实例中的一种示例性实现方式。如图所示,交换机/路由器301经由双向双工链路300与发送站303通信地链接,发送站303包括终端站或另一交换机/路由器中之一。虽然此处被描述为发送站,但是应注意的是,发送站300也从交换机/路由器301接收帧,并且这两者构成了一对链路对端,与上述的站a和b类似。

如上所述,这两个链路对端包括可应用的接收机和发射机组件,如接收机302a、302b和发射机304a、304b所示。发送站303包括tx缓冲池306b和rx缓冲池308b,并且向交换机/路由器301发送tx分组流312,从交换机/路由器301接收tx分组流310。

交换机/路由器301包括rx缓冲池306a和tx缓冲池306b。它还包括一组用于四个链路2、3、4、5中每一个链路的联网组件和缓冲器314,如组件集314-2、314-3、314-4、314-5所示。这些组件集中的每个组件集包括接收机302、发射机304、rx缓冲池306和tx缓冲池308。交换机/路由器301还包括交换逻辑单元,用于将接收的帧经由可应用的输出端口传送。对于经由链路300接收的帧,交换逻辑单元被描绘为四位置交换器316。另外,交换机/路由器301可以包括另外的缓冲池(未示出),诸如,每类别的缓冲池和/或共享缓冲池。另外,交换机/路由器的rx和tx缓冲池可以大于终端站的相应rx和tx缓冲池。

在图3a所示的状态中,巨型帧5和帧1b已经被接收并且缓冲在rx缓冲池306a中,巨型帧6已经被从发送站303发送并且帧头刚在交换机/路由器301处被接收到。此外,发送站303已经接收和缓冲了巨型帧1,并且已经接收和缓冲了巨型帧2的大概一半。如tx缓冲池308a中所进一步示出的,交换机/路由器被配置为不丢弃巨型帧的任何部分的分组数据,直到已经从发射机304a发送出了整个巨型帧为止。例如,虽然已经发送了巨型帧2的一半,但是用于该帧的分组数据的所有六个缓冲槽继续被标记为不可用。

响应于接收到巨型帧5的帧头,交换机/路由器301立即检查mac目的地址,并且做出交换决定:将经由链路5传送该帧。在一个实施例中,在接收到一个帧的第一部分后,该交换决定使用约200纳秒。在所示的例子中,用于链路5的输出tx端口由于链路拥塞或者在链路5另一端的目标站(未示出)暂时无法到达而不可用。在一个实施例中,交换逻辑单元(或其它逻辑单元)还确定没有缓冲器空间可用于巨型帧6(例如,使用共享缓冲池或每类别的缓冲池),或者确定与巨型帧6对应的级别的优先级不满足可应用的用于接收该帧的缓冲器使用标准。

作为上述操作的结果,交换机/路由器301中的该逻辑单元决定要丢弃巨型帧6。与该决定相关联地,如果当前发送(经由链路300发送到发送站303)的帧是巨型帧,则立即中止巨型帧2的发送,并且向发送站303发送nack消息。由于此时没有丢弃巨型帧2的缓冲的任何数据,所以巨型帧2可用于重传。

继续到图3b,在此状态下,在发送站303处已经接收到nack消息。此外,跟随在nack消息的传输之后,已经重新传输巨型帧4(其整体)。通常,nack消息包含与相应的帧有关的并标识该帧的否定确认,并且包含指示该帧没有被成功传输(或者该帧被丢弃)的信息。在一个实施例中,nack消息还包含超时值,请求(该nack的)接收单元不要重发由该nack消息标识的帧,或者不要发送具有与该被丢弃帧中包含的相同的mac目的地址的任何额外的帧。取决于发送站303是另一个交换机还是路由器以及该实施方式所使用的逻辑的精密度(sophistication),发送站可以被配置为确定巨型帧6被预定为经由(不可用的)链路5进行传送,并且nack超时可应用于被预定为经由链路5进行传送的任何帧。可选地,nack超时可以以每类别为基础进行实施。作为又一个选项,nack消息并不包括超时值,而是仅仅标识了巨型帧的传输是不成功的。

如针对图3b的右上部分所描述的,响应于处理nack消息,立即中止巨型帧6的发送。在使用了超时的实施例中,将发送站303上的超时计时器318设定为nack消息中的超时值并且使其开始。图3b进一步示出了以前已经被接收并且缓冲的巨型帧2的一部分被丢弃。

虽然已经中止了巨型帧6的发送,但是其分组数据的整体仍然被缓冲在tx缓冲池208b中并且可用于重传。然而,根据nack超时技术,其可能不被重传,直到超时计时器318已到期为止。可选地,根据并不使用指定的(nack消息中的)超时值的nack方案,可能并不重传被中止的巨型帧,直到预先确定的时间已到期为止或者基于其它预先定义的准则。与此同时,其它帧变为可用于从发送站303进行发送。实际上,允许这些帧跳过与nack消息相对应的被暂停的巨型帧。

图3c示出了一个状态,在该状态后,巨型帧7和帧1c已经跳过了被暂停的巨型帧6并且已从发送站303发送,并且由交换机路由器301进行接收和缓冲。此外,在该状态,超时计时器318已经到期。因此,巨型帧6变为可用于进行重传,并且当超时计时器318到期时,在正被发送的任何帧完成之后对巨型帧6进行重传。更一般地说,当接收到标识不可用的目标站的nack时,可以发送其它分组,如果这些分组的目标站与该不可用的目标站不同的话。

虽然通过示例的方式结合巨型帧的使用而示出了上述nack技术,但其并不意味着仅限于巨型帧。反之,该技术可以实施于基本上任何分组大小或者数据分段方案。

图4示出了用于网络站400的示例性架构,该网络站使用包括网络适配器或者nic芯片402的装置,网络适配器或者nic芯片402包括配置为实施本文所公开的实施例的一些方面的发射机电路。网络适配器/nic芯片402包括phy电路404、mac模块406、存储器408、分组和帧处理逻辑单元410、dma接口412以及快速外设组件互联(pcie)接口414。phy电路404包括发射机端口416和接收机端口420,发射机端口416包括发射机电路418,接收机端口420包括接收机电路422。mac模块406包括组帧逻辑单元424和拆帧逻辑单元426。存储器408配置为在操作期间包括rx缓冲池428和tx缓冲池430。分组和帧逻辑单元410通常包括用于处理分组和帧的逻辑单元。除了传统的分组和帧处理逻辑单元(未示出)以外,分组和帧处理逻辑单元410包括巨型帧逻辑单元432和nack逻辑单元434。

在所示的实施例中,网络站400还包括片上系统(soc)436,后者包括具有一个或者多个处理器内核的中央处理单元(cpu)438,其经由互联444耦合到存储器接口440和pcie接口442。存储器接口440进一步被示为耦合到存储器446。根据典型的配置,网络适配器/nic芯片402、soc436和存储器446将被装配在或者可操作地耦合到电路板448,电路板448包括有线迹线(trace),其如所示的通过将dma412单线连接到存储器446以及在pcie端口450处将pcie接口414连接到pcie接口442,而使这些组件通信地耦合。

网络站400进一步被示为经由以太网链路454而通信地链接到链接对端452。为简单起见,链接对端被描述为仅包括rx端口456和tx端口458。在一个实施例中,网络站400和链接对端452中的每一个具有类似的配置。更一般地说,网络站400可示为可以经由以太网链路通信地链接各种类型的网络设备和计算机系统,其包括但不限于终端站以及诸如以太网交换机和路由器之类的交换元件。

针对网络站400示出的架构的各方面可以在诸如交换机或者路由器之类的网络交换元件中实施。在一些实施例中,交换元件将使用嵌入式逻辑单元,其通过使用微控制器或者网络处理器等等而得以促进,而不是使用诸如由soc436所示的多核处理器。此外,尽管在分离的块中描述,但是可以在mac模块中实施分组和帧处理逻辑单元的全部或者一部分,或者可以结合图4未示出的其它逻辑单元来实施。更一般地说,用于实施本文公开的实施例的各方面的逻辑单元可以是分布式的,以使得其像装置那样作为一个整体而实施,而不是装置中的逻辑单元的特定块。相应地,如在本文的权利要求中所使用的,装置或者逻辑单元的特定块可以配置为实施相应的操作。

在一个实施例中,网络适配器/nic芯片402包括10gbps以太网接口控制器(nic)芯片。然而,网络适配器/nic芯片402的电路和组件还可以在其它类型的芯片和组件中实施,其包括soc、多芯片模块,以及包括对多个网络接口(例如,有线和无线)的支持的nic芯片。

此外,本申请的实施例不仅可以在诸如nic的半导体芯片内实施,还可以在非瞬时性机器可读介质内实施。例如,上述设计可以存储在非瞬时性机器可读介质上和/或嵌入在非瞬时性机器可读介质内,该非瞬时性机器可读介质与用于设计半导体器件的设计工具相关联。示例包括用vhsic硬件描述语言(vhdl)语言、verilog语言或者spice语言、或者其它硬件描述语言格式化的网表(netlist)。一些网表示例包括:行为级网表、寄存器转换级(rtl)网表、门级网表以及晶体管级网表。机器可读介质还包括具有诸如gds-ii文件的布局信息的介质。进一步的,网表文件或者用于半导体芯片设计的其它机器可读介质可以用于仿真环境,以便执行上述教导的方法。

本文公开的流控制管理和帧处理技术相对于传统方式提供了显著的优势。通过对巨型帧的发送进行先占以有利于立即发送流控消息,与传统方式相比,链接对端将会更早地被通知以便暂停帧的发送。这将造成必须要丢弃的帧减少和/或使得缓冲池的大小减少,因为该设计不再需要考虑最差情形的场景,其中在该场景下将不会发送流控消息,直到当前巨型帧的发送完成之后为止。此外,由于巨型帧的整体内容被缓冲直到发射机发出的帧的发送完成(或者可选地使用时间偏移)为止,因此巨型帧可用于重传。此外,可以使用所公开的技术来增强交换元件的操作。例如,通过在接收到以后对帧的头进行检查,可以非常早地做出是由交换机对帧进行处理还是将会丢弃该帧的决定。如果要丢弃该帧,则可以立即请求发送站暂停该帧的发送。再者,由于帧数据的整体仍然被缓冲,因此可以在可行时重传该帧。

虽然本文的一些实施例描述了使用巨型帧或者以太网帧,但是本文公开的教导和原则并不限于这些示例。反之,可以使用除以太网以外的各种类型的数据传输协议来实施流控制技术,根据该流控制技术,对当前发送的数据分段(或者数据单元)的发送进行先占以有利于流控制消息,并且其中,对于与诸如帧的数据分段(或者在可行时是数据单元)相对应的数据的整体进行缓冲,直到已经发送了该数据分段为止。

尽管参照特定的实施方式描述了一些实施例,但是根据一些实施例,其它实施方式也是可行的。此外,在附图中示出的和/或在本文中描述的要素和/或其它特征的安排和/或顺序并不需要按照所示出和所描述的特定方式来进行安排。根据一些实施例,许多其它的安排是可行的。

在图中示出的每个系统中,在某些情况下,这些要素可以分别具有相同的参考标号或者不同的参考标号,以便表明所表示的要素可以是不同的和/或是相似的。然而,要素可以足够灵活,从而具有不同的实施方式并且与本文所示或者所描述的系统的一些或者全部一起工作。图中示出的各种要素可以是相同的或者不同的。哪个要素称为第一要素并且哪个要素称为第二要素是随意的。

在说明书和权利要求书中,可以使用术语“耦合到”和“连接到”及其衍生词。需要理解的是,这些术语并不旨在作为彼此的同义词。反之,在特定的实施例中,“连接到”可以用于指示两个或者更多个要素是以直接物理方式或者电方式彼此相接触的。“耦合到”可以表明两个或者更多个要素是以直接物理方式或者电方式相接触的。然而,“耦合到”还可以表明两个或者更多个要素不是以直接方式彼此相接触的,但其彼此之间仍然进行协作或者交互。

实施例是本发明的实施方式或者示例。说明书中对“实施例”、“一个实施例”、“一些实施例”、或者“其它实施例”的引用表明结合这些实施例所描述的特定特征、结构、或者特性被包括在本发明的至少一些实施例中,但并不一定被包括在本发明的所有实施例中。“实施例”、“一个实施例”、“一些实施例”在各处的出现并不一定全都指代相同的实施例。

不需要在特定的一个实施例或者多个实施例中包括本文所描述和所示的所有部件、特征、结构、特性等等。如果本说明书例如宣称“可”、“可以”、“可能”或者“能够”包括部件、特征、结构、或者特性,那么并不必然包括该特定部件、特征、结构、或者特性。如果本说明书或者权利要求书引用了“一”或者“一个”要素,其并不表明只有一个要素。如果本说明书或者权利要求书引用了“一个附加的”要素,其并不排除存在多于一个附加要素的可能。

如上所述,可以通过相应的软件和/或固件部件和应用程序(例如,服务器上运行的软件或者网络元件上的嵌入式处理器所执行的固件)来有助于本文的实施例的各个方面。因此,本发明的实施例可以用作或者用来支持软件程序、软件模块、固件、和/或在某种形式的处理核心(例如计算机的cpu、多核处理器的一个或者多个核心)上执行的分布式软件、在处理器或者核心上运行的或者在机器可读介质之上或者之内实施或者实现的虚拟机。机器可读介质包括用于以机器(例如计算机)可读的形式存储或者发送信息的任何机构。例如,机器可读介质可以包括只读存储器(rom);随机访问存储器(ram);磁盘存储介质;光存储介质;以及闪存器件等等。

本发明包括摘要部分的描述在内的所示实施例的上述描述并不旨在是穷举的或者将本发明限于所公开的确切形式。虽然本文描述的本发明的特定实施例及其示例是用于示例性的目的,但是如本领域技术人员应该认识到的,在本发明的范围内的各种等同的变更也是可行的。

可以根据上面的具体描述来对本发明做出这些变更。在所附权利要求中使用的术语不应解释为将本发明限于说明书和附图中所公开的特定实施例。反之,本发明的范围是通过所附的权利要求来完整地进行确定的,其中,应根据对权利要求的解释所建立的原则来解释本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1