一种基于交换机负载的域内负载均衡方法
【技术领域】
[0001] 本发明涉及计算机网络技术领域,尤其涉及一种基于交换机负载的域内负载均衡 方法。
【背景技术】
[0002] 网络由多个自治域(AutonomousSystem,AS)构成,这些自治域内部独立运行各自 的路由算法,完成数据包的转发。连接了不同自治域的交换机位于自治域的边界,称为边界 交换机。源地址和目的地址不在同一个域的跨域流量通过域内路由算法在域内转发,从一 个边界交换机到达另一个边界交换机,然后被转发到另一个域。
[0003] 目前常用的域内路由协议是开放最短路径优先(OpenShortestPathFirst, 0SPF)协议,这一协议为流量提供域内最短路径的转发。在最短路径优先的选路算法中,负 载均衡算法通过记录最短路径的集合,将流量均分到这些最短路径上,实现负载均衡,称为 等价多路径(EqualCostMultiPath,ECMP)。这一负载均衡方法实现简单,但仅仅基于本 地信息对流量进行等价划分,不能根据路径的负载情况做出及时的调整。
[0004] 软件定义网络(SDN)是一种新型的网络架构,在这种架构中,一个AS由一个 或多个控制器和一组交换机组成,控制器决定流的转发策略,并通过控制信道(Control Channel)将策略写入转发设备(支持OpenFlow协议的交换机)。这些交换机承担数据转 发的功能,选路算法则由控制器来完成。AS中的网络信息对于域内控制器来说是透明的,控 制器可以根据域内的信息进行路由决策。
[0005] 在SDN中,支持OpenFlow协议的交换机维护一个称为流表的存储结构,流表中保 存了一组流表项,每条流表项包含匹配域、优先级、计数器、指令等信息,用于流量到达时的 匹配和转发,流表项的计数器记录了每条流表项被匹配的次数。OpenFlow协议同时支持对 于流表统计信息的查询,控制器向交换机发送查询请求,交换机会返回相应的消息。交换机 保存的统计信息范围包括流表、流表项和端口,其中端口反映了链路上的负载情况。
【发明内容】
[0006] 本发明的目的在于针对现有技术的不足,提供一种基于交换机负载的域内负载均 衡方法,该方法能够根据域内交换机负载为跨域流量选路,在优先保证域内流量的情况下, 合理地调度域间流量,将域间分流到负载较轻的交换机,最终实现负载均衡的目的。
[0007] 本发明的目的是通过以下技术方案来实现的:一种基于交换机负载的域内负载均 衡方法,包括如下步骤:
[0008] (1)计算域内交换机负载的估计值,该步骤包括以下子步骤:
[0009] (1. 1)控制器通过控制信道,向域内的每一个交换机依次发送P0RT_STATS_ REQUEST消息,查询域内交换机每一个端口的统计信息,所述P0RT_STATS_REQUEST消息在 OpenFlow协议中定义;
[0010] (1. 2)交换机收到P0RT_STATS_REQUEST消息后,通过控制信道向控制器发送 PORT_STATS_REPLY消息,所述PORT_STATS_REPLY消息在OpenFlow协议中定义;控制器在tn时刻收到第i个交换机的消息,第i个交换机共有k个端口,记录交换机历史收到的包总 娄
,loac^为第i个交换机第j个端口历史收到的包总数,所述历史为从
交换机最近一次清空统计数据开始,直至、时刻的时间段,
[0011] (1. 3)将交换机i在时间间隔t内的负载记为 ,所述t为 获取统计信息的最小间隔,tjPtn_i为相邻两次获取统计信息的时刻;
[0012] (1. 4)每间隔时间间隔T,计算一次交换机负载的平均值,当前1"时刻交换机负载 平均值3 >其中Tm和Tm为相邻两次计算平均值的时 刻;
[0013] (1. 5)用指数平滑法对交换机负载进行估计,得到交换机Tm时刻负载的估计值为 ,,a为平滑指数,aG(〇,1);
[0014] (2)计算域内负载均衡路径,该步骤包括以下子步骤:
[0015] (2. 1)记录域内每一台边界交换机的编号,并记录其连接其他域的端口号以及所 连接的域的编号;
[0016] (2.2)对于域内每一对连接了不同域的端口对,计算以其中一个端口a所连接的 域A经过本域C转发到另一端口b所在的交换机,再经该交换机转发到端口b连接的域B 的路径中所有交换机的瓶颈负载,具体如下:
[0017] (2.2. 1)将域内所有交换机的瓶颈负载X设为无穷大,即到达该交换机的所有路 径的负载的最大值为无穷大,将端口a所属的交换机s的瓶颈负载Xs更新为,,并将交换 机s加入队列,s的在队标记设为TRUE;
[0018] (2. 2. 2)当队列不为空时,每次从队首取一个交换机记为p,取出交换机p后将p 的在队标记设为FALSE ;
[0019] (2. 2. 3)比较X# ,并记录其较大值记为x;
[0020] (2. 2. 4)对于每一台与交换机p相连的交换机q,如果x<Xq,则更新XqSX,并将 q的上一跳标记为P;
[0021] (2. 2. 5)如果交换机q的在队标记为FALSE且q不是目的端口b所在的交换机,则 将交换机q加入队列,并将q的在队标记设为TRUE;
[0022] (2.2.6)重复步骤(2.2. 2)_(2. 2. 5),直到队列为空,得到路径内每个交换机的瓶 颈负载;
[0023] (2.3)对于每一对起始端口相同且目的域相同的端口对,找出到达目的端口瓶颈 负载最小的路径,并根据路径上每台交换机记录的上一跳交换机编号记录整条路径,该路 径即为域内负载均衡路径;
[0024] (3)实现跨域流量的调度,该步骤包括以下子步骤:
[0025] (3. 1)监听本域交换机向控制器发送的PACKET_IN消息,所述PACKET_IN消息在 OpenFlow协议中定义,如果流量的源地址和目的地址都不是本域,且源地址和目的地址位 于不同域,认为这是跨域流量请求,对这条流量进行调度,否则按照域内最短路径为其选 路;
[0026] (3. 2)对于跨域流量请求,寻找域内以收到流量请求的端口为起点、有到达目的域 的路径的其他端口为终点的域内负载均衡路径;
[0027] (3. 3)对于域内负载均衡路径上每一台交换机,发送增加流表项命令,其匹配域设 置为跨域流量的源地址和目的地址,转发动作设为从连接路径下一跳交换机的端口发出; 在流表项超时删除前,该源地址和目的地址的跨域流量都按照步骤3. 2所述的域内负载均 衡路径转发,从而为跨域流量寻找负载较轻的转发路径,在保证域内流量按最短路径转发 的同时,实现负载均衡。
[0028] 本发明的有益效果是,本发明根据域内交换机的统计信息估计交换机负载,为跨 域流量寻找负载较轻的转发路径,在保证域内流量按最短路径转发的同时,实现负载均衡 的效果。
【附图说明】
[0029]图1是跨域流量转发示意图;
[0030] 图2是基于交换机负载的域内负载均衡方法的流程图;
[0031] 图3是交换机负载估计值示意图;
[0032] 图4是路径计算算法执行结果示意图。
【具体实施方式】
[0033] 下面以图1所示的拓扑为例,描述本发明。本发明方法能够在OpenFlow1. 0或者 OpenFlow1.0以上的更高版本中实现。本发明一种基于交换机负载的域内负载均衡方法, 包括以下步骤:
[0034]步骤1:计算域内交换机负载的估计值,该步骤包括以下子步骤:
[0035] 1. 1、域A、B、C的控制器分别通过控制信道,向其域内的每一个交换机依次发送 PORT_STATS_REQUEST消息,查询域内交换机每一个端口的统计信息,所述P0RT_STATS_ REQUEST消息在OpenFlow协议中定义;
[0036] 1. 2、交换机收到P0RT_STATS_REQUEST消息后,通过控制信道向控制器发送P0RT_ STATS_REPLY消息,所述P0RT_STATS_REPLY消息在OpenFlow协议中定义;控制器在tn时刻 收到第i个交换机的消息,第i个交换机共有4个端口,记录交换机历史收到的包总数:
[0037]
[0038] 1. 3、将交换机在时间间隔t内的负载记为:
[0039]
[0040]所述t为获取统计信息
的最小间隔,tjptn_i为相邻两次获取统计信息的时刻;
[0041] 1.4、每间隔时间间隔T= 3t,计算一次交换机负载的平均值,当前Tm时刻交换机 负载平均值为: _2] NdJ/3
[0043] 其中tm为计算平均值前最后一次获取统计信息的时刻,且TmWWL,Tm 和为相邻两次计算平均值的时刻;
[0044] 1. 5、用指数平滑法对交换机负载进行估计,取平滑指数a= 0. 5,交换机负载估 计值记l?
[0045]
[0046] 记录域内每台交换机负载估计值,如图3所示,非边界交换机以编号1~5标示。
[0047] 步骤2:计算域内负载均衡路径,该步骤包括以下子步骤:
[0048] 2. 1、记录域内每一台边界交换机的编号,并记录其连接其他域的端口号以及所连 接的域的编号;
[0049] 2. 2、对于域A到域B,计算交换机a到交换机b的域内转发路径,步骤如下:
[0050] 2. 2. 1、将域内所有交换机的瓶颈负载X设为无穷大,将交换机a的瓶颈负载\更 新为20,并将a加入队列,a的在队标记设为TRUE;
[0051] 2. 2. 2、当队列不为空时,每次从队首取一个交换机,取出交换机a后将a的在队标 记设为FALSE;
[0052] 2. 2. 3、比较X# &,!;,,,并记录其较大值20;
[0053] 2. 2. 4、对于每一台与交换机a相连的交换机1、2、4, 20 <X」,更新这3台交换机的 瓶颈负载为20,并将交换机1、2、4的上一跳标记为a;
[0054] 2. 2. 5、交换机1、2、4均不在队列且不是目的交换机b,将交换机1、2、4加入队列, 并将1、2、4的在队标记设为TRUE;
[0055] 2. 2. 6、交换机1的瓶颈负载20小于交换机1的估计负载30,则使用30作为下一 跳交换机的瓶颈负载,更新与交换机1相连的交换机b;交换机4的瓶颈负载20大于交换 机4的估计负载15,则使用20作为下一跳交换机的瓶颈负载,更新与交换机4相连的交换 机5;
[0056] 2. 3、对于每一对起始端口相同且目的域相同的端口对,找出到达目的端口瓶颈负 载最小的路径,并根据路径上每台交换机记录的上一跳交换机编号记录整条路径,如图4 所示找到一条负载最轻的路径a->l_>b,该路径即为从交换机a到交换机b的域内负载均衡 路径。
[0057] 步骤3:实现跨域流量的调度,该步骤包括以下子步骤:
[0058]3. 1、监听交换机向控制器发送的PACKET_IN消息,所述PACKET_IN消息在 OpenFlow协议中定义,如果收到交换机a连接域A的端口的流量请求,目的域不是本域且与 域B有路径联通,认为这是跨域流量请求,对这条流量进行调度,否则按照域内最短路径为 其选路;
[0059] 3. 2、对于跨域流量请求,选择步骤2计算并记录的从交换机a到交换机b瓶颈负 载最轻的路径,即域内负载均衡路径;
[0060] 3. 3、对于域内负载均衡路径上每一台交换机,发送增加流表项命令,其匹配域设 置为跨域流量的源地址和目的地址,转发动作设为从连接路径下一跳交换机的端口发出; 对于交换机a,流表项转发动作设为从连接交换机1的端口发出,对于交换机1,流表项转发 动作设为从连接交换机b的端口发出,对于交换机b,流表项转发动作设为从连接域B的端 口发出,完成流量从域A经本域向域B的转发;在流表项超时删除前,该源地址和目的地址 的跨域流量都按照已计算出的域内负载均衡路径转发。
【主权项】
1. 一种基于交换机负载的域内负载均衡方法,其特征在于,包括以下步骤: (1) 计算域内交换机负载的估计值,该步骤包括以下子步骤: (I. 1)控制器通过控制信道,向域内的每一个交换机依次发送P〇RT_STATS_REQUEST消 息,查询域内交换机每一个端口的统计信息,所述P〇RT_STATS_REQUEST消息在OpenFlow协 议中定义; (1. 2)交换机收到PORT_STATS_REQUEST消息后,通过控制信道向控制器发送P0RT_ STATS_REPLY消息,所述PORT_STATS_REPLY消息在OpenFlow协议中定义;控制器在、时 刻收到第i个交换机的消息,第i个交换机共有k个端口,记录交换机历史收到的包总数Ioac^为第i个交换机第j个端口历史收到的包总数,所述历史为从交 换机最近一次清空统计数据开始,直至、时刻的时间段; (1. 3)将交换机i在时间间隔t内的负载记为Λ〔., = ,,所述t为获取 统计信息的最小间隔,tjP t n_i为相邻两次获取统计信息的时刻; (1. 4)每间隔时间间隔T,计算一次交换机负载的平均值,当前Tm时刻交换机负载平均 值为^> /「"A7; i G < L),其中UP T μ为相邻两次计算平均值的时刻; (1.5)用指数平滑法对交换机负载进行估计,得到交换机Tm时刻负载的估计值为 5;; = +(1-,α 为平滑指数,a e (〇, 1); (2) 计算域内负载均衡路径,该步骤包括以下子步骤: (2. 1)记录域内每一台边界交换机的编号,并记录其连接其他域的端口号以及所连接 的域的编号; (2. 2)对于域内每一对连接了不同域的端口对,计算以其中一个端口 a所连接的域A经 过本域C转发到另一端口 b所在的交换机,再经该交换机转发到端口 b连接的域B的路径 中所有交换机的瓶颈负载,具体如下: (2. 2. 1)将域内所有交换机的瓶颈负载X设为无穷大,即到达该交换机的所有路径的 负载的最大值为无穷大,将端口 a所属的交换机s的瓶颈负载Xs更新为Xlm,并将交换机s 加入队列,s的在队标记设为TRUE ; (2. 2. 2)当队列不为空时,每次从队首取一个交换机记为p,取出交换机p后将p的在 队标记设为FALSE ; (2. 2. 3)比较乂1)与并记录其较大值记为X ; (2. 2. 4)对于每一台与交换机p相连的交换机q,如果X < Xq,则更新XqS X,并将q的 上一跳标记为P ; (2. 2. 5)如果交换机q的在队标记为FALSE且q不是目的端口 b所在的交换机,则将交 换机q加入队列,并将q的在队标记设为TRUE ; (2.2.6)重复步骤(2. 2. 2)-(2. 2. 5),直到队列为空,得到路径内每个交换机的瓶颈负 载; (2.3)对于每一对起始端口相同且目的域相同的端口对,找出到达目的端口瓶颈负载 最小的路径,并根据路径上每台交换机记录的上一跳交换机编号记录整条路径,该路径即 为域内负载均衡路径; (3)实现跨域流量的调度,该步骤包括以下子步骤: (3. 1)监听本域交换机向控制器发送的PACKET_IN消息,所述PACKET_IN消息在 OpenFlow协议中定义,如果流量的源地址和目的地址都不是本域,且源地址和目的地址位 于不同域,认为这是跨域流量请求,对这条流量进行调度,否则按照域内最短路径为其选 路; (3. 2)对于跨域流量请求,寻找域内以收到流量请求的端口为起点、有到达目的域的路 径的其他端口为终点的域内负载均衡路径; (3. 3)对于域内负载均衡路径上每一台交换机,发送增加流表项命令,其匹配域设置为 跨域流量的源地址和目的地址,转发动作设为从连接路径下一跳交换机的端口发出;在流 表项超时删除前,该源地址和目的地址的跨域流量都按照步骤3. 2所述的域内负载均衡路 径转发,从而为跨域流量寻找负载较轻的转发路径,在保证域内流量按最短路径转发的同 时,实现负载均衡。
【专利摘要】本发明公开了一种基于交换机负载的域内负载均衡方法,该方法以固定的时间间隔向域内所有交换机发送统计信息查询请求,保存并记录域内每台交换机在单位时间间隔内处理的包的数目,采用指数平滑法对交换机负载情况进行估计,为跨域流量寻找交换机负载较轻的域内转发路径;当跨域流量请求到达时,将跨域流量引导向负载较轻的交换机。应用该方法可以在转发跨域流量时,优先保证域内流量,合理地调度域间流量,从而实现负载均衡。
【IPC分类】H04L12/937, H04L12/803, H04L12/729, H04L12/733
【公开号】CN104883321
【申请号】CN201510223290
【发明人】吴春明, 鲁昕佳, 高文, 周海峰
【申请人】浙江大学
【公开日】2015年9月2日
【申请日】2015年5月5日
转载请注明原文地址:https://www.famiwei.com/read-8136256.html