本发明属于软件定义网络技术领域,尤其涉及一种SDN网络精细化控制传统交换机的方法。
背景技术:
SDN技术能够对网络进行精细化控制,实施更细粒度的路径规划、访问控制、负载均衡等规则。但现有网络迁移到SDN网络需要更换大量SDN交换机,预算较大,实现传统交换机和SDN交换机共存的迁移技术能够解决预算吃紧的问题,这种混合网络迁移技术首要解决的问题是如何使传统交换机的网络流按照SDN的方式进行转发。在SDN网络中,网络流路径的建立需要经过以下步骤:数据流发送到SDN交换机,SDN交换机查找流表,如果有与数据流匹配的流表项则按照匹配的流表规则进行转发,否则将网络流的第一个数据包上传到控制器,由控制器决策后下发流表,然后交换机按照此流表对该数据流进行转发。传统网络中交换机的数据流转发依靠二层的广播机制,无法干预网络流路径的建立,也无法对每条网络流进行精细化的管理。
技术实现要素:
本发明要解决的技术问题是,提供一种SDN网络精细化控制传统交换机的方法。
为解决上述问题,本发明采用如下的技术方案:
一种SDN网络精细化控制传统交换机的方法,将传统交换机用于SDN网络框架中,其包括SDN控制器、SDN交换机、传统交换机;SDN控制器通过OpenFlow协议与所有SDN交换机相连,每台传统交换机通过trunk方式与SDN交换机相连;传统交换机与主机相连的每个端口设置不同的VLAN;
所述SDN控制器包含:SDN OpenFlow接口模块、传统交换机拓扑管理模块、跨VLAN路径转发模块、ARP代理模块;
其中,OpenFlow接口模块用于接收、处理并响应SDN交换机上传到控制器的流路径请求;
传统交换机拓扑管理模块,用于当控制器的OpenFlow接口模块收到SDN交换机上传的packet in消息时,解析SDN交换机号码、端口号、VLAN标记和MAC地址、IP地址信息,维护在主机映射关系表中;
跨VLAN路径转发模块,用于当控制器接收到目的主机位于传统交换机端口的流请求时,查询主机映射关系表,下发流表让SDN交换机修改VLAN标记为目的主机所在的VLAN,同时转发至相应的端口;
ARP代理模块,用于当收到跨VLAN的ARP请求时,通过构造并下发流表使SDN交换机配合完成跨VLAN转发,进而获得ARP信息,之后对源主机进行回复。
作为优选,当位于传统交换机端口的主机host1和host2要通信时,传统交换机将数据包发送到Trunk端口上,SDN交换机将会收到带有VLAN标记的数据包,SDN交换机将数据包以packet in的方式上传到控制器上,控制器解析数据包,当发现目的主机位于传统交换机端口,随即向SDN交换机下发流表,流表的Actions域执行两个操作:a)修改VLAN标记为目的VLAN,b)转发数据包至相应的端口;SDN交换机执行流表后数据包将会发送到传统交换机上,同时传统交换机会把它发送到目的主机所在的端口,通信完成。
本发明在传统交换机组成的网络中,增加少量Openflow交换机,传统交换机与SDN交换机连接的端口设置为trunk,传统交换机用于接入的端口设置不同的VLAN,所有流路径的建立都需要SDN控制器参与。本发明能够实现对经过传统交换机端口的每个流完全按照SDN的方式进行处理,不会出现未经控制器管控的初始化流路径,并且实施中较少的SDN交换机即可管控较多的传统交换机,设备更新成本较低。
附图说明
图1为本发明SDN网络精细化控制传统交换机的方法的结构示意图;
图中:H1,H2,H3,H4分别为连接到传统交换机端口的主机,传统交换机S1、传统交换机S2为需要被SDN方式管控的传统交换机,OF交换机为支持OpenFlow协议的SDN交换机,Controller是SDN控制器;
图2为本发明SDN网络精细化控制传统交换机的方法中控制器的结构框图。
图3为本发明SDN网络精细化控制传统交换机的方法中网络通信的流程图。
具体实施方式
为了使传统交换机应用于SDN网络,并按照SDN的方式工作,本发明提供一种SDN网络精细化控制传统交换机的方法,本方法依赖VLAN和OpenFlow协议,主要实现功能如下:
(1)连接到传统交换机的主机通信时网络流完全按照SDN方式工作。
(2)网络数据流在流表的控制下进行转发。
本发明实施例提供一种SDN网络精细化控制传统交换机的方法,将传统交换机用于SDN网络框架中,如图1所示,其包括SDN控制器、SDN交换机、传统交换机;SDN控制器通过OpenFlow协议与所有SDN交换机相连,每台传统交换机通过trunk方式与SDN交换机相连;传统交换机与主机相连的每个端口设置不同的VLAN,只要满足同一个SDN交换机端口下的传统交换机端口不存在相同VLAN即可,不同SDN交换机端口下可以有相同的VLAN。
如图2所示,所述SDN控制器包括SDN OpenFlow接口模块、传统交换机拓扑管理模块、跨VLAN路径转发模块、ARP代理模块、IPv4/IPv6处理模块;
其中,OpenFlow接口模块用于接收、处理并响应SDN交换机上传到控制器的流路径请求,当传统交换机某端口上的主机进行通信时,由于传统交换机每个端口设置了不同的VLAN,所以只能通过trunk端口发送到SDN交换机,SDN交换机收到新的数据流时,因为没有匹配的流表项而将第一个数据包上传到控制器,控制器的OpenFlow接口模块接收并处理此数据包,该模块首先调用传统交换机拓扑管理模块对源地址进行管理,然后调用IPv4/IPv6处理模块、跨VLAN路径转发模块和ARP代理模块进行路径寻址,最后将路径转发方案以流表项的方式发送到对应SDN交换机;
传统交换机拓扑管理模块用于维护与传统交换机端口连接的主机的信息,当控制器的OpenFlow接口模块收到SDN交换机上传的packet in消息时,会调用并将数据包传给该模块,经过解析得到SDN交换机编号、端口号、VLAN标记和MAC地址、IP地址等信息,维护在主机映射关系表中;有了这些信息,跨VLAN路径转发模块才能计算出流表的路径;
跨VLAN路径转发模块用于为网络流计算转发路径,生成符合OpenFlow规范的流表。该模块根据流请求的源和目的地址,查询主机映射关系表(由传统交换机拓扑管理模块维护),计算出转发路径,生成相应交换机对应的流表,提交给OpenFlow接口模块,OpenFlow接口模块下发流表,让SDN交换机修改VLAN标记为目的主机所在的VLAN,同时转发至相应的端口;
ARP代理模块用于处理跨VLAN ARP请求。当收到跨VLAN的ARP请求时,该模块通过构造并下发流表使SDN交换机配合完成跨VLAN转发,进而获得ARP信息,之后对源主机进行回复;
IPv4/IPv6处理模块用于处理IPv4和IPv6数据包格式,该模块输入packet数据包,返回源地址和目的地址。
如图3所示,当位于传统交换机端口的主机host1和host2要通信时,由于配置为不同的VLAN,在传统交换机这一层无法直接通信,传统交换机将数据包发送到trunk端口上,SDN交换机将会收到带有VLAN标记的数据包,由于没有相应的流表项,SDN交换机将数据包以packet in的方式上传到控制器上,控制器解析数据包,发现目的主机位于传统交换机端口,通过控制器内上述几个模块的配合工作,完成流表的生成,随即向SDN交换机下发流表,流表的Actions域执行两个操作:a)修改VLAN标记为目的VLAN,b)转发数据包至相应的端口。SDN交换机执行流表后数据包将会发送到传统交换机上,因为这时候的数据包VLAN标记与目的主机所在的VLAN是一样的,传统交换机会把它发送到目的主机所在的端口,通信完成。
本发明的SDN网络精细化控制传统交换机的方法,基于VLAN将传统交换机用于SDN网络中,其中,SDN控制器通过OpenFlow协议与所有SDN交换机相连,每台传统交换机通过trunk方式与SDN交换机相连,与相同SDN交换机端口连接的传统交换机,所有接入端口设置不同VLAN。两个主机通信时传统交换机由于每个VLAN只有一个端口,所以数据包转发至trunk端口,SDN交换机将会收到数据包,由于没有对应流表,以packet in的形式上传到控制器,控制器向SDN交换机下发流表:修改VLAN标识为目的主机所在的VLAN;转发至相应端口。