用于网络交换机中的负载均衡的方法与装置与流程

文档序号:13426916阅读:388来源:国知局

相关申请的交叉引用

本申请要求于2015年3月6日提交的题为“resilienthash”的美国临时专利申请第62/129,507号的权益,其全部内容通过引用并入本文。

本公开一般涉及通信系统,更具体地涉及使用散列(hash)函数来选择一组网络接口中的网络接口。



背景技术:

现今,散列函数广泛地用于多种计算应用中,以将较大集合中的数据映射到较小集合中的值。例如,相对长的比特序列可以作为输入供应到数学函数,以生成用作数据库表中的索引的较短的比特序列。

散列可能特别有用的一个应用领域是网络交换。一般而言,网络交换机可以经由多个端口接收和传送数据分组。在一些情形下,可能存在多于一个的可能的网络链路,通过该链路可以传送分组以将数据分组适当地转发到其目的地。而且,网络链路有时被有意地聚合以在通信设备或网络之间提供更多带宽。将链路分组在一起以便在层2联网(layer-2networking)的上下文中定义更宽的通信信道有时被称为链路聚合(lag)。在层3联网(layer-3networking)的上下文中,在多条路径向网络交换机呈现同样有吸引力的路由选择的情形下,利用通常被称为等成本多路径(ecmp)路由的路由技术。当组中的不同路径表现出不相等的吞吐率时,可以利用被称为加权成本多路径(wcmp)路由的另一层2网络路由技术。

散列函数有时用于选择链路/路径组(例如,lag组、ecmp组、wcmp组、交换结构中的链路/路径组等等)中的链路/路径中的一个链路或路径来发送分组。例如,散列函数可以被应用到分组的报头的一部分或多部分,并且散列函数的结果然后指示链路/路径组中的链路/路径中的一个链路/路径,分组要经由该链路/路径传送。



技术实现要素:

在实施例中,一种网络设备包括多个出口接口,其被配置成传送分组。该网络设备还包括转发引擎,其被配置成选择多个出口接口的一组或多组,用于转发网络设备所接收的分组;以及出口接口选择器,其被配置成选择转发引擎所选择的一组或多组内的个体出口接口。出口接口选择器包括与第一组多个出口接口相关联的表,其中表中的元素包括值,其指示第一组中的个体出口接口;以及表元素选择器,其被配置成当转发引擎选择用于转发分组的第一组多个出口接口时,选择表中的元素来标识用于转发分组的个体出口接口。

在其他实施例中,网络设备包括以下特征中的两个或更多个特征中的任一个特征或任何合适组合。

表元素选择器包括散列计算器,其被配置成使用(i)散列函数和(ii)分组的报头信息来生成输出,其中输出指示要选择的表中的元素。

该表包括n个元素,其中n是合适的正整数;以及散列计算器被配置成生成输出,使得输出来自n个可能值的集合。

散列计算器被配置成对初始输出执行模n操作。

网络设备还包括出口接口组管理器,其被配置成响应于确定附加的出口接口要被添加到第一组多个出口接口,用指示附加出口接口的新值替换表中的元素的子集中的值。

出口接口组管理器被配置成选择元素的子集,使得表中的元素跨包括附加出口接口的第一组多个出口接口被均衡。

网络设备还包括出口接口组管理器,其被配置成响应于确定当前出口接口要从第一组多个出口接口被移除,用指示第一组中的其他出口接口的第二值替换表中指示当前出口接口的第一值。

出口接口组管理器还被配置成当替换表中的第一值时,随机选择要替换第一值的第二值。

出口接口组管理器还被配置成当替换表中的第一值时,以轮询方式选择要替换第一值的第二值。

出口接口组管理器还被配置成当替换表中的第一值时,基于第一组中的其他出口接口的相应业务负载来选择要替换第一值的第二值。

在另一实施例中,一种用于选择出口接口的方法包括:在网络设备处接收分组;在网络设备处选择用于传送分组的多出口接口组,该组来自网络设备的多个出口接口;响应于选择组,在网络设备处选择与组相对应的表中的元素,其中表中的条目指示组中的个体出口接口;以及向由表中所选择的元素中的值指示的组中的出口接口传递分组,使得分组可以由表中所选择的元素中的值指示的组中的出口接口传送。

在其他实施例中,该方法包括以下特征中的两个或更多个特征中的任一个特征或任何合适组合。

选择表中的元素包括:使用分组的报头信息在网络设备处计算散列值;以及使用散列值作为进入表的索引。

该表包括n个元素,其中n是合适的正整数。

计算散列值包括以下各项中的至少一项:(i)计算散列值,使得散列值来自n个可能值的集合;以及(ii)计算初始散列值,并且对初始散列值执行模n运算。

该方法还包括:在网络设备处确定附加出口接口要被添加到该多出口接口组;以及响应于确定附加出口接口要被添加到该多出口接口组,用指示附加出口接口的新值替换表中的元素的子集中的值。

该方法还包括:选择元素的子集,使得表中的元素跨包括该附加出口接口的多出口接口组被均衡。

该方法还包括:在网络设备处确定当前出口接口要从多出口接口组中被移除;以及响应于确定当前出口接口要从多出口接口组中被移除,用指示组中的其他出口接口的第二值来替换指示当前出口接口的、表中的第一值。

替换第一值包括:随机选择要替换第一值的第二值。

替换第一值包括:以轮询方式选择要替换第一值的第二值。

替换第一值包括:基于组中的其他出口接口的相应业务负载来选择要替换第一值的第二值。

在又一实施例中,一种网络设备中的方法是用于维护存储在网络设备的存储器中的表,该表与网络设备的多出口接口组相对应。该方法包括:在网络设备处确定多出口接口组中的当前出口接口不可操作;以及响应于确定多出口接口组中的当前出口接口不可操作,用指示组中的其他出口接口的第二值来替换表中指示当前出口接口的第一值。

在其他实施例中,该方法包括以下特征中的两个或更多个特征中的任一个特征或任何合适组合。

替换第一值包括:随机选择要替换第一值的第二值。

替换第一值包括:以轮询方式选择要替换第一值的第二值。

替换第一值包括:基于组中的其他出口接口的相应业务负载来选择要替换第一值的第二值。

该方法还包括:在网络设备处确定附加出口接口要被添加到多出口接口组;以及响应于确定附加出口接口要被添加到多出口接口组,用指示附加出口接口的新值替换表中的元素的子集中的值。

该方法还包括:选择元素的子集,使得表中的元素跨包括附加出口接口的多出口接口组被均衡。

附图说明

图1是根据实施例的其中网络设备应用本文中所讨论的网络接口选择技术的通信网络的框图。

图2a是根据实施例的在图1的网络设备中的一个或多个网络设备中实现的示例出口接口选择器的框图。

图2b是根据实施例的图2a的示例出口接口选择器的图。

图3是根据实施例的用于选择由图1的网络设备中的一个或多个网络设备实现的出口接口组和/或由图2a的示例出口接口选择器实现的出口接口组中的出口接口的流程图。

图4是根据实施例的用于处理已经变得不可操作的出口接口组内的出口接口的示例方法的流程图,该方法由图1的网络设备中的一个或多个网络设备和/或由图2a的示例出口接口选择器实现。

图5是用于处理被添加到出口接口组的新出口接口的示例方法的流程图,该方法由图1的网络设备中的一个或多个网络设备和/或由图2a的示例出口接口选择器实现。

具体实施方式

在本文中在从出口接口组选择出口接口的上下文中描述了实施例。如本文中所使用的,术语“出口接口”是指网络接口,经由该网络接口要由网络设备传送分组。根据各种实施例,出口接口的示例包括物理端口、逻辑端口、逻辑网络接口、端到端网络路径、通过交换结构的路径等。

图1是根据实施例的示例通信网络10的框图,其中几个网络设备nd1、nd2、...、nd6处理外部网络12和内部网络14之间的数据流。在一些实施例中,网络10利用跨多个网络路径的负载均衡。在各种实施例中,网络设备nd1至nd6可以是相同类型或不同类型的网络设备,并且包括工作组交换机、其他类型的交换机、路由器或具有数据处理能力的任何其他合适的网络设备。

网络设备nd1至nd6中的每个网络设备包括相应的分组处理器15a至15f,其被配置成确定分组要经由网络设备的哪些网络接口输出。在一些实施例中,每个分组处理器15中的相应转发引擎确定分组要经由网络设备的哪些网络接口输出。在一些实施例中,每个网络设备包括分组处理器15的不同实现方式,或者设备nd1至nd6的子集包括相同结构的分组处理器15。

在实施例中,网络设备nd1至nd6中的每个网络设备包括实现下文所讨论的出口接口选择技术的相应出口接口选择器16a至16f。在一些实施例中,网络设备中仅有一个网络设备(例如,网络设备nd1)包括出口接口选择器16,或者设备nd1至nd6中仅一些设备包括相应的出口接口选择器16。

在操作中,网络设备nd1经由通信链路18、20和22在相应端口p1、p2和p3(本文中通常被称为“入口端口”或“源端口”pr)接收从外部网络12行进到内部通信网络14的数据单元(诸如分组或帧(仅为了便于解释和简洁,以下简称“分组”))。分组处理器15a确定(例如,通过分析分组中的报头)某些分组要通过端口p4、p5和p6的组输出。因此,网络设备nd1经由对应的端口p4、p5和p6(本文中通常被称为“出口端口”或“目标端口”pt)以及最终,相应的通信链路24、26和28将某些分组转发到网络设备nd2或nd3。端口p1至p6是根据一些实施例的网络接口的示例。

在一些场景中,负载均衡网络10的路由配置使得网络设备nd1选择p4、p5或p6中的一个端口来恰当地将数据分组导向其内部网络14中的目的地。为了增加到目的地的带宽,根据一些实施例,通信链路24、26和28被视为单个逻辑链路,并且网络设备nd1应用负载均衡技术来在链路24、26和28中的适当链路中分发所接收到的分组。例如,网络设备nd1选择与链路24、26和28中的链路相对应的端口p4、p5和p6中的端口。为此,在实施例中,网络设备nd1利用出口接口选择器16a来选择端口p4、p5和p6中的一个端口。例如,在实施例中,出口接口选择器16a使用散列函数来生成散列值,并且在实施例中,使用散列值来选择分组要经由其输出的端口p4、p5和p6中的一个端口。在一些实施例中,出口接口选择器16中的一个或多个出口接口选择器16还利用诸如美国专利第8,756,424号中所描述的负载均衡技术来分发跨多个网络路径的分组传输。在其他实施例中,出口接口选择器16中的一个或多个出口接口选择器利用其他合适的负载均衡技术来分发跨多个网络路径的分组传输。

尽管图1图示了网络设备nd1至nd6的具体实施例,但是这些网络设备nd1至nd6中的每个网络设备包括任何合适数目个端口,并且网络设备nd1至nd6中的至少一些网络设备具有不同数目个端口。在一些实施例、配置和/或场景中,分组处理器15中的一些或全部分组处理器通过在对应的通信协议堆栈的一个或多个协议层处去除和/或添加协议报头来执行针对分组中的一些分组的协议转换。

在各种实施例中,举一个示例,链路18、20和22与诸如网络电缆、无线频带等之类的不同物理通信信道或诸如数字信号1(ds1)线的时隙之类的逻辑信道相对应。类似地,在各种实施例中,端口p1、p2和p3与网络设备nd1的物理资源或逻辑资源相对应。

如图1所图示的,链路18携带一个或多个数据流30、32和44。通常但不必须,数据流30、32和34中的每个数据流是包括从网络12行进到网络14的数据或入站数据,以及从网络14行进到网络12的数据或出站数据的双向流。在实施例中,链路20和22还携带一个或几个数据流。在实施例中,一些数据流30、32和34与链路18至22中的多于一个链路相关联。

在一些实施例和/或场景中,数据流30、32和34与不同的通信协议相关联,诸如通过因特网协议(ip)分层的传输控制协议(tcp)(以下称为“tcp/ip”)、通过ip分层的用户数据报协议(udp)(以下称为“udp/ip”)、文件传输协议(ftp)、超文本传输协议(http)等。例如,在一个场景中,数据流30与ftp相对应,数据流32与telnet相对应,而数据流34与http相对应。进一步地,在一些场景中,数据流30至34中的一些数据流与不同会话相对应,这些不同会话与相同通信协议相关联。典型的网络链路还包括简单邮件传输协议(smtp)、结构化查询语言(sql)、以及与电子邮件、web浏览、数据库应用、远程登录和其他应用类型相关联的几个附加数据流。

在一些场景中,数据流30、32和34中的每个数据流包括多个流、会话或连接,其与各种通信协议层相对应。值得注意的是,一些协议(诸如tcp)是面向连接的,而其他协议(诸如udp)是无连接的。在一个示例场景中,网络12上的外部主机通过在两端上建立具有具体地址和端口组合的tcp连接来连接至网络14上的本地主机。该连接可由tcp包头标识,其部分指定外部主机的地址、本地主机的地址、外部主机上的端口以及本地主机上的端口。个体tcp/ip分组携带与相同连接或通信会话相关联的一定量或块的信息。另一方面,在另一示例场景中,一对主机使用udp协议来交换个体消息或数据报,而不建立连接。因此,在一些场景中,数据流30、32和34中的每个数据流包括一个或多个流,诸如包括与单次数据交换相关联的多个分组或者整体地传送个体消息的单个分组的tcp流。在下文所讨论的示例中,数据流通常是指包括一个或多个数据单元(诸如数据分组或帧)的两个或多个主机之间的单向或双向数据交换。

继续参考图1,流34中的示例数据分组40包括报头42和有效载荷44。一般而言,报头42与协议堆栈的一个或多个层相对应。分组处理器15的转发引擎(图1中未示出)被配置成分析报头42以确定分组40应当要经由哪个端口或哪些端口来输出。例如,在一些实施例中,分组处理器15的转发引擎使用报头42的一部分(诸如目的地地址)来在转发数据库(图1中未示出)中查找分组40要经由其输出的端口或多个端口的指示。在一些实施例中,分组40要经由其输出的端口或多个端口的指示是端口组(例如,lag组,有时被称为“干线”(trunk))的指示,以及出口接口选择器16选择组内的端口中的一个端口。更一般地,在一些实施例中,分组处理器15的转发引擎标识网络接口组,诸如lag组、链路组、ecmp组、wcmp组、通过交换结构的路径组等,并且出口接口选择器16选择组内的端口/链路/路径中的一个端口/链路/路径。

在一些实施例中,根据实施例,当分组处理器15a的转发引擎标识针对分组的端口组(例如,组p4、p5和p6)时,出口接口选择器16a使用散列函数选择端口p4、p5和p6中的一个端口。例如,出口接口选择器16包括散列计算器50,其被配置成使用(i)分组的报头的一个或多个字段以及(ii)散列函数来计算散列输出。然后,在实施例中,散列输出用作与用于输出分组的、由转发引擎标识的端口组相关联的表54的索引,其中表54的条目包括端口组中的具体端口的指示。在实施例中,由散列输出索引的表条目指示分组经由其要被传送的具体端口。根据实施例,表54存储在存储器设备中,而表54中的不同条目与存储器设备中的不同存储器位置相对应。在实施例中,散列输出指定存储器设备中的地址。

在实施例中,出口接口选择器16还包括出口接口管理器58。出口接口管理器58被配置成管理与该端口组相关联的表54。比如,在一些实施例中,当组中的端口中的当前端口变得不可操作时,出口接口管理器58修改表54,使得(i)正在经由该端口传送的第一分组流被切换到组中的一个或多个剩余端口,以及(ii)已经正在经由其余端口传送的第二数据分组流不切换端口。例如,根据实施例,响应于该组中的端口中的当前端口变得不可操作,出口接口管理器58在表54中搜索具有与该端口相对应的值的条目,并且用与组中的一个或多个其他端口相对应的一个或多个其他值替换那些条目中的值。

在一些实施例中,当新端口被添加到现有端口组时,出口接口管理器58修改表54,使得经由现有端口传送的分组流的子集被切换到新端口。例如,根据实施例,响应于新端口被添加到组,出口接口管理器58用与新端口相对应的值替换表54中的条目的子集。

在一些实施例中,当例如端口本身或耦合至端口的对应的网络链路不能被使用时,端口被认为是不可操作的。例如,在各种实施例中,如果端口本身失效、耦合至端口的对应的网络链路失效等,则端口不能被使用。如上文所描述的,端口是网络接口的示例。在其他实施例中,网络接口与虚拟端口或其他合适的接口相对应。

由转发引擎选择端口或端口组仅是选择网络接口或网络接口组的示例,分组要经由该网络接口或网络接口组通过网络设备(即,出口接口)传送。在一些实施例中,出口接口的其他示例包括逻辑端口、逻辑网络接口、网络中的端到端路径、通过交换结构的路径等。

图2a是根据实施例的图1的示例出口接口选择器16的更详细的框图。根据实施例,出口接口选择器16被配置成接收分组的报头的至少一部分102(为了便于解释和简洁,术语“报头的至少部分102”将被称为“报头102”)。密钥生成器108基于报头102来生成密钥110。例如,在实施例中,密钥生成器108被配置成基于报头102的一个或多个部分来生成密钥,诸如地址字段的至少一部分、虚拟局域网(vlan)标识符等中的一个或多个,和/或报头102(例如,层3报头字段、层4报头字段等)的一个或多个其他合适的字段。

散列计算器114将所选择的散列函数应用于密钥110以生成散列输出值118。然后,散列输出值118用作到表54的索引,以从表54中的多个条目中选择一个条目。然后,存储在表54中的所选择的条目中的值被用于选择用于传送分组的出口接口。仅作为说明性示例,根据说明性实施例,如果网络接口组由四个成员组成,则组中的每个成员被指派相应的值0、1、2或3,并且表54中的条目具有从由0、1、2或3组成的集合中选择的值。

在一些实施例中,表54包括n个条目,其中n是合适的正整数。在一些实施例中,表54中的条目的值具有从由m个值组成的集合中选择的值,其中m是与组中的出口接口的数目相对应的正整数。在一些实施例中,n远大于m。例如,在一些实施例中,n是m的至少两倍。在一些实施例中,n是m的至少四倍。在一些实施例中,n是m的至少八倍。在一些实施例中,n至少比m大一数量级。

在一些实施例中,出口接口选择器16被配置成对散列输出值118执行模n操作,其中散列计算器50被配置成生成0到p的范围内的值,并且其中p是大于n的合适的正整数。在一些实施例中,散列计算器50包括模n计算器(图2a中未示出)。在一些实施例中,散列计算器50被配置成执行将0到p的范围内的第一值合适地映射到0到n的范围内的第二值的另一合适操作。在另一实施例中,由散列计算器使用的所选择的散列函数被设计成生成具有n个值的合适范围内的散列值118。

图2b是图示了根据实施例的使用散列值118作为到表54的索引的图。在散列计算器50中,由密钥110生成散列值118,使得散列值118具有来自由0、1、...、n-1组成的集合的值。然后,散列值118用作到表54的索引,其包括n个条目。表54中的每个条目都具有来自由0、1、...、m-1组成的集合的值,其中m是出口接口组中的出口接口的数目。

在一些实施例中,出口接口选择器16被配置成维护用于多个不同出口接口组的多个表54。在一些实施例中,多个表54存储在单个存储器设备中。在其他实施例中,多个表54存储在多个存储器设备中。在一些实施例中,出口接口选择器16被配置成对所有多个不同的出口接口组使用相同的散列函数。在其他实施例中,出口接口选择器16被配置成对于不同的出口接口组使用不同的散列函数,从而避免不同组之间的选择极化(polarization)。

图3是根据实施例的用于处理网络设备中的分组的示例方法300的流程图。包括出口接口选择器16的图1的网络设备nd1被配置成实现根据实施例的方法300,并且仅用于解释目的,参考图1、图2a和图2b对方法300进行讨论。然而,在其他实施例中,方法300由另一合适的网络设备实现。类似地,在其他实施例中,图1的网络设备nd1被配置成实现与方法300不同的合适方法。

在框304处,在网络设备(例如,网络设备nd1)处接收分组。仅作为说明性示例,在实施例中,经由网络设备nd1的端口p1接收分组。

在框308处,网络设备的分组处理器确定分组要经由网络接口组(有时在本文中称为“出口接口组”)从网络设备输出。例如,根据一些实施例,如上文所讨论的分组处理器15中的转发引擎被配置成利用转发数据库来确定分组要经由哪些网络接口输出。在一些场景中,转发数据库指示用于某些分组的出口接口组。

在框312处,根据实施例,网络设备选择表的元素,该表与出口接口组相对应。在一些实施例中,网络设备使用(i)散列函数以及(ii)分组的报头信息来生成散列输出值,然后使用散列输出值来选择表的元素。例如,在实施例中,网络设备使用散列输出值作为表的索引。

参考图1、图2a和图2b,密钥生成器108由报头的一个或多个字段生成密钥110,而散列计算器50使用散列函数和密钥110计算散列值118。然后,散列值118用于选择表54的元素。在一些实施例中,散列计算器50被配置成生成散列值118,使得散列值118落在n个值的范围内,其中n是表54的元素的数目。在一些实施例中,在使用散列值118来选择表54的元素之前,对散列值118执行模n操作。

在框316处,分组被转发到由存储在框312处确定的表的元素中的值所指示的组中的出口接口。例如,在实施例中,表的元素存储组中的出口接口的指示符(例如,标识符),并且存储在框312处选择的元素中的指示符被用于确定该分组要转发至的出口接口。在一些实施例中,出口接口组包括端口组,并且框316包括将分组转发到由存储在方框312处确定的表的元素中的值指示的端口。在一些实施例中,出口接口组包括逻辑端口组,并且框316包括将分组转发到由存储在框312处确定的表的元素中的值指示的逻辑端口。

在框320处,从与出口接口相对应的端口传送分组。例如,在一些实施例中,出口接口是逻辑端口,并且框320包括从与逻辑端口相对应的物理端口传送分组。在一些实施例中,出口接口是物理端口,并且框320包括从物理端口传送分组。

在一些实施例中,诸如出口接口选择器16之类的出口接口选择器有助于改善对网络接口的故障的处理。比如,对于至少一些现有技术中的网络设备,lag中的网络链路的故障可能导致至少一些流从lag中的一个工作链路改变到lag中的另一工作链路,因此流中的分组经由其行进的路径可能被改变。当流中的分组经由其行进的路径被改变时,这可能导致流中的一些分组无序地到达端点。例如,如果新路径具有比旧路径更少的延迟,则在新路径上传送的一些分组可能在旧路径上较早传送的分组之前到达端点。然而,在一些实施例和/或场景中,诸如出口接口选择器16之类的出口接口选择器将组中的故障网络接口上的分组流重新映射到其他工作网络接口,但是不重新映射已经在工作网络接口上的分组流。

类似地,在一些实施例中,诸如出口接口选择器16之类的出口接口选择器有助于改善对将新网络接口添加到出口接口组的处理。比如,对于至少一些现有技术中的网络设备,向lag添加新网络链路可能导致许多流从lag中的一个现有链路改变为lag中的另一现有链路,并且因此流中的分组经由其行进的路径可能被改变,从而导致诸如上文所讨论的问题。然而,在一些实施例和/或场景中,诸如出口接口选择器16之类的出口接口选择器仅将组中的现有网络接口上的流的子集的分组重新映射到被添加到该组的新网络接口,但是不重新映射现有网络接口上的剩余分组流。

图4是根据实施例的、用于响应于组中的出口接口中的一个出口接口变得不可操作而更新与出口接口组相对应的表的示例方法400的流程图。包括出口接口选择器16的、图1的网络设备nd1被配置成实现根据实施例的方法400,并且参考图1、图2a和图2b对方法400进行讨论,仅用于解释目的。然而,在其他实施例中,方法400由另一合适的网络设备实现。类似地,在其他实施例中,图1的网络设备nd1被配置成实现与方法400不同的合适方法。

在实施例中,方法400结合与出口接口组相对应的表来执行,其中该表包括存储组中的出口接口的指示符的表元素。在实施例中,该表被用于选择用于传送分组的、组中的出口接口。

在框404处,网络设备(例如,网络设备nd1)确定出口接口组中的当前出口接口已经变得不可操作。在一些实施例中,出口接口管理器58接收当前出口接口不可操作的通知。仅作为说明性示例,在实施例中,网络设备nd1的出口接口选择器16确定网络设备nd1的端口p4已经变得不可操作。比如,在一些实施例中,当例如端口本身不能被使用,或耦合至该端口的对应的网络链路不能被使用时,端口被认为是不可操作的。例如,在各种实施例中,如果端口本身失效、耦合至该端口的对应的网络链路失效等,则端口不能使用。如上文所讨论的,端口仅仅是出口接口的示例。在其他实施例中,出口接口与虚拟端口,通过网络的端到端路径,通过交换机结构的路径等相对应。

在框408处,响应于在框404处确定当前出口接口已经变得不可操作,在与出口接口组相对应的表中,网络设备标识包含与已经变得不可操作的当前出口接口相对应的值的表元素。例如,在实施例中,出口接口管理器58标识表54中的表元素,该表元素包含与已经变得不可操作的当前出口接口相对应的值。参考图2b,如果表54中与已经变得不可操作的当前出口接口相对应的值为5(仅作为说明性示例),则表54中具有值为5的条目被标识。

在框412处,同样响应于在框404处确定当前出口接口已经变得不可操作,在框408处所标识的表元素中的值被替换为与组中的其他出口接口相对应的值。例如,在实施例中,出口接口管理器58用与组中的其他出口接口相对应的值替换在框408处标识的表元素中的值。在实施例中,替换值被随机地从与组中的其他出口接口相对应的值中选择。在另一实施例中,替换值以轮询方式从与组中的其他出口接口相对应的值中被选择。在另一实施例中,以加权方式选择替换值,使得与具有较少业务负载的出口接口相对应的值比与具有较高业务负载的出口接口相对应的值更频繁地被选择。

继续上述说明性示例,值为5(与变得不可操作的出口接口相对应)的表54中的条目被替换为与组中的其他出口接口相对应的值。

当在框408处所标识的表元素中的所有值被替换时,根据一些实施例,出口接口选择器16不再选择已经变得不可操作的出口接口。附加地,因为仅替换在框408处所标识的表元素中的值,所以根据一些实施例,工作出口接口上的分组流没有被重新映射。

图5是根据实施例的、响应于新出口接口被添加到组而更新与出口接口组相对应的表的示例方法500的流程图。包括出口接口选择器16的、图1的网络设备nd1被配置成实现根据实施例的方法500,并且参考图1、图2a和图2b对方法400进行讨论,仅用于解释的目的。然而,在其他实施例中,方法500由另一合适的网络设备实现。类似地,在其他实施例中,图1的网络设备nd1被配置成实现与方法500不同的合适方法。

在实施例中,方法500结合与出口接口组相对应的表执行,其中该表包括存储组中的出口接口的指示符的表元素。在实施例中,该表被用于选择用于传送分组的、组中的出口接口。

在框504处,网络设备(例如,网络设备nd1)确定新出口接口要被添加到出口接口组。在一些实施例中,出口接口管理器58接收新的出口接口正在被添加到该组的通知。仅作为说明性示例,在实施例中,网络设备nd1的出口接口选择器16确定网络设备nd1的端口正在被添加到端口组。如上文所讨论的,端口是出口接口的示例。在其他实施例中,出口接口与虚拟端口或另一合适的网络接口相对应。

在框508处,响应于在框504处确定新的出口接口正在被添加到组,与出口接口组相对应的表的元素的子集中的值根据实施例被替换为与新出口接口相对应的新值。在实施例中,框508包括选择元素的子集,使得在条目的子集中的值被替换之后,表中的条目在组中的出口接口之间是均衡的。仅作为说明性示例(并且参考图2b),在将新的出口接口添加到组之前,n=100,m=3,以及表54的33个元素与第一出口接口相对应,表54的33个元素与第二出口接口相对应,并且表54的34个元素与第三出口接口相对应。在添加新的第四出口接口之后,m从三增加到四,并且选择与第一出口接口相对应的八个元素,并且被替换为与第四出口接口相对应的值;选择与第二出口接口相对应的八个元素,并且被替换为与第四出口接口相对应的值;并且选择与第三出口接口相对应的九个元素,并且被替换为与第四出口接口相对应的值。因此,表54中的25个元素于是与第一出口接口相对应,表54的25个元素于是与第二出口接口相对应,表54的25个元素于是与第三出口接口相对应,以及表54的25个元素于是与第四出口接口相对应。

在框508处替换表元素中的值之后,根据一些实施例,出口接口选择器16有时会选择新出口接口。附加地,因为在框508处仅替换了表元素的子集,所以根据一些实施例,先前在组中的出口接口上的许多分组流不被重新映射到不同的出口接口。

可以利用硬件(例如,一个或多个集成电路设备)、执行固件指令的处理器(例如,使用一个或多个集成电路设备实现)、执行软件指令的处理器(例如,使用一个或多个集成电路设备实现)或其任何组合来实现上文所描述的各种框、操作和技术中的至少一些框、操作和技术。

尽管上述文本阐述了许多不同实施例的具体实施方式,但是应当理解,该专利的范围由本专利最后阐述的权利要求的词语定义。因为描述每个可能的实施例即使有可能也没有实际意义,所以具体实施方式仅被解释为提供说明性示例,而不描述每个可能的实施例。可以使用当前技术或在本公开的申请日之后开发的技术来实现许多备选实施例,其仍将落入权利要求的范围内。

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