首页> 中国专利> 对进入流量执行流量负载平衡的方法和装置

对进入流量执行流量负载平衡的方法和装置

摘要

本发明公开涉及对进入流量执行流量负载平衡的方法和装置,尤其是提供了对指向链路聚合组(LAG)的进入流量执行流量负载平衡的机制。该机制监视跨链路聚合组(LAG)的多条链路的进入流量负载。该机制确定跨多条链路的进入流量负载是否不平衡。而且,该机制响应于确定跨多条链路的进入流量负载不平衡,向与LAG关联的交换机发送请求该交换机修改到LAG的进入流量的路由以执行进入流量负载平衡的消息。

著录项

  • 公开/公告号CN104683257A

    专利类型发明专利

  • 公开/公告日2015-06-03

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201410680192.5

  • 发明设计人 A·贝洛;O·卡多纳;S·J·乔克希;

    申请日2014-11-24

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人鲍进

  • 地址 美国纽约

  • 入库时间 2023-12-18 09:04:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-15

    授权

    授权

  • 2015-07-01

    实质审查的生效 IPC(主分类):H04L12/803 申请日:20141124

    实质审查的生效

  • 2015-06-03

    公开

    公开

说明书

技术领域

本申请一般而言涉及改进的数据处理装置和方法,并且更具体而 言涉及用于在链路聚合组中进行自主流量负载平衡的机制。

背景技术

为了可用性和可扩展性,物理网络通常在端点被抽象。可用性和 可扩展性都是通过提供链路聚合组(Link Aggregation Group,LAG) 来解决的。链路聚合是用来描述并行地组合或聚合多个网络连接以便 增加超出单个连接可以维持的吞吐量并且在一条链路故障的情况下提 供冗余性的各种方法的计算机联网术语。这种链路聚合可以在开放系 统互连(OSI)模型的最下面三层中任意一层实现。在层1(物理层) 的聚合的例子是组合多个频带的电源线和无线网络设备。OSI层2 (数据链路层)聚合通常跨交换机端口发生,其中交换机端口可以是 由操作系统管理的物理端口或者是虚拟端口。利用轮转调度、基于散 列值的调度、其组合,等等,OSI层3(网络层)聚合是有可能的。

链路的组合或者可以发生成使得多个接口共享一个逻辑地址(例 如,IP地址)或一个物理地址(例如,MAC地址),或者它可以使 得每个接口具有其自己的地址。前者需要链路的两端都使用相同的聚 合方法,但是具有优于后者的性能优点。用于执行链路聚合的一种标 准在链路聚合控制协议(LACP)中规定。

链路聚合组(LAG)是聚合到一起从而形成链路组的一组链路。 LAG通常耦合到网络中的交换机架构的一个或多个交换机。关于可 用性,LAG允许网络适配器/链路错误局限于网络适配器/接口域,其 中“接口”是链路组作为单个链路的抽象。关于可扩展性,把多个物 理链路分组到一个抽象接口,例如代表多条物理链路的单个以太通道 (Etherchannel),允许聚合延迟和吞吐量性能的改进。在这两种情 况下,用户空间应用都不参与确定接口或交换机架构行为。

发明内容

在一种说明性实施例中,在包括处理器的设备中提供了用于对指 向链路聚合组(LAG)的进入流量执行流量负载平衡的方法。该方 法包括由设备监视跨链路聚合组(LAG)的多条链路的进入流量负 载。该方法还包括由设备确定跨多条链路的进入流量负载是否不平衡。 而且,该方法还包括,响应于确定跨多条链路的进入流量负载不平衡, 由设备向与LAG关联的交换机发送请求该交换机修改进入流量到 LAG的路由以执行进入流量负载平衡的消息。

在其它说明性实施例中,提供了包括具有计算机可读程序的计算 机可用或可读介质的计算机程序产品。在计算设备上执行时,计算机 可读程序使计算设备执行以上关于方法说明性实施例概述的各种操作 或者其组合。

在还有另一种说明性实施例中,提供了一种系统/装置。该系统/ 装置可以包括链路聚合逻辑、监视逻辑以及流量负载平衡逻辑,每个 逻辑都配置为执行上述方法的相应操作或者其组合。在有些说明性实 施例中,该系统/装置可以包括一个或多个处理器以及耦合到一个或 多个处理器的存储器。存储器可以包括指令,当被一个或多个处理器 执行时,该指令使这一个或多个处理器执行以上关于方法说明性实施 例概述的各种操作或者其组合。

本发明的这些及其它特征和优点将在以下本发明的示例实施例的 具体描述中进行描述,或者将依据这种具体描述而对本领域普通技术 人员变得显然。

附图说明

当结合附图阅读时,通过参考以下说明性实施例的具体描述,本 发明及其优选使用模式和进一步的目标和优点将得到最好的理解,其 中:

图1是其中可以实现说明性实施例的各方面的分布式数据处理系 统的示例图;

图2是其中可以实现说明性实施例的各方面的计算设备的示例框 图;

图3是当跨链路进行流量平衡时的正常操作期间链路聚合组的示 例图;

图4说明了其中从交换机流到链路聚合组(LAG)的流量变得 不平衡的情况;

图5是根据一种说明性实施例的链路聚合控制协议(LACP)消 息的LACP首部的示例图;及

图6是概述根据一种说明性实施例的用于执行进入流量平衡的示 例操作的流程图。

具体实施方式

如以上所提到的,用于增加网络连接的可靠性和吞吐量的一种机 制是使用链路聚合并且把多条链路聚合到链路聚合组(LAG)中。 但是,在当前的聚合模型下出现了一个问题,因为流量流(数据、数 据包、帧等从一个元件到另一个元件的流)和使用中的适配器当中的 负载分配是通过元组,例如源地址、源端口、目的地地址和目的地端 口的元组,确定的。在活动的元组空间中缺乏足够的熵是关于入口流, 即,从交换机到LAG,流量的不平衡分布的关键因素。在这种语境 下,熵指随机性的测量,其中高端口熵允许连接跨LAG中所有可用 端口均匀地分配,没有任何偏斜。因为链路是按照元组来规定的,所 以,即使在使用链路聚合时,特定链路的流量也倾向于经过单个端口 而不是多个端口,使得可以避免乱序包,从而导致缺乏足够的熵。流 量被指向的特定端口是在流量到达主机系统的网络适配器之前确定的, 因此不能由主机系统控制。例如,散列算法可以被网络的交换机用来 取得包的字段并且生成指向特定散列桶的散列索引,该散列桶识别该 连接与其关联的对应端口。

外出分配,即,从LAG到交换机,是由软件控制的,其中在主 机系统上执行的软件可以通过执行负载平衡操作来确保LAG的链路 当中适当的流量分配。因而,即使外出流量控制在主机的LAG机制 的控制之内,但进入流量平衡在这种LAG机制控制之外。LAG耦合 到的交换机绑定到元组约束,以确保在LAG一侧不发生乱序处理。 具有一种允许LAG向交换机指示如何以及何时执行入口流的再平衡 以使得在不考虑特定的流量流的情况下获得最优性能的机制将是有益 的。

说明性实施例提供了用于在链路聚合组(LAG)中进行自主流 量负载平衡的机制。利用说明性实施例的机制,LAG与关联的交换 机协调,以协商进入流量流在LAG的成员当中的合理过渡。在有些 说明性实施例中,链路聚合控制协议(LACP)被扩展成包括扩展字 段,以允许向交换机传递指示用于进入流量再平衡的选项的信息。利 用说明性实施例的机制,通过在交换机和LAG之间不断流动的心跳 消息中提供扩展字段,进入流量的平衡在LAG的控制之下。这些扩 展字段包含关于LAG中哪些链路被过度使用的信息。扩展字段还可 以包含关于LAG中哪些链路是在以别的方式映射到过度使用链路的 流量应当重定向到的链路的信息。当把流量从LAG中过度使用的链 路重新路由到LAG中期望的链路时,交换机使用这种信息。以这种 方式,进入流量在主机系统的LAG控制之下被再平衡。

在网络性能瓶颈在端点,即,源或目的地计算设备处被看到的情 形下,说明性实施例提供了缓解(relief)。说明性实施例允许系统管理 员通过向LAG,例如以太通道,添加更多适配器来减小网络压力。 说明性实施例的负载平衡在不需要对通信设备上的各种度量进行测量 以确保端口熵的情况下就可以实现。此外,说明性实施例不受乱序包 问题影响,而这种乱序包问题困扰着轮转负载平衡方法。

本发明说明性实施例的以上各方面和优点将在下文中参考附图更 具体地描述。应当认识到,附图仅仅是要说明本发明的示例性实施例。 本发明可以涵盖未在附图中明确示出但是鉴于说明性实施例的本描述 对本领域普通技术人员来说很显然的方面、实施例,以及对所绘出的 示例性实施例的修改。

所属技术领域的技术人员知道,本发明的各个方面可以实现为系 统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现 为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括 固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式, 这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施 例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质 中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的 程序代码。

可以使用一种或多种计算机可读介质的任意组合。计算机可读介 质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读 存储介质可以是电、磁、光、电磁或半导体本质的系统、装置或设备, 或者以上所述的任意合适组合,或者其等效物。计算机可读存储介质 的更具体例子(非穷尽列表)将包括以下:具有存储能力的电气设备、 便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器 (ROM)、可擦可编程只读存储器(EPROM或者闪存存储器)、 基于光纤的设备、便携式光盘只读存储器(CDROM)、光学存储设 备、磁性存储设备,或者以上所述的任意合适组合。在本文档的背景 下,计算机可读存储介质是可以包含或者存储由指令执行系统、装置 或设备使用或者与其联合使用的程序的任何有形介质。

在有些说明性实施例中,计算机可读介质是非暂时性计算机可读 介质。非暂时性计算机可读介质是其不是无形信号或传播波,即,本 身是纯信号或传播波,的任何介质。非暂时性计算机可读介质可以利 用信号和传播波,但不是信号或传播波本身。因而,在本描述的范围 内,例如,以任何方式利用信号,诸如像维持其状态,的各种形式的 存储器设备以及其它类型的系统、设备或装置都可以被认为是非暂时 性计算机可读介质。

另一方面,计算机可读信号介质可以包括其中体现计算机可读程 序代码的传播数据信号,例如,其在基带中或者作为载波的一部分传播。 这种传播的信号可以采取多种形式中的任一种,所述形式包括,但不限 于,电磁、光或者其任意合适组合。计算机可读信号介质可以是计算机 可读存储介质以外并且可以传送、传播或传输由指令执行系统、装置或 设备使用或者与其结合使用的程序的任何计算机可读介质。类似地,计 算机可读存储介质是计算机可读信号介质以外的任何计算机可读介质。

计算机可读介质上体现的计算机代码可以用任何适当的介质发送, 包括,但不限于,无线、有线、光缆、射频(RF)等等,或者其任意 合适组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发 明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设 计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序 设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完 全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或 者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中, 远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网 (WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如 利用因特网服务提供商来通过因特网连接)。

下面将参照根据本发明实施例的方法、装置(系统)和计算机程 序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图 的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机 程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计 算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使 得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处 理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规 定的功能/动作的装置。

也可以把这些计算机程序指令存储在计算机可读介质中,这些指 令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工 作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图 和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品 (article of manufacture)。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置 或其它设备上,使得一系列操作步骤在计算机、其它可编程装置或其它 设备上执行,以产生计算机实现的过程,从而使得在计算机或其它可编 程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中 规定的功能/动作的过程。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、 方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点 上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的 一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现 规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现 中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。 例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以 按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和 /或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可 以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可 以用专用硬件与计算机指令的组合来实现。

因而,说明性实施例可以在许多不同类型的数据处理环境下使用。 为了提供用于描述说明性实施例的具体元件和功能的语境,在下文中 提供图1和2作为其中可以实现说明性实施例的各方面的示例环境。 应当认识到,图1和2仅仅是例子并且不是要断言或暗示关于其中可 以实现本发明各方面或实施例的环境的任何限制。在不背离本发明主 旨与范围的情况下,可以对所绘出的实施例进行许多修改。

图1绘出了其中可以实现说明性实施例的各方面的示例分布式数 据处理系统的图形表示。分布式数据处理系统100可以包括可以实现 说明性实施例的各方面的计算机的网络。分布式数据处理系统100包 含至少一个网络102,这是用来在分布式数据处理系统100中连接到 一起的各种设备和计算机之间提供通信的介质。网络102可以包括诸 如有线、无线通信链路或光缆的连接。

在所绘出的例子中,服务器104和服务器106连同存储单元108 一起连接到网络102。此外,客户端110、112和114也连接到网络 102。这些客户端110、112和114可以是例如个人计算机、网络计算 机等。在所绘出的例子中,服务器104向客户端110、112和114提 供数据,诸如引导文件、操作系统图像及应用。在所绘出的例子中, 客户端110、112和114是服务器104的客户端。分布式数据处理系 统100可以包括未示出的附加服务器、客户端和其它设备。

在所绘出的例子中,分布式数据处理系统100是互联网,其中网 络102代表使用传输控制协议/互联网协议(TCP/IP)协议套件彼此 通信的世界范围内的网络和网关的集合。在互联网的中心,是主要节 点或主计算机之间的高速数据通信链路的主干,包括路由数据和消息 的数以千计的商业、政府、教育和其它计算机系统。当然,分布式数 据处理系统100还可以实现为包括多个不同类型的网络,诸如像内联 网、局域网(LAN)、广域网(WAN)等。如上所述,图1是要作 为例子,而不是作为对本发明不同实施例的体系架构限制,因此,图 1中所示出的特定元件不应当认为是对其中可以实现本发明说明性实 施例的环境的限制。

图2是其中可以实现说明性实施例的各方面的示例数据处理系统 的框图。数据处理系统200是计算机的例子,诸如图1中的客户端 110,实现用于本发明说明性实施例的过程的计算机可用代码或指令 可以位于其中。

在所绘出的实施例中,数据处理系统200采用集线器体系架构, 包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/ 输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器 208和图形处理器210连接到NB/MCH 202。图形处理器210可以通 过加速图形端口(AGP)连接到NB/MCH 202。

在所绘出的例子中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只 读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器 230、通用串行总线(USB)端口和其它通信端口232以及PCI/PCIe 设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设 备可以包括例如以太网适配器、附件卡以及用于笔记本电脑的PC卡。 PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如闪存 基本输入/输出系统(BIOS)。

HDD 226和CD-ROM驱动器230通过总线240连接到SB/ICH 204。HDD 226和CD-ROM驱动器230可以使用例如集成驱动电子 设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO) 设备236可以连接到SB/ICH 204。

操作系统在处理单元206上运行。操作系统协调并提供对图2中 数据处理系统200中各种部件的控制。作为客户端,操作系统可以是 商业可用的操作系统,诸如。面向对象的编程 系统,诸如JavaTM编程系统,可以结合操作系统运行并且从在数据 处理系统200上执行的JavaTM程序或应用提供对操作系统的调用。

作为服务器,数据处理系统200可以是例如eServerTM  System 计算机系统,运行高级交互执行()操作系统或 操作系统。数据处理系统200可以是在处理单元206中包括 多个处理器的对称多处理器(SMP)系统。或者,可以采用单处理 器系统。

用于操作系统、面向对象的编程系统以及应用或程序的指令位于 存储设备,诸如HDD 266,之上,并且可以加载到主存储器208中, 用于由处理单元206执行。用于本发明说明性实施例的过程可以由处 理单元206利用计算机可用程序代码执行,其中计算机可用程序代码 可以位于诸如像主存储器208、ROM 224的存储器中,或者例如位 于一个或多个外围设备226和230中。

总线系统,诸如图2中所示的总线238或总线240,可以由一条 或多条总线组成。当然,总线系统可以利用提供数据在附连到架构或 体系架构的不同部件或设备之间的传输的任何类型通信架构或体系架 构实现。通信单元,诸如图2的调制解调器222或网络适配器212, 可以包括用来发送和接收数据的一个或多个设备。存储器可以是例如 主存储器208、ROM 224,或者是诸如在图2中的NB/MCH 202中 见到的高速缓存。

本领域普通技术人员将认识到,图1和2中的硬件可以依赖于实 现而变。其它内部硬件或外围设备,诸如闪存存储器、等效的非易失 性存储器或者光盘驱动器等,可以在除图1和2中所绘出的硬件之外 附加地或者代替其使用。而且,在不背离本发明主旨与范围的情况下, 除之前提到的SMP系统之外,说明性实施例的过程还可以应用到多 处理器数据处理系统。

而且,数据处理系统200可以采取多种不同数据处理系统中任一 种的形式,包括客户端计算设备、服务器计算设备、平板电脑、膝上 型电脑、电话或其它通信设备、个人数字助理(PDA)等。在有些说 明性例子中,数据处理系统200可以是配置为具有闪存存储器的便携 式计算设备,其中,例如,闪存存储器提供用于存储操作系统文件和 /或用户生成的数据的非易失性存储器。本质上,数据处理系统200 可以是任何已知的或以后开发的数据处理系统,而没有体系架构的限 制。

根据说明性实施例,图1中的一个或多个计算设备可以实现链路 聚合机制,该链路聚合机制实现链路聚合组(LAG)并且通过提供 用于在LAG及其关联的交换机之间通信由此通知交换机LAG希望 该交换机跨LAG的链路再平衡流量的方式的机制来允许这种LAG 控制进入流量。例如,图1中一个或多个服务器104、106中的网络 适配器,诸如图2中的网络适配器212,可以实现逻辑和扩展链路聚 合控制协议(LACP),该协议LACP被扩展成实现说明性实施例的 利用网络适配器的LAG执行进入流量负载平衡的特征。

图3-4是说明关于链路聚合组中不平衡流量的问题的示例图。图 3是当跨链路进行流量平衡时的正常操作期间,即,在链路聚合组的 任何链路上都没有发生流量尖峰时,链路聚合组的示例图。如图3中 所示,利用网络适配器330的链路聚合逻辑320(可以实现为在网络 适配器、固件、硬件逻辑电路或者以上任意组合的硬件上执行的软件) 创建的链路聚合组(LAG)310包括聚合到LAG 310中的四条链路 312-318。链路312-318可以经耦合到交换机架构350的交换机340 的网络适配器的物理端口提供。应当认识到,网络适配器也可以利用 逻辑端口,但是这些逻辑端口必须经物理端口耦合到交换机340。在 不背离说明性实施例的主旨与范围的情况下,逻辑端口可以以与物理 端口类似的方式指定给LAG。

对于特定的实现,链路本身可以使用任何合适的通信协议。为了 说明性实施例的描述,将假设链路是以太网链路。但是,应当认识到, 这仅仅是例子并且不是旨在对于说明性实施例利用其操作的链路类型 的限制。相反,在不背离说明性实施例的主旨与范围的情况下,其它 类型的链路,诸如光纤通道、InfiniBand等,也可以使用。

如以上提到的,链路312-318通过网络适配器330的链路聚合逻 辑320组合到LAG中。链路聚合在本领域通常是已知的,因此在本 文中不提供链路聚合如何实现的更具体解释。任何链路聚合模型和逻 辑都可以用来执行实际的链路聚合并且管理链路聚合,其结果是说明 性实施例通过提供本文所述用于平衡LAG的进入流量的附加功能来 增强链路聚合的管理。

为了说明性实施例的描述,将假设LAG 310是包括多条以太网 链路312-318的以太通道。以太通道是一种端口链路聚合技术,为了 在交换机、路由器和服务器之间提供容错和高速链路,该技术允许在 逻辑以太网链路上创建几条物理以太网链路的分组。以太通道可以从 两至八个活动的快速、千兆位或10-千兆位以太网端口来创建,还有 附加的一至八个不活动(故障转移)端口,这些不活动端口在其它活 动端口发生故障时变得活动。以太通道主要用在主干网络中,但是也 可以用来连接终端用户机器。虽然为了描述而假设以太通道,但这不 是限制并且,依赖于期望的特定实现,任何类型的LAG 310都可以 使用。

如图3中所示,从交换机架构350的交换机340流入LAG 310 的流量,即,进入流量,在正常条件下被平衡。这在图3中被绘制为 从交换机340指向链路端口(物理的或逻辑的)312-318的箭头,这 些箭头全都一样粗。即,没有链路312-318被过度使用,也没有其它 链路312-318利用不足。在这种情形下,不需要进入流量的负载平衡, 并且说明性实施例的机制不需要执行进入流量的任何再平衡。

现在参考图4,这个图说明了其中从交换机340流到LAG 310 的流量变得不平衡的情况。这会在例如在LAG 310的链路312-318 之一上存在流量的爆发或尖峰时发生。例如,在所绘出的例子中,链 路318上的流量经历尖峰,这被绘制为从交换机340到LAG 310的 端口318的更宽或更粗的箭头。根据说明性实施例,监视逻辑360在 网络适配器330中提供,用于监视链路312-318当中每一条上的负载。 例如,监视逻辑360可以为LAG 310的链路312-318当中每一条生 成统计数据,以确定在规定时间段期间流经链路312-318当中每一条 的数据量的统计测量。这些统计测量可以被监视逻辑360进一步分析, 以确定LAG 310的流量是否不平衡。例如,可以对规定的时间段进 行链路312-318当中每一条的统计测量的比较,以确定链路312-318 当中一条或多条是否具有阈值量或者比LAG 310中另一条链路312- 318更多的额外流量。其它类型的分析也可以使用,只要分析结果产 生对LAG的进入流量是平衡还是不平衡的指示就可以。

监视逻辑360基于其分析生成关于LAG的进入流量是否不平衡 的结果,并且把那个结果以及用于链路312-318的统计测量信息提供 给网络适配器330的流量负载平衡逻辑370。流量负载平衡逻辑370 确定跨LAG 310的链路312-318平衡流量负载的方式。在这么做时, 流量负载平衡逻辑370确定期望的LAG链路和被排除的LAG链路。 期望的LAG链路是用于该连接的未来流量流要过渡到其的优选物理 链路,例如,对于所述时间段具有相对低流量统计测量的链路312- 316。被排除的LAG链路是从用于这个链接的平衡组中被排除的物 理链路,使得附加的未来流量不指向这条链路,例如,对于所述时间 段具有相对高流量流统计测量的链路318。

这种信息可以传送回交换机340,使得交换机340可以在把流量 路由到LAG 310时使用这种信息。即,这种信息连同具体识别该信 息与其关联的连接的信息一起传送回交换机340。交换机340接收这 种信息并且更新其路由表380,例如,其内容可寻址存储器 (CAM),以便把流量,例如数据包,路由到期望的LAG链路端口 并且不再把流量路由到被排除的LAG链路端口。可以使用实现路由 中的这种变化的各种方式,包括扩展路由表380的CAM表,以包括 用于每个条目的指令字段(directive field),该字段具有指向指令数据 库的指针,用于指示用于路由目的的指令。其它实现可以是在CAM 表中包括用于链路条目的失效位,该位使被排除的LAG链路失效并 且对于期望的LAG链路可以具有不同的值。在不背离说明性实施例 的主旨与范围的情况下,允许交换机340区分连接的LAG中期望 LAG链路和被排除LAG链路的任何实现都可以使用。

在更新其路由表380的数据结构之后,交换机340可以开始利用 更新后的路由表380路由发往LAG 310的进入流量。以这种方式, 通过把流量从过度利用的链路318重新路由到一条或多条利用比较少 的链路312-316,流量被再平衡。通信的LAG 310一侧上的网络适配 器320负责缓冲和同步数据包,直到流量开始经新配置的LAG链路 流动。由此,进入流量的平衡返回到图3中所示的状态。

为了把信息从通信连接的LAG 310一侧传送到交换机340,例 如,从网络适配器320的流量负载平衡逻辑370到交换机340,消息 由网络适配器320发送到交换机340。这种消息可以持续地、周期性 地或者响应于检测到的事件,例如,响应于被检测的LAG 310的不 平衡流量负载,而发送。在一种说明性实施例中,发送到交换机340 的消息是链路聚合控制协议(LACP)消息,该消息在LACP首部中 具有与该LACP消息关联的信息。LACP消息可以是周期性地从网 络适配器320发送到交换机340的心跳消息,以通知交换机340与网 络适配器320的连接仍然可用(live)。说明性实施例可以利用没有 用于传送其它信息的LACP首部的保留字段,作为向交换机340传 送关于用于规定连接的期望的和被排除的LAG链路的信息的机制。 因而,不需要用于此目的的单独消息,并且可以在不需要LACP消 息中附加字段或大有效载荷的情况下传送信息。

图5是根据一种说明性实施例的LACP消息的LACP首部的示 例图。如图5中所示,LACP首部500包括多个字段,这些字段中大 部分用于如在LACP规范中所规定的其标准目的。如图5中所示, 在LACP规范中,字段510和520是分别为参与者(启动通信并执 行动作的实体)和合作者保留的字段。在目前的LACP规范中,这 些字段的尺寸可以是3个字节。但是,根据说明性实施例,这些字段 510和520被改变用途,用来存储为了对LAG执行进入流量负载平 衡而由网络适配器传送到交换机的流量负载平衡信息530。例如,元 组值和唯一令牌值(下文中描述)可以放在字段510中并且期望的/ 被排除的LAG链路标识符可以放在字段520中。当然,在不背离说 明性实施例的主旨与范围的情况下,这种信息在字段510和520之间 的其它分配也可以使用。

例如,在一种说明性实施例中,在通信连接的LAG一侧,代表 该通信连接的每个入口元组,例如源地址、源端口、目的地地址和目 的地端口,由唯一令牌值识别。这个令牌值可以经LACP扩展交换 提供给交换机,使得交换机得到元组与令牌之间的对应性的通知并且 这种信息可以存储在交换机中的路由表数据结构中。

从网络适配器发送到交换机的LACP消息包含LACP首部500, 具有包含在LACP首部500的字段510和520当中一个或多个中的 进入流量负载平衡信息。进入流量负载平衡信息包括用于连接的元组 值,即,用于识别该连接的交换机侧的值(如本领域中通常已知的, 这个元组可以经交换机的元组散列机制生成)。进入流量负载平衡信 息还包括在LAG一侧生成的用以识别连接的唯一令牌,由网络适配 器的流量负载平衡逻辑确定的、发送未来流量的优选物理链路的期望 LAG链路标识符,以及由网络适配器的流量负载平衡逻辑确定的、 从用于该连接的平衡组中排除的物理链路的被排除LAG链路标识符。 应当认识到,在说明性实施例中包括令牌,因为可以预见,不同指令 可以用于相同的元组,但是在其它说明性实施例中,可以单独使用元 组,而不需要令牌。

因而,LACP首部500包含进入流量负载平衡信息,该信息用来 指导交换机对LAG执行进入流量负载平衡并且由网络适配器传送到 交换机。这种对LAG的进入流量的控制在已知的负载平衡机制中是 不可用的。

包含LACP首部500的LACP消息可以是周期性地发送到交换 机以便通知交换机网络适配器仍然可用并且正确工作的心跳消息。或 者,LACP消息可以是响应于检测到事件,诸如像检测到LAG的不 平衡进入流量,而发送的消息。根据说明性实施例,交换机还包括用 于在生成数据包的元组散列的结果时消费接收到的LACP消息并且 使用令牌值、期望的LAG链路和被排除的LAG链路作为附加熵变 量的逻辑。即,如果数据包是发往LAG的并且具有导致被排除的 LAG链路成为路由目标的元组散列值,则代替地使用期望的LAG链 路,至少到从网络适配器得到进一步的通知为止。

具有LACP首部500的LACP消息作为请求发送到交换机,如 果交换机不支持这种功能或者如果存在使得它有必要忽略该请求的条 件,则交换可以自由地忽略该请求。这些LACP消息中一个或多个 可以在网络适配器和交换机之间交换,诸如对于由网络适配器支持的 每个LAG有一个LACP消息。虽然以上描述了一次一个LACP消息 用来重新配置交换机关于进入流量的路由,但是说明性实施例不限于 此。更确切地说,在有些说明性实施例中,网络适配器可以生成具有 描述多个连接的多个LACP消息的LACP帧。然后,当在交换机接 收到该LACP帧时,交换机可以批处理这些消息。

LAG的进入流量的不平衡条件的确定以及网络适配器和交换机 之间的后续消息传送可以在LAG到交换机关联的寿命期内重复,由 此提供最优性能流量分布的规格化。说明性实施例的机制避免使用 OSI层5首部,因为它引入了导致私有协议的应用层影响。因而,说 明性实施例独立于将打破标准OSI或应用语义的任何机制。

图6是概述根据一种说明性实施例的用于执行进入流量平衡的示 例操作的流程图。如图6中所示,操作以包括多条链路的链路聚合组 (LAG)在网络适配器中的建立开始,每条链路都由元组来识别, 例如,源地址、源端口、目的地地址和目的地端口(步骤610)。唯 一令牌与LAG中的每条链路关联并且传送到该LAG与其关联的交 换机(步骤620)。LAG的链路的进入流量被监视并且生成进入流 量的统计测量(步骤630)。进入流量的统计测量被分析,以便跨 LAG的链路确定进入流量是否不平衡(步骤640)。

为LAG确定进入流量是否不平衡(步骤650)。如果没有不平 衡,则操作终止。如果有不平衡,则识别期望的LAG链路和被排除 的LAG链路(步骤660)。将进入流量负载平衡请求发送到交换机, 该请求指示期望的LAG链路和被排除的LAG链路(步骤670)。交 换机更新其路由数据结构,以便在发送到LAG之前使以被排除的 LAG链路为目标的数据流量重新路由到期望的LAG链路(步骤 680)。然后,操作终止。

应当认识到,虽然图6说明操作终止,但是实际上操作可以持续 地或者周期性地重复。而且,应当认识到,虽然图6示出消息是响应 于确定进入流量不平衡而发送的,但是在其它说明性实施例中,消息 总是被发送,但是在进入流量没有不平衡的时候,该消息将不指示任 何期望的或被排除的LAG链路。例如,这种实施例可以利用在网络 适配器和交换机之间发送的心跳消息来实现消息传送。

而且,应当认识到,虽然已经描述了在网络适配器中提供流量负 载平衡和监视逻辑的说明性实施例,但是在其它实施例中,这些逻辑 元件中一个或多个可以在与网络适配器关联的主机系统中提供。以这 种方式,主机系统可以参与确定如何为LAG执行流量负载平衡,而 不需要在网络适配器中提供逻辑。

因而,说明性实施例提供了允许网络适配器的LAG通过网络适 配器控制流量到LAG的路由的机制。以这种方式,当以别的方式不 能被LAG控制的时候,进入流量可以得到负载平衡。

如以上所指出的,应当认识到,说明性实施例可以采取完全硬件 实施例、完全软件实施例或者包含硬件与软件元素的实施例的形式。 在一种示例实施例中,说明性实施例的机制是用软件或程序代码实现 的,这包括但不限于固件、驻留软件、微代码等。

适于存储和/或执行程序代码的数据处理系统将包括直接或者通 过系统总线间接耦合到存储器元件的至少一个处理器。存储器元件可 以包括在程序代码真正执行过程中所采用的本地存储器、大容量储存 装置和高速缓存存储器,其中高速缓存存储器提供至少一些程序代码 的临时存储,以减少在执行过程中必须从大容量储存装置检索代码的 次数。

输入/输出或者I/O设备(包括但不限于键盘、显示器、定点设 备等)可以直接地或者通过中间I/O控制器耦合到系统。网络适配器 也可以耦合到系统,以便使数据处理系统能够通过中间的专用或公共 网络变得耦合到其它数据处理系统或者远端打印机或存储设备。调制 解调器、电缆调制解调器和以太网卡仅仅是当前可以获得网络适配器 类型中的几种类型。

本发明的描述是为了说明和描述的目的而给出的,并且不是详尽 的或者要把本发明限定到所公开的形式。对本领域普通技术人员来说, 许多修改与变体都是显而易见的。实施例的选择与描述是为了最好地 解释本发明的原理、实践应用,并且使本领域的其他普通技术人员能 够理解本发明的具有适于预期特定用途的各种修改的各种实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号