一种面向虚拟机的多级流表管控方法及系统技术方案

技术编号:25809103 阅读:27 留言:0更新日期:2020-09-29 18:43
本发明专利技术公开了一种面向虚拟机的多级流表管控方法及系统。面向虚拟机的多级流表管控方法,包括:生成port‑mac绑定流表规则,并下发至流表0;注册空闲的流表N,并将所述port‑mac绑定流表规则下发至所述流表N;生成多级流表分发规则,并下发至流表1;当报文进入Openflow交换机时,根据流表0的port‑mac绑定流表规则确定该报文为虚拟机发出时,然后根据流表1的多级流表分发规则将所述报文的流表转发至对应的流表N。本发明专利技术的管控方法及系统将Openflow交换机的流表通过虚拟机Mac地址与虚拟机接入网卡Mac地址作为虚拟机网络资源的唯一标识,实现SDN控制器快速的索引与资源分配,通过以虚拟机Mac地址作为多级流表分发的关键匹配项,从而可以起到防止虚拟机恶意修改Mac地址的作用。

【技术实现步骤摘要】
一种面向虚拟机的多级流表管控方法及系统
本专利技术属于网络通信设备领域,尤其是一种面向虚拟机的多级流表管控方法及系统。
技术介绍
遵循OpenFlow标准的OpenFlow交换机,内置了多级流表处理逻辑,而每一级流表包含有多个流表规则。F多级流表是按照数字顺序排列的,起始索引号从0开始,任何进入到OpenFlow交换机的报文都会从Table0开始处理,根据Openflow标准协议Openflow交换机FlowTableID可用范围是0-253,共254个FlowTable。当报文进入流表处理时,报文会被逐次地依据Priority(优先级)与该流表里的所有流表规则进行匹配,当发现匹配成功的流表规则时,该流表规则相关联的InstructionsSet将会被执行,Instructions可以通过GotoTable指令将该报文转发到后续的其他流表处理,或者通过Drop指令将报文转发,或者通过Setfield指令修改报文内容,或通过outputport指令将报文转发至指定网口,或者封装成packet-in消息发送给SDN控制器。假若报文在一个流表里没有发现能够匹配成功的流表规则,那么这叫作一次TableMiss,至于发生TableMiss后的动作取决于这个流表的配置:1)直接丢弃,2)继续转发给后续的流表,3)封装成packet-in消息发送给SDN控制器。如图1所示,根据Openflow标准的多级流表逻辑特性,结合云计算虚拟网络的业务特性,通过对多级流表的管理,可有效提升Openflow执行效率以及管理逻辑的清晰度,目前业界对多级流表的管理普遍采用以下几种方法:1)只采用一级FlowTable将所有流表规则都放在同一级流表中,通过prority控制流表的执行次序。这样方式,如果某个虚拟机的流表规则过多,会直接影响其他统一计算节点虚拟机的网络转发性能。2)根据网络协议分配FlowTable通过FlowTable0的流表规则完成按网络协议,如TCP协议、UDP协议、ICMP协议、ARP协议通过GotoTable指令转发到不同的FlowTable,这样的方案可以避免某单一协议流表过多,导致其他报文协议的性能受损,有效隔离不同网络协议之间的性能损耗,但是避免某个虚拟机的流表规则,而导致其他虚拟机的网络转发性能受损。3)根据云网络业务功能分配FlowTable云网络的业务功能,如安全组、ACL、Subnet、NAT、Vpc、Route等,通过流水线的方式,将云网络的业务功能,分配到不同的FlowTable中,这样的方案可提升云网络的管理性,但是依然无法解决某个虚拟机的流表规则,而导致其他虚拟机的网络转发性能受损问题。
技术实现思路
本专利技术的目的在于提供一种面向虚拟机的多级流表管控方法及系统,以防止虚拟机恶意修改Mac地址。为此,本专利技术提供了一种面向虚拟机的多级流表管控方法,包括:SDN控制器的静态流表管理引擎根据虚拟机的Mac地址信息和端口号,生成port-mac绑定流表规则,并下发至流表0;SDN控制器的静态流表管理引擎根据虚拟机的Mac地址信息、端口号和IP地址,生成多级流表分发规则,并下发至流表1;根据虚拟机的Mac地址信息查询数据库中虚拟机的IP地址信息和表资源池,注册空闲的流表N,并将所述port-mac绑定流表规则下发至所述流表N,其中,N为自然数并且N为2-252;当报文进入Openflow交换机时,根据所述流表0的port-mac绑定流表规则确定该报文为虚拟机发出时,根据所述流表0的port-mac绑定流表规则获取虚拟机的网络入口端口号、源虚拟机的MAC地址、目标虚拟机的MAC地址、源虚拟机的IP地址和目标虚拟机的IP地址;然后根据流表1的多级流表分发规则将所述报文的流表转发至对应的流表N;如果所述流表N的处理流表规则匹配所述报文,则将所述报文根据流表N的处理流表规则完成响应处理。优选地,在将所述报文的流表转发至对应的流表N之后,还包括:如果所述流表N的处理流表规则未匹配所述报文,则Openflow交换机将报文通过Openflow协议的OFPT_PACKET_IN消息发送至SDN控制器;SDN控制器解析OFPT_PACKET_IN消息的报文内容以提取源目标Mac地址以及查询FlowTable资源池,从而获取该报文所需经过流表号;SDN控制器分析OFPT_PACKET_IN消息的报文内容,根据云网络的组网逻辑,生成对应的处理流表规则,并下发所述处理流表规则至所述流表号对应的流表N;将所述报文根据下发的处理流表规则完成响应处理。优选地,SDN控制器的静态流表管理引擎生成port-mac绑定流表规则之前,还包括:云平台创建虚拟机,通过预设的转换规则,将虚拟机Mac地址与虚拟网卡Mac地址进行初始化设置,并将将虚拟网卡接入Openflow交换机;Openflow交换机将网卡接入的变更事件,通过Openflow协议的OFP_PORT_STATUS消息发送至SDN控制器;SDN控制器的静态流表管理引擎接收到该OFP_PORT_STATUS消息,提取虚拟网卡名称,根据虚拟机接入网卡定义规则,利用该虚拟网卡名称判断是否为虚拟机网卡;如果虚拟网卡名称不是虚拟机网卡,则下发流表规则,将匹配该网络入口的报文转发至所述流表1;如果虚拟网卡是虚拟机接入网卡,则提取虚拟网卡的Mac地址信息,通过预设转换规则,将虚拟网卡的Mac地址转换为虚拟机的Mac地址。优选地,所述OFP_PORT_STATUS消息包含了虚拟网卡的名称、Mac地址、端口号。优选地,所述port-mac绑定流表规则包括:匹配报文的网络入口端口号为虚拟机接入网卡的端口号、源Mac地址为虚拟机的Mac地址,执行动作为转发至发至流表1;如果匹配命中,则转发至发至流表1;如果匹配不命中,则执行下一跳流表规则,匹配报文的网络入口端口号为虚拟机接入网卡的端口号,执行动作为丢弃。优选地,在下发多级流表分发规则至流表N时,配置TableMiss的执行动作为封装成OFPT_PACKET_IN消息发送给SDN控制器。优选地,所述多级流表分发的流表规则逻辑包括:a)如果匹配报文的网络入口为虚拟机的网络接入端口号,则转发该匹配报文至所述虚拟机分配的流表N;b)如果匹配报文的网络入口为交换机上行口,并且目标Mac地址为虚拟机Mac,则转发该匹配报文至虚拟机分配的流表N;c)如果匹配报文的网络入口为交换机上行口,并且目标IP地址为虚拟机IP以及网络协议为Ipv4协议,则转发该匹配报文至虚拟机分配的流表N;d)如果匹配报文的网络入口为交换机上行口,并且目标IP地址为虚拟机IP以及网络协议为Ipv6协议,则转发该匹配报文至虚拟机分配的流表N;e)如果匹配报文的网络入口为交换机上行口,并且目标IP地址为虚拟机IP以及网络协议为arp协议,本文档来自技高网
...

【技术保护点】
1.一种面向虚拟机的多级流表管控方法,其特征在于,包括:/nSDN控制器的静态流表管理引擎根据虚拟机的Mac地址信息和端口号,生成port-mac绑定流表规则,并下发至流表0;/nSDN控制器的静态流表管理引擎根据虚拟机的Mac地址信息、端口号和IP地址,生成多级流表分发规则,并下发至流表1;/n根据虚拟机的Mac地址信息查询数据库中虚拟机的IP地址信息和表资源池,注册空闲的流表N,并将所述port-mac绑定流表规则下发至所述流表N,其中,N为自然数并且N为2-252;/n当报文进入Openflow交换机时,根据所述流表0的port-mac绑定流表规则确定该报文为虚拟机发出时,根据所述流表0的port-mac绑定流表规则获取虚拟机的网络入口端口号、源虚拟机的MAC地址、目标虚拟机的MAC地址、源虚拟机的IP地址和目标虚拟机的IP地址;然后根据流表1的多级流表分发规则将所述报文的流表转发至对应的流表N;/n如果所述流表N的处理流表规则匹配所述报文,则将所述报文根据流表N的处理流表规则完成响应处理。/n

【技术特征摘要】
1.一种面向虚拟机的多级流表管控方法,其特征在于,包括:
SDN控制器的静态流表管理引擎根据虚拟机的Mac地址信息和端口号,生成port-mac绑定流表规则,并下发至流表0;
SDN控制器的静态流表管理引擎根据虚拟机的Mac地址信息、端口号和IP地址,生成多级流表分发规则,并下发至流表1;
根据虚拟机的Mac地址信息查询数据库中虚拟机的IP地址信息和表资源池,注册空闲的流表N,并将所述port-mac绑定流表规则下发至所述流表N,其中,N为自然数并且N为2-252;
当报文进入Openflow交换机时,根据所述流表0的port-mac绑定流表规则确定该报文为虚拟机发出时,根据所述流表0的port-mac绑定流表规则获取虚拟机的网络入口端口号、源虚拟机的MAC地址、目标虚拟机的MAC地址、源虚拟机的IP地址和目标虚拟机的IP地址;然后根据流表1的多级流表分发规则将所述报文的流表转发至对应的流表N;
如果所述流表N的处理流表规则匹配所述报文,则将所述报文根据流表N的处理流表规则完成响应处理。


2.如权利要求1所述的面向虚拟机的多级流表管控方法,其特征在于,在将所述报文的流表转发至对应的流表N之后,还包括:
如果所述流表N的处理流表规则未匹配所述报文,则Openflow交换机将报文通过Openflow协议的OFPT_PACKET_IN消息发送至SDN控制器;
SDN控制器解析OFPT_PACKET_IN消息的报文内容以提取源目标Mac地址以及查询FlowTable资源池,从而获取该报文所需经过流表号;
SDN控制器分析OFPT_PACKET_IN消息的报文内容,根据云网络的组网逻辑,生成对应的处理流表规则,并下发所述处理流表规则至所述流表号对应的流表N;
将所述报文根据下发的处理流表规则完成响应处理。


3.如权利要求2所述的面向虚拟机的多级流表管控方法,其特征在于,SDN控制器的静态流表管理引擎生成port-mac绑定流表规则之前,还包括:
云平台创建虚拟机,通过预设的转换规则,将虚拟机Mac地址与虚拟网卡Mac地址进行初始化设置,并将将虚拟网卡接入Openflow交换机;
Openflow交换机将网卡接入的变更事件,通过Openflow协议的OFP_PORT_STATUS消息发送至SDN控制器;
SDN控制器的静态流表管理引擎接收到该OFP_PORT_STATUS消息,提取虚拟网卡名称,根据虚拟机接入网卡定义规则,利用该虚拟网卡名称判断是否为虚拟机网卡;
如果虚拟网卡名称不是虚拟机网卡,则下发流表规则,将匹配该网络入口的报文转发至所述流表1;如果虚拟网卡是虚拟机接入网卡,则提取虚拟网卡的Mac地址信息,通过预设转换规则,将虚拟网卡的Mac地址转换为虚拟机的Mac地址。


4.如权利要求3所述的面向虚拟机的多级流表管控方法,其特征在于,所述OFP_PORT_STATUS消息包含了虚拟网卡的名称、Mac地址、端口号。


5.如权利要求4所述的面向虚拟机的多级流表管控方法,其特征在于,所述port-mac绑定流表规则包括:
匹配报文的网络入口端口号为虚拟机接入网卡的端口号、源Mac地址为虚拟机的Mac地址,执行动作为转发至发至流表1;
如果匹配命中,则转发至发至流表1;
如果匹配不命中,则执行下一跳流表规则,匹配报文的网络入口端口号为虚拟机接入网卡的端口号,执行动作为丢弃。


6.如权利要求5所述的面向虚拟机的多级流表管控方法,其特征在于,在下发多级流表分发规则至流表N时,配置TableMiss的执行动作为封装成OFPT_PACKET_IN消息发送给SDN控制器。


7.如权利要求6所述的面向虚拟机的多级流表管控方法,其特征在于,所述...

【专利技术属性】
技术研发人员:刘忻林冬艺
申请(专利权)人:广州市品高软件股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1