CN105933235B - 数据通信方法及装置 - Google Patents
数据通信方法及装置 Download PDFInfo
- Publication number
- CN105933235B CN105933235B CN201610531623.0A CN201610531623A CN105933235B CN 105933235 B CN105933235 B CN 105933235B CN 201610531623 A CN201610531623 A CN 201610531623A CN 105933235 B CN105933235 B CN 105933235B
- Authority
- CN
- China
- Prior art keywords
- address
- software switch
- virtual machine
- mac
- data packet
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/354—Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明实施例公开了数据通信方法及装置。当该方法应用于数据通信系统中连接有数据发送端的第一软件交换机时,该方法包括:接收所述第一虚拟机发送的数据包;获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;基于所述第一流表中所包括的处理动作处理所述数据包;将处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将处理完毕后的所述数据包转发给所述第二虚拟机。本发明解决了SDN网络中租户内部同一网段的虚拟机跨服务器通信时通信资源消耗大的问题,相比于现有方案,可以节约通信资源。
Description
技术领域
本发明涉及网络技术领域,特别涉及数据通信方法及装置。
背景技术
虚拟私有云(Virtual Private Cloud,VPC)是公有云中的关键技术,能够根据租户的需求调度物理网络资源,从而基于一套网络基础设施为不同的租户提供虚拟的私有网络环境,保证租户私有网络间彼此隔离。
目前SDN+VxLAN是实现租户内部处于同一网段的虚拟机间跨服务器通信的主流方式,它通过隧道为租户构建Overlay网络(Overlay是一种将二层网络构架在三层/四层报文中进行传递的网络技术),并结合SDN(Software Defined Network,软件定义网络)的全局视图优化了标准VxLAN(virtual Extensible LAN,虚拟可扩展局域网)的转发逻辑。假设某租户存在分布在不同物理服务器上但属于同一网段的虚拟机1和2,两个虚拟机间数据包的转发流程简要描述如下:虚拟机1转发的数据包到达接入交换机1,控制器结合全局视图,根据虚拟机2所在物理服务器的IP(Internet Protocol,网络之间互连的协议)地址进行VxLAN封装,通过隧道将数据包送给目的虚拟机所接入的交换机2,交换机2解封装后将数据包交给虚拟机2。
SDN+VxLAN通信方式可以实现租户内部同一网段中的虚拟机跨服务器通信,但是该通信方式中,交换机还会再对数据包的包头外在封装一层包头,即为外层包头,该外层包头的封装至少需要50字节,使得租户内部同一网段中的虚拟机跨服务器通信的通信资源消耗较大,导致通信资源的浪费。
发明内容
本发明实施例公开了数据通信方法及装置,用于解决SDN网络中租户内部同一网段的虚拟机跨服务器通信时通信资源消耗大的问题。技术方案如下:
第一方面,本发明实施例提供了一种数据通信方法,应用于数据通信系统中的第一软件交换机,所述第一软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、设置有OpenFlow协议的第二软件交换机、与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为所述第一虚拟机和所述第二虚拟机分配IP地址;
所述方法包括:
接收所述第一虚拟机发送的数据包;其中,所述数据包的包头信息中,源MAC地址为所述第一虚拟机的MAC地址、源IP地址为所述第一虚拟机的IP地址、目的MAC地址为所述第二虚拟机的MAC地址和目的IP地址为所述第二虚拟机的IP地址;
获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;其中,所述第一流表中的处理动作包括:将源MAC地址修改为第一软件交换机的MAC地址、将源IP地址修改为预定IP地址、将目的IP地址修改为第二软件交换机的IP地址;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第二软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第一软件交换机对应的网关的MAC地址;
基于所述第一流表中所包括的处理动作,处理所述数据包;
将所述第一软件交换机处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将所述第二软件交换机处理完毕后的所述数据包转发给所述第二虚拟机;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
优选的,所述获得由控制器下发的与所述数据包相匹配的第一流表,包括:
判断本地是否存在与所述数据包相匹配的第一流表;
如果是,从本地获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;
如果否,将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,以使得所述OpenFlow控制器基于所述标识信息生成第一流表和第二流表并分别下发给所述第一软件交换机和所述第二软件交换机。
优选的,所述将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,包括:
将包含有所述包头信息的标识信息按照OpenFlow协议封装后,发送至所述OpenFlow控制器。
优选的,预先对OpenFlow网络中的所有租户编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
第二方面,本发明实施例还提供了另一种数据通信方法,应用于数据通信系统中的第二软件交换机,所述第二软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、设置有OpenFlow协议的第一软件交换机、与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为第一虚拟机和第二虚拟机分配IP地址;
所述方法包括:
接收所述第一软件交换机发送的数据包;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包的包头信息中:源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包的包头信息中:源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;
从本地获得由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址;
基于所述第二流表中的处理动作,处理所述数据包;
将处理完毕后的所述数据包转发给所述第二虚拟机。
优选的,预先对OpenFlow网络中的所有虚拟机编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
第三方面,本发明实施例提供了一种数据通信装置,应用于数据通信系统中的第一软件交换机,所述第一软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、设置有OpenFlow协议的第二软件交换机、与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为所述第一虚拟机和所述第二虚拟机分配IP地址;
所述装置包括:
第一接收模块,用于接收所述第一虚拟机发送的数据包;其中,所述数据包的包头信息中,源MAC地址为所述第一虚拟机的MAC地址、源IP地址为所述第一虚拟机的IP地址、目的MAC地址为所述第二虚拟机的MAC地址和目的IP地址为所述第二虚拟机的IP地址;
第一获得模块,用于获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;其中,所述第一流表中的处理动作包括:将源MAC地址修改为第一软件交换机的MAC地址、将源IP地址修改为预定IP地址、将目的IP地址修改为第二软件交换机的IP地址;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第二软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第一软件交换机对应的网关的MAC地址;
第一处理模块,用于基于所述第一流表中所包括的处理动作,处理所述数据包;
第一转发模块,用于将所述第一软件交换机处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将所述第二软件交换机处理完毕后的所述数据包转发给所述第二虚拟机;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
第四方面,本发明实施例提供了另一种数据通信装置,应用于数据通信系统中的第二软件交换机,所述第二软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、设置有OpenFlow协议的第一软件交换机、与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为第一虚拟机和第二虚拟机分配IP地址;
所述装置包括:
第二接收装置,用于接收所述第一软件交换机发送的数据包;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包的包头信息中,源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包的包头信息中:源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;
第二获得模块,用于从本地获得由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址;
第二处理模块,用于基于所述第二流表中的处理动作,处理所述数据包;
第二转发模块,用于将处理完毕后的所述数据包转发给所述第二虚拟机。
本发明实施例提供的数据通信方法及装置,基于OpenFlow实现租户内部同一网段的两个虚拟机跨服务器通信的功能,解决了现有技术中存在的通信资源消耗大的问题,相较于SDN+VxLAN通信方式,其不需要封装外层包头,减少了通信资源的浪费,而且不会出现由封装包头引起的分片进而降低通信效率的问题。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的数据通信方法所适用的系统场景图;
图2为本发明实施例所提供的一种数据通信方法的流程示意图;
图3为本发明实施例所提供的另一种数据通信方法的流程示意图;
图4为本发明实施例所提供的一种数据通信装置的结构示意图;
图5为本发明实施例所提供的另一种数据通信装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先需要说明的是,图1为本发明实施例所提供的数据通信方法所基于的系统的结构示意图,具体的,图1中,第一软件交换机和第二软件交换机均与OpenFlow控制器基于OpenFlow协议通信,第一软件交换机和第二软件交换机均接入在承载网络中,而第一虚拟机和第二虚拟机则分别接在第一软件交换机和第二软件交换机上。图中的第一虚拟机与第一软件交换机处于同一物理服务器,而第二虚拟机与第二软件交换机同处于另一物理服务器,且图中的第一虚拟机和第二虚拟机属于同一租户。
本领域技术人员可以理解的是,本发明实施例中所述的承载网络可以是指传统的以太网或者IP网络。
为了解决现有技术问题,本发明实施例从第一软件交换机的角度提供了一种数据通信方法,该方法应用于数据通信系统中的第一软件交换机,所述第一软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、设置有OpenFlow协议的第二软件交换机、与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器。
另外,本发明实施例中,所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC(Medium/Media Access Control,媒介访问控制)地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为所述第一虚拟机和所述第二虚拟机分配IP地址。
应该说明的是,OpenFlow控制器是通过DHCP(Dynamic Host ConfigurationProtocol,动态主机配置协议)模块为第一软件交换机和第二软件交换机分别请求承载网中的IP地址的,并且在请求的同时记录了承载网中第一软件交换机和第二软件交换机分别对应的网关IP地址。
另外,OpenFlow控制器基于第一软件交换机和第二软件交换机分别对应的网关IP地址,通过ARP(Address Resolution Protocol,地址解析协议)模块分别获取第一软件交换机和第二软件交换机的网关MAC地址;
本领域技术人员可以理解的是,为了获取第一软件交换机和第二软件交换机分别对应的网关MAC地址,必须先获取第一软件交换机和第二软件交换机分别对应的网关IP地址,然后才能解析出对应的MAC地址。所以,如上所述,OpenFlow控制器通过DHCP模块为第一软件交换机和第二软件交换机分别请求承载网中的IP地址的同时,记录了承载网中第一软件交换机和第二软件交换机分别对应的网关IP地址。
此外,OpenFlow控制器还通过DHCP模块分别为第一虚拟机和第二虚拟机分配其IP地址,并记录第一虚拟机在该租户中的序号以及接入位置,第二虚拟机在该租户中的序号以及接入位置。应该强调的是,这里的第一虚拟机的IP地址和第二虚拟机的IP地址均为该租户私有IP地址,且处于同一网段。
应该说明的是,DHCP模块和ARP模块在现有的OpenFlow控制器中都是存在的,本发明实施例在此不做详细描述。
如图2,从第一软件交换机的角度,本发明实施例所提供的一种数据通信方法可以包括步骤:
S101:接收所述第一虚拟机发送的数据包;其中,所述数据包的包头信息中,源MAC地址为所述第一虚拟机的MAC地址、源IP地址为所述第一虚拟机的IP地址、目的MAC地址为所述第二虚拟机的MAC地址和目的IP地址为所述第二虚拟机的IP地址;
应该说明的是,由于第一虚拟机是接在第一软件交换机上的,所以当第一虚拟机需要发送数据包时首先会将数据包发送给第一软件交换机。
S102:获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;
其中,所述第一流表中的处理动作可以包括:将源MAC地址修改为第一软件交换机的MAC地址、将源IP地址修改为预定IP地址、将目的IP地址修改为第二软件交换机的IP地址;
其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第二软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第一软件交换机对应的网关的MAC地址。
可以理解的是,这里所描述的与所述数据包相匹配的第一流表为:所给定的匹配规则与所述数据包的包头信息相符合的第一流表,该匹配规则具体是指:源MAC地址为第一虚拟机的MAC地址,目的MAC地址为第二虚拟机的MAC地址,源IP地址为第一虚拟机的IP地址,目的IP地址为第二虚拟机的IP地址。
应该说明的是,匹配规则和处理动作是OpenFlow中两个重要组成部分,匹配规则是用于对软件交换机接收到的数据包的包头内容进行匹配,若某一个流表的匹配规则与接收到的数据包的包头内容匹配,则软件交换机会依照该流表中的处理动作处理该数据包;显然的,处理动作用于指示交换机在收到匹配的数据包后应该如何对其进行处理。由于流表的匹配规则和处理动作都是公知技术,此处不进行详细叙述。
在本发明实施例中,所述获得由控制器下发的与所述数据包相匹配的第一流表可以包括:
判断本地是否存在与所述数据包相匹配的第一流表;
如果是,从本地获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;
如果否,将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,以使得所述OpenFlow控制器基于所述标识信息生成第一流表和第二流表并分别下发给所述第一软件交换机和所述第二软件交换机。
应该说明的是,第一流表和第二流表是OpenFlow控制器基于所述标识信息自动生成并同时下发给第一软件交换机和所述第二软件交换机的。
另外,所述将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,可以是:将包含有所述包头信息的标识信息按照OpenFlow协议封装后,发送至所述OpenFlow控制器。
S103:基于所述第一流表中所包括的处理,动作处理所述数据包。
S104:将所述第一软件交换机处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将所述第二软件交换机处理完毕后的所述数据包转发给所述第二虚拟机;
其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
可以理解的是,与所述数据包相匹配的第二流表为:所给定的匹配规则与所述数据包的包头信息相符合的第二流表,该匹配规则具体是指:
目的MAC地址为第二软件交换机的MAC地址,源IP地址为所述预定IP地址,目的IP地址为第二软件交换机的IP地址;另外,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,该匹配规则还包括:源MAC地址为第一软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,该匹配规则还包括:源MAC地址为第二软件交换机对应的网关的MAC地址。
应该强调的是,上述与所述数据包相匹配的第二流表中所提及的数据包是第二软件交换机接收到的数据包。
另外,在本发明实施例中,为了使不同租户以及不同虚拟机发送的数据包具有唯一性,还可以预先对OpenFlow网络中的所有租户编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
例如,可以预先将OpenFlow网络中的所有租户编号为1、2、3、4、5…..,同时将每个租户内的虚拟机编号为1、2、3、4、5…..。
众所周知,以二进制表示的IP地址一共有32位;在本发明实施例中的一个示例中,可以用预定IP地址的高16位用租户的编号表示,之后的8位用第一虚拟机的编号来表示,低8位用第二虚拟机的编号来表示;使得该预定IP地址可以表征租户、第一虚拟机和第二虚拟机的信息。
上述示例中,高16位用租户的编号表示,所以系统中可以存在2的16次方个租户即65536个租户,每个租户中可以存在2的8次方个虚拟机即256个虚拟机。
例如,租户的编号为100,租户中的第一虚拟机和第二虚拟机的编号分别为55和73,此时,100、55和73对应的二进制数分别为1100100、110111和1001001;则此时二进制表示的预定IP地址高16位为0000000001100100,之后的8位为00110111,低8位为00110111,故二进制表示的预定IP地址为00000000011001000011011100110111。
应该强调的是,本发明实施例中,并不局限于上述示例。
本发明实施例中,可以是第一软件交换机和第二软件交换机直接接入在承载网络中。应该强调的是,由于流表中的处理动作需要对数据包包头中的源IP地址进行重新编址,当第一软件交换机和第二软件交换机均通过承载网交换机接入承载网络时,承载网交换机中接有软件交换机的相应端口不能开启IPSG(IP Source Guard,IP源防护)功能。
现有技术中,SDN+VxLAN通信方式存在下述3个问题:
(1)外层的包头至少需要50字节,当原始数据包负载较小时,外层包头的开销将造成一定的资源浪费;本领域技术人员可以理解的是,SDN+VxLAN通信是一种隧道方式的通信,此处所说的外层包头是指传统的交换机封装在数据包上的包头。
(2)外层包头的封装很消耗CPU(Central Processing Unit,中央处理器),还会导致一定的延时。
(3)外层包头的增加可能会导致分片,降低通信效率。
显然的,本发明实施例中不存在上述问题,本方案中,基于OpenFlow实现租户内部同一网段的两个虚拟机跨服务器通信的功能,解决了现有技术中存在的通信资源消耗大的问题,相较于SDN+VxLAN通信方式,其不需要封装外层包头,减少了资源的浪费,而且不会出现由封装包头引起的分片进而降低通信效率的问题。
从第二软件交换机的角度,本发明实施例还提供了另一种数据通信方法,该方法应用于数据通信系统中的第二软件交换机,所述第二软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、设置有OpenFlow协议的第一软件交换机、与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器。
另外,本发明实施例中,所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为第一虚拟机和第二虚拟机分配IP地址;
如图3所示,从第二软件交换机的角度,本发明实施例所提供的一种数据通信方法,可以包括步骤:
S201:接收所述第一软件交换机发送的数据包;
其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包的包头信息中:源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;
当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包的包头信息中:源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址。
S202:从本地获得由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
应该说明的是,第二流表的匹配规则为:目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包中还包括信息:源MAC地址为第一软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包中还包括信息:源MAC地址为第二软件交换机对应的网关的MAC地址。
S203:基于所述第二流表中的处理动作,处理所述数据包。
S204:将处理完毕后的所述数据包转发给所述第二虚拟机。
同样的,在本发明实施例中,还可以预先对OpenFlow网络中的所有租户编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
本方案中,基于OpenFlow实现租户内部同一网段的两个虚拟机跨服务器通信的功能,解决了现有技术中存在的通信资源消耗大的问题,相较于SDN+VxLAN通信方式,其不需要封装外层包头,减少了资源的浪费,而且不会出现由封装包头引起的分片进而降低通信效率的问题。
为了方案清楚,下面基于从第一软件交换机和第二软件交换机所提供的数据通信方法,介绍数据包在租户内部同一网段的两个虚拟机间跨服务器传送的整体过程:
第一虚拟机作为发送端,接入在第一软件交换机上,首先向第一软件交换机发出数据包,此时的数据包包头包含的各地址信息中,源MAC地址为第一虚拟机的MAC地址,目的MAC地址为第二虚拟机的MAC地址,源IP地址为第一虚拟机的IP地址,目的IP地址为第二虚拟机的IP地址。
数据包到达第一软件交换机,首先第一软件交换机会在本地搜索有无与数据包中的各地址信息相匹配的OpenFlow流表。若此时第一软件交换机本地存在与当前数据包中的各地址信息相匹配的OpenFlow流表,则按照该OpenFlow流表中的处理动作处理该数据包并将数据包转发出去。
如若此时第一软件交换机本地没有与当前数据包中的各地址信息相匹配的OpenFlow流表,第一软件交换机就会将包含有数据包各地址信息的的标识信息封装OpenFlow协议后上报OpenFlow控制器。
OpenFlow控制器首先基于标识信息中的目的IP地址和目的MAC地址,得知第一虚拟机与第二虚拟机不在同一个物理服务器中,即该数据包的传递需要跨物理服务器进行,同时,OpenFlow控制器还获知第二虚拟机接在第二软件交换机上,然后,OpenFlow控制器判断第一软件交换机的IP地址和第二软件交换机的IP地址是否属于同一网段,继而结合标识信息和判断结果生成第一流表和第二流表,并分别下发给第一软件交换机和第二软件交换机。
应该说明的是,OpenFlow控制器中记录有各个软件交换机中接入的各个虚拟机,以及各个接入在软件交换机上的虚拟机所处的物理服务器信息,以使OpenFlow控制器在得知发送端和接收端的虚拟机信息后,可以直接确定两个虚拟机是否处于同一物理服务器内,以及两个虚拟机分别所接入的软件交换机。
本发明实施例的第一种情况,第一软件交换机的IP地址和第二软件交换机的IP地址属于同一网段:
第一流表中的匹配规则为:源MAC地址为第一虚拟机的MAC地址,目的MAC地址为第二虚拟机的MAC地址,源IP地址为第一虚拟机的IP地址,目的IP地址为第二虚拟机的IP地址。
第一流表中的处理动作为:修改源MAC地址为第一软件交换机的MAC地址,修改目的MAC地址为第二软件交换机的MAC地址,修改源IP地址为预定IP地址,修改目的地址为第二软件交换机的IP地址。
第二流表中的匹配规则为:源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为所述预定IP地址,目的IP地址为第二软件交换机的IP地址。
第二流表中的处理动作为:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
第一软件交换机接收第一流表后,该数据包中的各地址信息与第一流表匹配,则第一软件交换机依据第一流表中的处理动作对该数据包进行处理。由于第一软件交换机的IP地址和第二软件交换机的IP地址属于同一网段,第一软件交换机将处理后的数据包发至承载网络中,在承载网络中,基于第二软件交换机的IP地址,数据包直接通过现有的承载网路由技术路由到第二软件交换机。
第二软件交换机接收到数据包时,此时数据包的包头信息中,源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的地址为第二软件交换机的IP地址。
此时数据包的各地址信息匹配上述第二流表,第二软件交换机依据第二流表中的处理动作对数据包进行处理,并将处理后的数据包转发给第二虚拟机。
本发明实施例的第一种情况,第一软件交换机的IP地址和第二软件交换机的IP地址不属于同一网段:
第一流表中的匹配规则为:源MAC地址为第一虚拟机的MAC地址,目的MAC地址为第二虚拟机的MAC地址,源IP地址为第一虚拟机的IP地址,目的IP地址为第二虚拟机的IP地址。
第一流表中的处理动作为:修改源MAC地址为第一软件交换机对应的网关的MAC地址,修改目的MAC地址为第二软件交换机的MAC地址,修改源IP地址为预定IP地址,修改目的地址为第二软件交换机的IP地址。
第二流表中的匹配规则为:源MAC地址为第二软件交换机对应网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为所述预定IP地址,目的IP地址为第二软件交换机的IP地址。
第二流表中的处理动作为:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
第一软件交换机接收第一流表后,该数据包中的各地址信息与第一流表匹配,则第一软件交换机依据第一流表中的处理动作对该数据包进行处理。由于第一软件交换机的IP地址和第二软件交换机的IP地址不属于同一网段,第一软件交换机需要将处理后的数据包经过第一软件交换机对应的网关传送到承载网络中。
在承载网络中,基于第二软件交换机的IP地址,数据包被直接路由到第二软件交换机对应的网关中,然后再发送至第二软件交换机。
第二软件交换机接收到数据包时,此时数据包中,源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的地址为第二软件交换机的IP地址。
此时数据包的各地址信息匹配上述第二流表,第二软件交换机依据第二流表中的处理动作对数据包进行处理,并将处理后的数据包转发给第二虚拟机。
应该说明的是,从第二流表中的处理动作可以看出,数据包在传递的过程中,包头信息被多次修改,但是最终第二虚拟机接收到的数据包中的包头信息和最初由第一虚拟机发送的数据包的包头信息相同。当然,数据包中的净载内容始终没有被改动。
相应于从第一软件交换机的角度所提供的一种数据通信方法,本发明实施例提供的一种数据通信装置,应用于数据通信系统中的第一软件交换机,所述第一软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、设置有OpenFlow协议的第二软件交换机、与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;
所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为所述第一虚拟机和所述第二虚拟机分配IP地址。
如图4所示,本发明实施例所提供的一种数据通信装置包括:第一接收模块110、第一获得模块120、第一处理模块130和第一转发模块140。
第一接收模块110,用于接收所述第一虚拟机发送的数据包;其中,所述数据包的包头信息中,源MAC地址为所述第一虚拟机的MAC地址、源IP地址为所述第一虚拟机的IP地址、目的MAC地址为所述第二虚拟机的MAC地址和目的IP地址为所述第二虚拟机的IP地址。
第一获得模块120,用于获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;其中,所述第一流表中的处理动作包括:将源MAC地址修改为第一软件交换机的MAC地址、将源IP地址修改为预定IP地址、将目的IP地址修改为第二软件交换机的IP地址;
其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第二软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第一软件交换机对应的网关的MAC地址。
第一处理模块130,用于基于所述第一流表中所包括的处理动作处理所述数据包。
第一转发模块140,用于将所述第一软件交换机处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将所述第二软件交换机处理完毕后的所述数据包转发给所述第二虚拟机;
其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
具体的,所述第一获得模块120可以用于:
判断本地是否存在与所述数据包相匹配的第一流表;
如果是,从本地获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;
如果否,将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,以使得所述OpenFlow控制器基于所述标识信息生成第一流表和第二流表并分别下发给所述第一软件交换机和所述第二软件交换机。
具体的,所述第一获得模块120中所述将包含有所述包头信息的标识信息发送至所述OpenFlow控制器可以是:将包含有所述包头信息的标识信息按照OpenFlow协议封装后,发送至所述OpenFlow控制器。
具体的,本发明实施例所提供的一种数据通信装置,可以预先对OpenFlow网络中的所有租户编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
本方案中,基于OpenFlow实现租户内部同一网段的两个虚拟机跨服务器通信的功能,解决了现有技术中存在的通信资源消耗大的问题,相较于SDN+VxLAN通信方式,其不需要封装外层包头,减少了资源的浪费,而且不会出现由封装包头引起的分片进而降低通信效率的问题。
相应于从第二软件交换机的角度所提供的另一种数据通信方法,本发明实施例还提供了另一种数据通信装置,应用于数据通信系统中的第二软件交换机,所述第二软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、设置有OpenFlow协议的第一软件交换机、与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器。
所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为第一虚拟机和第二虚拟机分配IP地址。
如图5所示,本发明实施例所提供的另一种数据通信装置,包括:第二接收模块210、第二获得模块220、第二处理模块230和第二转发模块240。
第二接收装置210,用于接收所述第一软件交换机发送的数据包;
其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包的包头信息中,源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;
当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包的包头信息中:源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址。
第二获得模块220,用于从本地获得由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表;
其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
第二处理模块230,用于基于所述第二流表中的处理动作,处理所述数据包;
第二转发模块240,用于将处理完毕后的所述数据包转发给所述第二虚拟机。
具体的,本发明实施例所提供的另一种数据通信装置,可以预先对OpenFlow网络中的所有租户编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
本方案中,基于OpenFlow实现租户内部同一网段的两个虚拟机跨服务器通信的功能,解决了现有技术中存在的通信资源消耗大的问题,相较于SDN+VxLAN通信方式,其不需要封装外层包头,减少了资源的浪费,而且不会出现由封装包头引起的分片进而降低通信效率的问题。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种数据通信方法,其特征在于,应用于数据通信系统中的第一软件交换机,所述第一软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、设置有OpenFlow协议的第二软件交换机、与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为所述第一虚拟机和所述第二虚拟机分配IP地址;
所述方法包括:
接收所述第一虚拟机发送的数据包;其中,所述数据包的包头信息中,源MAC地址为所述第一虚拟机的MAC地址、源IP地址为所述第一虚拟机的IP地址、目的MAC地址为所述第二虚拟机的MAC地址和目的IP地址为所述第二虚拟机的IP地址;
获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;其中,所述第一流表中的处理动作包括:将源MAC地址修改为第一软件交换机的MAC地址、将源IP地址修改为预定IP地址、将目的IP地址修改为第二软件交换机的IP地址;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第二软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第一软件交换机对应的网关的MAC地址;
基于所述第一流表中所包括的处理动作,处理所述数据包;
将所述第一软件交换机处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将所述第二软件交换机处理完毕后的所述数据包转发给所述第二虚拟机;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
2.根据权利要求1所述的方法,其特征在于,所述获得由控制器下发的与所述数据包相匹配的第一流表,包括:
判断本地是否存在与所述数据包相匹配的第一流表;
如果是,从本地获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;
如果否,将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,以使得所述OpenFlow控制器基于所述标识信息生成第一流表和第二流表并分别下发给所述第一软件交换机和所述第二软件交换机。
3.根据权利要求2所述的方法,其特征在于,所述将包含有所述包头信息的标识信息发送至所述OpenFlow控制器,包括:
将包含有所述包头信息的标识信息按照OpenFlow协议封装后,发送至所述OpenFlow控制器。
4.根据权利要求1~3中任一项所述的方法,其特征在于,预先对OpenFlow网络中的所有租户编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
5.一种数据通信方法,其特征在于,应用于数据通信系统中的第二软件交换机,所述第二软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、设置有OpenFlow协议的第一软件交换机、与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为第一虚拟机和第二虚拟机分配IP地址;
所述方法包括:
接收所述第一软件交换机发送的数据包;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包的包头信息中:源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包的包头信息中:源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;
从本地获得由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址;
基于所述第二流表中的处理动作,处理所述数据包;
将处理完毕后的所述数据包转发给所述第二虚拟机。
6.根据权利要求5所述的方法,其特征在于,预先对OpenFlow网络中的所有虚拟机编号,并对同一租户中的各虚拟机编号,所述第一虚拟机和所述第二虚拟机属于同一租户,所述预定IP地址的32比特位中,分别标识有所述租户、所述第一虚拟机和所述第二虚拟机的编号。
7.一种数据通信装置,其特征在于,应用于数据通信系统中的第一软件交换机,所述第一软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、设置有OpenFlow协议的第二软件交换机、与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为所述第一虚拟机和所述第二虚拟机分配IP地址;
所述装置包括:
第一接收模块,用于接收所述第一虚拟机发送的数据包;其中,所述数据包的包头信息中,源MAC地址为所述第一虚拟机的MAC地址、源IP地址为所述第一虚拟机的IP地址、目的MAC地址为所述第二虚拟机的MAC地址和目的IP地址为所述第二虚拟机的IP地址;
第一获得模块,用于获得由所述OpenFlow控制器下发的与所述数据包相匹配的第一流表;其中,所述第一流表中的处理动作包括:将源MAC地址修改为第一软件交换机的MAC地址、将源IP地址修改为预定IP地址、将目的IP地址修改为第二软件交换机的IP地址;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第二软件交换机的MAC地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述第一流表中的处理动作还包括:将目的MAC地址修改为第一软件交换机对应的网关的MAC地址;
第一处理模块,用于基于所述第一流表中所包括的处理动作,处理所述数据包;
第一转发模块,用于将所述第一软件交换机处理完毕后的所述数据包转发给所述第二软件交换机,以使得:所述第二软件交换机基于由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表处理所述数据包,将所述第二软件交换机处理完毕后的所述数据包转发给所述第二虚拟机;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址。
8.一种数据通信装置,其特征在于,应用于数据通信系统中的第二软件交换机,所述第二软件交换机设置有OpenFlow协议,所述数据通信系统还包括:与所述第二软件交换机相连接的作为数据包接收端的第二虚拟机、设置有OpenFlow协议的第一软件交换机、与所述第一软件交换机相连接的作为数据包发送端的第一虚拟机、与所述第一软件交换机和所述第二软件交换机通信的OpenFlow控制器;所述OpenFlow控制器预先为第一软件交换机和第二软件交换机分别分配MAC地址、请求对应在承载网络中的IP地址并获取对应的网关的MAC地址,预先为第一虚拟机和第二虚拟机分配IP地址;
所述装置包括:
第二接收装置,用于接收所述第一软件交换机发送的数据包;其中,当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址处于同一网段时,所述数据包的包头信息中,源MAC地址为第一软件交换机的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;当所述第一软件交换机的IP地址与所述第二软件交换机的IP地址不处于同一网段时,所述数据包的包头信息中:源MAC地址为第二软件交换机对应的网关的MAC地址,目的MAC地址为第二软件交换机的MAC地址,源IP地址为预定IP地址,目的IP地址为第二软件交换机的IP地址;
第二获得模块,用于从本地获得由所述OpenFlow控制器下发的并与所述数据包相匹配的第二流表;其中,所述第二流表中的处理动作包括:将源MAC地址修改为第一虚拟机的MAC地址,将目的MAC地址修改为第二虚拟机的MAC地址,将源IP地址修改为第一虚拟机的IP地址,将目的IP地址修改为第二虚拟机的IP地址;
第二处理模块,用于基于所述第二流表中的处理动作,处理所述数据包;
第二转发模块,用于将处理完毕后的所述数据包转发给所述第二虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610531623.0A CN105933235B (zh) | 2016-07-07 | 2016-07-07 | 数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610531623.0A CN105933235B (zh) | 2016-07-07 | 2016-07-07 | 数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105933235A CN105933235A (zh) | 2016-09-07 |
CN105933235B true CN105933235B (zh) | 2019-02-19 |
Family
ID=56827039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610531623.0A Active CN105933235B (zh) | 2016-07-07 | 2016-07-07 | 数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105933235B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108347493B (zh) * | 2017-01-25 | 2020-06-26 | 华为技术有限公司 | 混合云管理方法、装置和计算设备 |
CN109327416B (zh) * | 2017-07-31 | 2021-07-23 | 北京亿阳信通科技有限公司 | 一种sdn网络中私有云的访问控制方法和装置 |
CN110071918B (zh) * | 2019-04-19 | 2020-10-09 | 北京那镁克科技有限公司 | 一种基于混合云的数据通信方法及装置 |
CN113259387B (zh) * | 2021-06-21 | 2021-09-24 | 江苏天翼安全技术有限公司 | 一种基于虚拟交换的防止蜜罐被控成为跳板机的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104852840A (zh) * | 2015-05-28 | 2015-08-19 | 杭州华三通信技术有限公司 | 一种控制虚拟机之间互访的方法及装置 |
CN105245632A (zh) * | 2015-10-16 | 2016-01-13 | 电子科技大学 | 一种sdn网络中不同网段主机间通信方法 |
CN105515978A (zh) * | 2016-01-08 | 2016-04-20 | 盛科网络(苏州)有限公司 | 实现分布式路由、物理主机接入的方法及装置 |
CN105591955A (zh) * | 2015-10-30 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种报文传输的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8923294B2 (en) * | 2011-06-28 | 2014-12-30 | Polytechnic Institute Of New York University | Dynamically provisioning middleboxes |
-
2016
- 2016-07-07 CN CN201610531623.0A patent/CN105933235B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104852840A (zh) * | 2015-05-28 | 2015-08-19 | 杭州华三通信技术有限公司 | 一种控制虚拟机之间互访的方法及装置 |
CN105245632A (zh) * | 2015-10-16 | 2016-01-13 | 电子科技大学 | 一种sdn网络中不同网段主机间通信方法 |
CN105591955A (zh) * | 2015-10-30 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种报文传输的方法和装置 |
CN105515978A (zh) * | 2016-01-08 | 2016-04-20 | 盛科网络(苏州)有限公司 | 实现分布式路由、物理主机接入的方法及装置 |
Non-Patent Citations (2)
Title |
---|
On Effective Virtual Networks Interconnection;Huang Tao 等;《China Communications》;20160315;全文 |
基于OVS的SDN移动自组网络架构设计及实现;晏思宇 等;《无线电通信技术》;20160603;全文 |
Also Published As
Publication number | Publication date |
---|---|
CN105933235A (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3313025B1 (en) | Data packet forwarding | |
CN110266592B (zh) | Srv6网络与ip mpls网络的通信方法及装置 | |
CN104618194B (zh) | 软件定义网络报文监控方法和sdn控制器、交换设备 | |
CN104935516B (zh) | 基于软件定义网络的通信系统及方法 | |
CN109218178A (zh) | 一种报文处理方法及网络设备 | |
CN103546374B (zh) | 一种边缘二层网络中转发报文的方法和装置 | |
CN105591863B (zh) | 一种实现虚拟私有云网络与外部网络互通的方法和装置 | |
CN104702479B (zh) | Sdn网络中建立隧道的方法和装置 | |
CN105634956B (zh) | 一种报文转发方法、装置和系统 | |
WO2014136864A1 (ja) | パケット書換装置、制御装置、通信システム、パケット送信方法及びプログラム | |
CN108574616A (zh) | 一种处理路由的方法、设备及系统 | |
CN104601432A (zh) | 一种报文传输方法和设备 | |
CN105933235B (zh) | 数据通信方法及装置 | |
US20140064272A1 (en) | Providing a layer-3 interface | |
CN104135446B (zh) | 基于SDN实现IPv4向IPv6过渡的系统及方法 | |
WO2022062506A1 (zh) | 一种数据处理方法、装置、存储介质及电子装置 | |
CN104780088A (zh) | 一种业务报文的传输方法和设备 | |
CN104320267A (zh) | 基于SDN框架实现VxLAN的ARP广播抑制系统及方法 | |
CN106559302A (zh) | 单播隧道建立方法、装置和系统 | |
TWI759571B (zh) | 基於流表的資料傳送方法 | |
CN102546349B (zh) | 一种报文转发方法和设备 | |
CN101110746B (zh) | 运营商边缘设备、城域以太接入网及其处理数据的方法 | |
CN105453513A (zh) | 报文转发方法、转发表项下发方法及网络设备 | |
CN109936492A (zh) | 一种通过隧道传输报文的方法、装置和系统 | |
CN101908996A (zh) | 接入私有网络的方法、数据传输方法及装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |