本发明属于网络通信
技术领域:
,具体地涉及一种在软件定义网络(softwaredefinednetwork,sdn)中基于虚拟交换机部署的负载均衡路由方法。
背景技术:
:在传统ip网络中,网络传输设备(例如交换机)上整合了数据转发功能和控制管理功能,因此其控制管理逻辑非常复杂,并随着新协议的加入,变得更加臃肿笨重。这导致目前的网络架构体系存在效率低、维护困难、扩展性差、安全性较弱、兼容性不佳等问题。由于现有网络架构的种种局限性,催生了软件定义网络(softwaredefinednetwork,sdn)的出现。sdn是一种新型的网络创新架构,利用openflow协议将网络的控制管理平面和数据转发平面分离开来。这种架构使得网络传输设备(sdn交换机)的功能被简化,其原本承担的控制工作都交由上层的控制器来完成,自己只需要按照要求转发数据,因此sdn是一个集中式控制网络。控制器主要负责监控网络、通过下发流表项为每条数据流安排转发路径。因为控制器可以根据交换机上报的全网信息对每条流进行控制,所以sdn能够提供更加细粒度的流量管理与路由调度。sdn的这种集中式控制使网络管理员和科研工作者只需要在控制层北向接口的应用程序中进行编程就可以对网络进行管理、配置及研究,大大增加了网络的可扩展性。由于软件定义网络具有的上述优点,其已经在数据中心以及广域网等场景中得到广泛使用。知名互联网公司facebook、google等都在他们的数据中心中使用openflow协议,采用软件定义网络架构来优化数据中心网络的性能;cisco、华为等网络设备制造商也都大力开展了软件定义网络的研究。sdn可以提供流级别的细粒度调度,对每条流精心选择路由可以很好地满足负载均衡的要求。这种细粒度调度是基于sdn交换机上的流表项实现的。流表项一般都存储在昂贵且耗能的tcam(ternarycontentaddressablememory,三态内容寻址存储器)中。由于tcam的高能耗及高成本,目前市面上主流的sdn交换机通常只支持数千条流表项的存储。然而,随着近年来无线互联网的高速发展,数千条的流表项不足以为数以百万计的数据流进行单条流的精确匹配。sdn交换机上流表项的数量成为制约sdn网络性能的关键因素。因此,软件定义网络需要以负载均衡为目的进行路由。现有的软件定义网络负载均衡路由方法有三种:(1)流分割方案:边缘交换机将流以大小、时间段划分成更小的flowset、flowcell等单位进行路由,将网络的负载均匀得分布到链路上,但是由于一条流分割后会沿多条不同的路径到达目的节点,各路径网络状况差异又很大,导致到达接收端的数据失序,接收端必须对这些数据进行重排序,这将耗费极大的时间与计算资源。再者为各个细粒度单位标记也需要额外的计算资源。(2)多径路由方案:传统的网络使用等价多路径(ecmp)方法进行链路负载均衡,将不同的流通过hash的方式分配到不同的等价路径上。该方法可以通过openflow协议中流表项、组表项的交互在sdn网络中实现,然而ecmp总是均匀地分割数据流,并没有考虑网络拓扑的形状和当前链路的负载情况,所以当网络拓扑不对称或者链路状态相差较大时,效果并不理想。该方法还存在hash冲突的风险,一旦出现hash冲突就会导致网络拥塞。(3)细粒度路由方案:该方案在sdn交换机上部署细粒度的流表项规则,以均衡各链路之间的负载为优化目标,为每条数据流精心选择合适的路由。该方法需要在交换机上安装大量流表项,一般的sdn交换机流表项资源稀缺,不能满足要求。并且控制器为每条流计算路径,并下发规则,造成大量控制开销。技术实现要素:针对上述存在的技术问题,本发明提出了一种基于虚拟交换机部署的sdn负载均衡路由方法,在部分边缘交换机处部署虚拟交换机,根据当前网络的数据链路负载,将部分数据流精准路由到当前负载较低的数据链路上,均衡了各数据链路上的负载,避免了数据链路拥塞,从而保证网络的吞吐量。本发明的技术方案是:一种基于虚拟交换机部署的sdn负载均衡路由方法,包括以下步骤:s01:在全网的接入交换机中至少选择一个交换机作为部署虚拟交换机的节点,并在该节点部署虚拟交换机,将待部署虚拟交换机与选中节点处的接入交换机以及其相邻的交换机连接;s02:sdn控制器为接入交换机安装默认流表项,将所有来自其相邻主机的数据流通过流表项全部发送给虚拟交换机;并在其他交换机上部署流表项,该流表项以目的交换机为粒度将数据流发送到最短路径上的下一跳交换机或目的主机;s03:虚拟交换机在接收到数据流时,询问控制器如何转发;控制器实时监听各交换机端口信息,计算各数据链路的当前负载,为该数据流选择一条负载最轻的路径,并在虚拟交换机上安装一条该流的流表项,指定其下一跳交换机;数据流根据沿途的交换机上的流表项转发到目的主机。优选的技术方案中,所述步骤s01中选择的交换机为边缘交换机。优选的技术方案中,所述步骤s01具体包括:s11:根据预算得到部署的虚拟交换机个数,从全网的所有边缘交换机中选择部署点;s12:在部署点处放置一台多网卡服务器,安装openvirtualswitch软件,作为虚拟交换机,用光纤将该服务器与部署点的交换机连接,并用光纤将该服务器与部署点交换机相邻的交换机连接。优选的技术方案中,所述步骤s02中sdn控制器为接入交换机安装默认流表项包括以下步骤:s21:为非部署点的交换机安装默认流表项,匹配规则是目的ip=各边缘交换机的网段,转发规则为最短路径上的下一跳;s22:为部署点的交换机安装默认流表项,匹配规则是源ip=部署点交换机的网段,转发规则为发送给虚拟交换机。与现有技术相比,本发明的优点是:(1)交换机流表项消耗低:本方法将细粒度的流表项规则安装在流表项充足的虚拟交换机上,在sdn交换机上只需要部署基于目的交换机的流表项,从而大大降低了流表项使用量,使得各交换机的流表项足够使用,可以降低网络设备整体功耗。(2)控制开销低:大量交换机上的流表项都是预先部署的,只有部分经过虚拟交换机的数据流会到达控制器询问转发规则,并且控制器只需要为这些流安装一跳规则。因此,控制器的开销远小于细粒度的路由调度方案(3)传输效率高:该方案没有对流进行分割以及接收端重组,因此减少了许多额外操作。本方案中所有数据流最多只经过一跳虚拟交换机,由此造成的额外延迟非常有限,因此具有很高的传输效率。(4)适用性强:本方案没有使用等价多路径路由使用的hash方式,因此不光适用于拓扑对称的数据中心网络,在拓扑不对称的网络中同样可以发挥作用。附图说明下面结合附图及实施例对本发明作进一步描述:图1为本发明基于虚拟交换机部署的sdn负载均衡路由方法的流程图;图2为本发明实施例中虚拟交换机复制部署方法的示意图,描述了虚拟交换机部署前及部署后的网络拓扑,由于控制器属于网络的控制平面,故没有在拓扑中显示;图3为本发明实施例中负载均衡路由的网络拓扑图,由于控制器属于网络的控制平面,故没有在拓扑中显示。具体实施方式为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进行进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。实施例:下面结合附图,对本发明的较佳实施例作进一步说明。本发明的网络负载均衡路由方法为一种全新的虚拟交换机复制部署方案,在网络中少量的接入交换机处增量部署虚拟交换机对部分流进行第一跳的细粒度调度(至少精确到传输层五元组粒度),后续的路由以及没有经过虚拟交换机的数据流以目的交换机为粒度调度,从而解决软件定义网络中实体交换机中流表受限的负载均衡问题。本发明克服了传统的路由方案中sdn交换机的流表资源稀缺、链路负载不均衡、接收端处理开销大的缺点,可以利用有限的流表项资源进行数据流的细粒度调度,从而提高了链路带宽的利用率以及网络的吞吐率,同时降低了控制开销以及链路拥塞的风险;本发明拥有良好的拓展性,具有广阔的应用前景。一种基于虚拟交换机部署的sdn负载均衡路由方法,首先选择合适的边缘交换机,为其部署虚拟交换机。部署完成后,我们可以有效地利用虚拟交换机上充足的流表项资源进行负载均衡路由。控制器根据网络中的各端口上报的信息计算各条数据链路负载,据此为经过虚拟交换机的部分数据流进行第一跳的细粒度路由。如图1所示,一种基于虚拟交换机部署的sdn负载均衡路由方法,包括以下步骤:s01:在全网的接入交换机中至少选择一个交换机作为部署虚拟交换机的节点,并在该节点部署虚拟交换机,将待部署的虚拟交换机与选中节点处的接入交换机以及其相邻的交换机连接;s02:sdn控制器为接入交换机安装默认流表项,将所有来自其相邻主机的数据流通过流表项全部发送给虚拟交换机;并在其他交换机上部署流表项,该流表项以目的交换机为粒度将数据流发送到最短路径上的下一跳交换机或目的主机;s03:虚拟交换机在接收到数据流时,询问控制器如何转发;控制器实时监听各交换机端口信息,计算各数据链路的当前负载,为该数据流选择一条负载最轻的路径,并在虚拟交换机上安装一条该流的流表项,指定其下一跳交换机;数据流根据沿途的交换机上的流表项转发到目的主机。下面以具体的实施例进行说明如下:如图2所示,网络中的交换机共存在4个交换机v1,v2,v3,v4,各交换机连接的主机的网段为10.0.1.0/24,10.0.2.0/24,10.0.3.0/24,10.0.4.0/24;4个主机h1,h2,h3,h4,它们的ip地址分别为10.0.1.1,10.0.2.1,10.0.3.1,10.0.4.1;1台控制器。按照以下步骤完成虚拟交换机的部署及负载均衡路由。(1)网络运营商或管理员为原网络部署虚拟交换机。a.根据预算确认可以部署的虚拟交换机个数,从全网的所有边缘交换机中选择几个部署点。b.在部署点处放置一台多网卡服务器,安装openvirtualswitch软件,用光纤将虚拟交换机与部署点的交换机连接,并用光纤将虚拟交换机与部署点交换机相连的交换机连接。(2)安装默认流表项:控制器为所有sdn交换机安装默认流表项。a.为非部署点的交换机安装默认流表项,匹配规则是目的ip=各边缘交换机的网段,转发规则为最短路径上的下一跳。b.为部署点的交换机安装默认流表项,匹配规则是源ip=部署点交换机的网段,转发规则为发送给虚拟交换机。(3)控制器在线安装路由规则:控制器定期采集各个交换机端口的负载量,计算各数据链路的当前负载,当有数据流达到虚拟交换机时,由于没有流表匹配,虚拟交换机将向控制器发送packet-in请求询问转发规则,控制器根据当前链路负载,为数据流分配最空闲的路径,并在虚拟交换机上安装转发规则。该方法只选择了部分接入交换机作为虚拟交换机部署节点,从而保证了低部署开销。采用了一种增量部署方式,该方法不需要改变原有拓扑的任何路径,因此在部署虚拟交换机时不需要中断网络功能,即支持热部署。在虚拟交换机处在线安装数据流的细粒度流表项规则,而在其他交换机处只部署以目的交换机为粒度的流表项规则,充分发挥了虚拟交换机流表项资源丰富的优点,同时克服了普通交换机流表项数量稀缺的缺点。该路由调度方案不仅适用于包含虚拟交换机的软件定义网络,也适用于包含少量sdn交换机的传统ip网络。该方法中所有数据流最多只需要经过一跳虚拟交换机,从而克服了虚拟交换机转发能力弱的缺点,保证了数据传输的低延迟。该方法中控制器只需要计算网络中部分数据流的一跳路由,大大降低了控制负载。控制器定期采集交换机的端口信息,从而计算出当前链路负载,据此为部分数据流计算出当前最空闲的路径,从而均衡链路负载,避免数据平面拥塞。为了说明本发明框架,本实施例使用了如图2所示的虚拟交换机部署方法,部署完成后的网络图及数据流如图3所示,具体实施步骤如下:(1)在实施例的整个过程中,在图2所示的拓扑中,共有4个交换机v1,v2,v3,v4,部署虚拟交换机前的网络拓扑见图2左子图。假设运营商的预算只够部署一个虚拟交换机,运营商选择交换机v1为部署点,部署一个台安装虚拟交换机软件的服务器u1,将交换机υ1与虚拟交换机u1连接,并将虚拟交换机u1与交换机v2与υ4(交换机υ1的邻居)连接,部署完虚拟交换机后的拓扑见图2右子图;(2)虚拟交换机部署完成后,控制器为各交换机部署默认流表项,首先为所有交换机安装默认表项106,205,305,405,501,该表项会在没有数据匹配时生成packet-in请求发往控制器;再为交换机v1安装一条流表项101,将所有从主机h1发出的数据流转发给虚拟交换机u1,并在所有实体交换机上安装以目的交换机为粒度的流表项103,104,105,202,203,204,302,303,304,402,403,404以及发往各连接主机的流表项102,201,301,401;具体默认流表项如下表所示:所在交换机流表项id匹配规则动作v1101源ip=10.0.1.0/24转发到端口1v1102目的ip=10.0.1.1转发到端口3v1103目的ip=10.0.2.0/24转发到端口2v1104目的ip=10.0.3.0/24转发到端口2v1105目的ip=10.0.4.0/24转发到端口4v1106无匹配生成packet-in发往控制器v2201目的ip=10.0.2.1转发到端口2v2202目的ip=10.0.1.0/24转发到端口1v2203目的ip=10.0.3.0/24转发到端口4v2204目的ip=10.0.4.0/24转发到端口4v2205无匹配生成packet-in发往控制器v3301目的ip=10.0.3.1转发到端口1v3302目的ip=10.0.1.0/24转发到端口3v3303目的ip=10.0.2.0/24转发到端口2v3304目的ip=10.0.4.0/24转发到端口3v3305无匹配生成packet-in发往控制器v4401目的ip=10.0.4.1转发到端口4v4402目的ip=10.0.1.0/24转发到端口1v4403目的ip=10.0.2.0/24转发到端口1v4404目的ip=10.0.3.0/24转发到端口3v4405无匹配生成packet-in发往控制器u1501无匹配生成packet-in发往控制器(3)控制器根据链路状态为经过虚拟交换机u1的数据流安装流表项。(3.1)交换机定期(每1秒)采集端口信息发给控制器,控制器从中提取各端口收发的数据总量,连续两次数据总量差值即为该端口对应链路的当前带宽使用量;(3.2)当一条tcp数据流f1到达交换机v1时,根据默认规则101发往虚拟交换机u1;流f1到达到虚拟交换机u1时,没有查到匹配的流表项,因此根据流表项501生成packet-in消息上传给控制器,由于当前网络没有数据流,所有路径负载都为0,控制器随机为流f1选择下一跳交换机v2并安装流表项502;流f1到交换机v2时,根据流表项203,转发给交换机υ3;流f1到交换机υ3时,根据流表项301,转发给目的主机υ3,主机υ3可以根据流表项302,402,102沿着默认路径υ3->υ4->υ1->h1返回应答包。(3.3)当另一条udp数据流f2到达交换机υ1时,根据默认规则101发往虚拟交换机u1;流f1到达到虚拟交换机u1时,没有查到匹配的流表项,因此根据流表项501生成packet-in消息上传给控制器,由于路径v1->u1->v2->v3->h3上有负载,控制器为流f2选择负载最空闲的路径v1->u1->v4->v3->h3并安装流表项503;流f2到交换机υ4时,根据流表项404,转发给交换机v3;流f2到交换机v3时,根据流表项301,转发给目的主机h3。主机υ3可以根据流表项302,402,102沿着默认路径υ3->υ4->υ1->h1返回应答包。此时虚拟交换机u1上新增了两条流表项502,503,如下表所示:通过本框架的虚拟交换机部署及路由调度,实现了网络的链路负载均衡,避免了某条链路使用过度导致的链路拥塞。应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。当前第1页1 2 3 
技术特征:1.一种基于虚拟交换机部署的sdn负载均衡路由方法,其特征在于,包括以下步骤:
s01:在全网的接入交换机中至少选择一个交换机作为部署虚拟交换机的节点,并在该节点部署虚拟交换机,将待部署的虚拟交换机与选中节点处的接入交换机以及其相邻的交换机连接;
s02:sdn控制器为接入交换机安装默认流表项,将所有来自其相邻主机的数据流通过流表项全部发送给虚拟交换机;并在其他交换机上部署流表项,该流表项以目的交换机为粒度将数据流发送到最短路径上的下一跳交换机或目的主机;
s03:虚拟交换机在接收到数据流时,询问控制器如何转发;控制器实时监听各交换机端口信息,计算各数据链路的当前负载,为该数据流选择一条负载最轻的路径,并在虚拟交换机上安装一条该流的流表项,指定其下一跳交换机;数据流根据沿途的交换机上的流表项转发到目的主机。
2.根据权利要求1所述的基于虚拟交换机部署的sdn负载均衡路由方法,其特征在于,所述步骤s01中选择的交换机为边缘交换机。
3.根据权利要求2所述的基于虚拟交换机部署的sdn负载均衡路由方法,其特征在于,所述步骤s01具体包括:
s11:根据预算得到部署的虚拟交换机个数,从全网的所有边缘交换机中选择部署点;
s12:在部署点处放置一台多网卡服务器,安装openvirtualswitch软件,作为虚拟交换机,用光纤将该服务器与部署点的交换机连接,并用光纤将该服务器与部署点交换机相邻的交换机连接。
4.根据权利要求2所述的基于虚拟交换机部署的sdn负载均衡路由方法,其特征在于,所述步骤s02中sdn控制器为接入交换机安装默认流表项包括以下步骤:
s21:为非部署点的交换机安装默认流表项,匹配规则是目的ip=各边缘交换机的网段,转发规则为最短路径上的下一跳;
s22:为部署点的交换机安装默认流表项,匹配规则是源ip=部署点交换机的网段,转发规则为发送给虚拟交换机。
技术总结本发明公开了一种基于虚拟交换机部署的SDN负载均衡路由方法,该方法提出一种全新的虚拟交换机复制部署方案,在网络中少量的接入交换机处增量部署虚拟交换机对部分流进行第一跳的细粒度调度(至少精确到传输层五元组粒度),后续的路由及没有经过虚拟交换机的数据流以目的交换机为粒度调度,从而解决软件定义网络中实体交换机中流表受限的负载均衡问题。本发明克服了传统的路由方案中SDN交换机的流表资源稀缺、链路负载不均衡、接收端处理开销大的缺点,可以利用有限的流表项资源进行数据流的细粒度调度,从而提高了链路带宽的利用率以及网络的吞吐率,同时降低了控制开销以及链路拥塞的风险;本发明拥有良好的拓展性,具有广阔的应用前景。
技术研发人员:徐宏力;杨旭炜;赵功名;黄刘生;王诗诗
受保护的技术使用者:中国科学技术大学苏州研究院
技术研发日:2020.02.18
技术公布日:2020.06.05