在网络边缘有效使用数据包缓冲和带宽资源的设备的利记博彩app
【专利摘要】本发明涉及混合网络设备,该设备包括:能够访问服务器系统存储器的服务器接口;网络交换机,其包括数据包处理引擎和交换机数据包缓冲器,数据包处理引擎配置成处理通过交换机路由的数据包,交换机数据包缓冲器配置成在发送之前将数据包排队;至少一个网络接口;以及至少一个总线主控的直接存储器存取控制器,其配置成经由至少一个服务器接口访问服务器系统存储器并且传输来自和至混合网络设备的数据。根据本发明的一个方面,总线传输仲裁器配置成控制从服务器存储器至混合网络设备的数据包处理引擎的数据传输。
【专利说明】在网络边缘有效使用数据包缓冲和带宽资源的设备
【技术领域】
[0001]本发明涉及服务器网络接口控制器和边缘网络交换机的领域,尤其针对大量紧密定位的服务器节点通过机柜顶式交换机(top-of-rack switch)互连并且连接至网络的数据中心。
【背景技术】
[0002]在数据中心中,服务器节点通常密集地填装在机柜中并且通过机柜顶式交换机互连,该机柜顶式交换机还与数据中心网络中的其他机柜顶式交换机互连。每个服务器节点具有其自己的通过服务器外围总线可访问的网络接口。网络接口可实现为服务器芯片组中的网络接口控制器或实现为单独的网络接口卡,两种实现都简称为NIC(网络接口卡或网络接口控制器)。NIC通过服务器侧物理接口、网络缆线以及交换机侧物理接口连接至机柜顶式交换机。
[0003]数据中心中高密度的服务器节点对功率效率和互连带宽提出了高要求,而且限制了从服务器节点至边缘网络交换机的网络缆线的长度。此外,通常在数据中心中托管的应用的分布特征对低互连延迟提出了高要求。
[0004]NIC通常经由PCI Express (高速外部设备互连)外围总线接入服务器节点的系统存储器,并且将借助于总线主控的直接存储器存取(DMA, direct memory access)控制器来移动来自和至服务器系统存储器的网络数据包。NIC将具有用于暂时存储传入和传出的数据包的数据包缓冲存储器。因为通常不能保证对服务器外围总线和服务器系统存储器的即时访问,而NIC必须能够以线路速率连续地从网络接收数据包并且将开始发送的任何数据包发送至网络,所以需要缓冲存储器。
[0005]典型的NIC不具有边缘网络交换机的拥塞状态的直接知识。掉包能够利用标准的流量控制策略诸如IEEE802.1Qbb来避免,尽管该策略是粗粒的并且其在浪费网络带宽和在边缘网络交换机中的数据包缓冲方面造成相当大的成本。可能还必须在片外存储器中扩展机柜顶式交换机缓冲资源以实现可接受的网络性能,并因此浪费在交换机设备中的宝贵I/O带宽。这导致了机柜顶式交换机的增加的功率消耗并因此对可实现的网络连接密度设置了限制。
[0006]总之,数据中心的竞争力高度取决于可实现的服务器节点密度和服务器节点互连的容量和速度。这些量度转而取决于NIC和边缘网络交换机的密度和功率效率,取决于其带宽和延迟,并且最终取决于带宽和数据包缓冲资源被利用的效率。
【发明内容】
[0007]基于上述描述,本发明的一个方面是提供用于向NIC提供在网络交换机中的网络数据包队列的状态和尺寸的信息的方式,从而向NIC提供用于减轻或消除现有技术中的上述缺陷和单独的或任意组合的不足中的一个或者更多个的方法。
[0008]本发明利用了数据中心环境中从服务器节点至第一网络交换机的短物理距离,以通过将NIC功能与网络交换机结合成混合网络设备来降低延迟和主机系统复杂性。因此,发明人已通过将总线主控的直接存储器存取控制器添加至混合网络设备,实现了可分布于网络交换机的NIC功能。这总体上减少了服务器和网络交换机系统中使用的部件的总需要数量。此外,从服务器存储器至所述混合网络设备的数据包处理引擎的数据传输可从混合网络设备来控制。
[0009]此外,可在完整的或推迟的数据包传输之间做出选择。在推迟的数据包传输中,最初从服务器系统存储器读取数据包的仅仅一部分。这使基于本发明的设备比传统边缘网络交换机能够更早地自由使用可用的带宽资源以检查数据包,从而更好地获知数据包仲裁决定。
[0010]此外,本发明通过推迟或者消除数据包数据传输更有效地利用可用的数据包缓冲和带宽资源。因此,推迟的数据传输的有利之处在于释放的带宽允许更早地检查附加的数据包报头,从而实现更好的数据包仲裁。
[0011]根据本发明的一个方面,其涉及混合网络设备,包括:
[0012]-能够访问服务器系统存储器的至少一个服务器接口;
[0013]-网络交换机,该网络交换机包括数据包处理引擎和交换机数据包缓冲器,该数据包处理引擎配置成处理通过交换机路由的数据包,该交换机数据包缓冲器配置成在发送之前将数据包排队;
[0014]-至少一个网络接口;以及
[0015]-至少一个总线主控DMA控制器,该总线主控DMA控制器配置成经由所述至少一个服务器接口访问所述服务器系统存储器的数据并且传输来自和至所述混合网络设备的数据。
[0016]根据本发明的一个方面,其涉及一种混合网络设备,还包括:
[0017]-总线传输仲裁器,该总线传输仲裁器配置成控制从服务器存储器至所述混合网络设备的数据包处理引擎的数据传输。
[0018]根据本发明的一个方面,其涉及一种混合网络设备,其中,所述控制基于网络交换机中的可用的资源。
[0019]根据本发明的一个方面,其涉及一种混合网络设备,其中,所述控制还基于在服务器节点中排队的数据包。
[0020]根据本发明的一个方面,其涉及一种混合网络设备,其中,该控制取决于受软件控制的设置。
[0021]根据本发明的一个方面,其涉及一种混合网络设备,其中,总线主控DMA控制器配置成传输比完整数据包少的且足够用于数据包处理引擎开始数据包处理的数据。
[0022]根据本发明的一个方面,其涉及一种混合网络设备,其中,总线主控DMA控制器配置成传输比完整数据包少的且至少为开始所述数据包处理所需的数据量的数据。
[0023]根据本发明的一个方面,其涉及一种混合网络设备,其中,总线主控DMA控制器配置成推迟数据包的剩余部分的传输。
[0024]根据本发明的一个方面,其涉及一种混合网络设备,其中,混合网络设备配置成存储数据包处理结果直到数据传输重新开始,使得当推迟的数据包传输重新开始时不需要重复数据包处理。
[0025]根据本发明的一个方面,其涉及一种混合网络设备,其中,混合网络设备配置成存储数据包数据直到数据传输重新开始,使得当推迟的数据包传输重新开始时需从服务器系统存储器读取比完整数据包少的数据。
[0026]根据本发明的一个方面,其涉及一种混合网络设备,其中,混合网络设备还配置成当丢掉(drop) —个数据包时,废弃(discard)在所述服务器系统存储器中剩余的数据包数据,使得所述剩余数据不传输至混合网络设备。
[0027]根据本发明的一个方面,其涉及一种混合网络设备,其中,总线主控DMA控制器利用PCI Express连接至服务器节点。
[0028]根据本发明的一个方面,其涉及一种混合网络设备,其中,网络交换机处理以太网数据包。
[0029]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟数据包传输取决于数据包尺寸、可用的带宽资源、可用的数据包存储资源、数据包目的地队列长度或者数据包目的地队列流量控制状态。
[0030]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包传输取决于可用的带宽资源、可用的数据包存储资源、数据包目的地队列长度、数据包在数据包目的地队列中的位置、数据包目的地队列流量控制状态或者数据包处理的完成。
[0031]根据本发明的一个方面,其涉及一种混合网络设备,包括:
[0032]-总线主控DMA控制器;以及
[0033]-网络交换机
[0034]-其中,通过DMA控制器的至网络交换机的数据传输基于网络交换机中的可用的资源来安排。
[0035]根据本发明的一个方面,其涉及一种混合网络设备,其中,总线主控DMA控制器利用PCI Express连接至服务器节点。
[0036]根据本发明的一个方面,其涉及一种混合网络设备,其中,网络交换机处理以太网数据包。
[0037]根据本发明的一个方面,其涉及一种混合网络设备,其中,当所述数据包数据不需要确定数据包目的地时,所述数据包数据从服务器节点至混合网络设备的传输被推迟。
[0038]根据本发明的一个方面,其涉及一种混合网络设备,其中,存储所确定的数据包目的地直到数据传输重新开始。
[0039]根据本发明的一个方面,其涉及一种混合网络设备,其中,在传输重新开始之前废弃所确定的数据包目的地。
[0040]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟完整的数据包传输的决定取决于软件控制的设置。
[0041]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟数据包数据传输取决于是数据包尺寸。
[0042]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟数据包数据传输取决于可用的带宽资源。
[0043]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟数据包数据传输取决于可用的数据包存储资源。
[0044]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟数据包数据传输取决于数据包目的地队列长度。
[0045]根据本发明的一个方面,其涉及一种混合网络设备,其中,推迟数据包数据传输取决于数据包目的地队列流量控制状态。
[0046]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包数据传输取决于可用的带宽资源。
[0047]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包数据传输取决于可用的数据包存储资源。
[0048]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包数据传输取决于目的地队列长度。
[0049]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包数据传输取决于数据包在目的地队列中的位置。
[0050]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包数据传输取决于数据包目的地队列流量控制状态。
[0051]根据本发明的一个方面,其涉及一种混合网络设备,其中,重新开始推迟的数据包数据传输取决于数据包处理的完成。
[0052]根据本发明的一个方面,其涉及一种混合网络设备,其中,当在设备中主动丢掉数据包时,丢掉该数据包的决定所不需要的数据包数据没有传输至设备。
[0053]本发明的第一方面涉及一种将网络接口控制器和网络交换机集成进混合网络边缘设备的方法。
[0054]本发明的第二方面涉及一种使网络接口控制器获知网络交换机的状态并且使用该信息来安排从本地连接的服务器的系统存储器至网络交换机的传输的方法。
[0055]本发明的第三方面涉及一种推迟从服务器系统存储器至网络交换机的数据包数据传输的方法。
[0056]本发明的第四方面涉及一种推迟从服务器系统存储器至网络交换机的数据包数据传输的方法,其中,存储数据包处理结果,使得当推迟的数据包传输重新开始时需从服务器系统存储器读取比完整数据包少的数据。
[0057]本发明的第五方面涉及一种选择何时推迟从服务器系统存储器的数据包数据发送从而在提供第三方面的优点的同时保持低延迟的方法。
[0058]本发明的第六方面涉及一种需要重复的数据包处理的保持网络交换机缓冲资源的方法,其中,选择性地扔掉数据包处理结果。
[0059]本发明的第七方面涉及一种通过消除对丢掉的数据包的一部分进行读取的需要来保持服务器系统存储器带宽和总线带宽的方法。
[0060]上面的本发明的各方面中的任意特征可以以可形成本发明的不同变体的任意方式结合。
【专利附图】
【附图说明】
[0061]根据本发明的某些实施例的下列详细描述,本发明的其他目的、特征以及优点将会很明显,其中,本发明的某些实施例将参考附图进行更详细的描述,其中:
[0062]图1示出了几个服务器节点连接至边缘网络交换机的系统;
[0063]图2示出了在典型现有技术系统中通过应用软件发送至网络的数据包;
[0064]图3示出了根据本发明的实施例的几个节点连接至混合网络设备的系统;
[0065]图4示出了根据本发明的实施例的通过应用软件发送至网络的数据包;以及
[0066]图5示出了根据本发明的实施例的框图;以及
[0067]图6示出了根据本发明的实施例的从以太网接口接收数据包的流程图;以及
[0068]图7示出了根据本发明的实施例的从软件应用发送数据包的流程图;以及
[0069]图8示出了根据本发明的实施例的总线传输仲裁的流程图;以及
[0070]图9示出了根据本发明的实施例的描述在外围总线接口上接收的数据包在发送队列中排队的流程图;以及
[0071]图10示出了根据本发明的实施例的重新开始推迟的数据包传输的决定的流程图;以及
[0072]图11示出了从服务器存储器传输重新开始的数据包的流程图;以及
[0073]图12示出了根据本发明的实施例的网络传输仲裁器的流程图;以及
[0074]图13示出了根据本发明的实施例的数据包至服务器存储器的传输的流程图;以及
[0075]图14示出了根据本发明的实施例的数据包在以太网接口上的发送的流程图。
【具体实施方式】
[0076]本发明将利用PCI Express服务器外围总线和以太网网络来例示,但是能够利用任意网络和外围总线技术来实现。图1中给出了根据现有技术的典型网络系统100,其中,包括NIC109的服务器节点101与网络交换机113经由以太网链路110互连。通过连接至服务器PCI Express总线104的所述NIC109来提供服务器侧以太网连接。NIC109包括PCIExpress端点105、数据包缓冲器107、以太网接口 108以及总线主控DMA控制器106,该总线主控DMA控制器106处理在服务器系统存储器102与NIC数据包缓冲器107之间经由PCI Express总线104的数据传输。在服务器系统存储器102中创建的并且为了发送而排队的每个数据包将由DMA控制器106经由PCI Express总线104获取,存储进数据包缓冲器107中并且在以太网接口 108上发送至网络交换机113。在NIC以太网接口 108上接收的来自网络交换机113的数据包存储在数据包缓冲器107中,由DMA控制器106经由PCIExpress总线104写入服务器系统存储器102,并且排队以由在服务器CPU103上运行的服务器软件来处理。网络交换机113包括多个面向服务器的以太网接口 111,多个面向网络的以太网接口 114,以及包括数据包处理引擎115和数据包缓冲器116的交换机核112。通常存在多个面向服务器的以太网接口 111 (如在图中所指示),每个接口都连接至服务器节点101、117。对于每个传入的数据包,数据包处理引擎115将检查数据包报头,并且网络交换机113将基于该检查和当前资源状态来丢掉该数据包或者将该数据包转发至一个或几个以太网接口 111、114。在数据包被转发之前,还可以基于数据包报头来修改该数据包。
[0077]根据现有技术的描述数据包如何通过服务器软件应用发送至网络的数据包处理顺序200示出在图2中。在服务器节点上执行的应用软件201通过将要发送的数据写入至服务器系统存储器209中的数据包缓冲器210来准备该要发送的数据。然后,将数据的句柄(handle)转到网络协议栈202。网络协议栈202会将数据划分成数据包,通过在数据包数据之前添加网络报头来扩展每个数据包。将服务器系统存储器209中的数据包的句柄转手至NIC驱动器203,该NIC驱动器203转而将这些处理转到NICDMA控制器204。每个数据包通过NIC DMA控制器204从系统存储器209移动至NIC数据包缓冲器211,并且在以太网接口 205上以线路速率发送。当数据包通过以太网接口 206到达网络交换机时,数据包报头被提取并发送至数据包处理207。数据包数据存储进交换机数据包缓冲器212。基于数据包处理207的结果和交换机中的资源状态,该数据包或者被丢掉,或者为了在一个或几个以太网接口 208上进行发送而排队。
[0078]为了避免耗尽网络交换机113中的缓冲资源116,可以构建符合标准的暂停帧并且将这些符合标准的暂停帧从交换机发送至一个或几个连接的以太网接口 108。当支持流量控制的以太网接口 108接收暂停帧时,数据包发送在该帧中所指示的一段时间内被暂停。流量控制的粒度受限于带外信令的缺乏并且因此依赖于可用标准,诸如IEEE802.1Qbb0必须确定在每一端的数据包缓冲107、116的大小以解释以太网连接110的往返延迟和尺寸最大的以太网帧的发送时间。
[0079]在现有技术系统中,在NIC中的中间缓冲导致在延迟和功耗上的消耗。
[0080]现有技术中,一旦开始数据包传输,则数据包传输总是会全部完成。因此,数据包因在服务器节点或交换机中进行发送从而在后来的数据包能够被传输之前该数据包将总是被完全丢掉或者被完全传输。结果,低优先级数据包会通过暂时阻止更高优先级数据包的发送而在更高优先级数据包流中引入延迟。
[0081]在现有技术中,即使输出目的地队列拥塞,数据包仍会从服务器节点传输至交换机数据包缓冲器,潜在地浪费输入带宽和交换机数据包缓冲器空间。这种无条件的数据包传输也会使服务器应用看不到网络拥塞问题。
[0082]在现有技术中,即使在系统中不存在全局性资源短缺,但服务器节点资源的暂时缺乏仍会导致数据包丢掉。
[0083]下文中将参考附图更充分地描述本发明的实施例。然而,本发明可以以许多不同的形式来实施并且不应理解为限于本文给出的实施例和变形。而是,提供该实施例和变形,使得本公开将全面和完整,并且将向本领域中的那些技术人员更充分地传达本发明的范围。全文中,相同的附图标记表示相同的元件。
[0084]图3中描绘了基于本发明的利用混合网络设备300的网络系统的概况。混合网络系统300包括无NIC的服务器节点301和混合网络设备310,其中,在所述服务器节点301中的PCI Express服务器外围总线304延伸305以到达混合网络设备310。混合网络设备310包括至少一个PCIExpress端点306、至少一个总线主控DMA控制器307、至少一个以太网接口 309以及交换机核308。至少一个DMA控制器307允许对独立于混合节点301中的服务器CPU303的服务器节点301的服务器系统存储器302进行访问。混合网络设备310中的交换机核308包括数据包缓冲器312和数据包处理引擎311。
[0085]描述数据包如何通过服务器软件应用发送至网络的、根据本发明的混合网络系统的数据包处理顺序400在图4中例示。在混合网络系统中,许多这样的序列可同时作用。在服务器节点301上执行的应用软件401通过将要发送的数据写入服务器系统存储器407中的数据包缓冲器408来准备该要发送的数据,然后将对数据的句柄转到网络协议栈402。网络协议栈402会将数据划分成数据包,通过在数据包数据之前添加网络报头来扩展每个数据包。将系统存储器407中的数据包的句柄转交至混合网络设备驱动器403,该设备驱动器转而将这些处理转交到交换机DMA控制器404。数据包完整地或部分地从服务器系统存储器407移动至混合网络设备,在这里数据包报头被提取并且发送至数据包处理405,同时数据包数据存储在混合网络设备中的交换机数据包缓冲器409中。在现有技术中,将从服务器系统存储器传输完整的数据包,但是在本发明中,能够在完整的或推迟的数据包传输之间做出选择。在推迟的数据包传输中,最初从服务器系统存储器读取数据包的仅仅一部分。可由DMA控制器307基于每个数据包来采取推迟完成数据包传输的决定。
[0086]基于数据包处理405的结果和混合网络设备中的资源状态,数据包或者被丢掉或者为了在一个或几个以太网接口 406上进行发送等而排队。
[0087]图5中示出了根据本发明的实施例的混合网络设备500的更详细的框图。混合网络设备500包括至少一个PCI Express端点501、至少一个总线主控DMA控制器503、总线传输仲裁器504、数据包处理引擎506、数据包缓冲器507、网络传输仲裁器505以及以太网接口 502。PCI Express端点501实现了从混合网络设备310经由服务器PCI Express总线304对服务器系统存储器302的访问。连接至PCI Express端点501的DMA控制器503传输来自和至服务器节点301中的服务器系统存储器302的数据包数据和相关的元数据。总线传输仲裁器504控制从混合网络设备310对外围总线304的访问,并且选择要将哪个数据包数据从服务器系统存储器302传输至混合网络设备310的数据包处理引擎506。该选择可以基于在服务器节点301、313(如果存在多个服务器节点)和混合网络设备数据包缓冲器507中排队的数据包的信息。数据包处理引擎506确定数据包的目的地和输出格式。还可以执行各种操作,诸如,设置数据包优先级。数据包缓冲器507对数据包进行存储,直到安排这些数据包在接口上进行发送。目的地可以是以太网接口 502或PCI Express端点501。网络传输仲裁器505选择在数据包缓冲器507中排队的数据包中的某一个来传输。该选择是基于来自数据包处理的属性并且基于可用的资源。以太网接口 502实现了网络访问。混合网络设备310可包括这些接口中的一个或几个或不包括这些接口。
[0088]图6中示出了根据本发明的实施例的描述在混合网络设备500中从网络接收数据包的处理的流程600。数据包通过一个或多个以太网接口来接收601、502,并且以先来先服务的方式提供至数据包处理引擎602、506。数据包数据存储在数据包缓冲器507中,等待数据包处理602、506的完成。一旦数据包处理结束,均在混合网络设备500中,将数据包的句柄放置在发送队列603中,等待网络传输仲裁器505的仲裁。
[0089]根据本发明的实施例的描述从在连接至混合网络设备310的服务器节点301上执行的软件应用401发送数据包的处理的流程700在图7中示出。软件构建了服务器节点301中的服务器系统存储器302中的数据包701和数据包描述符702。数据包描述符包括数据包元数据和数据包数据的句柄。通过将数据包描述符的句柄经由服务器节点301外围总线接口写入至混合网络设备310内的硬件寄存器来将该句柄提供703至混合网络设备310,该服务器节点301外围总线接口在这种情况下是PCI Express接口 304、305、306。混合网络设备310内的DMA307使指针在先入先出接收区(RX FIFO, receive first-1n-first-out)中排队704,等待总线传输仲裁504。RX FIFO中的每个句柄与服务器节点301中的服务器系统存储器302中的数据包有一对一对应关系。每个总线连接可能存在不止一个RX FIFO (如图3中所示),每个RX FIFO由其自己的硬件寄存器提供。
[0090]图8中示出了根据本发明的实施例的在混合网络设备500中的总线传输仲裁800的流程图。仲裁有两方面,数据包仲裁(包括步骤805和806)和总线仲裁(包括步骤801、802,803和804)。总线仲裁防止描述符和报头的获取堵塞完整的数据包的传输,并且平衡为接收传输和发送传输而分配的带宽。这通过如下方式来实现:首先对完成推迟的数据包传输给出超过开始新数据包传输的严格优先级802,并且然后对开始接收数据包传输给出超过开始发送数据包传输的严格优先级803。通过挑选非空RXFIFO中的一个来选择接收数据包805。通过首先以循环方式挑选与非空RX FIFO的外围总线连接并且然后以严格的优先级在属于相同总线的RX FIFO之间进行挑选来选择RX FIFO。通过挑选非空的先入先出发送区(TXFIFO)中的一个来选择806发送数据包。通过首先以循环方式挑选与非空TXFIFO的外围总线连接并且然后以严格的优先级在属于相同总线的TX FIFO之间进行挑选来选择TX FIFO。当已经选择了 FIFO时,向DMA控制器通知该决定807、808、809。
[0091]现有技术中的NIC和集成的NIC和交换机在服务器节点存储器与交换机缓冲存储器之间传输完整的数据包。在现有技术中,可以在数据包传输完成之前开始数据包处理,而在本发明中,DMA控制器具有这样的能力,即,获取部分数据包并且将该数据包报头提供至数据包处理引擎,同时推迟或中止完整的数据包的传输,从而保留交换机数据包缓冲和带宽资源。
[0092]图9示出了根据本发明的实施例的从已决定从服务器节点301向混合网络设备310传输数据包的点至数据包进行排队以从混合网络设备310发送的点所采取的步骤。当总线传输仲裁器通过指示RXFIF0901而开始接收传输时,DMA控制器307读取来自RX FIFO的描述符句柄并且使用该句柄以通过服务器系统总线接口 903从服务器系统存储器302读取描述符。在现有技术中,完整的数据包会从服务器系统存储器传输,但在本发明,可以在完整的数据包传输904或推迟的数据包传输910之间做出选择。在推迟的数据包传输中,最初从服务器系统存储器中读取数据包的仅仅一部分。可由DMA控制器307基于每个数据包来采用推迟完成数据包传输的决定。这使基于本发明的设备比传统边缘网络交换机能够更早地自由使用可用的带宽资源以检查数据包,从而更好地获知数据包仲裁决定。这导致更好地利用可用的带宽和缓冲器资源。存在几种用于做出推迟904完整的数据包传输的决定的方法。根据本发明,用于做出推迟904完整的数据包传输的决定的不同变形可以是:
[0093]I)使用软件控制的设置;
[0094]II)决定基于数据包尺寸阈值,其中,高于阈值尺寸的数据包将总被推迟,
[0095]III)决定基于可用的带宽资源的阈值,其中,当可用的资源低于阈值时将推迟所有数据包,并且
[0096]IV)决定基于可用的数据包缓冲资源的阈值,其中,当可用的资源低于阈值时,将推迟所有数据包,
[0097]V)决定基于数据包目的地队列长度,其中,当队列长度高于阈值时,将推迟针对目的地队列的所有数据包,以及
[0098]VI)决定基于数据包目的地队列的流量控制状态,其中,当队列暂停时,将推迟针对目的地队列的所有数据包。
[0099]同时,利用在数据包描述符中的数据包数据句柄从服务器节点存储器获取数据包的开始905、906。获取的数据的量至少是开始数据包处理所需的量。所读取的数据包的第一部分提供至数据包处理引擎907、908。数据包处理的结果是用于数据包修改的目的地、指令和服务属性品质。当推迟的数据包的数据包处理结果可获得时,在本发明中在无附加带宽成本的情况下能够丢掉数据包911。如果未丢掉该数据包,则数据包或者被整个读取909或者被进一步推迟。对于推迟的数据包,还可以废弃处理结果913,但是需要将数据包句柄退回至RX FIR0914以便在稍后的时间重新进行处理。对于既没有废弃又没有丢掉的推迟的数据包,将描述符存储在推迟池912,等待重新开始决定。对于推迟的数据包,获取的数据的量写入至描述符。基于目的地和服务属性品质,将没有废弃或丢掉的任何数据包放置在发送队列915,等待网络仲裁。对于排队的数据包,将数据包数据和数据包处理的结果存储在数据包缓冲器中。
[0100]图10中示出了在本发明的实施例中重新开始推迟的数据包传输100的处理。存在几种用于采用开始完成数据包传输的决定的方法。根据本发明,采用开始完成数据包传输1001的决定的不同变形可以是:
[0101]I)当存在可用的带宽时,开始完成数据包传输,
[0102]II)当数据包缓冲资源变得可用时,开始完成数据包传输,
[0103]III)当发送队列中数据包的数量或者数据包之前的数据包数据量低于阈值时,开始完成数据包传输,
[0104]IV)当已确定了数据包目的地队列并且该队列的尺寸低于阈值时,开始完成数据包传输,
[0105]V)当数据包目的地队列的流量控制状态从暂停变成非暂停时,开始完成数据包传输,以及
[0106]VI)当数据包处理结束时,开始完成数据包传输。
[0107]当采用了重新开始推迟的数据包传输的决定时,将数据包描述符从推迟池移出并且放置在推迟FIFO中1003,等待总线仲裁。
[0108]图11示出了根据本发明的实施例的当总线传输仲裁器选择了推迟FIF01101时所采取的步骤的流程图1100。首先,从推迟FIFO读取描述符1102,然后利用数据包句柄和如在描述符中存储的所示出的之前读取的量从服务器系统存储器读取该数据包的剩余部分1103。
[0109]图12示出了根据本发明的实施例的网络传输仲裁的流程图1200。数据包发送决定在TX FIFO中排队,并且每个以太网接口和每个总线接口映射至TX FIFO。当在TX FIFO中存在空闲空间1201并且在发送队列中存在至少一个为了网络仲裁而排队的数据包1202时,能够选择发送队列1203、1204。通过首先以循环方式挑选与非空发送队列的发送接口 1203并且然后以严格的优先级在属于相同接口的发送队列之间进行挑选1204来选择发送队列。当已选择了发送队列1203、1204时,将在队列的头部的数据包句柄移动至TXFIF01205。经由服务器外围总线接口至直接连接到混合网络设备的服务器节点的数据传输完全由混合网络设备DMA控制器控制。DMA控制器将数据包直接写入至服务器系统存储器,只要数据包被完全传输,其就被提供至在服务器上执行的软件。该处理的流程图1300在图13中示出。
[0110]服务器软件预分配缓冲器以保持所接收的数据包,并且创建包括用于所分配的缓冲器的句柄和用于数据包元数据的附加空间的缓冲器描述符。用于缓冲器描述符的句柄通过将它们经由服务器外围总线接口写入至混合网络设备内的硬件寄存器来提供至该设备。DMA控制器将该句柄放置在TX FIFO缓冲器中,等待发送数据包传输。
[0111]当总线传输仲裁器通过指示TX FIFO而开始了发送传输1301时,DMA控制器从TXFIFO缓冲器读取空缓冲器描述符的句柄,然后使用该句柄通过服务器系统总线接口从服务器系统存储器读取描述符1303。
[0112]当数据包数据可用1304时,利用在空缓冲器描述符中的数据句柄,经由服务器外围总线将数据包从数据包缓冲器读取出来1305并且写入服务器系统存储器1306。然后描述符被填写了数据包元数据1307并且写回至服务器系统存储器1308。一旦数据包数据和描述符被传输至服务器系统存储器,则产生服务器中断1309,向服务器软件通知发送的数据包。
[0113]服务器软件在空缓冲器描述符句柄被消耗时将用新的空缓冲器描述符句柄补充TX FIFO缓冲器。
[0114]图14中例示了在本发明的实施例中用于以太网接口的数据包发送启动。当存在可用的网络带宽1401并且存在至少一个为了在TX FITO中发送而排队的数据包1402时才能够开始发送。当足够的数据包数据可用以允许在以太网接口线路速率下进行数据包发送1403时,数据包从数据包缓冲器读取出来1404并且在以太网接口上发送1405。发送通过网络传输仲裁器开始,但之后由网络接口的线路率来支配。
[0115]总而言之,在本发明中,在NIC中的数据包缓冲和处理被忽略,从而允许服务器节点存储器与交换机数据包缓冲器之间的直接连接,因此,允许更好的流量控制,更好的带宽利用,数据包缓冲器资源的更好利用,更低的延迟,更低的丢包率,更少的元件数量、更低的功耗和更闻的集成。
[0116]本文中所使用的术语目的仅是为了描述特定实施例并且并不意在限制本发明。如本文中所使用的,单数形式“一(a)”、“一(an)”和“该(the) ”意在还包括复数形式,除非上下文清楚地指示并非如此。还要理解的是,术语“包括”(“comprises”、“comprising”、“includes”和/或“including”)在本文中使用时指存在所述的特征、整数、步骤、操作、元件和/或部件,但是不排除存在或者增加一个或多个其他特征、整数、步骤、操作、元件、部件和/或它们的组。
[0117]除非另有规定,否则本文所使用的所有术语(包括技术和科学术语)具有与本发明所属【技术领域】中的普通技术人员通常所理解的含义相同的含义。还要理解的是,本文中所使用的术语应理解为具有与其在本说明书的上下文和相关领域中的含义一致的含义并且将不以理想的或过于正式的意义来解释,除非在本文明确地这样规定。
[0118]上面已描述了本发明的原理、优选实施例和操作的模式。然而,本发明应视为示例性的而不是限制性的,不应视为限于上面讨论的特定实施例。发明的各种实施例的不同特征能够与除文中明确描述的那些组合以外的其他组合来结合。因此,应理解的是,本领域的技术人员可以在不背离如通过所附的权利要求书所限定的本发明的范围的情况下,对那些实施例进行变化。
【权利要求】
1.一种混合网络设备,包括: -能够访问服务器系统存储器的至少一个服务器接口; -网络交换机,所述网络交换机包括数据包处理引擎和交换机数据包缓冲器,所述数据包处理引擎配置成处理通过所述网络交换机路由的数据包,所述交换机数据包缓冲器配置成在发送之前将所述数据包排队; -至少一个网络接口;以及 -至少一个总线主控的直接存储器存取控制器,所述总线主控的直接存储器存取控制器配置成经由所述至少一个服务器接口访问所述服务器系统存储器的数据并且传输来自和至所述混合网络设备的数据。
2.根据权利要求1所述的混合网络设备,还包括: -总线传输仲裁器,所述总线传输仲裁器配置成控制从所述服务器系统存储器至所述混合网络设备的数据包处理引擎的数据传输。
3.根据权利要求2所述的混合网络设备,其中,所述控制基于所述网络交换机中的可用的资源。
4.根据权利要求2所述的混合网络设备,其中,所述控制还基于在所述服务器节点中排队的数据包。
5.根据权利要求2所述的 混合网络设备,其中,所述控制取决于受软件控制的设置。
6.根据前述权利要求中的任意一项所述的混合网络设备,其中,所述总线主控的直接存储器存取控制器配置成传输比完整数据包少的并且足够用于所述数据包处理引擎开始数据包处理的数据。
7.根据前述权利要求中的任意一项所述的混合网络设备,其中,所述总线主控的直接存储器存取控制器配置成传输比完整数据包少的并且至少为开始所述数据包处理所需的数据量的数据。
8.根据权利要求6或7所述的混合网络设备,其中,总线主控的直接存储器存取控制器配置成推迟所述数据包的剩余部分的传输。
9.根据权利要求8所述的混合网络设备,其中,所述混合网络设备配置成存储数据包处理结果直到数据传输重新开始,使得当推迟的数据包传输重新开始时不需要重复所述数据包处理。
10.根据权利要求8或9的混合网络设备,其中,所述混合网络设备配置成存储数据包数据直到数据传输重新开始,使得当推迟的数据包传输重新开始时需从所述服务器系统存储器读取比完整数据包少的数据。
11.根据权利要求1所述的混合网络设备,其中,所述混合网络设备还配置成当丢掉一个数据包时,废弃在所述服务器系统存储器中剩余的数据包数据,使得所述剩余数据没有传输至所述混合网络设备。
12.根据前述权利要求中任意一项所述的混合网络设备,其中,所述总线主控的直接存储器存取控制器利用高速外部设备互连总线连接至服务器节点。
13.根据前述权利要求中任意一项所述的混合网络设备,其中,所述网络交换机处理以太网数据包。
14.根据前述权利要求中任意一项所述的混合网络设备,其中,推迟数据包数据传输取决于数据包尺寸、可用的带宽资源、可用的数据包存储资源、数据包目的地队列长度或者数据包目的地队列流量控制状态。
15.根据前述权利要求中任意一项所述的混合网络设备,其中,重新开始所述推迟的数据包数据传输取决于可用的带宽资源、可用的数据包存储资源、数据包目的地队列长度、数据包在所述数据包目的地队列中的位置、数据包目的地队列流量控制状态或者数据包处理的 完成。
【文档编号】H04L12/935GK104054309SQ201280053410
【公开日】2014年9月17日 申请日期:2012年11月1日 优先权日:2011年11月4日
【发明者】帕特里克·森德斯特龙, 佩尔·卡尔松, 拉尔斯·维克隆德, 本尼·安德森, 肯尼·拉内鲁普, 罗伯特·维坎德, 丹尼尔·阿格伦 申请人:派克设计公司