用于第2层链路聚合的动态负载均衡的制作方法

文档序号:7938189阅读:311来源:国知局

专利名称::用于第2层链路聚合的动态负载均衡的制作方法
技术领域
:本申请涉及数据通信,更具体而言涉及经由诸如无线通信网络之类的网络的数据通信中的负载均衡(loadbalancing)。
背景技术
:数据通信网络体系结构常具有为诸如TCP/IP(传输控制协议/因特网协议)、OSI(开放系统互连)和SNA(系统网络体系结构)之类的实现协议栈的通信协议而设计的分层结构。利用这种分层结构,协议使得一个主机中的实体能够与远程主机中同一层上的对应实体进行交互。例如,TCP/IP协议是一组通信协议,其包括较低层协议(例如TCP和IP)和用于诸如电子邮件、终端模拟和文件传送之类的应用的较高层协议。TCP/IP可用于在任何一组互连网络、LAN和WAN上通信。OSI参考模型(也称为OSI模型)是对被划分成层的联网系统的抽象描述。在每个层内,一个或多个实体实现其功能。根据OSI模型,每个实体直接与紧挨其下的层进行交互,并且提供供其上的层使用的设施。虽然对于每个协议,协议栈可能是不同的,但我们一般将较低的协议层分别称为第2层和第1层。栈中的最低层为第1层(或者它也被称为物理层)。物理层提供用于定义设备的所有电气和物理规格以及用于建立和终止去到网络上的通信介质的连接的功能和过程手段。在其之上,第2层提供转发域,诸如网桥和交换机之类的设备在该转发域中工作。即,第2层提供用于在网络实体之间传送数据并且检测并可能校正物理层中可能发生的差错的功能和过程手段。为了实现节点(例如,交换机和站)之间通信信道的带宽和可用性的提高,链路聚合(linkaggregation)或者说主干技术(trunking)是一种将物理网络链路聚集成单条逻辑链路亦即单个传输信道(根据IEEE标准802.3ad)的方法。利用链路聚合,可以使用其快速以太网和吉比特以太网技术来提高节点之间的通信信道的容量。两个或更多个吉比特以太网连接可被聚集起来以增大带宽,并且创建有弹性且冗余的链路。标准的局域网(LAN)技术提供了10Mbps、100Mbps和1000Mbps的数据速率,为了获得更高的容量(例如,10000Mbps),链路聚合允许聚集10条链路;在十(10)倍太大的情况下,链路聚合可通过聚集具有不同速率的链路来提供中间速率。第2层链路聚合可用在各种类型的数据通信中,其中包括传输信道、以太网端口等等。第2层链路聚合使用特殊的数据流量模式或特征。这种模式的示例是目的地和源地址,例如MAC和IP地址(MAC-媒体访问控制)。这些模式可能使得在第2层链路聚合操作中难以处理流量负载均衡,因此希望具有更好的负载均衡方案。
发明内容本发明的各种实施例是可能的,其示例在这里提供。就所示出且在这里宽泛描述的本发明而言,示例性实施例包括一种方法和一种系统。一个实施例是一种用于在数据通信系统中提供动态负载均衡的方法。该方法可包括在具有多条物理链路的数据通信系统中创建链路聚合群组,这多条物理链路中的每一条具有用于传输外出数据(egressdata)或其任何部分的容量。链路聚合群组是通过将这多条物理链路中的两条或更多条组合成用于外出数据的单条逻辑链路来形成的。该方法还可包括向链路聚合群组分配链路聚合密钥Ginkaggregationkey)的集合,其中每个链路聚合密钥被指派给链路聚合群组中的物理链路之中的特定一条物理链路。该方法还可包括从外出数据导出这些链路聚合密钥中的每一个的数据7速率,并且基于数据速率和链路聚合群组中的物理链路的容量来执行动态负载均衡。各种方面和属性可应用到前述步骤。动态负载均衡可包括检测触发负载均衡的状况,其中所述状况可包括与外出缓冲器溢出状态相关联的帧丢弃,并且要求监视外出缓冲器溢出状态。动态负载均衡可包括基于外出数据监视流量负载并且积累数据速率以用于计算流量负载;或者它可包括监视包括故障和恢复在内的数据通信系统状况的改变,基于这种改变,动态负载均衡被触发。改变可包括物理链路的故障或恢复,该种故障或恢复导致将外出数据转移到链路聚合群组中的物理链路之中的剩余一条或多条物理链路。当这种转移使得数据速率基本上达到或超过这些物理链路中的任何剩余的一条或多条物理链路的容量时,可证明动态负载均衡是有益的。因此,在被发现时可触发动态负载均衡的状况之一是链路容量失衡。诸如一个或多个帧的丢失(帧丢弃状况)或这种帧之间的同歩的丢失之类的其他状况在被发现时也可单独地或者与链路容量失衡相结合来触发动态负载均衡。外出数据通常包括多个帧,其中每一个具有其自己的有效载荷和用来计算相应密钥值的标识信息,并且数据速率是对于这多个帧中的每一个导出的。有可能链路聚合密钥的集合是在数据通信系统中可用的链路聚合密钥的更大群组的一部分,并且该方法包括创建多个链路聚合群组,其中每一个被分配以来自所述更大群组的链路聚合密钥子集。另外,多于一个链路聚合密钥可被指派给一特定物理链路。通常,外出数据包括有效载荷和标识信息。因此导出步骤可包括根据标识信息来计算密钥值,将密钥值与所述集合中的链路聚合密钥相比较,并且计算这些链路聚合密钥中与密钥值匹配的一个链路聚合密钥的数据速率。标识信息可以是包括源和目的地地址,并且计算密钥值的步骤可包括对源和目的地地址(例如,在源和目的地MAC地址中每一个的n个LSB(最低有效位)之间)执行逻辑运算,例如异或。负载均衡包括对所述集合中的链路聚合密钥的最初指派和随后的重指派。将它们最初指派给链路聚合群组中的物理链路的歩骤包括将链路聚合密钥的集合划分成子集并将每个子集指派给链路聚合群组中的物理链路之一,其中划分在每个子集内形成链路聚合密钥的连续块。最初指派的特征可在于随机选择每个连续块的开始的偏移量。最初指派给每条物理链路的链路聚合密钥的数目可基于该物理链路的容量被加权。然后,动态负载均衡可包括将链路聚合密钥从一个子集重指派到另一子集。在多条物理链路的情况下,一种用于提供数据通信的动态负载均衡的系统也是可能的。这多条物理链路可包括无线通信链路。每条物理链路具有用于传输外出数据或其任何部分的容量。这多条物理链路被配置为链路聚合群组的成员,以便增大容量。这种系统可包括交换机(或者另外的路由设备;统称为"交换机")。交换机可包括相互操作性耦合的逻辑和存储装置,其中存储装置包含程序代码,该程序代码与该逻辑操作性地交互以基于数据流量状况的改变来动态配置外出数据到该多条物理链路的交换。这种系统优选地包括适合于基于外出数据监视这些链路聚合密钥中的每一个的数据速率的引擎,以及控制模块,该控制模块适合于从引擎获得数据速率,并且响应于负载失衡状况,执行包括重指派链路聚合密钥和与交换机相接口以管理地址/端口重配置在内的动态负载均衡。引擎可包括性能计数器。控制模块优选是基于软件的。优选地,引擎还适合于通过计算密钥值并将密钥值与所指派的链路聚合密钥之一相匹配,来从外出数据导出数据速率。引擎还可包括维护着链路聚合密钥中的每一个的数据速率的表。交换机通常包括用于外出数据的缓冲器,并且因此控制模块还可适合于监视该缓冲器的溢出状况并作为响应触发动态负载均衡。最后,上述方面和属性中的一些也可应用到该系统。从这里的描述、权利要求和下面描述的附图中,可以更好地理解这些和其他特征、方面和优点。结合在本说明书中并构成其一部分的附图示出了本发明的各个方面并且与说明书一起帮助说明其原理。只要方便,在所有附图中就将使用相同的标号来指代相同或类似的要素。图1A示出了DAC-GE(吉比特以太网数据访问卡)链路聚合环境。图IB是示出能够在Eclipse平台上实现的在每一端使用两个DAC-GE的链路聚合配置的示图。图2A是示出无线通信系统中的节点的INU(智能节点单元)中的DAC-GE的框图。图2B是DAC-GE的框图。图2C是具有故障检测和链路聚合密钥速率监视功能的基于FPGA的处理引擎的框图。图3A是说明动态负载均衡触发事件监视和检测到负载均衡触发事件后的密钥分布的状态图。图3B是说明可能先于动态负载均衡的链路聚合成员故障或恢复后的动态链路聚合密钥重分布的状态图。图4示出了可针对具有动态负载均衡的链路聚合进行配置的2+0微波无线电链路的体系结构。具体实施例方式以下描述是在此特定专利许可证申请及其使本领域普通技术人员能实现并使用发明的要求的上下文中提供的。对所描述和示出的实施例的各种修改是可能的,并且这里定义的一般原理可被应用到这些和其他实施例,而不脱离本发明的精神和范围。因此,本发明应符合与这里公开的原理、特征和教导一致的最宽范围。本发明部分地基于以下观察到的事实第2层链路聚合基本上可用于所有类型的通信中。另外,被设计来提高两个交换机之间的链路可用性和带宽并且避免使用多条并行链路的网络中的所谓环路问题的链路聚合可用于促成冗余和流量负载均衡。因此,第2层链路聚合是用于解决冗余和负载均衡的适当平台。当某条链路发生故障时,通过将发生故障的链路的流量转移到链路聚合群组的其他链路,来获得冗余。利用冗余,远端交换机经由相同的逻辑10链路聚合端口接收以太网帧,虽然这些帧可能来自不同的物理链路。负载均衡在多条链路之间更均匀地分布流量负载。因此,第2层链路聚合的动态负载均衡在本发明的各种实施例中是一种优选的负载均衡方法。如上所述,一般地,在其中近端和远端(发送-接收)交换机经由多条物理链路相互连接的系统中,链路聚合将这些交换机之间的多条物理链路组合成单条逻辑链路。如此组合的物理链路形成一链路聚合群组(LAG),其中它的每条链路是该LAG的一个成员。LAG的每个成员具有唯一分配给它的一个或多个链路聚合密钥(LAGK)的集合。换言之,两个交换机(例如,以太网交换机)之间的多条物理链路被组合以形成单个LAG,其中其每个成员链路被唯一地分配了可用LAGK的一个子集。分配给物理链路的每个LAGK充当用于将具有匹配密钥的分组交换到该物理链路的向导。例如,微波无线电系统,比如Morrisville,NC的HarrisStratexNetworks公司的Eclipse微波平台,可以利用一个智能节点单元(INU)实现两条具有155Mbps传输速率的无线电链路的链路聚合。利用所建议的一个INU,两条无线电链路的链路聚合可以实现311Mbps的总带宽。为了实现总共622Mbps的带宽,链路聚合可以使用两个INU,其中每一个具有两条155Mbps无线电链路。这两个INU可经由各自的用户端口相互链接。第2层链路聚合可以实现在诸如Eclipse之类的微波无线电系统中,并且具有这里描述的动态负载均衡。通常,可在数据访问卡(DAC)中向链路聚合应用用于动态负载均衡的算法。例如,上述的EclipseTM微波平台可在吉比特以太网数据访问卡(DAC-GE)中应用用于动态负载均衡的算法。在一个实施例中,结合嵌入的软件,可在诸如现场可编程门阵列(FPGA)之类的逻辑电路中实现该算法。图1A示出了DAC-GE链路聚合环境。在这种DAC-GE链路聚合环境中,DAC-GE上的用户端口通常提供以太网连接。假定发送(TX)方在左侧并且接收(RX)方在右侧,分组帧通过包括物理链路1和2的传输信道在无线电装置(分别是45、47至49、51)之间从左至右传送。当角色颠倒时分组帧在相反的方向上传送(或者当两者能够同时发送和接收时分组帧可能在两个方向上传送)。在发送(TX)方,用户端口101接收以太网帧并经由第2层交换机106依据LAG的每个物理链路成员的LAGK将这些以太网帧转发到LAG的每个物理链路成员(即,分组被路由到具有与其自己的密钥相匹配的指定LAGK的物理链路)。为此,第2层交换机106可包括适合用于处理与来自用户端口的帧有关的交换判决的交换逻辑107。以太网帧携带着源和目的地MAC(媒体访问控制)地址,交换是基于这些地址来解析的。第2层交换机还可包括带有网络的动态配置的交换或地址解析表,其中包括哪个用户端口连接到哪个设备(每个设备由特定的MAC地址来标识)。在此环境中,存在16个可能的LAGK(0,1,...,15)。如图所示,在TX和RX方,这16个LAGK分别被划分成两个子集为物理链路1指定的LAGK子集1(LAGK0,1,...,7)和为物理链路2指定的LAGK子集2(LAGK8,9,...,15)。在此例中,每个第2层交换机106中的LAGK分别被定义为LAGK=DM4C(4个最低有效位)X0R5M^C(4个最低有效位)其中DMAC是以太网帧的目的地MAC地址,SMAC是以太网帧的源MAC地址(此定义是示例性的,其他定义也是可能的)。注意,第2层交换机向LAG的特定物理链路(交换机外出端口)成员唯一地指派一特定LAGK(虽然每条物理链路可被指派以LAGK的子集(即,多于一个LAGK))。根据以上定义,从以太网帧导出的LAGK决定了LAG中用来转发该以太网帧的物理链路。因此,对于在TX方(即,在本地或近端一方)的第2层交换机中接收到的每个以太网帧,可以基于MAC地址来做出关于哪个目的地(远端(RX)—方的第2层交换机用户端口)应当接收该以太网帧的第一转发判决。如果获知了MAC地址(例如单播或多播DMAC地址),则该判决可通过査看地址解析表(ART)来做出;如果未获知MAC地址(在广播时就是如此),则可以做出进行广播的转发判决。其次,本地交换机通过使用以太网帧的DMAC和SMAC地址来为以太网帧计算LAGK。交换机随后经由被(例如可编程地)预先指派了与计算出的LAGK值相匹配的LAGK的物理链路(在此例中为1或2)将该以太网帧转发到远端的用户端口。优选地,LAGK的指派是随改变着地址的网络状况而动态改变的,这将在下文中说明。近端和远端第2层交换机处的LAGK指派不需要是对称的。例如,Eclipse中的DAC-GE可以使用对近端和远端方分别不同的链路聚合和负载均衡算法。因此,LAGK指派在每个第2层交换机处设定用于将以太网帧流量转发到LAG内的物理链路的规则。当转发流量时,LAGK中的负载均衡可能从一开始就是必要的,因为LAGK的初始指派可能是在没有关于流量状况的任何信息(例如流量统计信息或模式信息)的情况下被编程的。另外,流量状况可能随着时间而改变,并导致失衡的流量负载。被引导到一条物理链路的流量可能比被引导到LAG中的另一物理链路的流量更重。流量失衡以及随之而来的过载的物理链路可能由于缓冲器溢出或等待延迟增大而导致帧丢失。在流量负载失衡的情况下,负载的重分布可帮助均匀负载。优选地,负载均衡是通过重指派LAGK来实现的。负载均衡通常是通过对交换机107重编程以将LAGK指派给LAG中的成员,从而以基于软件的重配置的形式来实现的。在现实中,流量状况的改变动态发生,因此优选地,LAGK的重指派应当是动态的。当实现负载均衡算法以在链路聚合中实现动态负载均衡时,若干个考虑因素可能是适用的。例如,因为负载均衡优选是动态的,所以它可以仅在确实必要时才被执行。这样实现可减小开销。即,即使当流量负载在LAG成员之间失衡时,如果不存在诸如帧丢失之类的问题,负载均衡也不是必要的。这一考虑因素可能是重要的,因为LAGK的任何重分配都可能导致网络(链路)配置的混乱并且可能导致瞬间流量中断。在一个可能的场景中,当流量被从一条非常拥挤的链路重引导到一条流量较轻的链路时,可能存在帧同步故障。在此情况下,经由拥挤链路发送的帧可能由于缓冲而被延迟并且比由负载较轻的链路传送的帧更晚到达。这种延迟的时间区间可能非常短(小于400/xs),但仍可能影响流量并且如果产生了同步故障的话则可能要求负载均衡。可应用到负载均衡算法的另一考虑因素是在发现帧丢失之后需要提供尽可能最迅速的响应以便防止进一步的帧丢失。实现负载均衡算法时的一个相关考虑因素可能是在检测到故障后需要尽可能快地收敛到流量状况的稳态。在一个例子中,用于链路聚合中的动态负载均衡的算法可被划分成两个部分l)LAGK的初始分配,以及2)动态负载均衡。LAGK的初始分配这个部分包括将所有可用LAGK(例如,16个LAGK)划分到LAGK的子集中并且将它们指派给LAG的成员。LAGK的初始分配的特征可在于它形成子集中的连续LAGK块。这对于避免出现全是奇数或全是偶数的LAGK的子集是有用的。初始LAGK分配的特征还可在于随机选择的LAGK子集偏移量,其中连续的LAGK块(子集)是在每次交换机复位时利用软件随机生成的。另一个可能性是基于链路容量按配置对为每条链路分配的LAGK的数目进行加权。LAG的每个子集或成员的权重可依据其链路容量来配置。例如,对于由两条链路构成的LAG(—条311Mbps(2x155Mbps),一条155Mbps),权重可被配置为链路权重LAGK子集311Mbps11C4,5,6,7,8,9,10,11,12,13,14)155Mbps(15,0,1,2,3)总计16在图1B中,示出了在上述的EclipseTM平台上此示例的可能配置的示图。此配置是基于经由如图所示桥接的用户端口4(例如光学端口)相互链接的无线电装置(例如,近端的45和47以及远端的49和51)的。各交换机的用户端口的桥接形成了多个无线电装置的链,以创建链路聚合。在此例中,桥接允许了两条物理链路被组合并形成单个LAG,其中16个可用的LAGK被划分在LAG的成员链路之间。端口分别具有311Mbps和155Mbps链路容量,并且此示例中链路聚合的总带宽为466Mbps。如上所述,LAGK的指派不需要是对称的,并且如此示例中所示,近端和远端交换机处的LAGK指派是非对称的(在每一端是不同的)。根据上述示例,可以设想构建"第二级"链路聚合的可能性,如果第二交换机106c,D被配置为设定另一链路聚合的话(Eclipse平台的智能节点单元(INU)内的第二交换机)。然而,优选地,由于去往第二交换机的进入流量的受限制的LAGK,可以避免构建"第二级"链路聚合。前述算法的第二部分是动态负载均衡部分。动态负载均衡优选地基于每LAGK的外出数据速率、外出缓冲器状态和物理链路容量。物理链路容量信息提供了物理链路支持的最大数据速率。外出状态信息被用作请求负载均衡的触发。外出状态信息已经以外出使用的RAM、由于LAG的每条物理链路(端口)的发送缓冲器的缺乏而造成的帧丢失等等的形式而存在于交换机中。用于确立每LAGK的外出数据速率的装置可利用用于每个LAGK的性能计数器来实现于DAC-GE的FPGA中。这些计数器按例如1-10秒的时间间隔来测量每个LAGK的当前数据速率(以Kbps为单位)。利用关于与每个LAGK相关联的流量负载的知识,算法可以执行更好的负载均衡。在经由链化的INU(经由网桥而链化的用户端口)进行链路聚合的情况下,前述方案可能需要硬件支持或带内通信信道来获得链化INU的LAGK性能计数器。性能计数器可经由以太网接口实现在扩展总线专有网桥协议数据单元(BPDU)中(由交换机的内部CPU发出)。用于负载均衡目的的链化端口的虚拟链路容量应当是最终无线电链路容量而不是用户接口容量,通常是1000Mbps。在每个INU中,DAC-GE可以被设计有处理引擎,用于执行动态负载均衡并且如下文所述将快速信道故障检测(RCFD)用于第2层链路聚合。DAC-GE的各种配置是可能的,但如图2A、2B和2C所示,优选的设计采用基于FPGA、CPLD、ASIC的处理引擎或者其他逻辑电路中的硬件辅助实现方式(我们将这些实现方式统称为"基于FPGA的处理引擎"15或者简称为"处理引擎")。用于此目的的基于FPGA的处理引擎的DAC-GE上的一种实现方式在图2A、2B和2C中示出。具体地,图2A是示出无线通信系统的节点的INU中的DAC-GE的框图。DAC-GE包括增强故障检测和恢复而不损害吞吐量的功能,从而提供例如低于50ms的故障响应时间。DAC-GE在一侧经由用户端口101与客户数据系统相接口,而在另一侧与无线电访问卡(RAC)35相接口。来自RAC的数据流向室外单元(ODU)45(在诸如Eclipse之类的分置式系统中)并且经过天线23和无线链路60。在INU中,TDM(时分复用)总线IIO提供主干(backbone),诸如节点控制卡(NCC)21、DAC-GE41和RAC35之类的各种卡通过该主干连接。NCC包括处理器114,并且充当控制包括DAC-GE卡41在内的各种卡的访问的总线主控。如还示出的,FPGA200存在于DAC-GE卡41内,并且其功能被提供来促成第2层链路聚合、LAGK速率(数据速率)监视和积累以及载体故障的检测。节点控制卡(NCC)21中的CPU114可操作来执行数据速率监视和负载均衡控制功能(包括监视由FPGA200积累在LAGK表208中的LAGK速率并且判定何时触发动态负载均衡)。响应于来自NCC21中的CPU114的输入,交换机中的处理器(例如,交换机逻辑107)可操作来将交换机106(图1A、B)配置和重配置到剩余可用载体的新容量。流量是经由DAC-GE卡中的交换机来分布的,但NCC卡中的CPU进行重配置。换言之,DAC-GE卡上的交换机基于FPGA的操作(故障检测等)在NCC中的CPU的控制下被动态重配置。注意,在无线通信系统中的特定节点和其他节点之间可能存在多跳。然而,DAC-GE的负载均衡以及故障检测和恢复操作并不关心跳的数目,并且它们有益地促成了网络端到端故障检测、恢复和负载均衡。另外,为了生效,DAC-GE41应当被部署在这种系统的至少两个节点的INU中。如DAC-GE的框图中所示,在图2B中,第2层交换机106包括交换逻辑107和用户端口101。经由用户端口101进入交换机106的以太网帧被交换逻辑107排队在发送缓冲器120、122中,以便被路由到适当的信道121、123(例如基于地址解析表)。然后,FPGA200被配置为截取被交换的传出以太网帧,以便从其中导出LAGK的数据速率并经由TDM总线110将以太网帧从DAC-GE转发到相应的RAC35A,B。根据一个实施例,FPGA202被配置为从截取的以太网帧导出DMAC(目的地MAC212)和SMAC(源MAC214)并且对DMAC和SMAC的4个LSB(最低有效位)执行XOR(异或)运算,以计算出LAGK。如上所述,FPGA将计算出的LAGK积累在表208中。如上所述,链路聚合被用在具有多条物理链路(干线)的点到点通信中,以将它们聚集成一个管道,而不是独立工作的链路。为此,LAGK被用作以太网帧流量片段的标识符以便进行交换判决(哪个片段去往哪条物理链路)并且用作用于创建负载均衡的工具。因此,在此实施例中,计算出的LAGK是16个可能的LAGK之一并且其对应于LAGK数据速率表208的16行之一。此表的第二列包括16个LAGK中每一个的数据速率。这些速率根据从以太网帧流量导出的LAGK被更新。LAGK速率表208中的信息可供NCC21中的链路聚合负载均衡控件115使用,该控件在此实施例中是担负着处理数据速率信息的任务的软件模块。具体而言,链路聚合负载均衡控件115从第2层交换机106获得发送信道缓冲器状态,并且结合来自LAGK速率表的数据速率(LAGK速率)信息,它可以确定在流量负载失衡的情况下如何最好地重分配LAGK以便均衡负载。暂吋转到图3A的状态图,它说明了在发现触发事件后负载均衡的监视控制。如图所示,只要有稳态操作135,就没有负载均衡活动。然而,一旦发现了触发事件(1),例如分组丢失、重大负载失衡或其他故障,负载均衡控件就可激活负载均衡任务。在恢复后,系统达到稳态操作并且负载均衡任务可以停止其操作。返回图2B,负载均衡控件115的软件模块执行其负载均衡任务的方式可以通过多种方式来实现,其一个示例在以下作为算法以一组程序指令形式提供。一般来说,动态负载均衡算法包括监视LAG中的物理链路和流量负载更新。流量更新包括检测帧丢弃(缓冲器溢出)状况并且积累相关流量17数据速率以用于计算相应的流量负载。监视包括检测触发负载均衡的状况。一旦检测到链路过载状况,上述的负载均衡就可被触发,如果存在其他具有可用容量来接管一些负载的链路的话。更具体而言,包括用于初始化和动态负载均衡主循环的程序指令在内的所提出的算法如下所示在一伪C程序中描述/*描述DAC-GE的用于链路聚合的*//*动态负载均衡的算法的伪"C"程序*//*Copyright2005-2007,HarrisStratexNetworks公司*//*定义*/#defineK16/*链路聚合密钥的最大数目*/intN;/*LAG的物理链路的数目*/intR[K];/*来自FPGA的链路聚合密钥k的数据速率*/intW[N];/*为链路n指派的链路聚合密钥的权重或数目*/boolFDrop[N];严链路n上的帧丢弃,真还是假*/mtLAGK[N][K];/*分配给链路n的链路聚合密钥的集合*ZintRate[N];/*链路n上的总流量速率,以Kbps为单位*/intCap[N];/*链路n的容量,以Kbps为单位(无线电链路)*/intLoad[N];严链路i上的流量负载(0-101),测量为100*(R[n]/C[n])intMax—Load;/*流量负载的溢出阈值水平(0-101)*/intMin—Load;/*在其下允许更多流量的流量负载水平(0-101)*//*初始化*//*随机选择初始LAGK偏移量(0-15)*/KO=Random(K);for(n=0;n<N;n++)/*对于LAG的所有物理链路*//*向子集LAGK[n]分配其权重*/for(k=0;k<W[n];k++)LAGK[n][k]=(KO+k)%K;/*k>15时回巻到0*/KO=KO+W[n];/*下一偏移量开始于此块的末尾*//*主循环*//*用于负载均衡的主循环*/while(not_end&&not—config—reset)/*更新LAG的所有链路的流量负载*/for(n=0;n<N;n++)/*检测帧丢弃(缓冲器溢出)状况*/if(FDrop[n]==TRUE)Load[n]-101;/*溢出状况*/else/*链路n的第一更新流量数据速率*/Rate[n]=0;for(k=0;k<W[n];k++)Rate[n]+=R[LAGK[n][k]];/*积累相关LAGK数据速率*//*计算流量负载*/Load[n]=100*(Rate[n]/Cap[n]);}/*更新流量负载结束*//*监视所有链路*/for(n=0;n<N;n++)/*检测触发负载均衡的状况*/if(Load[n]>=Max—Load)/*检查以寻找具有空余容量的另一链路的存在*/for(s=0;s<N;s++)if(s==n)continue;/*自行跳跃*/if(Load[s]<Min一Load)/*从链路n到链路s找出适当的密钥k,以便均衡负载。它取决于其数据速率R[k]以使得所得到的Rate[s]<Max_Load*/k=transfer—suitable—LAGK(n,s);/*如果找到适当的密钥来转移,则跳到下一链路*/if(k==NULL)continue;/*空余链路s加一个LAGK及其数据速率*/W[s]++;Rate[s]=Rate[s]+R[k];Load[s]=100*(Rate[s]/Cap[s]);/*拥挤链路n减一个LAGK及其数据速率*/W[n]--;Rate[n]=Rate[n]-R[k];Load[n]=100*(Rate[n]/Cap[n]);/*如果所得到的链路n上的负载低于溢出阈值,则结束对其的负载均衡*/if(Load[n]<Max_Load)break;/*从for(s=0;s<N;3++)中退出*/}/*结束对所有链路的监视*/}/*while*/为了实现该算法,如图2C所示,基于FPGA的处理引擎200被部署有LAGK速率监视功能,以促成用于第2层链路聚合的动态负载均衡。处理引擎200被示为操作性地连接到传输信道TC1/TC2(121,123),用于接收来自第2层交换机(图2B中的106)的分组。在相对的一端,处理引擎可操作地连接到背板接口(110,图2A)。处理引擎被配置为把其接收到的分组变换为适当的块(具有相关联的时隙)以便由背板传送到无线通信链路。为了实现LAGK速率监视功能,处理引擎200经由其LAGK监视器206截取传入的分组121并且在此情况下利用XOR功能从分组导出LAGK。与所导出的LAGK相关联的以太网帧的大小被积累在上述的LAGK速率表208(该表对于每个LAGK有一行)中。每当一个LAGK被导出时,其在表中的行就被递增以相关联的以太网帧大小。表中的值表明了每个LAGK的吞吐量速率的数字。因此,通过监视表内的值,可以观察流量负载。值越高就表明该LAGK的流量负载越重,进而表明相应物理链路上的流量负载越重。如还示出的,在处理引擎中可以将故障检测和恢复与前述的动态负载均衡相结合并将两者用于第2层链路聚合。因此,在一个实施例中,故障的检测和恢复以及链路恢复也是在上述基于FPGA的处理引擎中的DAC-GE上实现的。有利地,链路聚合与这样的硬件辅助RCFD算法相结合可使故障响应和恢复能在数百微秒内发生,而不是像使用标准消息传递方法时那样要花数秒。尤其地,在DAC-GE被安装在无线无线电系统的INU中的情况下,如果其使用两条无线电链路并在每个信道上发送分组,则其将能够以两倍的速度工作。RCFD算法对于差错传播是有弹性的并且消除了不必要的切换。由于对链路故障或衰弱状况的快速检测,受保护的系统将迅速切换到单条链路。LAG的冗余特性与RCFD算法相结合起到了在剩余的可靠物理链路之间重引导流量的作用。存在于DAC-GE中的以太网交换机中的链路聚合控制任务对分组的交换和排队进行重组织。此外,利用RCFD算法的单向故障检测能力,链路聚合系统通过使一个方向上可得到完全链路吞吐量而在另一方向上仅使用有限吞吐量(由于单向故障检测),从而可具有非对称行为。在视频广播系统或其他大量使用广播或多播传输或者性质非对称的应用中,就是这种情况。从动态负载均衡设计的角度来看,可以保持链路并且仅在一个方向而不在另一方向执行负载均衡。根据所实现的,载体(链路)的健康状况在扩展头部中被传达给链路的两方(例如,无线通信链路的每一端)的节点。具体而言,每个节点处的DAC-GE中的处理引擎200保存具有TX和RX状态信息的扩展状况。TX状态是对在接收到的分组的头部中传达的远端节点的RX状态指示符的反映。TX状态是基于从流量对齐指示符314以及接收到的分组及其完好性获得的信息来计算的。流量对齐旨在维持已被划分成片段并需要被适当重构的分组的完好性。在此设计中,一组可配置寄存器允许了调节系统行为以符合特定载体类规范。这些寄存器是保活(keep-alive)插入速率、分组接收超时、CRC(循环冗余校验)确认阈值和CRC差错阈值。保活分组插入速率寄存器304表示分组插入引擎在插入保活分组之前将会等待的以微秒为单位的速率(在空闲流量状况下)。分组接收超时寄存器310表示接收引擎在宣告空闲RX超时之前将会等待一分组的微秒数。CRC确认阈值寄存器311表示为了将RX状态从坏改变为好而需要接收的连续好CRC分组的数目。CRC差错阈值寄存器309表示为了将RX状态从好改变为坏而需要接收的连续坏CRC分组的数目。两个可配置的CRC寄存器提供了一种滞后作用,以避免由于少量差错而引起坏-好状态振荡。对故障检测算法的要求之一是独立于信道中有效载荷流量的存在。为了能够符合该要求,算法被设计为检测有效载荷流量的不存在(空闲)并插入将维持链路状态的保活分组。保活分组的格式与正常有效载荷分组格式基本相同,但没有有效载荷片段,并且它传达相同的状态和完好性信息。注意,使用多条物理链路在两个以太网交换机之间传输以太网流量的方法通常旨在实现更高的链路可用性和带宽,同时避免环路形成。然而,现有系统中的检测和交换通常将在100ms内进行;并且利用标准消息传递方法,故障恢复将花费数秒。因此,为了实现或超越载体类以太网传输信道标准,链路聚合依赖例如如上所述实现的快速故障检测和恢复。图3B是说明可在动态负载均衡之前调用的、链路聚合成员故障或恢复后的动态链路聚合密钥重分布的状态图。该状态图中示出的行为通过在链路故障发生时将例如2+0链路操作转换成1+0操作来提高整体链路可用性("+0"通常指的是没有备用操作模式)。值得注意的是,利用密钥重分布,总流量被转移到剩余的链路聚合成员(LAGM)。从而,从稳态134起,在检测到故障后,状态切换,以将LAGK分布到剩余LAGM132。换言之,利用此方法,故障链路的流量流动被重分布,而不是被暂停,其中剩余链路(LAGM)暂时为故障链路进行接管直到其恢复为止,从而恢复迅速并且整个流量流动可以继续。相对于仅维持与剩余LAGM的指定密钥相关联的流量流动并且与故障LAGM的密钥相关联的流量流动被暂停(挨饿)直到发生故障的链路恢复为止的传统技术,此方法有重大优点。实际上,当链路发生故障时,整个流量继续流动,虽然如果所有密钥被重分布在剩余的(一个或多个)LAGM上的话总体链路聚合吞吐量会有所降低;而如果达到拥塞状况,则流量优先级区分和流动控制进行接管,以维持流动。当故障状况消失时,链路聚合与快速信道故障检测和恢复相结合来恢复链路的总吞吐量并且将原始LAGK集合重指派给新恢复的LAGM136。如果需要任何另外的重分布,则其以同样的重复方式发生。一旦检测到链路故障或链路恢复(TX或RX状态改变),在故障情况下则针对密钥重分布来标记LAGM,而在恢复情况下则针对密钥重指派来标记LAGM。对于先前没有考虑(尚未被指派密钥)的每条链路,组合的链路聚合和快速信道故障检测算法判定该LAGM是否被标记,并且如果是,则在故障时密钥被重分布给它,或者在恢复时密钥被重指派给原始LAGM。作为示例,前述用于第2层链路聚合的动态负载均衡的方法可以实现在诸如Eclipse之类的无线无线电平台中。图4示出了可配置用于带动态负载均衡的链路聚合的2+0EdipseTM微波无线电链路的体系结构。如图所示,这种系统使用无线电路径412来传送总分组流量的一部分,并且使用另--无线电链路414来传送总分组流量的剩余部分。总之,虽然已经参考其某些优选版本相当详细地描述了本发明,但其他版本也是可能的。因此,权利要求的精神和范围不应当限于这里包含的对优选版本的描述。权利要求1.一种用于在数据通信系统中提供动态负载均衡的方法,包括在具有多条物理链路的数据通信系统中创建链路聚合群组,所述多条物理链路中的每一条具有用于传输外出数据或其任何部分的容量,所述链路聚合群组是通过将所述多条物理链路中的两条或更多条组合成用于外出数据的单条逻辑链路来形成的;向所述链路聚合群组分配链路聚合密钥的集合,其中每个链路聚合密钥被指派给所述链路聚合群组中的物理链路之中的特定一条物理链路;从外出数据导出所述链路聚合密钥中的每一个的数据速率;以及基于所述数据速率和所述链路聚合群组中的物理链路的容量来执行动态负载均衡。2.如权利要求1所述的方法,其中,所述动态负载均衡包括检测触发负载均衡的状况。3.如权利要求2所述的方法,其中,所述状况包括与外出缓冲器溢出状态相关联的帧丢弃。4.如权利要求3所述的方法,其中,所述动态负载均衡还包括监视所述外出缓冲器溢出状态。5.如权利要求1所述的方法,其中,所述动态负载均衡包括基于外出数据监视流量负载并且积累所述数据速率以用于计算所述流量负载。6.如权利要求1所述的方法,还包括监视包括故障和恢复在内的数据通信系统状况的改变,基于所述改变,所述动态负载均衡被触发。7.如权利要求6所述的方法,其中,所述改变包括物理链路的故障或恢复,该物理链路的故障或恢复导致将外出数据转移到所述链路聚合群组中的物理链路之中的剩余一条或多条物理链路。8.如权利要求1所述的方法,其中,外出数据包括一个或多个帧,并且所述方法还包括在发现一个或多个这种帧丢失后触发所述动态负载均9.如权利要求1所述的方法,其中,外出数据包括多个帧,并且所述方法还包括在发现这种帧之间的同步丢失后触发所述动态负载均衡。10.如权利要求1所述的方法,其中,外出数据包括有效载荷和标识信息,并且所述导出步骤包括根据所述标识信息来计算密钥值,将所述密钥值与所述集合中的链路聚合密钥相比较,并且计算所述链路聚合密钥中与所述密钥值匹配的一个链路聚合密钥的数据速率。11.如权利要求IO所述的方法,其中,所述标识信息包括源和目的地地址,并且计算所述密钥值的步骤包括对所述源和目的地地址执行逻辑运算。12.如权利要求11所述的方法,其中,所述逻辑运算包括所述源和目的地地址中的每一个的n个LSB(最低有效位)之间的异或运算。13.如权利要求10所述的方法,还包括通过选择具有与所述密钥值相匹配的所指派链路聚合密钥的物理链路,来将所述密钥值用于为所述外出数据做出转发判决。14.如权利要求11所述的方法,还包括将所述源和目的地地址用于地址解析表査找中,以便做出关于外出数据的转发判决。15.如权利要求IO所述的方法,其中,外出数据包括多个帧,这多个帧中的每一个具有其自己的有效载荷和用来计算相应密钥值的标识信息,并且所述数据速率是对于这多个帧中的每一个导出的。16.如权利要求1所述的方法,其中,所述链路聚合密钥的集合是在所述数据通信系统中可用的链路聚合密钥的更大群组的一部分,并且所述方法包括创建多个链路聚合群组,这多个链路聚合群组中的每一个被分配以来自所述更大群组的链路聚合密钥子集。17.如权利要求1所述的方法,其中,多于一个链路聚合密钥被指派给一特定物理链路。18.如权利要求1所述的方法,其中,所述负载均衡包括重指派所述集合中的链路聚合密钥。19.如权利要求1所述的方法,其中,分配所述链路聚合密钥的集合的步骤包括通过将所述链路聚合密钥的集合划分成子集并将每个子集指派给所述链路聚合群组中的物理链路之一,来将它们最初指派给所述链路聚合群组中的物理链路,其中该划分在每个子集内形成链路聚合密钥的连续块。20.如权利要求19所述的方法,其中,最初指派的特征在于随机选择每个连续块的开始的偏移量。21.如权利要求19所述的方法,其中,最初指派给每条物理链路的链路聚合密钥的数目基于该物理链路的容量被加权。22.如权利要求19所述的方法,其中,所述动态负载均衡包括将链路聚合密钥从一个子集重指派到另一子集。23.—种用于提供数据通信的动态负载均衡的系统,包括多条物理链路,这多条物理链路中的每一条具有用于传输外出数据或其任何部分的容量,这多条物理链路是链路聚合群组的成员;交换机,该交换机包括相互操作性耦合的逻辑和存储装置,其中所述存储装置包含程序代码,该程序代码与所述逻辑操作性地交互以基于数据流量状况的改变来动态配置外出数据到所述多条物理链路的交换,其中所述动态配置包括向所述链路聚合群组分配链路聚合密钥的集合,所述集合中的每个密钥被指派给所述物理链路中的特定一条物理链路;引擎,该引擎适合于基于外出数据监视所述链路聚合密钥中的每一个的数据速率;以及控制模块,该控制模块适合于从所述引擎获得所述数据速率,并且响应于负载失衡状况,执行包括重指派所述链路聚合密钥和与所述交换机相接口以管理地址/端口重配置在内的动态负载均衡。24.如权利要求23所述的系统,其中,所述引擎包括性能计数器。25.如权利要求23所述的系统,其中,所述控制模块是基于软件的。26.如权利要求23所述的系统,其中,所述多条物理链路包括无线通信链路。27.如权利要求23所述的系统,其中,所述交换机包括用于外出数据的缓冲器,并且所述控制模块还适合于监视所述缓冲器的溢出状况并作为响应触发所述动态负载均衡。28.如权利要求24所述的系统,其中,所述负载失衡状况包括与所述溢出状况相关联的帧丢弃。29.如权利要求23所述的系统,其中,所述负载失衡状况包括帧同步的丢失。30.如权利要求23所述的系统,其中,所述引擎还适合于通过计算密钥值并将密钥值与所指派的链路聚合密钥之一相匹配,来从外出数据导出所述数据速率。31.如权利要求23所述的系统,其中,所述引擎还包括维护着所述链路聚合密钥中的每一个的数据速率的表。全文摘要用于第2层链路聚合的负载均衡包括对链路聚合密钥(LAGK)的初始指派和在发现值得采取动作的负载失衡状况时对LAGK的重指派。负载状况动态改变,并且因为此原因,负载均衡往往也是动态的。负载均衡优选地是在其必要时执行的。因此,触发负载均衡的失衡状况优选地限于诸如存在帧丢弃、同步丢失或超过物理链路容量之类的状况。文档编号H04J3/06GK101682442SQ200880017344公开日2010年3月24日申请日期2008年5月22日优先权日2007年5月24日发明者曾超明,瑟吉奥·里卡尔迪申请人:哈里斯施特拉特克斯网络运行公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1