CN109474627B - 一种基于sdn的虚拟租户网络隔离方法及系统 - Google Patents

一种基于sdn的虚拟租户网络隔离方法及系统 Download PDF

Info

Publication number
CN109474627B
CN109474627B CN201811610712.XA CN201811610712A CN109474627B CN 109474627 B CN109474627 B CN 109474627B CN 201811610712 A CN201811610712 A CN 201811610712A CN 109474627 B CN109474627 B CN 109474627B
Authority
CN
China
Prior art keywords
port
data packet
virtual
flow table
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811610712.XA
Other languages
English (en)
Other versions
CN109474627A (zh
Inventor
黄韬
魏亮
檀朝红
陈俊霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Upeed Network Technology Co ltd
Original Assignee
Nanjing Upeed Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Upeed Network Technology Co ltd filed Critical Nanjing Upeed Network Technology Co ltd
Priority to CN201811610712.XA priority Critical patent/CN109474627B/zh
Publication of CN109474627A publication Critical patent/CN109474627A/zh
Application granted granted Critical
Publication of CN109474627B publication Critical patent/CN109474627B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种基于SDN的虚拟租户网络隔离方法及系统,所述隔离系统为面向的云平台包括SDN控制器、虚拟交换机、虚拟机;其中,所述SDN控制器包含拓扑管理模块、初始化模块、流表管理模块、租户网络映射模块;所述虚拟交换机根据SDN控制器下发的流表完成数据包的转发,且每个物理主机即节点上只配置一个虚拟交换机;所述虚拟机通过虚拟网络接口连接到虚拟交换机上,虚拟交换机两两之间均通过隧道连接。该方法通过设计虚拟交换机的流表实现了租户网络的隔离,隔离的实现不依赖租户虚拟机的MAC、虚拟机所属VLAN的标签、vxlan编号或者GRE隧道编号等信息,允许租户MAC自由使用,满足租户灵活构建虚拟网络的需求。

Description

一种基于SDN的虚拟租户网络隔离方法及系统
技术领域
本发明属于云管理领域,具体涉及一种基于SDN的虚拟租户网络隔离方法。
背景技术
租户网络隔离是实施云计算服务的一项非常重要的要求,在保证租户网络和租户虚拟机安全的前提下,云平台还要尽量不降低网络管理和配置的效率。
在云平台环境中,同一租户至少使用一个虚拟机,同一租户至少存在一个租户网络,单个虚拟机至少配置一个网卡;租户的虚拟机既可被用作普通业务处理设备,也可被用户配置为网络设备,例如网桥、路由器、应用网关等,用于实现自定义的网络。为了满足各种不同的用户需求,需要对租户网络进行隔离,以模拟真实的网络环境。在OpenStack环境中,Neutron管理的实体中的网络,是隔离的L2广播域,一般是创建它的用户所有,用户可以拥有多个Neutron中的网络。为了实现租户网络的隔离,Neutron采用vlan tag(vlan标签)、gre隧道、vxlan-id等的转换完成数据包的传递和隔离。这种方法需要多次转换,不利于理解。
SDN交换机,现在用的比较多的是OpenFlow交换机,分离了控制层面和转发层面,FIB表可以在本地进行配置,也可以在控制器远程进行修改。Open vSwitch即开放虚拟交换标准,利用虚拟平台,通过软件的方式形成交换机部件。利用虚拟交换的可编程,可以基于端口、用户信息等制订流表转发策略。在云计算环境中,SDN控制器可以从全网的角度对每一个虚拟交换机的流表通过修改流表的方式进行配置,在不修改与用户相关的信息的情况下,实现租户网络的创建和管理。
当前一种基于SDN的流表来隔离的方法是依据MAC地址来进行隔离。依据虚拟机的MAC地址进行隔离,该方法限制了租户的MAC地址使用自由。
当前还有一种实现多租户需求的SDN的方法将物理网络划分为多个逻辑网络,从而满足多租户的需求。其利用一种定义的网络切片,不同的用户分属不同的网络切片,根据报文是否属于该租户网络切片来决定是否转发,从而实现不同租户的隔离。这种方法只能简单地管理流空间,所有的切片共享同一的流和地址空间,且每个切片的流空间不允许重叠。
当前还有一种利用网络虚拟化平台进行租户网络的隔离,通过流空间的虚拟化实现了租户的虚拟网络,即翻译OpenFlow消息以及数据包,实现了虚拟网络和物理网络的映射。用户可以使用任意的地址空间,可以重复。但是主机发出数据包时,系统将数据包的虚拟MAC和IP地址替换为物理MAC和IP地址;接收报文时,系统将物理MAC和IP地址转换为虚拟MAC和IP地址。该方法需要确切的物理MAC或IP地址来隔离不同租户的网络流量,不支持通配匹配和大规模流量的洪泛。
当前还有一种利用虚拟MAC进行租户网络隔离,该方法先对虚拟机的MAC地址和全局唯一的虚拟的MAC地址进行某种一一映射,利用全局唯一的虚拟MAC地址进行隔离。该方法允许租户的虚拟机自由使用MAC地址,但是该方法需要额外增加ARP代理,并且当存在多网卡或者采用虚拟机模拟交换设备时会出现一一映射问题。
发明内容
针对上述技术问题,本发明旨在提供一种基于SDN的虚拟租户网络隔离方法,通过设计虚拟交换机的流表实现了租户网络的隔离,隔离的实现不依赖租户虚拟机的MAC、虚拟机所属VLAN的标签、vxlan编号或者GRE隧道编号等信息,允许租户MAC自由使用,满足租户灵活构建虚拟网络的需求。
本发明的技术方法是:
一种基于SDN的虚拟租户网络隔离方法面向的云平台包含了SDN控制器、虚拟交换机、虚拟机;系统架构如图1所示,所述SDN控制器包含拓扑管理模块、初始化模块、流表管理模块;所述虚拟交换机根据SDN控制器下发的流表完成数据包的转发,且每个物理主机(节点)上只需要配置一个虚拟交换机;所述虚拟机通过虚拟网络接口连接到虚拟交换机上,虚拟交换机两两之间均通过隧道连接;
所述的拓扑管理模块,是基于LLDP协议发现虚拟交换机之间的拓扑连接关系,确定虚拟交换机之间的端口(隧道口)连接关系;
所述的初始化模块,是根据拓扑管理模块发现的拓扑数据,生成虚拟交换机初始化流表;
所述的租户网络映射模块,是根据租户的网络需求,生成租户网络映射流表,满足租户网络隔离和租户网络内部正常运行的需求;
所述的流表管理模块,是下发初始化流表和租户网络映射流表,更新虚拟交换机的流表信息;
所述的基于SDN的虚拟租户网络隔离方法的执行步骤如下:
步骤1,虚拟交换机拓扑发现过程,控制器连接所有虚拟交换机,所述的拓扑管理模块利用LLDP协议计算虚拟交换机之间的连接关系;
步骤2,虚拟交换机流表初始化过程,所述的初始化模块根据拓扑管理模块发现的拓扑信息,产生虚拟交换机的初始化流表,并下发初始化流表至各个虚拟交换机;
所述的虚拟交换机初始化流表包括:
Table0:如果是从隧道口过来的包,设置寄存器reg0的值为2,然后跳转到Table40处理;
Table10:添加默认drop规则;
Table20:节点本地的虚拟机MAC地址学习,用于生成返程流表;生成规则:根据数据包in_port、源MAC(dl_src)、虚拟网络标识VNI值(metadata),生成返程流表,返程流表匹配条件包括VNI值(metadata)、目的MAC(dl_dst),动作为从ip_port发出,保存返程流表到Table100,然后跳转到Table30处理;
Table30:判断是单播包还是多播包,单播包跳转到Table100处理,多播跳转到Table130处理;
Table40:添加默认drop规则;
Table50:节点外部的虚拟机MAC地址学习,用于生成返程流表;生成规则:根据数据包in_port、源MAC(dl_src)、VNI值(metadata),生成返程流表,返程流表匹配条件包括VNI值(metadata)、目的MAC(dl_dst),动作为添加tunnel号并从当前数据包的ip_port发出,保存返程流表到Table110,然后跳转到Table60处理;
Table60:判断是单播包还是多播包,单播包跳转到Table100处理,多播跳转到Table130处理;
Table100:如果是虚拟机过来的数据包,即reg0=1,跳转到Table110处理;如果是隧道口过来的包,即reg0=2,默认drop处理;
Table110:添加默认规则,跳转到Table120处理;
Table120:添加默认drop规则;
Table130:添加默认drop规则;
步骤3,云平台创建租户网络和虚拟机后,所述的租户网络映射模块根据租户网络的运行信息生成与租户网络相关的租户网络映射流表,并将租户网络映射流表添加至各个虚拟交换机;
所述的租户网络映射流表包括:
Table0:根据入端口号(in_port)判断,从虚拟机端口过来的包,设置寄存器reg0为1,并设置metadata为端口所在网络的VNI值,然后跳到Table10处理;
Table10:进行虚拟机端口安全性控制;如果对应虚拟机端口启动端口安全性控制,匹配数据包in_port、源MAC(dl_src)、源IP(nw_src)是否与平台预分配信息一致,一致则跳转Table20处理;如果对应虚拟机端口未启动端口安全性控制,匹配数据包in_port后跳转Table20处理;
Table40:匹配数据包Tunnel号,并设置metadata为对应网络VNI值,然后跳转到Table50处理;
Table120:匹配metadata值,添加对应的tunnel号,并从所有隧道口转发数据包;
Table130:多播包处理,首先判断是从虚拟机过来的包还是从隧道口过来的包,如果是从虚拟机过来的包,即reg0=1,匹配in_port后,转发给除该数据包in_port以外的所有同网络的虚拟机端口,然后跳转到Table120处理;如果是从隧道口过来的包,即reg0=2,匹配metadata后,转发给所有同网络的虚拟机端口。
与现有技术相比,本发明的优点在于:
1、利用流表实现虚拟机端口安全性控制,保证了虚拟机安全;
2、采用本发明方法实现的租户网络可以支持租户的虚拟机多种用途,租户虚拟机可被用作普通业务处理设备,也可被用户配置为网络设备,例如网桥、路由器、应用网关;
3、节点本地的虚拟机MAC地址学习功能和节点外部的虚拟机MAC地址学习功能可以双向优化网络流量;
4、采用动态流表生成机制减少冗余流表,降低openvswitch压力,提高数据包转发效率;
5、支持租户自由使用MAC地址。
附图说明
图1为本发明一种基于SDN的虚拟租户网络隔离方法的系统架构图;
图2为本发明的一实施例的虚拟租户网络拓扑图;
图3为本发明的一实施例的物理网络映射图;
图4为本发明一种基于SDN的虚拟租户网络隔离方法的交换机中的流表处理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种虚拟租户网络拓扑如图2所示,该隔离系统为面向的云平台包括SDN控制器、虚拟交换机、虚拟机;其中,所述SDN控制器包含拓扑管理模块、初始化模块、流表管理模块、租户网络映射模块;所述虚拟交换机根据SDN控制器下发的流表完成数据包的转发,且每个物理主机即节点上只配置一个虚拟交换机;所述虚拟机通过虚拟网络接口连接到虚拟交换机上,虚拟交换机两两之间均通过隧道连接。
进一步的,所述的拓扑管理模块,是基于LLDP协议发现虚拟交换机之间的拓扑连接关系,确定虚拟交换机之间的端口即隧道口连接关系;
所述的初始化模块,根据拓扑管理模块获取到的拓扑数据,生成虚拟交换机初始化流表;
所述的租户网络映射模块,是根据租户的网络需求,生成租户网络映射流表,满足租户网络隔离和租户网络内部正常运行的需求;
所述的流表管理模块,是下发初始化流表和租户网络映射流表,更新虚拟交换机的流表信息。
本是实施例中的拓扑中包含两个租户网络,分别是network1、network2;三个虚拟机,分别是VM1、VM2、VM3。VM1为单网卡,接入network1,并启用端口安全性控制;VM2为双网卡,一个接入network1,一个接入network2,且两个网卡均不启用端口安全性控制;VM3为单网卡,接入network2,并启用端口安全性控制。VM2中安装OVS,模拟虚拟交换机功能,VM1和VM3分别配置IP地址10.0.0.3、10.0.0.4,通过VM2交换机实现连接互通,VM1的MAC为fa:16:3e:c6:d7:61,VM3的MAC为fa:16:3e:c6:d7:64。
以上租户网络拓扑的物理网络映射如图3所示,VM1、VM2挂载在节点1中的虚拟交换机OVS-A上,VM3挂载在节点2中的虚拟交换机OVS-B上。OVS-A与OVS-B通过vxlan隧道连接。OVS-A上的端口号配置为:隧道口tun1为1、VM1的端口tap1为2、VM2对应network1的端口tap2为3、VM2对应network2的端口tap3为4。OVS-B上的端口号配置为:隧道口tun2为1、VM3的端口tap4为2。
本发明实施例的基于SDN的虚拟租户网络隔离方法的执行步骤如下:
步骤1,虚拟交换机拓扑发现过程,控制器连接交换机OVS-A、OVS-B,拓扑管理模块基于LLDP协议发现虚拟交换机之间的连接关系,即OVS-A的端口1与OVS-B的端口1连接;
步骤2,虚拟交换机流表初始化过程,初始化模块根据拓扑管理模块发现的拓扑信息,产生虚拟交换机的初始化流表,并下发初始化流表至各个虚拟交换机OVS-A、OVS-B;
1.OVS-A中初始化流表如下:
●Table0:第一条流表,优先级为5,匹配从隧道口过来的包,即从端口1过来的数据包,设置寄存器reg0的值为0x2,然后跳转到Table40处理;第二条流表,处理LLDP数据包,转发给控制器处理,用于拓扑发现;
cookie=0x0,duration=264061.798s,table=0,n_packets=0,n_bytes=0,priority=5,in_port=1actions=load:0x2->NXM_NX_REG0[],goto_table:40
cookie=0x0,duration=264061.788s,table=0,n_packets=1693,n_bytes=192176,dl_type=0x88cc actions=CONTROLLER:65535
●Table10:添加默认drop规则;
cookie=0x0,duration=264060.499s,table=10,n_packets=0,n_bytes=0,priority=0actions=drop
●Table20:节点本地的虚拟机MAC地址学习,用于生成返程流表;
cookie=0x0,duration=264061.790s,table=20,n_packets=0,n_bytes=0,priority=1actions=learn(table=100,hard_timeout=300,priority=2,cookie=0x9134682963b411d1,OXM_OF_METADATA[],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:NXM_OF_IN_PORT[]),goto_table:30
说明:以上流表主要作用是学习从节点本地虚拟机过来的包,往Table100中添加对返程包的正常转发规则,然后扔给Table30处理。学习使用了openvswitch的learn动作。该动作能根据处理的流来动态修改其它表中的规则。具体来看learn规则:
Figure BDA0001924671360000061
table=100,说明是修改表100中的规则,后面是添加的规则内容;
Figure BDA0001924671360000062
OXM_OF_METADATA[],匹配与当前流同样的metadata;
Figure BDA0001924671360000063
NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],包的目的MAC与当前流的源MAC匹配;
Figure BDA0001924671360000064
output:NXM_OF_IN_PORT[],从当前入口发出。
●Table30:判断是单播包,还是多播包,第一条匹配单播包,跳转到Table100处理,第二条匹配多播和广播包,跳转到Table130处理;
cookie=0x0,duration=264061.791s,table=30,n_packets=0,n_bytes=0,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:100
cookie=0x0,duration=264061.792s,table=30,n_packets=0,n_bytes=0,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:130
●Table40:添加默认drop规则;
cookie=0x0,duration=264060.489s,table=40,n_packets=0,n_bytes=0,priority=0actions=drop
●Table50:节点外部的虚拟机MAC地址学习,用于生成返程流表;
cookie=0x0,duration=264061.793s,table=50,n_packets=0,n_bytes=0,priority=1actions=learn(table=110,hard_timeout=300,priority=2,cookie=0x9134682963b411d1,OXM_OF_METADATA[],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[],output:NXM_OF_IN_PORT[]),goto_table:60
说明:以上流表主要作用是学习节点外部从隧道口过来的包,往Table110中添加对返程包的正常转发规则,然后扔给Table60处理。具体来看learn规则:
Figure BDA0001924671360000071
table=110,说明是修改表110中的规则,后面是添加的规则内容;
Figure BDA0001924671360000072
OXM_OF_METADATA[],匹配与当前流同样的metadata;
Figure BDA0001924671360000073
NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],包的目的MAC与当前流的源MAC匹配;
Figure BDA0001924671360000074
load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[],将包的tunnel号修改为当前tunnel号;
Figure BDA0001924671360000075
output:NXM_OF_IN_PORT[],从当前入口发出。
●Table60:判断是单播包,还是多播包,第一条匹配单播包,跳转到Table100处理,第二条匹配多播和广播包,跳转到Table130处理;
cookie=0x0,duration=264061.794s,table=60,n_packets=0,n_bytes=0,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:100
cookie=0x0,duration=264061.795s,table=60,n_packets=0,n_bytes=0,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:130
●Table100:第一条匹配虚拟机过来的数据包,即reg0=1,跳转到Table110处理;第二条匹配隧道口过来的包,即reg0=2,默认drop处理;
cookie=0x0,duration=264061.796s,table=100,n_packets=0,n_bytes=0,priority=1,reg0=0x1actions=goto_table:110
cookie=0x0,duration=264061.797s,table=100,n_packets=0,n_bytes=0,priority=1,reg0=0x2actions=drop
●Table110:添加默认规则,所有包扔给Table120处理;
cookie=0x0,duration=264061.798s,table=110,n_packets=0,n_bytes=0,priority=1actions=goto_table:120
●Table120:添加默认drop规则;
cookie=0x0,duration=264060.469s,table=120,n_packets=0,n_bytes=0,priority=0actions=drop
●Table130:添加默认drop规则;
cookie=0x0,duration=264060.409s,table=130,n_packets=0,n_bytes=0,priority=0actions=drop
2.OVS-B中初始化流表与OVS-A中类似,不做具体说明,流表如下:
cookie=0x0,duration=264061.798s,table=0,n_packets=0,n_bytes=0,priority=5,in_port=1actions=load:0x2->NXM_NX_REG0[],goto_table:40
cookie=0x0,duration=264061.788s,table=0,n_packets=1693,n_bytes=192176,dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x0,duration=264060.499s,table=10,n_packets=0,n_bytes=0,priority=0actions=drop
cookie=0x0,duration=264061.790s,table=20,n_packets=0,n_bytes=0,priority=1actions=learn(table=100,hard_timeout=300,priority=2,cookie=0x9134682963b411d1,OXM_OF_METADATA[],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:NXM_OF_IN_PORT[]),goto_table:30
cookie=0x0,duration=264061.791s,table=30,n_packets=0,n_bytes=0,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:100
cookie=0x0,duration=264061.792s,table=30,n_packets=0,n_bytes=0,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:130
cookie=0x0,duration=264060.489s,table=40,n_packets=0,n_bytes=0,priority=0actions=drop
cookie=0x0,duration=264061.793s,table=50,n_packets=0,n_bytes=0,priority=1actions=learn(table=110,hard_timeout=300,priority=2,cookie=0x9134682963b411d1,OXM_OF_METADATA[],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[],output:NXM_OF_IN_PORT[]),goto_table:60
cookie=0x0,duration=264061.794s,table=60,n_packets=0,n_bytes=0,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:100
cookie=0x0,duration=264061.795s,table=60,n_packets=0,n_bytes=0,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00actions=goto_table:130
cookie=0x0,duration=264061.796s,table=100,n_packets=0,n_bytes=0,priority=1,reg0=0x1actions=goto_table:110
cookie=0x0,duration=264061.797s,table=100,n_packets=0,n_bytes=0,priority=1,reg0=0x2actions=drop
cookie=0x0,duration=264061.798s,table=110,n_packets=0,n_bytes=0,priority=1actions=goto_table:120
cookie=0x0,duration=264060.469s,table=120,n_packets=0,n_bytes=0,priority=0actions=drop
cookie=0x0,duration=264060.409s,table=130,n_packets=0,n_bytes=0,priority=0actions=drop
步骤3,云平台创建租户网络network1、network2,并创建虚拟机VM1、VM2、VM3。network1对应VNI为1,network2对应VNI为2。租户网络映射模块根据当前租户网络配置信息生成相关的租户网络映射流表,并将租户网络映射流表添加至各个虚拟交换机OVS-A、OVS-B;
1.OVS-A中租户网络映射流表如下:
●Table0:处理虚拟机过来的数据包。第一条匹配端口2过来的数据包,设置metadata为网络network1对应VNI值0x1,设置reg0为0x1,然后扔给Table10处理;第二条匹配端口3过来的数据包,设置metadata为网络network1对应VNI值0x1,设置reg0为0x1,然后扔给Table10处理;第三条匹配端口4过来的数据包,设置metadata为网络network2对应VNI值0x2,设置reg0为0x1,然后扔给Table10处理;
cookie=0x0,duration=4091.273s,table=0,n_packets=0,n_bytes=0,priority=5,in_port=2actions=load:0x1->OXM_OF_METADATA[],load:0x1->NXM_NX_REG0[],goto_table:10
cookie=0x0,duration=4091.273s,table=0,n_packets=0,n_bytes=0,priority=5,in_port=3actions=load:0x1->OXM_OF_METADATA[],load:0x1->NXM_NX_REG0[],goto_table:10
cookie=0x0,duration=4091.273s,table=0,n_packets=0,n_bytes=0,priority=5,in_port=4actions=load:0x2->OXM_OF_METADATA[],load:0x1->NXM_NX_REG0[],goto_table:10
●Table10:第一条匹配端口2过来的数据包,且源MAC为fa:16:3e:c6:d7:61,源IP为10.0.0.3时扔给Table20处理,即进行端口安全性控制;第二条匹配端口3过来的数据包,扔给Table20处理,即不作端口安全性控制;第三条匹配端口4过来的数据包,扔给Table20处理,即不作端口安全性控制;
cookie=0x0,duration=4091.277s,table=10,n_packets=0,n_bytes=0,priority=1,in_port=2,dl_src=fa:16:3e:c6:d7:61,nw_src=10.0.0.3actions=goto_table:20
cookie=0x0,duration=4091.278s,table=10,n_packets=0,n_bytes=0,priority=1,in_port=3actions=goto_table:20
cookie=0x0,duration=4091.279s,table=10,n_packets=0,n_bytes=0,priority=1,in_port=4actions=goto_table:20
●Table40:第一条匹配tunnel号为0x1,即匹配网络network1的数据包,设置metadata为network1对应的VNI值0x1,然后扔给Table50处理;第二条匹配tunnel号为0x2,即匹配网络network2的数据包,设置metadata为network2对应的VNI值0x2,然后扔给Table50处理;
cookie=0x0,duration=4091.281s,table=40,n_packets=0,n_bytes=0,priority=1,tun_id=0x1actions=load:0x1->OXM_OF_METADATA[],goto_table:50
cookie=0x0,duration=4091.282s,table=40,n_packets=0,n_bytes=0,priority=1,tun_id=0x2actions=load:0x2->OXM_OF_METADATA[],goto_table:50
●Table120:第一条匹配metadata为0x1,即匹配network1的数据包,设置tunnel号为network1对应tunnel号0x1,然后从隧道口1发出;第二条匹配metadata为0x2,即匹配network2的数据包,设置tunnel号为network2对应tunnel号0x2,然后从隧道口1发出;
cookie=0x0,duration=4091.284s,table=120,n_packets=0,n_bytes=0,priority=1,metadata=0x1actions=load:0x1->NXM_NX_TUN_ID[],output:1
cookie=0x0,duration=4091.285s,table=120,n_packets=0,n_bytes=0,priority=1,metadata=0x2actions=load:0x2->NXM_NX_TUN_ID[],output:1
●Table130:第一条匹配reg0为0x1,in_port为2的数据包,从端口3发出,即虚拟机VM1过来的广播包发送给同网络的VM2的tap2口,然后扔给Table120处理;第二条匹配reg0为0x1,in_port为3的数据包,从端口2发出,即虚拟机VM2的tap2口过来的广播包发送给同网络的VM1,然后扔给Table120处理;第三条匹配reg0为0x1,in_port为4的数据包,即VM2的tap3口过来的数据包,扔给Table120处理;第四条匹配reg0为0x2,metadata为0x1的数据包,从端口2、3发出,即隧道口过来的network1网络的多播包发给同网络的VM1的tap1口、VM2的tap2口;第五条匹配reg0为0x2,metadata为0x2的数据包,从端口5发出,即隧道口过来的network2网络的多播包发给同网络的VM2的tap3口;
cookie=0x0,duration=4091.290s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x1,in_port=2actions=output:3,goto_table:120
cookie=0x0,duration=4091.291s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x1,in_port=3actions=output:2,goto_table:120
cookie=0x0,duration=4091.293s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x1,in_port=4actions=goto_table:120
cookie=0x0,duration=4091.294s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x2,metadata=0x1actions=output:2,output:3
cookie=0x0,duration=4091.296s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x2,metadata=0x2actions=output:4
2.OVS-B中租户网络映射流表如下:
●Table0:匹配端口2过来的数据包,即VM3过来的数据包,设置metadata为网络network2对应VNI值0x2,设置reg0为0x1,然后扔给Table10处理;
cookie=0x0,duration=4091.273s,table=0,n_packets=0,n_bytes=0,priority=5,in_port=2actions=load:0x2->OXM_OF_METADATA[],load:0x1->NXM_NX_REG0[],goto_table:10
●Table10:匹配端口2过来的数据包,且源MAC为fa:16:3e:c6:d7:64,源IP为10.0.0.4时扔给Table20处理,即进行端口安全性控制;
cookie=0x0,duration=4091.277s,table=10,n_packets=0,n_bytes=0,priority=1,in_port=2,dl_src=fa:16:3e:c6:d7:64,nw_src=10.0.0.4actions=goto_table:20
●Table40:匹配tunnel号为0x2,即匹配网络network2的数据包,设置metadata为network2对应的VNI值0x2,然后扔给Table50处理;
cookie=0x0,duration=4091.282s,table=40,n_packets=0,n_bytes=0,priority=1,tun_id=0x2actions=load:0x2->OXM_OF_METADATA[],goto_table:50
●Table120:匹配metadata为0x2,即匹配network2的数据包,设置tunnel号为network2对应tunnel号0x2,然后从隧道口1发出;
cookie=0x0,duration=4091.285s,table=120,n_packets=0,n_bytes=0,priority=1,metadata=0x2actions=load:0x2->NXM_NX_TUN_ID[],output:1
●Table130:第一条匹配reg0为0x1,in_port为2的数据包,即虚拟机VM3过来的广播包扔给Table120处理;第二条匹配reg0为0x2,metadata为0x2的数据包,从端口2发出,即隧道口过来的network2网络的多播包发给同网络的VM3;
cookie=0x0,duration=4091.290s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x1,in_port=2actions=goto_table:120
cookie=0x0,duration=4091.296s,table=130,n_packets=0,n_bytes=0,priority=1,reg0=0x2,metadata=0x2actions=output:2
实施例中VM1与VM3通信后,由虚拟交换机上Table20和Table50的自学习流表动态生成的返程流表如下:
1.OVS-A中返程流表如下:
●Table100:第一条匹配metadata为0x1,目的MAC为fa:16:3e:c6:d7:61,从2号口发出,即网络network1中到虚拟机VM1的包发送给VM1的tap1口;第二条匹配metadata为0x1,目的MAC为fa:16:3e:c6:d7:64,从3号口发出,即网络network1中到虚拟机VM3的包发送给VM2的tap2口;第三条匹配metadata为0x2,目的MAC为fa:16:3e:c6:d7:61,从4号口发出,即网络network2中到虚拟机VM1的包发送给VM2的tap3口;
cookie=0x9134682963b411d1,duration=82.462s,table=100,n_packets=0,n_bytes=0,hard_timeout=300,idle_age=82,priority=2,metadata=0x1,dl_dst=fa:16:3e:c6:d7:61actions=output:2
cookie=0x9134682963b411d1,duration=82.463s,table=100,n_packets=0,n_bytes=0,hard_timeout=300,idle_age=82,priority=2,metadata=0x1,dl_dst=fa:16:3e:c6:d7:64actions=output:3
cookie=0x9134682963b411d1,duration=82.464s,table=100,n_packets=0,n_bytes=0,hard_timeout=300,idle_age=82,priority=2,metadata=0x2,dl_dst=fa:16:3e:c6:d7:61actions=output:4
●Table110:匹配metadata为0x2,目的MAC为fa:16:3e:c6:d7:64,设置tunnel号为0x2,并从1号隧道口发出,即网络network2中到虚拟机VM3的包设置tunnel号为network2对应的tunnel号,并发送给节点2;
cookie=0x9134682963b411d1,duration=80.460s,table=110,n_packets=0,n_bytes=0,hard_timeout=300,idle_age=80,priority=2,metadata=0x2,dl_dst=fa:16:3e:c6:d7:64actions=set_field:0x2->tun_id,output:1
2.OVS-B中返程流表包括:
●Table100:匹配metadata为0x2,目的MAC为fa:16:3e:c6:d7:64,从2号口发出,即网络network2中到虚拟机VM3的包发送给VM3;
cookie=0x9134682963b411d1,duration=82.462s,table=100,n_packets=0,n_bytes=0,hard_timeout=300,idle_age=82,priority=2,metadata=0x2,dl_dst=fa:16:3e:c6:d7:64actions=output:2
●Table110:匹配metadata为0x2,目的MAC为fa:16:3e:c6:d7:61,设置tunnel号为0x2,并从1号隧道口发出,即网络network2中到虚拟机VM1的包设置tunnel号为network2对应的tunnel号,并发送给节点1;
cookie=0x9134682963b411d1,duration=80.460s,table=110,n_packets=0,n_bytes=0,hard_timeout=300,idle_age=80,priority=2,metadata=0x2,dl_dst=fa:16:3e:c6:d7:61actions=set_field:0x2->tun_id,output:1
VM1与VM3通信过程中,虚拟交换机中流表匹配流程如图4所示。VM1的mac地址是fa:16:3e:c6:d7:61,IP地址是10.0.0.3;VM3的mac地址是fa:16:3e:c6:d7:64,IP地址是10.0.0.4;VM1ping VM3时,处理流程如下:
1.首先处理VM1到VM3的ARP request广播包,处理流程如下所示。
数据包从tap1进入OVS-A,匹配流程如下:
Table0:匹配in_port为2,设置metadata为0x1,reg0为0x1,跳转到Table10;
Table10:匹配in_port为2,dl_src为fa:16:3e:c6:d7:61,nw_src为10.0.0.3,跳转到Table20;
Table20:学习network1中到VM1的返程流表,并保存到Table100,然后跳转到Table30;
Table30:匹配广播包,跳转到Table130;
Table130:匹配reg0为0x1,in_port为2,然后从3号口发出,即转发给VM2的tap2口,然后跳转到Table120;VM2的tap2口收到ARP request广播包后从tap3口转发,再次进入OVS-A,匹配流程如下:
●Table0:匹配in_port为4,设置metadata为0x2,reg0为0x1,跳转到Table10;
●Table10:匹配in_port为4,跳转到Table20;
●Table20:学习network2中到VM1的返程流表,并保存到Table100,然后跳转到Table30;
●Table30:匹配广播包,跳转到Table130;
●Table130:匹配reg0为0x1,in_port为4,跳转到Table120;
●Table120:匹配metadata为0x2,设置tunnel号为0x2,从端口1发出,即发送给节点2;数据包从隧道口进入OVS-B,匹配流程如下:
■Table0:in_port为1,设置reg0为0x2,跳转到Table40;
■Table40:匹配tunnel号为0x2,设置metadata为0x2,跳转到Table50;
■Table50:学习network2中到VM1的返程流表,并保存到Table110,然后跳转到Table60;
■Table60:匹配广播包,跳转到Table130;
■Table130:匹配reg0为0x2,metadata为0x2,然后从2号口发出,即转发给VM3的tap4口;
Table120:匹配metadata为0x1,设置tunnel号为0x1,从端口1发出,即发送给节点2;数据包从隧道口进入OVS-B,匹配流程如下:
●Table0:匹配in_port为1,设置reg0为0x2,跳转到Table40;
●Table40,匹配到默认drop规则,数据包丢弃处理;
总结:由以上结果可知,VM1到VM3的ARP request广播包转发过程为VM1到VM2再到VM3,如图3中标识101所示。
2. 2.VM3收到ARP request包后,向VM1回复ARP Reply单播包,VM3到VM1的ARPReply单播包处理流程如下所示。
数据包从tap4进入OVS-B,匹配流程如下:
Table0:匹配in_port为2,设置metadata为0x2,reg0为0x1,跳转到Table10;
Table10:匹配in_port为2,dl_src为fa:16:3e:c6:d7:64,nw_src为10.0.0.4,跳转到Table20;
Table20:学习network2中到VM3的返程流表,并保存到Table100,然后跳转到Table30;
Table30:匹配单播包,跳转到Table100;
Table100:未匹配到内部返程规则,匹配reg0为0x1,跳转到Table110;
Table110:匹配到network2中到VM1的返程流表,设置tunnel号为0x2,从端口1发出,即发送给节点1;数据包从隧道口进入OVS-A,匹配流程如下:
●Table0:匹配in_port为1,设置reg0为0x2,跳转到Table40;
●Table40:匹配到tunnel号为0x2,设置metadata为0x2,跳转到Table50;
●Table50:学习network2中到VM1的返程流表,并保存到Table110,然后跳转到Table60;
●Table60:匹配单播包,跳转到Table100;
●Table100:匹配到network2中到VM1的返程流表,从4号口发出,即发送给VM2的tap3口;VM2收到ARP Reply包后从tap2发出,再次进入OVS-A,匹配流程如下:
■Table0:匹配in_port为3,设置metadata为0x1,reg0为0x1,跳转到Table10;
■Table10:匹配in_port为3,跳转到Table20;
■Table20:学习network2中到VM3的返程流表,并保存到Table100,然后跳转到Table30;
■Table30:匹配单播包,跳转到Table100;
■Table100:匹配到network1中到VM1的返程流表,从2号口发出,即发送给VM1的tap1口,此时VM1收到VM3的ARP Reply包。
总结:由以上结果可知,VM3到VM1的ARP Reply单播包转发过程为VM3到VM2再到VM1,如图3中标识101所示。之后VM1与VM3之间的数据包匹配流程与以上介绍基本一致,不再说明。
以上对本发明所提供的一种基于SDN的虚拟租户网络隔离方法及系统进行了详细介绍;本实施例的说明只是用于帮助理解本发明的方法。本发明所述的应用方式可根据实际情况进行调整,并不是用来限制本发明。

Claims (2)

1.一种基于SDN的虚拟租户网络隔离方法,其特征在于,所述方法的执行步骤如下:
步骤1,虚拟交换机拓扑发现过程,控制器连接所有虚拟交换机,拓扑管理模块利用LLDP协议计算虚拟交换机之间的连接关系;
步骤2,虚拟交换机流表初始化过程,初始化模块根据拓扑管理模块发现的拓扑信息,产生虚拟交换机的初始化流表,并下发初始化流表至各个虚拟交换机;
步骤3,云平台创建租户网络和虚拟机后,租户网络映射模块根据租户网络的运行信息生成与租户网络相关的租户网络映射流表,并将租户网络映射流表添加至各个虚拟交换机;
所述步骤3中,租户网络映射流表包括:
Table0:根据入端口号 in_port判断,从虚拟机端口过来的数据包,设置寄存器reg0为1,并设置metadata为端口所在网络的VNI值,然后跳到Table10处理;
Table10:进行虚拟机端口安全性控制;如果对应虚拟机端口启动端口安全性控制,匹配数据包in_port、源MACdl_src、源IPnw_src是否与平台预分配信息一致,一致则跳转Table20处理;如果对应虚拟机端口未启动端口安全性控制,匹配数据包in_port后跳转Table20处理,所述Table20为节点本地的虚拟机MAC地址学习,用于生成返程流表;
Table40:匹配数据包Tunnel号,并设置metadata为对应网络VNI值,然后跳转到Table50处理,所述Table50为节点外部的虚拟机MAC地址学习,用于生成返程流表;
Table120:匹配metadata值,添加对应的tunnel号,并从所有隧道口转发数据包;
Table130:多播数据包处理,首先判断是从虚拟机过来的数据包还是从隧道口过来的数据包,如果是从虚拟机过来的数据包,即reg0=1,匹配in_port后,转发给除该数据包in_port以外的所有同网络的虚拟机端口,然后跳转到Table120处理;如果是从隧道口过来的数据包,即reg0=2,匹配metadata后,转发给所有同网络的虚拟机端口。
2.根据权利要求1所述的一种基于SDN的虚拟租户网络隔离方法,其特征在于,所述步骤2中,虚拟交换机的初始化流表包括:
Table0:如果是从隧道口过来的数据包,设置寄存器reg0的值为2,然后跳转到Table40处理;
Table10:添加默认drop规则;
Table20: 节点本地的虚拟机MAC地址学习,用于生成返程流表;生成规则:根据数据包in_port、源MACdl_src、虚拟网络标识VNI值 metadata,生成返程流表,返程流表匹配条件包括VNI值 metadata、目的MACdl_dst,动作为从ip_port发出,保存返程流表到Table100,然后跳转到Table30处理;
Table30:判断是单播数据包还是多播数据包,单播数据包跳转到Table100处理,多播数据包跳转到Table130处理;
Table40:添加默认drop规则;
Table50:节点外部的虚拟机MAC地址学习,用于生成返程流表;生成规则:根据数据包in_port、源MACdl_src、VNI值 metadata,生成返程流表,返程流表匹配条件包括VNI值metadata、目的MACdl_dst,动作为添加tunnel号并从当前数据包的ip_port发出,保存返程流表到Table110,然后跳转到Table60处理;
Table60:判断是单播数据包还是多播数据包,单播数据包跳转到Table100处理,多播数据包跳转到Table130处理;
Table100:如果是虚拟机过来的数据包,即reg0=1,跳转到Table110处理;如果是隧道口过来的数据包,即reg0=2,默认drop处理;
Table110:添加默认规则,跳转到Table120处理;
Table120:添加默认drop规则;
Table130:添加默认drop规则。
CN201811610712.XA 2018-12-27 2018-12-27 一种基于sdn的虚拟租户网络隔离方法及系统 Active CN109474627B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811610712.XA CN109474627B (zh) 2018-12-27 2018-12-27 一种基于sdn的虚拟租户网络隔离方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811610712.XA CN109474627B (zh) 2018-12-27 2018-12-27 一种基于sdn的虚拟租户网络隔离方法及系统

Publications (2)

Publication Number Publication Date
CN109474627A CN109474627A (zh) 2019-03-15
CN109474627B true CN109474627B (zh) 2021-08-13

Family

ID=65677093

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811610712.XA Active CN109474627B (zh) 2018-12-27 2018-12-27 一种基于sdn的虚拟租户网络隔离方法及系统

Country Status (1)

Country Link
CN (1) CN109474627B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109842560B (zh) * 2019-04-17 2021-07-06 中国联合网络通信集团有限公司 一种发送VxLAN报文的方法及装置
CN110162383A (zh) * 2019-05-28 2019-08-23 浪潮商用机器有限公司 一种虚拟机的管理网络隔离方法、系统及相关装置
CN110380993B (zh) * 2019-07-12 2021-09-14 中国电信集团工会上海市委员会 一种基于ovsdb的流表保护方法
CN111147947B (zh) * 2020-01-10 2021-12-10 深圳市同洲电子股份有限公司 一种基于websocket的flv视频传输及网页播放的方法
CN112187610B (zh) * 2020-09-24 2021-11-16 北京赛宁网安科技有限公司 一种网络靶场的网络隔离系统与方法
CN112910776B (zh) * 2021-01-18 2022-10-18 北京火山引擎科技有限公司 一种数据转发方法、装置、设备及介质
CN112887134B (zh) * 2021-01-21 2022-03-15 中山大学 一种网络服务网格编排方法、装置、设备及介质
CN112953927B (zh) * 2021-02-07 2022-03-11 中国科学院计算技术研究所 基于虚拟交换机中流表结构隔离的流表查询方法及系统
CN116938811B (zh) * 2023-09-18 2024-05-07 厦门市佐云佑网科技有限公司 基于虚拟网络映射的sdn路由方法及路由系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106559338A (zh) * 2015-09-29 2017-04-05 中国电信股份有限公司 Sdn网络中的租户划分方法、装置及sdn网络系统
CN107395532A (zh) * 2017-07-11 2017-11-24 北京航空航天大学 一种基于sdn的多租户虚拟网络隔离方法
CN107959689A (zh) * 2018-01-10 2018-04-24 北京工业大学 一种云平台租户网络隔离测试方法
CN108512811A (zh) * 2017-02-27 2018-09-07 中国科学院信息工程研究所 一种基于sdn的虚拟网络隔离方法及sdn控制器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105763512B (zh) * 2014-12-17 2019-03-15 新华三技术有限公司 Sdn虚拟化网络的通信方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106559338A (zh) * 2015-09-29 2017-04-05 中国电信股份有限公司 Sdn网络中的租户划分方法、装置及sdn网络系统
CN108512811A (zh) * 2017-02-27 2018-09-07 中国科学院信息工程研究所 一种基于sdn的虚拟网络隔离方法及sdn控制器
CN107395532A (zh) * 2017-07-11 2017-11-24 北京航空航天大学 一种基于sdn的多租户虚拟网络隔离方法
CN107959689A (zh) * 2018-01-10 2018-04-24 北京工业大学 一种云平台租户网络隔离测试方法

Also Published As

Publication number Publication date
CN109474627A (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
CN109474627B (zh) 一种基于sdn的虚拟租户网络隔离方法及系统
US11929945B2 (en) Managing network traffic in virtual switches based on logical port identifiers
CN111901244B (zh) 一种网络报文转发系统
US9596099B2 (en) Scalable network virtualization with aggregate endpoints
US9736070B2 (en) Load balancing overlay network traffic using a teamed set of network interface cards
EP2843906B1 (en) Method, apparatus, and system for data transmission
US9413554B2 (en) Virtual network overlays
US8819267B2 (en) Network virtualization without gateway function
JP5594552B2 (ja) ネットワークシステム、及び経路制御方法
CN108880968B (zh) 软件定义网络中广播、组播实现方法及装置、存储介质
CN105453492A (zh) 具有第三层分布式路由器功能的交换机集群
US20190230039A1 (en) Method and system for extracting in-tunnel flow data over a virtual network
CN107592216B (zh) 一种支持多场景实验隔离的虚实网络融合仿真方法
KR20180073726A (ko) 논리적 라우터
US11509581B2 (en) Flow-based local egress in a multisite datacenter
CN111556110A (zh) 一种用于私有云系统的不同物理业务网络自动化适配方法
US9397958B2 (en) FCoE VN—port virtualizer
KR101794719B1 (ko) Sdn 기반 네트워크 가상화 플랫폼에서의 ip 주소 가상화 방법 및 시스템
WO2023116268A1 (zh) 网络隔离方法和系统及代理设备
CN109729010B (zh) 一种网络中确定流量传输路径的方法、设备和系统
CN111654558B (zh) Arp交互与内网流量转发方法、装置和设备
CN114157668B (zh) 多租户跨集群的组网方法、通信系统和可读存储介质
US12003417B2 (en) Communication method and apparatus
US20240022513A1 (en) Communication Method and Apparatus
CN115766665A (zh) 一种面向多业务场景的软件定义终端接入方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant