通过分组循环进行网络拥塞管理的制作方法

文档序号:11436569阅读:182来源:国知局
通过分组循环进行网络拥塞管理的制造方法与工艺

本申请是针对pct国际申请号为pct/us2013/046691、国际申请日为2013年6月20日、进入中国国家阶段的申请号为201380004557.6,题为“通过分组循环进行网络拥塞管理”的发明专利申请的分案申请。

本发明一般涉及计算机网络,并且更具体但非排他性地涉及用于经由分组循环来降低网络拥塞的技术。



背景技术:

计算机网络普遍存在于当今的计算机使用中。处理器速度、存储器、存储以及网络带宽技术的增长造成了对于具有日益增长的能力的网络的扩建和部署。最近,基于云的服务的引入,如amazon(例如,amazonelasticcomputecloud(ec2)以及simplestorageservice(s3))和微软(例如,azure和office365)所提供的那些服务,已经造成了对于公共网络基础设施的附加网络扩建,并造成了对大容量数据中心的部署增加以支持使用私有网络基础设施的这些服务。另外,在不久的将来,新一代(即,4g)移动网络数据服务预期会显著地影响无线和陆线网络的利用。这些以及其他考虑的结果是在可预见的将来,计算机网络的利用预期会继续高速增长。

用于促进计算机网络中的分组转发的关键组件是交换元件,在本文中它们通常称为网络元件并且包括交换机、路由器以及桥接器。交换机具有多个输入和输出端口,每一个经由链路连接到另一交换机或其他类型的网络元件,其中入站分组话务在输入端口处被接收并被转发出输出端口。一般而言,物理输入和输出端口的数量是相等的,并且在给定端口接收到的或转发出的话务量相对于其他端口是可变的。在内部,交换机的输入和输出端口在逻辑上连接,使得每一输入端口按一到多的配置连接到每一输出端口。输入和输出端口中的每一个具有用于临时存储(即,缓存)分组的缓冲区,并且交换机具有通常与不同的流类别、服务质量(qos)水平等相关联的其他中间输出缓冲区和/或队列。在典型的配置下,在给定输入端口处接收到的分组最初被缓存在与该输入端口相关联的输入缓冲区中并被分类。一旦被分类,该分组可与被分类成同一类别或流的其他分组一起缓存在分配给该类别或流的和/或与该分组要经由它被转发的输出端口相关联的中间输出缓冲区中。该分组随后可从中间缓冲区复制到该端口的较小输出缓冲区中,或者该中间输出缓冲区中的分组数据可被转发给该端口的物理(phy)层接口并转换成电子模拟、光学、或无线信号以通过该链路传输。

即使在网络变得更快时,拥塞继续存在。在某些水平上,网络拥塞类似于高速公路上的车辆交通拥塞。例如,考虑进入高速公路一部分的多个上匝道。传入交通来自多条路径并且归并成单个交通流。类似地,分组可由网络元件在多个输入端口处接收,而经由单个输出端口转发。多个输入端口类似于上匝道,并且经归并的交通流类似于经由输出端口转发的话务流。

高速公路上的交通管理通常通过计量经由上匝道进入的交通流来处理。在这一方法下,停行灯信令被用来控制进入经归并的流的交通的速率。与高速公路一样,网络交换机具有有限的吞吐量。然而,与高速公路(其中在拥塞时交通仅仅慢下来并且所有车辆被允许前进)不同,交换机按作为底层物理(层)传输的函数的线速度操作,如1、10或40千兆字节每秒(gbps)。话务负载的波动是通过将话务(待经由输出端口归并)缓存在输出和中间缓冲区中来处理的。然而,这些缓冲区大小有限并且必须采取测量以防止缓冲区溢出。

在输出缓冲区接近其容量时,交换机一般采取以下动作中的一个或多个。首先,它可丢弃传入分组。它还可向它的对等交换机发出流控制通知,和/或向后向拥塞源节点发出拥塞通知,使得它降低已拥塞的流的吞吐量。通常,这些动作或者不有效,或者生成不合乎需要的副作用。

在像tcp(事务控制协议)等可靠传输协议中,分组丢弃涉及该被丢弃分组的重传,这增加了整个数据传输的端到端等待时间,尤其是在分组丢弃是通过在目的地端节点处的某一定时器期满来检测到的情况下。同样,被丢弃的分组可造成tcp窗口大小的减小,这降低了吞吐量,即使拥塞只是暂时的。同时,流控制可造成拥塞在网络中向后蔓延。到已拥塞交换机的所有传入话务可被快速停止,因为发给对等交换机的流控制通知是通用xoff/xon请求,这不区分目的地为已拥塞输出缓冲区的话务流和目的地不为已拥塞输出缓冲区的话务流。稍后,如果已拥塞状况在热点处持续,则对等节点自己变得拥塞,因为它们不能减少目的地为已拥塞交换机的话务;并且以此类推至遍及整个网络。

向拥塞源后向发送拥塞通知(像qcn(量化拥塞通知)协议所做的那样)定义了网络级控制环路,这在拥塞只是暂时状况和/或拥塞流相关于热点与源节点之间的往返延迟而言不足够长寿的情况下可能不有效。注意,对于不同于tcp的将以全链路速度开始流传输而不处理任何拥塞窗口(例如,fcoe(以太网上的光纤信道))的传输协议,流持续时间相对于往返延迟而言一般太短,并且因此没有足够的时间供建立向后拥塞管理环路。在链路速度是1gbps及以上时尤其如此。另一方面,在传输协议如tcp那样实现慢启动机制时,端到端数据传输延迟不必要地先验地扩大,直至拥塞窗口算法将流传输速率稳定为大约网络容量为止。

附图说明

通过参考与附图一起进行的下面的详细描述,本发明的前述的方面和许多伴随的优点,将变得更加轻松地被理解,其中,在各个视图中,相同参考编号表示相同部件,除非另作说明:

图1是示例性trill网络的一部分的示意图;

图1a是示出图1a的trill网络中的路由桥接器之间的逻辑链路连接的示意图;

图1b示出覆盖在图1a中示出的trill网络的网段之上的图1b的逻辑链路连接;

图2是示出在七节点网络中使用链路状态协议以及对应的链路状态数据库的两部分图;

图3是示出使用图1a中示出的逻辑trill网络链路和节点拓扑的多路径路由的示例的示意图;

图3a是示出使用图1a中示出的逻辑trill网络链路和节点拓扑的路由桥接器与目的地节点之间的多路径路由的示意图;

图4是示出在两个源同时向一个目的地发送话务时可能发生的拥塞状况的示图;

图5是示出其中到目的地节点的转发路径采用朝向源节点的向后路径部分的分组再循环的示例的示图;

图6是示出了根据一个实施例的回环缓冲区的使用的框图;

图7是示出根据一个实施例的由网络元件执行以便于分组再循环的操作逻辑的流程图;

图8是示出向后转发给源节点的分组的示例的示图;

图9是示出根据一个实施例的用于解决第一类型的死锁的方法的示图;

图10是示出根据一个实施例的用于解决第二类型的死锁的方法的示图;

图11是包括被配置成支持分组再循环的多路径交换机的层3网络的示意图;

图12是示出根据一个实施例的被配置成支持分组再循环操作的示例性装置的示意图;

图13a和13b示出可被用来实现本文公开的实施例的各方面的示例性服务器刀片机架和服务器刀片配置;以及

图14是根据本文公开的实施例的各方面的被配置成实现分组再循环的网络接口控制器(nic)的示意框图。

具体实施方式

本文公开了配置成使用分组再循环来管理网络拥塞的方法、装置以及网络的实施例。在下面的描述中,阐述了很多具体细节(诸如trill网络中实现的实施例),以便全面地理解本发明的各实施例。然而,相关领域内技术人员将理解本发明可省去一个或多个特定细节而实现,或通过其它方法、组件、材料等实现。在其它例子中,公知的结构、材料或操作不被示出或详细说明以避免对本发明某些方面产生混淆。

贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定指的是同一实施例。此外,在一个或多个实施例中,特定特征、结构或特性可以以任何合适的方式组合起来。

根据现在公开的实施例的各方面,对网络管理和吞吐量的增强是通过在采用支持多路径转发的网络元件的网络中使用分组(再)循环来实现的。在这一方法下,每当属于可靠传输协议(如tcp)的单播分组的目的地是已拥塞输出端口时,代替丢弃该分组,该分组被再循环到当前没有拥塞的另一输出端口,以希望从那里找出到目的地的未拥塞路径。

一般而言,经由本文的各实施例公开的教导和原理可以在采用各种类型的协议的各种类型的网络下实现。在一些实施例中,本发明技术可在以下假定下的网络“云”中实现。首先,网络云配备有多路径,使得话务可跨可存在于源和目的地节点之间的多条路径来进行负载平衡。在一些网络架构中,如trill(多链路透明互连)网络,话务可以跨可存在于源和目的地节点之间的多条最短并行路径来进行负载平衡。或者,至少,分组可被转发到与到目的地的最短路径不同的另一路线,而不混淆网络元件中的转发/路由表。其次,通过可靠传输协议来传输的分组可无序到达目的地节点,而不涉及显著的额外处理等待时间来将它们递送给应用层。在一些实施例下,这可不应用于所有分组,而只应用于被标记为支持重排序的分组。第三,拥塞状况相对于从热点(例如,已拥塞端口)回到源节点的往返时间而言一般不足够长寿,从而准许高效的网络级拥塞管理控制环路(例如,qcn协议所定义的控制环路)。

根据各实施例的一个方面,一般概念是利用遍布各网络元件的缓冲容量来临时储存分组,直至暂时的拥塞状况消失以及找出了到目的地的空闲路径。如果拥塞持续,则分组将通常被循环回拥塞源端口,该拥塞源端口进而将降低该已拥塞流的传输速率。以与用于qcn的方式相类似的方式,每当新分组被循环回它的源时,传输速率降低(以及自增加)算法可在源节点处运行。

支持多路径转发的网络云架构的示例是trill网络。如该首字母缩写所示,trill网络采用具有许多链路的透明互连。此外,trill网络中的网络元件(称为路由桥接器(rbridge)或trill交换机)被配置成支持使用并行路径的多路径转发。为了便于在trill网络中使用可靠传输协议,分组可被无序接收。作为比较,ip网络(或诸如因特网等大型网络中的各部分)中的常规交换机被配置成将分类成同一流的分组沿单条路径转发,使得分组按它们被发送的次序来被接收。多路径转发和无序分组接收的各方面是在trill网络中转发分组的基础。

示例性trill网络100在图1、1a以及1b中示出。网络100包括经由多个路由桥接器104(每一个具有相应的标记,如图所示)互连的多个以太网段102(标记为a-n)。还示出了在源节点s处耦合到网络的源计算机106和在目的地节点d处耦合到网络的目的地计算机108。图1中示出的网络配置也被称为路由桥接器校园网(rbridgecampus)。

trill是因特网工程任务组(ietf)协议标准,它使用层3(即,osi模型网络层)路由技术来创建对ip节点而言看起来是单个ip子网的大型链路云。它允许创建相当大的层2(即,osi模型数据链路层)云,具有平坦的地址空间,使得各节点可以在该云内移动而不改变它们的ip地址,同时使用这些年来已演化的各种层3路由技术,包括最短路径和多路径。另外,trill支持层2特征,如虚拟局域网(vlan)、自动配置能力(同时允许在需要时手动配置)以及不使用附加协议的多播/广播。

trill协议演化来解决层2网络所固有的一些限制。为了更好地理解这些限制,回顾层2的历史是有见识的。最初,层2用作邻居节点之间的直接链路。大多数链路是点到点的,并且层2协议主要创建帧——一种在层1(物理层)所提供的比特流内用信号通知分组的开头和结尾和分组的校验和的方式。对于具有高误差率的链路,诸如高级数据链路控制(hdlc)等层2协议提供消息编号、确认、以及重传,所以层2协议在某些方面类似于诸如tcp等的可靠协议。hdlc和其他层2技术有时提供使多个节点按主/从方式共享链路的能力,其中一个节点通过诸如轮询等技术控制哪一节点进行传送。

随后,演化出了局域网(lan)的概念,最值得注意的示例是以太网。以太网技术按对等而非主/从关系来启用单个链路上的(通常)数百节点的互连。以太网基于csma/cd,其中cs=载波侦测(在讲话之前监听,使得你不会干扰);ma=多路接入;以及cd=冲突检测(当你正在讲话时监听,以查看在你正在讲话时是否有人开始讲话,使得你们两个彼此干扰)。

尽管当今以太网lan被广泛部署,但通过这样的lan转发和路由分组通常是使用层3路由器和交换机来实现的。然而,在历史上情况并非如此,在以太网lan诞生早期,采纳者相信lan技术可被用作诸如ip等传统层3协议的替换。人们构建直接在层2上实现的应用并且不具有层3支持。这一情况意味着该应用会受层2技术的人工产物的限制,因为层3路由器不能转发不包含由该路由器/交换机实现的层3头部的分组。另外,以太网lan的跨度受限于可能1千米的最大距离。

在使用直接构建在lan上的技术的人们意识到他们想要比lan技术所允许的更大(在距离和节点总数上)的网络时,业界发明了“桥接器”——转发层2分组的分组-转发设备——的概念。转发以太网分组可能看起来容易,因为以太网头部看起来类似于层3头部。它具有源和目的地地址,并且这些地址实际上比ip地址大。但以太网并未被设计来被转发。最值得注意的是,用于检测并丢弃循环分组的跳数(有时也称为“生存时间”或ttl)从以太网头部中省略。但也在以太网中失去了典型的层3协议的其他特征,如反映节点处于拓扑中的何处的地址、节点发现协议、以及路由算法。这些特征不在以太网中是因为以太网设计的意图是它是层2协议,被配置成在单条链路上操作。

为了解决这一缺点,发明了透明桥接器来作为转发由没有实现层3的端节点发出的以太网分组的机制。以太网当时具有硬分组大小限制,所以桥接器不能以任何方式修改该分组。满足这些约束的透明桥接器设计包括使桥接器混杂地监听、记住在每一端口上看到的源地址、以及基于学习到的目的地地址的位置来进行转发。如果目的地是未知的,则分组将会被转发到在其上接收它的端口之外的所有端口。

这一简单方法只在任何一对节点之间只存在一条路径的情况下有效。所以这一概念被称为生成树算法的协议来增强。物理拓扑可以是任意网格,但使用生成树算法的桥接器会将该拓扑修剪成在其上转发数据分组的无循环(树)拓扑。(“生成”意味着分组可到达所有节点。)尽管这一方法解决了在lan之间转发以太网分组的问题的各方面,但对当今网络而言它证明是不实际的。它需要桥接器被设计成能够以网速来检查每一传入分组,确定该分组是否是生成树消息,以及如果是则处理它。生成树算法需要桥接器进行转发,除非链路上存在“更合格”的邻居桥接器。如果桥接器因为拥塞压倒它处理传入消息的能力而丢失了来自它“更合格”的邻居桥接器的足够生成树消息,则该桥接器将得出它不具有更合格邻居的结论并且因此应当开始在链路上进行转发。这种情况以及其他情况使得该方法在本质上是不稳定的。

最初发明的以太网,csma/cd,几乎不存在了。当今,几乎所有以太网都包括用点到点链路连接的桥接器。头部仍然看起来像以太网,但添加了新字段,如vlan。由于历史原因,桥接是必须的,因为应用是在没有层3的情况下构建的。但当今,应用几乎普遍构建在ip上。所以为什么不用ip路由器来代替所有桥接器呢?

原因是ip的特性所导致的。在ip中,路由是针对链路的,而非节点。每一链路具有其自己的地址块。连接到多条链路的节点将具有多个ip地址,并且如果节点从一条链路移动到另一条链路,则它必须获得该链路的块内的新ip地址。使用ip,ip地址块需要被划分以向每一链路分配唯一的块,对于它们的端口中的每一个,ip路由器必须用该地址块来配置,并且从一条链路移动到另一条链路的节点必须改变它们的层3地址。因此,创建大型桥接以太网仍然是流行的,因为链路的桥接集合对ip而言看起来像单条链路。

trill允许以太网的易于配置,同时从在层3提供的路由技术中获益。因为它也与现有桥接器共存,所以不必要替换以太网中的所有桥接器,但越多桥接器被路由桥接器所替换,带宽使用越好且该云变得越稳定(因为生成树变得越来越小,并且在所有桥接器被路由桥接器替换的情况下最终消失)。

路由桥接器运行链路状态路由协议,这向它们中的每一个给出了包括所有路由桥接器和网络中路由桥接器之间的所有链路的网络拓扑的知识。使用这一协议,每一路由桥接器计算从它到每一其他路由桥接器的最短路径以及用于递送多目的地话务的树。

链路状态协议是其中每一路由器r确定它的邻居是谁并(向其他路由器)广播包括诸如“我是r”以及“我的邻居路由器是x(链路成本为c1)、y(成本c2)和z(成本c3)”等信息的分组(称为链路状态分组(lsp))的路由协议。通常部署的链路状态协议是中间系统到中间系统(is-is)和开放最短路径优先(ospf)。在二十世纪八十年代设计来路由decnet的is-is被国际标准组织(iso)采用。is-is可以路由ip话务并且被许多因特网服务提供者(isp)使用来路由ip。is-is是trill的自然选择,因为它的编码容易允许附加字段,并且is-is直接在层2上运行,使得它可以自动配置,而ospf在ip上运行并且需要所有路由器具有ip地址。

图2示出了小型网络(在顶部),包括7个路由器。在该附图的下半部,示出了lsp数据库;所有路由器都具有该相同的lsp数据库,因为它们全部接收并存储来自每一其他路由器的最近生成的lsp。lsp数据库给出了计算路径所必需的所有信息。它还向所有路由器给出了计算同一棵树的足够信息,无需分开的生成树算法。

返回图1、1a和1b,图1a描绘了所示trill网络100的一部分中的各路由桥接器104之间的逻辑链路配置。在图1a中,路由桥接器104基于距源计算机节点s的跳距离来标记并基于共享的跳距离来编组。例如,第一跳组的路由桥接器分别经由单条逻辑链路(并且因而是单跳)连接到源计算机节点s,并且因而被标记为r1n,其中‘1’表示距源计算机节点s的跳数,而n标识组成员的对应的路由桥接器a-e(例如,r1a、r1b,等等)。类似地,距节点s两跳的路由桥接器被标记为r2n,并且距节点s三跳的路由桥接器被标记为r3n。

在图1、1a以及1b所示的示例性网络配置中,给定组中的每一路由桥接器104连接到相邻组中的每一路由桥接器。另外,第一组中的路由桥接器中的每一个连接到源计算机节点s,而第三组中的路由桥接器中的每一个连接到目的地计算机节点d。这一配置支持每一路由桥接器节点之间的完全多路径路由,意味着最大数量的并行转发路径可用于网络中的任何两个节点之间。注意,本文使用的这一网络配置被示出来强调经由多条并行路径进行转发的可用性,并且在实际的网络实现中,给定路由桥接器可能只连接到相邻路由桥接器的一个组(跳级)中的一部分路由桥接器。同样,给定跳距离的路由桥接器组可具有与相邻组中的路由桥接器数量不同的数量的路由桥接器。此外,所示出的跳距离是相对于给定源和目的地节点的;在实践中,许多源和目的地节点将存在(基于相应传输的源和目的地端点),而给定源和目的地节点可对应于网络端点或路由桥接器节点之一。另外,除只采用路由桥接器的网络配置(如图1、1a和1b所示的)之外,采用路由桥接器的网络可包括路由桥接器和常规桥接器的混合。

图3和3a描绘了trill网络100中的多路径转发的使用的示例。如图3所示,源和目的地节点s和d之间存在三条并行转发路径300、302以及304(实际上,存在更多并行转发路径;为简明起见在此只突出显示了三条)。如图3a中进一步详细示出的,只路由桥接器r2b和目的地节点d之间就可能存在5条并行子路径。将这一点扩展到源和目的地节点s和d之间的可能的并行转发路径,会产生125条可用的唯一并行转发路径。当然,在实际实现中,源和目的地节点之间的4跳路由的并行转发路径的数量通常比这小,但重点是trill网络中的端点之间有多条并行转发路径可用。

为了支持并行转发路径,路由桥接器存储对应的转发表条目,在这些条目下多个输出端口可被用来将分组转发到给定目的地。转发表数据是从以上述方式使用is-is链路状态协议收集的信息中导出的。这一多路径转发技术与其中单条转发路径可被用于被分类到同一流的所有分组的常规ip路由相反。这样的ip转发路线通常是使用诸如ospf等协议来确定的。

因为逻辑上与同一流相关联(即,具有相同的源和目的地并且与同一逻辑连接相关联)的分组可沿不同的路线转发,所以目的地需要包括用于无序接收分组的规定。虽然被示为具有相似路径段长度的并行转发路径,但路由桥接器之间的给定路径段的有效长度将一般是路由桥接器处的话务拥塞的函数,并且因此遍历单条路径段的等待时间可能变化相当大。此外,路由桥接器的多路径转发能力意味着分组可经由具有不同跳数的路径来转发,从而增强网络的路由灵活性。

即使trill网络支持多路径转发和无序递送,它们也仍然遭受导致丢弃分组的话务拥塞的损害。另外,考虑图4中示出的网络配置。如果源s1和s2两者都尝试以网速向目的地d转发分组,则将存在拥塞,从而导致分组被丢弃。在支持任意源和目的地之间的并发传输时,导致丢弃分组的拥塞的发生被恶化。

根据本文的各实施例的原理和教导,路由桥接器中的逻辑和端口配置被修改以支持分组的再循环而非丢弃分组。如下文进一步详细解释的,在与转发路径相对应的(通常是优选的)输出端口被拥塞(并且因而不可用)时,基于各种因素来选择另一输出端口。如果没有转发路径端口可用,则分组可被“向后”路由到与发起该向后路由的路由桥接器相比距目的地节点更远(按跳数和/或所估计的路线成本)的路由桥接器(或常规桥接器)。在被路由桥接器(或常规桥接器)接收到后,该分组被向后转发给目的地(在适用时,取决于可用的转发端口)。在适用条件下,在朝它的初始目的地转发之前,分组可被向后路由一次以上。

涉及向后路由的分组再循环的两个示例在图5中示出。在这两个示例中,分组在源节点s处始发并且目的地是目的地节点d。在第一示例中,分组从节点s转发到路由桥接器r1a并随后转发到路由桥接器r2a。在路由桥接器r2a处,附连到将该分组转发给路由桥接器r3a-e之一的链路的各端口中的每一个端口都被拥塞。响应于这一拥塞条件,该分组被向后路由到路由桥接器r1b,它随后将该分组沿路径r1b→r2c→r3e→d来转发,如对应的虚线路径段所示出的。在第二示例中,在路由桥接器r3b处存在类似的拥塞条件。在这种情况下,分组沿同一路径段(经由该路径段分组由路由桥接器r3b接收)向后路由到路由桥接器r2a(即,r3b→r2a)。这在本文中被称为分组被“回环”,并且在下文进一步详细讨论。在路由桥接器r2a处接收到分组后,它沿路线r2a→r3c→d转发给目的地节点d,如对应的实线路径段所示出的。

如在图5(并且在后续的图7、9以及10)中所示,分组可使用在其上接收到该分组的同一链路来被“回环”。为了便于这一功能,网络元件(例如,trill的路由桥接器和ip的交换机/路由器)中的入口端口具有相关联的回环缓冲区来将话务从入口方向向后朝源重新注入。在一个实施例中,所有入口端口都配置有回环缓冲区,而在其他实施例中,一个或多个入口端口配置有回环缓冲区。

示例性回环缓冲区配置在图6中示出。在这一配置下,分组在双向(即,入口(入站)和出口(出站))端口600处经由链路601接收,并且在输入缓冲区602中初始缓冲以使得能够出于转发目的来检查分组头部。在无拥塞的条件下,该分组可经由连接到输出缓冲区604和606(端口未示出)的端口来转发。然而,在一些拥塞条件下(如下文参考图8的流程图详细讨论的),分组可被回环并使用经由其接收到它的同一链路(但在相反的方向上)朝着该分组从中进入网络的源节点“向后”路由。在这种情况下,分组被缓存在回环缓冲区608中,直至它可被从端口600发出。在常规使用中,转发出端口600的分组会在另一端口(未示出)处被接收并缓存在输出缓冲区606中。因此,实现了一种机制以将来自回环缓冲区608和输出缓冲区610的分组进行复用,使得它们可以从端口600传送出去。在一个实施例中,回环话务严格地优先于其他话务,使得缓存到回环缓冲区608的任何分组在缓存在输出缓冲区610中的任何分组之前被发出。

图7示出了根据一个实施例的流程图700,该流程图示出了由路由桥接器执行来便于分组转发和再循环的操作和逻辑。在所示操作之前(并且一般而言,在正在进行的基础上),每一路由桥接器将与它的邻居节点交换链路状态分组,并将对应的转发信息储存(以及在适用时更新)在它的lsp数据库中。这将包括用来经由最短路径转发分组到各目的地节点的端口的标识。为简明起见,在本文所示的示例中,只有单个目的地节点;然而,将理解,类似转发信息将针对多个目的地节点来实现。

优选地,分组将使用经由其可到达目的地节点的最短路径来转发。在trill网络所促进的多路径转发下,可以存在从给定路由桥接器到目的地节点的多条最短路径。一般而言,最短路径可与最低成本路径(对应于具有最低等待时间的路径)或具有最少跳数的路径(在一些情况下,这可以是同一路径)相对应。如在流程图700中所使用的,具有到目的地节点的相似成本和/或跳数的多条路径中的每一个可被认为是最短路径。其他准则也可被用来定义最短路径,包括但不限于链路速度、链路的拥塞状态、不同分类的路径成本和/或qos,等等。

由于偏好经由最短路径进行转发,流程图700中的第一操作通过决策框702来执行,在其中确定是否存在具有到目的地节点的最短路径的任何非拥塞端口。如果答案为是并且存在具有到目的地节点的最短路径的多个非拥塞端口,则随机选择这些端口之一,如在框704所示。如果只存在满足最短路径准则的单个非拥塞端口,则在框704它被选择(逻辑未示出)。

如果不存在具有到目的地的最短路径的非拥塞端口,决策框702的答案为否,并且该逻辑进至决策框706,在其中确定是否存在具有到源节点的最短路径的任何非拥塞端口。如果答案为是,则该逻辑进至框708,在其中满足该准则的单个端口被选择或者满足该准则的多个端口之一被选择。

如果决策框706的答案为否,则该逻辑进至决策框710,在其中确定其余端口中的任一个是否未被拥塞。如果答案为是,则在框716,这些非拥塞端口之一被随机选择(或者选择唯一的那个非拥塞端口)。

返回决策框710,如果不存在非拥塞端口,则使用经由其接收到该分组的同一端口将该分组回环,如在框712所示。这是通过以上讨论并在图6中示出的回环规定来促进的。

要向后朝源节点转发(要么经由选择非拥塞端口要么使用回环设施)的分组被使用标志来进行标记,以指示该分组在向后行进,如在框714所示。在框720,对于朝目的地转发的分组(经由非拥塞最短路径端口或通过选择其余非拥塞端口之一),向后标志被清除。同样,对于除经由最短路径路线转发到目的地节点的分组之外的所有分组,地址学习标志被禁用,如在框714和718中的每一个中所示。流程图700所实现的处理操作和逻辑通过经由所选端口或同一端口(在回环适用的情况下)来转发分组而在框722结束。

在考虑流程图700中实现的逻辑时,如果以下条件之一适用,则输出端口(通常)被认为是拥塞的:

1.(与输出端口相关联的)输出缓冲区中没有空闲空间来储存分组

2.如果在可配置时间量内从对应输入端口接收到的最后分组被标记为向后分组。

在一些情况下,交换机/nic使用具有共享池区域的共享存储器缓冲区,其中共享池区域由全部交换机/nic在带有共享阈值的情况下使用;在共享池充满的情况下,所有相关联的输出端口被认为被拥塞。在只有单个端口的情况下,可存在其中即使条件2被满足话务也将被发送的情况。同样,对于条件2,在一个实施例下,在节点的每一输出端口处实现定时器,其中该定时器优选地被设置为使分组在该节点的任何下一跳之间来回行进所花费的时间。

图8描绘了分组被向后路由直至它返回源节点s的条件。在一个实施例中,一旦向后分组到达它自己的源节点,就实现以下两个处理选项之一:

1.根据流程图700中呈现并在上文中描述的选择准则,该分组被重新发送到网络。另外,通知本地操作系统(os)以降低该特定流的传输速率。

2.该分组被丢弃并且重传该分组的请求在内部转发给本地os,本地os进而将降低该特定流的传输速率。

注意,如果os暂时没有接收到降低特定流的传输速率的请求,os可能使用一个或多个公知的速率降低/提高算法(例如,可以使用类似于qcn中定义的那些算法)来提高流的传输速率;这些算法的细节在本公开内容的范围之外但对联网领域技术人员而言一般是公知的。

一旦向后分组到达该云的另一源节点,该分组就根据以上参考流程图700描述的端口选择准则被重新发送到网络。

假定每一分组(经由本文描述的技术来转发)包括根据每一跳而递减的跳数字段。在一个实施例中,在跳数到达零时,该分组被丢弃并且重传该分组的请求被发送到源节点——优选地通过专用于拥塞管理的对其使用流控制的另一话务类。这一方法被用来保证在交换机的所有其他端口被拥塞很长时间的情况下,分组将不在同一链路上来回再循环过久。

在拥塞条件下,不可靠话务和非单播话务(即,转发给一个以上端口的分组)被丢弃或通过对其使用流控制的另一话务类转发。在一个实施例中,对于从该网络云内部的节点(即,不是边缘节点的网络节点)生成的话务也同样这样做。在一个实施例中,这些类型的分组可以是由专用标志来先验地标记。用于处理非单播话务的这一技术保证对其运行上述算法的话务包括不使该云过载的保守话务——假定每当该云资源枯竭时话务注入就被停止或降低。

再循环技术在不丢弃分组的情况下克服了网络中的暂时拥塞,从而避免了与由定时器期满所触发的分组重传相关联的端到端等待时间增加。因为向后朝源节点发出的拥塞通知是通过拥塞分组被渐进地返回源节点或通过由于跳数最终达到零而造成的重传请求来触发的,所以该方法不采用先验尝试来在网络上建立控制环路,而是只在该流/拥塞被证明长寿时才受影响。这造成了总体网络吞吐量和效率的改进。

分组的再循环可造成潜在死锁。因此,在一些实施例中,采取测量来解决这样的死锁。例如,图9示出了第一潜在死锁,其中分组在相同的多路径链路之间朝目的地来回路由许多次(例如,在r2a和r3b、r3c、r3d以及r3e中的一个或多个之间来回路由)。在一个实施例中,这通过在怀疑到目的地的所有路径已被阻塞的情况下优先将分组向后路由到源来解决。在从路径接收到的最后分组是被回环的分组时,怀疑该路径已被阻塞。

图10描绘了第二潜在死锁,其中分组围绕同一链路来回路由许多次,因为向后回到源的链路也被阻塞。因为不存在从端节点朝向网络的后压力,所以在到目的地/源的已拥塞话务被接收或在跳数达到零时,这一死锁将终止。

ip网络中的分组再循环

除层2网络(例如,以太网)之外,分组再循环还可在诸如ip网络等层3网络中实现。然而,并非使用路由桥接器,实现分组再循环的层3网络将使用经修改的交换机元件(例如,包括交换机或路由器的网络元件)(在本文中称为多路径交换机)来做到这一点。多路径交换机和常规层3交换机或路由器之间的差异在于,多路径交换机被配置成经由多条不同路径来转发目的地为同一目的地节点的分组。

如上所述,层3实现具有以下假定。1)向网络云提供了支持源和目的地节点之间的多路径转发的节点;2)通过可靠传输协议传输的分组可无序到达目的地节点,而不涉及用于将它们递送给应用层的显著的额外处理等待时间;以及3)相对于从热点(例如,已拥塞端口)回到源节点的往返时间,拥塞条件一般不足够长寿,以准许高效的网络级拥塞管理控制环路。

以与采用路由桥接器和常规桥接器的组合的以太网类似的方式,采用分组再循环的层3网络可以使用多路径交换机和常规交换机的组合来实现。例如,图11中示出了具有常规交换机和多路径交换机的混合的网络1100。在网络1100中,常规交换机被标记为si,其中i=1-9,而多路径交换机被标记为mj,其中j=1-11。多路径交换机m1-11经由以粗体实线示出的多路径链路1102互连。同时,在链路的至少一个端处耦合到常规交换机s1-9的任何链路1104被示为虚线。

物理上,多路径链路1102和链路1104包括常规网络链路。然而,多路径链路1102与链路1104相区分以标识这些链路包括可被实现用于多路径转发和分组再循环的路径段。尽管链路1104也可被用作多路径转发路径段的一部分,但连接到这些链路的常规交换机没有配备支持根据本文的教导的分组再循环操作的逻辑和回环缓冲区。相反,多路径链路1102中的每一个在两端处都连接到被配置成支持分组再循环的多路径交换机。

如上所述,在常规ip路由/转发中,被分类成同一流的分组沿同一路线转发。这一方法与多路径ip转发相反,其中具有共同目的地的分组可沿不同的路线路径转发到目的地。同样,如上所述,因为这意味着一些分组将具有比其他分组更大的传输等待时间,所以需要对用于可靠传输协议的无序分组的支持。例如,采用tcp/ip连接的目的地节点或主机将被配置成在它无序地接收到与该连接相关联的分组时不会如标准tcp/ip实践下将做的那样发送sack(选择性确收)。

与层2网络中的路由桥接器一样,层3网络中的多路径交换机将配置有用于便于本文公开的分组再循环操作的逻辑和回环缓冲区(例如,经由由一个或多个处理器或处理器核执行的软件,经由嵌入式逻辑、或这两者的组合)。另外,层3交换机将被配置成支持常规层3交换机操作,从而便于按常规方式转发常规层3话务。

与路由桥接器一样,层3多路径交换机被配置成获得网络拓扑信息并构建转发表条目(例如,过滤器和/或规则)以便于多路径转发。在一个实施例中,这可以使用常规层3网络拓扑发现技术结合使用ospf协议或用于发现网络节点之间的最短路径的其他协议来促进。如以上相对于层2网络所讨论的,给定一对网络节点之间可以存在多条最短路径,认识到路径的有效“长度”不必相等就能将它们中的多条分类成最短路径。在简单的长度确定下,长度等于节点之间的跳数,不考虑通过每一跳的端点处的网络元件的等待时间。在另一方法下,在正在进行的基础上确定链路成本并且对应的链路成本信息被散布给多路径交换机(如使用链路状态协议),从而使得成本被分配给多条路线中的每一条路线。因此,具有最低成本的路线路径被认为是最短路径,同样认识到带有类似值的具有最低成本的路线路径可被分类成最短路径。

用于实现分组再循环的示例性装置

取决于特定实现,本文公开的实施例的各方面一般可经由独立或编组的网络元件来促进,或者它们可被实现为在诸如计算机服务器等另一装置内的嵌入式装置。在一些实施例中,诸如服务器模块、服务器刀片、或线卡等装置可配备用于便于在本文和附图中公开的路由桥接器或层3网络元件的组件和逻辑。

图12示出了可在独立设备、服务器模块、服务器刀片、或线卡中的一个或多个中实现的示例性单板装置1200。装置1200包括其上安装或经由相关联的插槽或连接器操作地耦合了多个组件的主板1202,这些组件括四个处理器1204a-d、每一个在逻辑上与相应存储器模块1206a-d相关联。还示出了多端口网络接口控制器(nic)1206、固件存储1208以及固态驱动器1210。在所示实施例中,处理器1204a-d经由相应pcie(外围部件互连express)互连来连接到多端口nic1206,但这仅是处理器与nic之间的一种类型的互连的示例。

装置1200的处理器和存储器模块的数量是示例性的。一般而言,装置1200可以采用一个或多个处理器和存储器模块。处理器1200a-d可包括单核或多个处理器,并且存储器模块1206a-d可包括可被封装以由对应的连接器/插槽接纳或直接耦合到主板1202的一个或多个存储器组件。在一个实施例中,装置1200示出为服务器刀片或线卡。在另一实施例中,装置1200可被实现为独立路由桥接器装置中的主板。

多端口nic1206配备有用于支持网络接口到多条网络链路(这可包括有线、光学、或无线链路)的物理接口和存储器缓冲区。对于采用物理电缆(有线或光学)的链路,连接器可位于主板1202上(连接器未示出)或者来自连接器的信号可经由连接器等(例如,如图12中示出的边缘连接器1212)被耦合到多端口nic1206。多端口nic1212还可被配置成与处理器1204a-d中的一个或多个对接以采用存储器模块1206a-d中的一个或多个中的存储器地址空间来用作输出缓冲区。在一个实施例中,这样的存储器地址空间可由多端口nic1206使用直接存储器地址(dma)事务来访问。

本文描述的实施例的各方面可被实现用以促成包括在安装在支架的机箱内的经群集的服务器系统的网络。例如,图13a和13b解说了两个示例性配置。更详细地,图13a描绘了被配置成采用多个服务器刀片1302和网络模块1304的4u服务器刀片机箱1300。当被安装进它们各自的插槽中时,刀片1302和模块1304被连接至位于机箱1300内近似中间深度处的中间板(未示出)。中间板包括用于促进刀片主板上的各组件之间的通信的布线、电路、以及连接器。在一个实施例中,刀片1302与装置1200相似,但是其采用了后连接器并且相对于从顶部竖直地安装而言其被配置成水平地安装。在一个实施例中,模块1304的槽宽度是刀片1302所用的槽宽度的两倍。除了所示刀片以外,其它类型的模块和设备可被安装在机箱1300内,诸如以太网交换机模块和热切换存储设备(后者从与图13a中所描绘的机箱1300的相对侧安装)。在一个实施例中,网络模块1304包括多个以太网连接器1306。同样如图所示,服务器刀片机箱1300包括含有多个以太网连接器1310的基本模块1308。

图13b示出4u机箱1350,其中从顶部安装刀片1352和服务器模块1354,借此模块的pcb边缘连接器被安装在设置在机箱底部的基板内对应的插槽中(未示出)。一般而言,机箱1350的基板执行与机箱1300内中间板相似的功能。另外,图13b中所示的服务器配置可进一步采用被配置成促成附加通信功能的夹层板(也未示出)。在图13b所解说的实施例中,服务器模块1354的槽宽度是刀片1352的槽宽度的两倍。机箱1350还被配置成容纳其它类型的模块和设备,诸如以太网交换机模块和热切换存储设备。

层3网络元件的一些实施例可按与图13a和13b中示出的配置相类似的方式来配置(即,多个板或模块被安装在机箱内),但与服务器刀片形成对比的是通常采用“线卡”。在一些实施例中,线卡可具有标准配置,如针对高级电信计算架构(atca)板和机箱所定义的。例如,典型的atca机箱是12u或13u高并且支持安装14个板。层3交换机或路由器的其他配置也可被实现,包括单板配置。

在数据中心或类似实现中,各单独的网络子网或以太网段可包括在各编组水平上通信链接的多个刀片服务器,如包括子网或以太网段的数据中心内的服务器支架或支架的一部分内的多个刀片服务器机箱。在这一类型的安装下,刀片的一部分可被实现为支持根据本文公开的实施例的各方面的分组再循环的路由桥接器或层3交换机,而其他刀片主要被用于处理目的并且被配置为网络端点。

图14示出了根据本文公开的实施例的各方面的被配置成实现分组再循环的nic1400。nic1400被配置成支持n个端口,如端口600a、600b…600n所示,其中端口600中的每一个耦合到相应的链路电缆601。为每一端口提供了一组缓冲区和物理层(phy)接口,如phy接口1404、输入缓冲区1406以及输出缓冲区1408所示。在所示实施例中,每一组缓冲区还包括回环缓冲区1410。在一个实施例中,回环缓冲区将被提供给nic上的每一入口端口。在其他实施例中,nic将包括一个或多个回环缓冲区。

nic1400包括分组处理逻辑块1412,它被配置成根据本文公开的实施例的各方面来实现分组处理操作,包括与分组再循环相关的操作。用于实现这样的分组处理逻辑的示例性组件包括网络处理单元(npu)1414、指令存储1416以及存储器1418。nic1400还包括用于支持nic1400与其系统主机硬件(例如,服务器平台板)之间的通信的互连接口1420。在一个实施例中,互连接口包括pcie接口。

nic1400被示为属于附图的硬件(hw)部分,而软件(sw)相关组件被示为处于hw/sw线上方。这些包括通常由用nic来配置接口的平台的操作系统来实现的软件组件,如nic设备驱动程序1422和包括储存在系统存储器1426(即主机平台的系统存储器)中的指令和数据的软件分组处理逻辑1424所示。

nic1400被配置成支持分组转发操作,这些操作中的一些可完全经由nic来实现,而其他操作通过与软件分组处理逻辑1424进行交互来执行。例如,转发表数据(如转发过滤器和规则)通常可结合与新流相关的分组分类操作来生成,其中新过滤器和/或规则可由软件分组处理逻辑1424来生成。过滤器和/或规则的全部或一部分可被复制到存储器1412中的转发表1428。另外,端口状态信息1430被维护在存储器1412中,使得nic1400所采用的分组处理逻辑能够查明耦合到nic的输出端口中的每一个的当前状态(例如,拥塞或非拥塞)。另外,在采用多个nic的平台上,端口状态信息1430可包括耦合到其他nic的端口的当前状态。

nic1400被配置成支持常规分组转发和分组再循环操作两者。结合常规分组转发,电子模拟、光学或无线信号形式的分组数据在入口端口phy处接收,被转换成数字形式并被解除串行化,其中对应的分组数据最初缓存在输入缓冲区1406中。该分组的头部随后被分组处理逻辑块1412使用分组分类逻辑(未示出)来检查。一旦被分类,执行对转发表1428的查找以确定将该分组转发出去的那一端口。分组数据随后从输入缓冲区1406复制到系统存储器1426中的与要使用的输出端口相关联的输出队列1432,作为可任选方法,输入缓冲区1406中的分组数据可被复制到系统存储器并使用软件分组处理逻辑1424来分类。在缓冲区空间可用时,输出队列1432中的分组被复制到输出缓冲区1408,通常使用fifo(先进先出)缓冲技术。分组随后通过串行化数字流、经由phy1404将数字化流转换成电子模拟、光学或无线信号、以及通过该链路向外发送到耦合在该链路的相对端的下一网络元件,来从输出缓冲区1408转发。在使用常规转发表处理和转发接收到的分组方面,上述全部内容是常规分组转发操作。

如上所述,网络元件可被配置成支持多路径转发。因此,转发表1428可包括支持多路径的转发过滤器和规则,使得被分类成同一流的分组可根据以上公开的教导经由不同端口转发。为便于这一点,流程图700的操作和逻辑由分组处理逻辑1412来实现。另外,nic1400和/或软件实体被配置成使用以上描述的技术来确定源和目的地之间的多路径路线。

除了支持多路径转发之外,根据上述技术,nic1400还被配置成支持回环操作。在一个实施例中,这按以下方式来促进。在执行分组分类时,分组处理逻辑1412经由对端口状态信息1430的查找来检查各输出端口的状态。分组处理逻辑基于端口状态信息确定该分组要经由在其上接收到它的同一链路被回环。因此,分组数据被从输入缓冲区1406复制到回环缓冲区1410。如上所述,回环缓冲区耦合到该端口的输出,并且因此,在回环缓冲区中缓存的分组从在其上接收到它们的同一端口发出。

虽然参考特定实现方式描述了一些实施例,但根据一些实施例,其他实现方式也是可能的。另外,附图中所示的和/或本文描述的元件或其它特征的配置和/或顺序不需要以所示和所描述的特定方式安排。根据某些实施例很多其它配置也是可能的。

在附图中示出的每个系统中,在一些情况下的元件可分别具有相同附图标记或不同的附图标记,以暗示所表示的元件可能不同和/或相似。然而,元件是足够灵活的以具有不同的实现并与本文所示或所描述的系统中的部分或全部一起操作。附图中所示的各元件可以相同或不同。将哪个称为第一元件以及将哪个称为第二元件是任意的。

在说明书和权利要求书中,可使用术语“耦合”和“连接”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体实施例中,“连接的”用于指示两个或更多个要素彼此直接物理或电接触。“耦合的”可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此相互作用。

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

并非本文中描述和示出的所有组件、特征、结构、特性等等都需要被包括在特定实施例或多个实施例中。例如,如果说明书陈述“可”、“可能”或“能够”包括组件、特征、结构或特性,则不一定包括该特定组件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则这并不意味着仅有一个该元件。如果说明书或权利要求书引用“额外的”元素,则不排除有一个以上的额外的元素。

如上所讨论的,可通过对应软件和/或固件组件及应用来促成本文中实施例的各方面,诸如服务器上运行的软件或网络元件上由嵌入式处理器执行的固件。因此,本发明的实施例可用作或支持软件程序、软件模块、固件和/或依据某种形式的处理核(诸如,计算机的cpu、多核处理器的一个或多个核)执行的分布式软件、在处理器或核上运行的虚拟机,或以其它方式在机器可读介质上或内实现或达成。机器可读介质包括用于存储或传送机器(例如,计算机)可读形式的信息的任何机制。例如,机器可读介质可包括只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质,以及闪存设备等。

另外,本说明书的各实施例可以不仅在半导体芯片上实现,而且还在机器可读介质内实现。例如,上述涉及可被存储在和/或嵌入在与用于设计半导体器件的设计工具相关联的机器可读介质内。示例包括用vhsic硬件描述语言(vhdl)语言、verilog语言或spice语言来格式化的netlist(网络列表)。一些netlist示例包括:行为级netlist、寄存器传输级(rtl)netlist、门级netlist以及晶体管级netlist。机器可读介质还包括具有诸如gds-ii文件等布局信息的介质。此外,用于半导体芯片设计的netlist文件或其他机器可读介质可被用在模拟环境中以执行上述教导的方法。

上文对本发明的所示出的本发明的各实施例的描述,包括在摘要所描述的,不是详尽的,或将本发明限于上文所公开的准确的形式。尽管为了说明,此处描述了本发明的具体实施例以及示例,但是,如那些精通相关技术的人所理解的,各种可能的等效的修改也都在本发明的范围内。

可以根据上面的详细描述对本发明进行这些修改。后面的权利要求中所使用的术语不应该被理解为将本发明限制于说明书和附图中所公开的特定实施例。相反,本文的范围完全由下列权利要求书来确定,权利要求书根据权利要求解释的建立的原则来解释。

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