发明名称 一种基于交换机负载的域内负载均衡方法
摘要 本发明公开了一种基于交换机负载的域内负载均衡方法,该方法以固定的时间间隔向域内所有交换机发送统计信息查询请求,保存并记录域内每台交换机在单位时间间隔内处理的包的数目,采用指数平滑法对交换机负载情况进行估计,为跨域流量寻找交换机负载较轻的域内转发路径;当跨域流量请求到达时,将跨域流量引导向负载较轻的交换机。应用该方法可以在转发跨域流量时,优先保证域内流量,合理地调度域间流量,从而实现负载均衡。
申请公布号 CN104883321A 申请公布日期 2015.09.02
申请号 CN201510223290.0 申请日期 2015.05.05
申请人 浙江大学 发明人 吴春明;鲁昕佳;高文;周海峰
分类号 H04L12/803(2013.01)I;H04L12/729(2013.01)I;H04L12/733(2013.01)I;H04L12/937(2013.01)I 主分类号 H04L12/803(2013.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 邱启旺
主权项 一种基于交换机负载的域内负载均衡方法,其特征在于,包括以下步骤:(1)计算域内交换机负载的估计值,该步骤包括以下子步骤:(1.1)控制器通过控制信道,向域内的每一个交换机依次发送PORT_STATS_REQUEST消息,查询域内交换机每一个端口的统计信息,所述PORT_STATS_REQUEST消息在OpenFlow协议中定义;(1.2)交换机收到PORT_STATS_REQUEST消息后,通过控制信道向控制器发送PORT_STATS_REPLY消息,所述PORT_STATS_REPLY消息在OpenFlow协议中定义;控制器在t<sub>n</sub>时刻收到第i个交换机的消息,第i个交换机共有k个端口,记录交换机历史收到的包总数<img file="FDA0000711396580000011.GIF" wi="409" he="131" />load<sub>j</sub>为第i个交换机第j个端口历史收到的包总数,所述历史为从交换机最近一次清空统计数据开始,直至t<sub>n</sub>时刻的时间段;(1.3)将交换机i在时间间隔t内的负载记为<img file="FDA0000711396580000014.GIF" wi="534" he="69" />所述t为获取统计信息的最小间隔,t<sub>n</sub>和t<sub>n‑1</sub>为相邻两次获取统计信息的时刻;(1.4)每间隔时间间隔T,计算一次交换机负载的平均值,当前T<sub>m</sub>时刻交换机负载平均值为<img file="FDA0000711396580000012.GIF" wi="785" he="76" />其中T<sub>m</sub>和T<sub>m‑1</sub>为相邻两次计算平均值的时刻;(1.5)用指数平滑法对交换机负载进行估计,得到交换机T<sub>m</sub>时刻负载的估计值为<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>S</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>T</mi><mi>m</mi></msub></mrow></msub><mo>=</mo><mi>&alpha;</mi><mover><msub><mi>N</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>T</mi><mi>m</mi></msub></mrow></msub><mo>&OverBar;</mo></mover><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&alpha;</mi><mo>)</mo></mrow><msub><mi>S</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>T</mi><mrow><mi>m</mi><mo>-</mo><mn>1</mn></mrow></msub></mrow></msub><mo>,</mo></mrow>]]></math><img file="FDA0000711396580000013.GIF" wi="571" he="72" /></maths>α为平滑指数,α∈(0,1);(2)计算域内负载均衡路径,该步骤包括以下子步骤:(2.1)记录域内每一台边界交换机的编号,并记录其连接其他域的端口号以及所连接的域的编号;(2.2)对于域内每一对连接了不同域的端口对,计算以其中一个端口a所连接的域A经过本域C转发到另一端口b所在的交换机,再经该交换机转发到端口b连接的域B的路径中所有交换机的瓶颈负载,具体如下:(2.2.1)将域内所有交换机的瓶颈负载X设为无穷大,即到达该交换机的所有路径的负载的最大值为无穷大,将端口a所属的交换机s的瓶颈负载X<sub>s</sub>更新为<img file="FDA0000711396580000015.GIF" wi="113" he="75" />并将交换机s加入队列,s的在队标记设为TRUE;(2.2.2)当队列不为空时,每次从队首取一个交换机记为p,取出交换机p后将p的在队标记设为FALSE;(2.2.3)比较X<sub>p</sub>与<img file="FDA0000711396580000021.GIF" wi="117" he="63" />并记录其较大值记为x;(2.2.4)对于每一台与交换机p相连的交换机q,如果x<X<sub>q</sub>,则更新X<sub>q</sub>为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所述的域内负载均衡路径转发,从而为跨域流量寻找负载较轻的转发路径,在保证域内流量按最短路径转发的同时,实现负载均衡。
地址 310058 浙江省杭州市西湖区余杭塘路866号