网络交换机中的灵活的缓冲区分配的制作方法

文档序号:11253898阅读:446来源:国知局
网络交换机中的灵活的缓冲区分配的制造方法与工艺

发明领域

本发明大体上涉及包通信网络,特别是涉及被部署在这样的网络中的交换机中的缓冲区管理。

背景

用在诸如以太网和infiniband网络的高速包网络中的交换机通常包含缓冲存储器。由交换机通过其接口中的一个所接收的包在等待转移到适当的出接口或者在多播包的情况下可能被转移到多个出接口的同时被暂时储存在缓冲存储器中。虽然缓冲存储器可被静态分配到每个接口,但许多现代的包交换机使用共享存储器,其中缓冲区空间根据流量负载和存储器可用性以及在交换机中的处理之后所设置的包优先级和包入口优先级被灵活分配给不同的接口和队列。

作为一个示例,美国专利申请公开2013/0250762描述了一种用于实现对于共享缓冲池的多个端口的无损行为的方法。包被“着色”并被储存在共享的包缓冲区中,而不分配每端口固定的页面分配。

概述

下文中所描述的本发明的实施例提供了用于网络元件中的缓冲区管理的改进的方法和装置。

因此,根据本发明的实施例,提供了包括多个接口的通信装置,该多个接口被配置为连接到包数据网络,以便用作通过该装置从网络接收多种类型的数据包的入接口和将其转发到该网络的出接口,该多种类型包括至少第一类型和第二类型。存储器耦合到接口并被配置为缓冲区,以容纳在等待经由出接口传输到网络的同时通过入接口接收的包。包处理逻辑被配置为保持与出接口中的各自出接口相关联的多个传输队列,并被配置为将与第一和第二类型的第一和第二数据包对应的第一和第二队列条目二者分别放置在共同的传输队列中,以用于通过给定的出接口传输,同时在缓冲区中分配各自的空间,以对照单独的第一和第二缓冲区分配储存第一和第二数据包,该第一和第二缓冲区分配被分别分配给第一类型和第二类型的数据包。

在一个实施例中,第一类型的数据包由单播包组成,而第二类型的数据包由多播包组成。另外地或可选地,第一类型和第二类型的数据包使用各自不同的第一传输协议和第二传输协议来传输。

通常,包处理逻辑被配置为,当给定的队列条目到达共同的传输队列的头部时,通过给定的出接口传输对应的数据包并释放第一缓冲区分配和第二缓冲区分配的相应一个缓冲区中的对应的空间。

在一些实施例中,第一缓冲区分配在与多个不同的出接口相关联的多个传输队列上共享,第一类型的数据包通过该多个不同的出接口被传输。

另外地或可选地,多个传输队列包括至少两个传输队列,该至少两个传输队列都与相同的给定的出接口相关联并具有各自不同的服务质量的水平,并且不同的第一类型和第二类型的第一数据包和第二数据包具有共同的服务质量的水平。

在所公开的实施例中,包处理逻辑被配置为,响应于第一缓冲区分配和第二缓冲区分配的各自的填充水平(filllevel),分别将拥塞避免机制应用到第一类型和第二类型的数据包。

根据本发明的实施例,还提供了用于通信的方法,该方法包括通过网络元件的入接口接收包括至少第一类型和第二类型的多种类型的数据包。在网络元件中的缓冲区内的相应的空间被分配以对照单独的第一缓冲区分配和第二缓冲区分配来存储第一数据包和第二数据包,该单独的第一缓冲区分配和第二缓冲区分配被分别指派给第一类型和第二类型的数据包,同时该数据包等待经由网络元件的出接口传输到网络。在网络元件中,保持多个传输队列,该多个传输队列与出接口中的相应出接口相关联。分别与第一类型和第二类型的第一数据包和第二数据包对应的第一队列条目和第二队列条目二者被放置在共同的传输队列中,以用于通过给定的出接口传输。当对应的队列条目到达共同的传输队列的头部时,第一数据包和第二数据包中的每个通过给定的出接口来传输。

根据结合附图进行的本发明的实施例的以下详细描述,本发明将得到更完全地理解,其中:

附图简述

图1是根据本发明的实施例示意性图示具有共享缓冲区的交换机的框图;

图2是根据本发明的实施例示意性图示数据包通过交换机的流的框图;以及

图3是根据本发明的实施例示意性示出交换机中的包处理逻辑的细节的框图。

实施例的具体描述

在本领域中已知的诸如交换机的网络元件中,排队和缓冲通常紧密耦合在一起。换句话说,当包进入给定的传输队列以通过交换机的某出接口传输时,包占用与该队列相关联的缓冲区空间中的槽,直至该包被传输。因此,例如,当不同类型的包(诸如广播、多播包和单播包、或使用不同协议传输的包,例如tcp包和udp包)共享相同的传输队列时,它们也必定共享相同的缓冲区分配。因此,当一种类型的高流量引起给定的传输队列上的拥塞时,所产生的拥塞避免措施(诸如丢弃或标记包或者在入端口上施加反压力)也将应用到共享传输队列的其他类型的包。

本文中所描述的本发明的实施例松开-并且可能完全解耦-队列指派和缓冲区占用之间的连接,从而在通信资源的分配和管理上提供了更大的灵活性。在所公开的实施例中,即使当不同的包类型共享共同的传输队列时,也可给这些不同的包类型在网络元件中指派缓冲区空间的单独的、相应的分配。网络元件中的包处理逻辑将与数据包对应的队列条目放置在共同的传输队列中,以用于通过适当的出接口传输,同时在共享缓冲区中分配相应的空间,以对照它们的单独的、相应的缓冲区分配储存不同类型的数据包。给定队列中的给定包类型可接收其自身的缓冲区分配,或者共同的缓冲区空间可针对跨多个传输队列的给定类型的包来分配,这意味着不同队列中的该类型的包共享相同的、共同的缓冲区分配。当给定的队列条目到达共同的传输队列的头部时,对应的数据包通过出接口被传输,并且相应的缓冲区分配中的空间被释放。

因此,通过适当分配相应的缓冲区空间,将网络资源的不同的、独立的共享分配给不同的包类型是可能的。对于任何给定的包类型的缓冲区分配可按传输队列或按出接口来分配,或者可在与多个不同的出接口相关联的多个传输队列上共享,给定类型的数据包通过该多个不同的出接口被传输。由于缓冲区分配和排队机制的这种解耦,包处理逻辑可响应于相应的缓冲区分配的填充水平将拥塞避免机制分别应用到不同类型的数据包。

现在参照图1和图2,其示意性地图示了根据本发明的实施例的、具有共享缓冲区的网络交换机20的操作。图1是示出了交换机20的物理组件和功能组件的框图,而图2图示了不同类型的数据包通过交换机的流。在所描绘的示例中,这些不同的类型包括多播包26和单播包32。可选地或另外地,包类型可通过使用不同的、相应的传输协议(诸如传输控制协议(tcp)和用户数据报协议(udp),或者infiniband可靠连接(rc)的、不可靠连接(uc)的传输类型和其他传输类型)传输来区分。进一步可选地或另外地,交换机20中的包处理逻辑可基于例如各种头字段和/或深度包检测(dpi)将任何其他合适的标准应用于区分包类型。

另外,虽然为了具体性和清晰起见,本实施例指的是网络交换机,但加以必要的修正,本发明的原理可同样应用于缓冲和转发数据包的其他类的网络元件中,包括(但不限于)路由器、网桥和隧穿元件(tunnelingelement),以及应用于将主机连接到网络的先进的网络接口控制器中。

如图1所示,交换机20包括端口22形式的多个接口,该端口22连接到包数据网络24,并且通常用作入接口和出接口二者。(虽然出于简化的目的在图1中仅示出了八个端口22,但在实践中,交换机20通常可能具有实质上更多数量的端口或可能更少的端口。)耦合到端口22的存储器36被配置为共享缓冲区,以容纳不同类型的包,该不同类型的包被指派给多个传输队列46,以传输到网络。

在所描绘的实施例中,交换机20通过入接口22接收多播包26。包26包括承载多播地址的报头28和数据有效载荷30。报头28可包括例如具有多播mac目的地址的层2报头或具有多播ip目的地址的层3报头。交换机20通过另一入接口22接收单播包32,其具有包含单播mac目的地址的单播报头34。端口22将包26和32导向存储器36,包的副本被储存在该存储器中同时等待通过适当的出端口22重新传输。包处理逻辑(在该实施例中被称作决策和排队逻辑38)读取报头28和34并查找目的地址,以便识别通过其传输相应的包的出端口22。

同时,缓冲区控制逻辑40分配存储器36中的共享缓冲区中的空间,以储存等待传输的包的副本。(对于本说明书和权利要求书,缓冲区控制逻辑40被认为是包处理逻辑的一部分,但是在实践中,其可与决策和排队逻辑38分开实现。)缓冲区控制逻辑40为多播包类型和单播包类型在存储器36中指派单独的、相应的分配42和44,并对照这些分配储存包26和32同时等待传输。如图1中所图示的,虽然多播包26的多个副本可通过不同的出端口22来传输,但缓冲区控制逻辑40可被配置为仅储存包的单一副本,该包的单一副本随后被复制以用于传输,例如如于2015年12月8日提交的美国专利申请14/961,923所描述的,该美国专利申请的公开内容通过引用并入本文。

对于被接受到存储器36中的对应的分配42、44...中的每个包,决策和排队逻辑38将队列条目(下文中被称作描述符)放置在适当的传输队列46中(或者在多播包的情况下,可能放置在多个传输队列中)。虽然出于简化的目的,图1仅示出了每个出端口22的单一传输队列,但在实践中,多个传输队列可对应于不同的、相应的服务质量水平与每个出接口相关联。被指派相同的服务质量水平的不同类型的数据包(诸如多播包和单播包)随后将使它们的队列条目放置在相同传输队列46中。另外地或可选地,逻辑38可将(除了服务质量水平之外或将其代替的)其他考虑应用于向队列指派包。如先前所指出的,缓冲区分配42、44...可各自与特定的出端口或传输队列相关联,或者它们可在多个传输队列上共享,该多个传输队列可与多个不同的出端口相关联,给定类型的数据包通过该出端口被传输。

当给定的队列条目到达其中放置有条目的传输队列46的头部时,决策和排队逻辑38从存储器36读取(并且如有必要复制)对应的数据包,并通过适当的出接口传输包。随后,缓冲区控制逻辑40将释放缓冲区分配42或44中的对应的空间。

图3是根据本发明的实施例示意性示出交换机20中的决策和排队逻辑38的细节的框图。为了清晰和具体起见,该图示出了逻辑38的一个可能的实施方式,但其他实施方式在本领域的技术人员阅读本说明书之后对于他们来说将是明显的,并且被认为是在本发明的范围内。虽然逻辑38的元件在图3中示为单独的功能组件,但在实践中,这些组件可在单一芯片或芯片组内的自定义或可编程硬件逻辑中一起被实施。

在接收输入包时,不管包类型,入端口22a(诸如图1中的端口22中的一个)都将包放置在存储器36中的缓冲区中并通知决策控制逻辑52包准备好进行处理。如先前所解释的,用于储存给定类型的包的缓冲区中的空间对照被指派给存储器36中的该包类型的单独的缓冲区分配42、44...来分配。基于这些缓冲区分配的相应的填充水平,包处理逻辑38可将拥塞避免机制(诸如流控制机制50和/或包丢弃和标记机制)分别应用到不同的包类型。

响应于由决策控制逻辑52接收的新的包已经到达的通知,解析器54对包报头进行解析并生成一个或多个描述符,该描述符传递至描述符处理器56,以用于进一步处理和转发指令的生成。基于描述符,例如,处理器56通常选择通过其传输包的出端口或端口22b。该描述符也可指示待应用到包的服务质量(qos),即,传输的优先级水平,并可指示对于包报头的修改的任何适用的指令。对于多播包,处理器56通常生成多个描述符,为传输包的副本的每个出端口22b生成一个描述符。所有这些描述符可具有相同的qos(例如,通过qos索引值指示),或者它们可被指派给两个或更多个不同的qos水平以用于不同的出端口。

描述符处理器56将描述符放置在排队系统60中的适当的传输队列(如先前附图中的队列46所示)中,以等待经由指定的出端口22b传输。通常,排队系统60包含对于每个出端口22b的专用传输队列或每出端口多个传输队列,每个qos水平一个传输队列。当在排队系统60中对描述符进行排队时,处理器56通知缓冲区控制逻辑40对应的包正在存储器36中消耗缓冲区空间,并且逻辑40对于讨论中的包类型对照适当的分配42、44...来记录缓冲区消耗。可选地,对缓冲区控制逻辑40的缓冲区消耗更新可来自排队系统60。

当描述符到达其传输队列的头部时,排队系统60将描述符传递给包修改器62来执行。包修改器62分别耦合到出端口22b并用作包传输单元。响应于描述符,包修改器62从存储器36读取适当的包数据的副本,并在包报头中做出所需的任何改变以用于通过出端口22b传输到网络24。在多播包的情况下,包修改器62可复制包数据,同时原始数据保留在存储器36中,直至所有的包副本被传输。

如图中所示,当通过对应的出端口22b传输包后(或在多播传输的情况下,当传输最后的包副本后),包修改器62给缓冲区控制逻辑40发信号,并且也可给决策控制逻辑52发信号。可选地,该包传输通知可来自排队系统60。响应于该通知,缓冲区控制逻辑40释放对应的分配42、44...中的缓冲区空间,使得存储器36中的位置可被重写,并且该分配可以自由地接收对应类型的其他包。该存储器核算和管理过程对于并行的多个不同的包通常发生在任何给定时间处。

将要理解的是,以上描述的实施例是通过示例的方式引用的,并且本发明不限于上文中已经具体示出和描述的那些实施例。相反,本发明的范围包括上文所描述的各种特征的组合和子组合以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的其变型和修改。

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