CN109617816B - 一种数据报文的传输方法和装置 - Google Patents
一种数据报文的传输方法和装置 Download PDFInfo
- Publication number
- CN109617816B CN109617816B CN201910030886.7A CN201910030886A CN109617816B CN 109617816 B CN109617816 B CN 109617816B CN 201910030886 A CN201910030886 A CN 201910030886A CN 109617816 B CN109617816 B CN 109617816B
- Authority
- CN
- China
- Prior art keywords
- address
- mac address
- flow table
- data message
- source
- 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000005540 biological transmission Effects 0.000 title claims description 40
- 230000004044 response Effects 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 231100000572 poisoning Toxicity 0.000 description 1
- 230000000607 poisoning effect Effects 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供一种数据报文的传输方法和装置,该方法包括:虚拟交换机接收来自源设备的第一数据报文,并判断当前是否存在所述第一数据报文对应的第一流表;如果不存在,则根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表,并利用所述第一流表将第一数据报文发送给目的设备;虚拟交换机接收来自目的设备的第二数据报文,并利用第一数据报文对应的第二流表,将第二数据报文发送给源设备。通过本发明的技术方案,可以不用SDN控制器给虚拟交换机下发第一流表和第二流表,而是虚拟交换机自身生成第一流表和第二流表,提高了数据报文的转发效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据报文的传输方法和装置。
背景技术
随着数据中心业务的日益增加,用户需求不断提高,数据中心的规模和功能日趋复杂,管理难度越来越高。这种情况下,整合数据中心、降低数据中心的管理成本,充分挖掘现有资源能力以适应更高的业务需求,成为数据中心的重要任务。对数据中心资源进行虚拟化,成为数据中心整合的重要趋势。虚拟化技术通过对物理资源提供的服务进行抽象化,让资源使用者和管理者不关心对象的细节,从而降低资源使用和管理的复杂度,提高使用效率。
数据中心的虚拟化技术主要包括三个方面:网络虚拟化、存储虚拟化和服务器虚拟化。在服务器虚拟化技术中,通过专用的虚拟化软件,可以在一个物理服务器上虚拟出多个VM(Virtual Machine,虚拟机),每个VM独立运行,互不影响,都有自己的操作系统、应用程序和虚拟的硬件环境。
如图1所示,为数据中心的一种典型网络拓扑示意图,假设VM1、VM2和VM3属于Subnet1(子网1),VM4属于Subnet2。VM1需要与VM2进行通信时,需要先获得VM2的MAC(MediaAccess Control,媒体访问控制)地址,因此,VM1发送针对VM2的ARP(Address ResolutionProtocol,地址解析协议)请求报文,该ARP请求报文在虚拟交换机1的所有端口广播,并通过VM2返回的ARP响应报文获得VM2的MAC地址。VM1需要与VM3进行通信时,VM1发送的针对VM3的ARP请求报文会在虚拟交换机1的所有端口广播。VM1需要与VM4进行通信时,由于VM1和VM4位于不同的Subnet,因此VM1需要先获得网关设备的MAC地址,并发送针对网关设备的ARP请求报文,该ARP请求报文同样在虚拟交换机1的所有端口广播。
在上述方式下,ARP请求报文会在整个网络中广播,当网络规模扩大时,必然导致网络中存在大量的ARP请求报文,严重时甚至会导致网络拥塞。
发明内容
本发明提供一种数据报文的传输方法,针对源设备和目的设备之间的数据报文传输过程,所述方法包括以下步骤:
虚拟交换机接收来自源设备的第一数据报文,并判断当前是否存在所述第一数据报文对应的第一流表;如果不存在,则根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表,并利用所述第一流表将第一数据报文发送给目的设备;
所述虚拟交换机接收来自所述目的设备的第二数据报文,并利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备。
所述第一流表的匹配选项包括:目的媒体访问控制MAC地址为第一数据报文的目的MAC地址,目的IP地址为第一数据报文的目的IP地址,源MAC地址为第一数据报文的源MAC地址,源IP地址为第一数据报文的源IP地址;所述第一流表的动作选项包括:源MAC地址为所述第三流表中记录的源MAC地址,目的MAC地址为所述第三流表中记录的目的MAC地址,出端口为所述第三流表中记录的出端口;所述第二流表的匹配选项包括:目的MAC地址为所述第三流表中记录的源MAC地址,目的IP地址为第一数据报文的源IP地址,源MAC地址为所述第三流表中记录的目的MAC地址,源IP地址为第一数据报文的目的IP地址;所述第二流表的动作选项包括:源MAC地址为第一数据报文的目的MAC地址,目的MAC地址为第一数据报文的源MAC地址,出端口为第一数据报文在所述虚拟交换机上对应的接收端口。
所述方法进一步包括:
当设备为虚拟机时,所述虚拟交换机接收SDN控制器下发的虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口,并利用所述虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述虚拟机对应的第三流表;当所述虚拟机由所述虚拟交换机管理时,所述虚拟机对应的MAC地址为所述虚拟机的MAC地址,当所述虚拟机由其它虚拟交换机管理时,所述虚拟机对应的MAC地址为所述其它虚拟交换机的MAC地址;其中,所述第三流表的匹配选项包括:所述虚拟机的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述虚拟机对应的MAC地址,出端口为所述虚拟机在所述虚拟交换机上对应的端口;当设备为网关设备时,所述虚拟交换机接收所述SDN控制器下发的网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表;或者,所述虚拟交换机接收所述SDN控制器下发的网关设备的IP地址,并利用所述网关设备的IP地址向所述网关设备发送ARP请求报文,并接收所述网关设备返回的ARP应答报文,并利用所述ARP应答报文学习所述网关设备的MAC地址、所述网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表;其中,所述第三流表的匹配选项包括:所述网关设备的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述网关设备对应的MAC地址,出端口为所述网关设备在所述虚拟交换机上对应的端口。
所述虚拟交换机根据所述第一数据报文关联的IP地址获取对应的第三流表的过程,具体包括:
当所述第一数据报文的源IP地址和目的IP地址位于相同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的目的IP地址,所述虚拟交换机获得所述第一数据报文的目的IP地址对应的第三流表;或者,
当所述第一数据报文的源IP地址和目的IP地址位于不同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,所述虚拟交换机确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表;或者,
当所述虚拟交换机无法识别出所述第一数据报文的目的IP地址所属子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,所述虚拟交换机确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表。
所述虚拟交换机利用所述第一流表将第一数据报文发送给目的设备的过程,具体包括:所述虚拟交换机将第一数据报文的目的MAC地址修改为第一流表中记录的目的MAC地址,将第一数据报文的源MAC地址修改为第一流表中记录的源MAC地址,通过第一流表中记录的出端口发送修改后的第一数据报文;所述虚拟交换机利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备,具体包括:所述虚拟交换机将所述第二数据报文的目的MAC地址修改为所述第二流表中记录的目的MAC地址,将所述第二数据报文的源MAC地址修改为所述第二流表中记录的源MAC地址,并通过所述第二流表中记录的出端口发送修改后的第二数据报文。
本发明提供一种数据报文的传输装置,应用在虚拟交换机上,针对源设备和目的设备之间的数据报文传输过程,所述数据报文的传输装置具体包括:
判断模块,用于接收来自源设备的第一数据报文,并判断当前是否存在所述第一数据报文对应的第一流表;
生成模块,用于当判断结果为不存在时,则根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表;
发送模块,用于利用所述第一流表将第一数据报文发送给目的设备;
接收来自所述目的设备的第二数据报文,并利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备。
所述第一流表的匹配选项包括:目的媒体访问控制MAC地址为第一数据报文的目的MAC地址,目的IP地址为第一数据报文的目的IP地址,源MAC地址为第一数据报文的源MAC地址,源IP地址为第一数据报文的源IP地址;所述第一流表的动作选项包括:源MAC地址为所述第三流表中记录的源MAC地址,目的MAC地址为所述第三流表中记录的目的MAC地址,出端口为所述第三流表中记录的出端口;所述第二流表的匹配选项包括:目的MAC地址为所述第三流表中记录的源MAC地址,目的IP地址为第一数据报文的源IP地址,源MAC地址为所述第三流表中记录的目的MAC地址,源IP地址为第一数据报文的目的IP地址;所述第二流表的动作选项包括:源MAC地址为第一数据报文的目的MAC地址,目的MAC地址为第一数据报文的源MAC地址,出端口为第一数据报文在所述虚拟交换机上对应的接收端口。
所述生成模块,还用于当设备为虚拟机时,接收软件定义网络SDN控制器下发的虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口,并利用所述虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述虚拟机对应的第三流表;其中,当所述虚拟机由所述虚拟交换机管理时,所述虚拟机对应的MAC地址为所述虚拟机的MAC地址,当所述虚拟机由其它虚拟交换机管理时,所述虚拟机对应的MAC地址为所述其它虚拟交换机的MAC地址;其中,所述第三流表的匹配选项包括:所述虚拟机的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述虚拟机对应的MAC地址,出端口为所述虚拟机在所述虚拟交换机上对应的端口;
当设备为网关设备时,接收SDN控制器下发的网关设备的IP地址和MAC地址、网关设备在虚拟交换机上对应的端口,并利用网关设备的IP地址和MAC地址、网关设备在虚拟交换机上对应的端口、虚拟交换机的MAC地址生成所述网关设备对应的第三流表;或者,接收SDN控制器下发的网关设备的IP地址,并利用所述网关设备的IP地址向网关设备发送ARP请求报文,并接收网关设备返回的ARP应答报文,并利用所述ARP应答报文学习所述网关设备的MAC地址、网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表;其中,所述第三流表的匹配选项包括:所述网关设备的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述网关设备对应的MAC地址,出端口为所述网关设备在所述虚拟交换机上对应的端口。
所述生成模块,具体用于在根据所述第一数据报文关联的IP地址获取对应的第三流表的过程中,当所述第一数据报文的源IP地址和目的IP地址位于相同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的目的IP地址,获得所述第一数据报文的目的IP地址对应的第三流表;或者,当所述第一数据报文的源IP地址和目的IP地址位于不同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表;或者,当无法识别出所述第一数据报文的目的IP地址所属子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表。
所述发送模块,具体用于在利用所述第一流表将所述第一数据报文发送给所述目的设备的过程中,将所述第一数据报文的目的MAC地址修改为所述第一流表中记录的目的MAC地址,将所述第一数据报文的源MAC地址修改为所述第一流表中记录的源MAC地址,并通过所述第一流表中记录的出端口发送修改后的第一数据报文;在利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备的过程中,将所述第二数据报文的目的MAC地址修改为所述第二流表中记录的目的MAC地址,将所述第二数据报文的源MAC地址修改为所述第二流表中记录的源MAC地址,并通过所述第二流表中记录的出端口发送修改后的第二数据报文。
基于上述技术方案,本发明实施例中,可以不用SDN控制器给虚拟交换机下发第一流表和第二流表,而是虚拟交换机自身生成第一流表和第二流表,并利用第一流表和第二流表发送数据报文,提高了数据报文的转发效率。
附图说明
图1是数据中心的一种典型网络拓扑的示意图;
图2是本发明一种实施方式中的应用场景示意图;
图3是本发明一种实施方式中的数据报文的传输方法的流程图;
图4是本发明一种实施方式中的虚拟交换机的逻辑结构图;
图5是本发明一种实施方式中的数据报文的传输装置的逻辑结构图。
具体实施方式
针对现有技术中存在的问题,本发明实施例中提出一种数据报文的传输方法,该方法应用在源设备和目的设备之间的数据报文传输过程中。以图2为本发明实施例的应用场景示意图,SDN(Software Defined Network,软件定义网络)控制器通过控制网络分别与虚拟交换机1、虚拟交换机2、网关设备三层互通。互联设备(如互联交换机)保证虚拟交换机1与虚拟交换机2之间能够通信,保证虚拟交换机与网关设备之间能够通信。网关设备负责数据报文的跨Subnet通信。VM1、VM2和VM3属于Subnet1,VM4属于Subnet2。
本发明实施例中,在源设备需要与目的设备进行通信时,该源设备需要首先获得目的设备的MAC地址。基于此,源设备发送针对目的设备的ARP请求报文,且虚拟交换机会接收到来自该源设备的ARP请求报文。其中,该ARP请求报文的源MAC地址为该源设备的MAC地址,源IP地址为该源设备的IP地址,目的MAC地址为广播MAC地址,目的IP地址为目的设备的IP地址。
虚拟交换机在接收到来自源设备的ARP请求报文之后,直接伪造该ARP请求报文对应的ARP应答报文,并向源设备返回该ARP应答报文,而不是在整个网络中广播该ARP请求报文,从而减少网络中的ARP请求报文的数量,避免大量ARP请求报文在网络中广播的问题,避免大量ARP请求报文导致网络拥塞的情况。其中,ARP应答报文的源IP地址为目的设备的IP地址(即ARP请求报文的目的IP地址),源MAC地址为本虚拟交换机的MAC地址,目的MAC地址为源设备的MAC地址(即ARP请求报文的源MAC地址),目的IP地址为源设备的IP地址(即ARP请求报文的源IP地址)。
源设备在接收到来自虚拟交换机的ARP应答报文之后,利用虚拟交换机的MAC地址向目的设备发送第一数据报文。其中,为了区分方便,将源设备发送给目的设备的数据报文称为第一数据报文,并将目的设备发送给源设备的数据报文称为第二数据报文。
其中,源设备在发送针对目的设备的ARP请求报文之后,将本源设备收到的ARP应答报文确认为目的设备返回的ARP应答报文。基于此,源设备在向目的设备发送第一数据报文时,会利用ARP应答报文中携带的虚拟交换机的MAC地址向目的设备发送第一数据报文。其中,该第一数据报文的目的MAC地址为虚拟交换机的MAC地址,目的IP地址为目的设备的IP地址,源MAC地址为该源设备的MAC地址,源IP地址为该源设备的IP地址。
在图2所示的应用场景下,VM1需要与VM2(或VM3)进行通信时,虚拟交换机1在接收到针对VM2(或VM3)的ARP请求报文之后,向VM1发送ARP应答报文,该ARP应答报文的源IP地址为VM2(或VM3)的IP地址,源MAC地址为虚拟交换机1的MAC地址;VM1向VM2发送的第一数据报文的目的MAC地址为虚拟交换机1的MAC地址,目的IP地址为VM2(或VM3)的IP地址。VM1需要与VM4进行通信时,虚拟交换机1在接收到针对网关设备的ARP请求报文之后,向VM1发送ARP应答报文,该ARP应答报文的源IP地址为网关设备的IP地址,源MAC地址为虚拟交换机1的MAC地址;VM1向VM4发送的第一数据报文的目的MAC地址为虚拟交换机1的MAC地址,目的IP地址为网关设备的IP地址。同理,虚拟交换机1收到来自VM2的ARP请求报文的处理、虚拟交换机2收到来自VM3或者VM4的ARP请求报文的处理,与上述处理过程类似,后续不再赘述。
在上述应用场景下,针对源设备和目的设备之间的数据报文传输过程,如图3所示,该数据报文的传输方法具体可以包括以下步骤:
步骤301,虚拟交换机接收来自源设备的第一数据报文,并判断当前是否存在第一数据报文对应的第一流表;如果不存在,则根据第一数据报文关联的IP地址获取对应的第三流表,并利用第一数据报文和第三流表生成第一数据报文转发所需的第一流表和第二流表,并利用该第一流表将第一数据报文发送给目的设备;如果存在,则直接利用该第一流表将第一数据报文发送给目的设备。
第一流表的匹配选项包括:目的MAC地址为第一数据报文的目的MAC地址,目的IP地址为第一数据报文的目的IP地址,源MAC地址为第一数据报文的源MAC地址,源IP地址为第一数据报文的源IP地址;第一流表的动作选项包括:源MAC地址为第三流表中记录的源MAC地址,目的MAC地址为第三流表中记录的目的MAC地址,出端口为第三流表中记录的出端口。第二流表的匹配选项包括:目的MAC地址为第三流表中记录的源MAC地址,目的IP地址为第一数据报文的源IP地址,源MAC地址为第三流表中记录的目的MAC地址,源IP地址为第一数据报文的目的IP地址;第二流表的动作选项包括:源MAC地址为第一数据报文的目的MAC地址,目的MAC地址为第一数据报文的源MAC地址,出端口为第一数据报文在虚拟交换机上对应的接收端口。
虚拟交换机在接收到第一数据报文后,如果第一数据报文的目的MAC地址与第一流表的匹配选项的目的MAC地址相同,且第一数据报文的目的IP地址与该第一流表的匹配选项的目的IP地址相同,且第一数据报文的源MAC地址与该第一流表的匹配选项的源MAC地址相同,且第一数据报文的源IP地址与该第一流表的匹配选项的源IP地址相同,则该第一流表为第一数据报文对应的第一流表,否则,当前不存在第一数据报文对应的第一流表。
本发明实施例中,当设备为虚拟机时,虚拟交换机接收SDN控制器下发的虚拟机的IP地址、虚拟机对应的MAC地址、该虚拟机在虚拟交换机上对应的端口,并利用该虚拟机的IP地址、虚拟机对应的MAC地址、该虚拟机在虚拟交换机上对应的端口、本虚拟交换机的MAC地址生成该虚拟机对应的第三流表;其中,当虚拟机由本虚拟交换机管理时,则虚拟机对应的MAC地址为该虚拟机的MAC地址,当虚拟机由其它虚拟交换机管理时,则虚拟机对应的MAC地址为该其它虚拟交换机的MAC地址。其中,第三流表的匹配选项包括:虚拟机的IP地址;动作选项包括:源MAC地址为虚拟交换机的MAC地址,目的MAC地址为虚拟机对应的MAC地址,出端口为虚拟机在虚拟交换机上对应的端口。
当设备为网关设备时,虚拟交换机接收SDN控制器下发的网关设备的IP地址和MAC地址、该网关设备在虚拟交换机上对应的端口,并利用该网关设备的IP地址和MAC地址、该网关设备在虚拟交换机上对应的端口、本虚拟交换机的MAC地址生成该网关设备对应的第三流表;或者,当设备为网关设备时,虚拟交换机接收SDN控制器下发的网关设备的IP地址,并利用该网关设备的IP地址向该网关设备发送ARP请求报文,并接收网关设备返回的ARP应答报文,并利用该ARP应答报文学习网关设备的MAC地址、该网关设备在虚拟交换机上对应的端口,并利用该网关设备的IP地址和MAC地址、该网关设备在虚拟交换机上对应的端口、本虚拟交换机的MAC地址生成该网关设备对应的第三流表。其中,第三流表的匹配选项包括:网关设备的IP地址;动作选项包括:源MAC地址为虚拟交换机的MAC地址,目的MAC地址为网关设备对应的MAC地址,出端口为网关设备在虚拟交换机上对应的端口。
在图1中,假设VM1的IP地址为10.1.1.1,MAC地址为0000-2222-3333,VM2的IP地址为10.1.1.2,MAC地址为0000-2222-4444,VM3的IP地址为10.1.1.3,MAC地址为0000-3333-4444,VM4的IP地址为10.1.2.4,MAC地址为0000-3333-5555,虚拟交换机1的MAC地址为0000-2222-2222,虚拟交换机2的MAC地址为0000-3333-3333。虚拟交换机1生成的各VM的第三流表如表1所示,虚拟交换机2生成的各VM的第三流表如表2所示。
表1
表2
匹配选项 | 动作选项 |
10.1.1.1 | 目的MAC地址:0000-2222-2222,源MAC地址:0000-3333-3333,出端口:端口6 |
10.1.1.2 | 目的MAC地址:0000-2222-2222,源MAC地址:0000-3333-3333,出端口:端口6 |
10.1.1.3 | 目的MAC地址:0000-3333-4444,源MAC地址:0000-3333-3333,出端口:端口4 |
10.1.2.4 | 目的MAC地址:0000-3333-5555,源MAC地址:0000-3333-3333,出端口:端口5 |
在图1中,假设网关设备的MAC地址为0000-1111-1111,针对Subnet1(10.1.1.0/24),网关设备的IP地址为10.1.1.254,针对Subnet2(10.1.2.0/24),网关设备的IP地址为10.1.2.254,则虚拟交换机1生成的网关设备的第三流表如表3所示,虚拟交换机2生成的网关设备的第三流表如表4所示。
表3
匹配选项 | 动作选项 |
10.1.1.254 | 目的MAC地址:0000-1111-1111,源MAC地址:0000-2222-2222,出端口:端口3 |
10.1.2.254 | 目的MAC地址:0000-1111-1111,源MAC地址:0000-2222-2222,出端口:端口3 |
表4
匹配选项 | 动作选项 |
10.1.1.254 | 目的MAC地址:0000-1111-1111,源MAC地址:0000-3333-3333,出端口:端口6 |
10.1.2.254 | 目的MAC地址:0000-1111-1111,源MAC地址:0000-3333-3333,出端口:端口6 |
基于表1、表2、表3和表4,通过组合表1和表3,得到虚拟交换机1维护的第三流表,通过组合表2和表4,得到虚拟交换机2维护的第三流表。
SDN控制器可以收集各VM的信息(如VM的IP地址、VM对应的MAC地址、VM在虚拟交换机上对应的端口等),具体收集方式不再赘述,通过将收集的各VM的信息下发给虚拟交换机1和虚拟交换机2,由虚拟交换机1生成表1所示的第三流表,由虚拟交换机2生成表2所示的第三流表。
SDN控制器可以收集网关设备的信息(如网关设备的MAC地址;网关设备在虚拟交换机上对应的端口;针对Subnet1(10.1.1.0/24),网关设备的IP地址;针对Subnet2(10.1.2.0/24),网关设备的IP地址等),具体收集方式不再赘述。进一步的,SDN控制器可以将收集的网关设备的所有信息下发给虚拟交换机1和虚拟交换机2。虚拟交换机1生成表3所示的第三流表,虚拟交换机2生成表4所示的第三流表。或者,SDN控制器将网关设备的IP地址(如针对Subnet1的IP地址和针对Subnet2的IP地址)下发给虚拟交换机1和虚拟交换机2。虚拟交换机1发送针对该网关设备的IP地址的ARP请求报文,并接收网关设备返回的ARP应答报文,并基于该ARP应答报文学习网关设备的MAC地址、网关设备在虚拟交换机上对应的端口,继而可以生成表3所示的第三流表。同理,虚拟交换机2生成表4所示的第三流表。
SDN控制器在收集到网关设备的信息之后,还可以将网关设备的如下信息(针对Subnet1(10.1.1.0/24),网关设备的IP地址10.1.1.254;针对Subnet2(10.1.2.0/24),网关设备的IP地址10.1.2.254等)下发给该网关设备,由网关设备配置IP地址10.1.1.254和IP地址10.1.2.254。进一步的,针对虚拟交换机2发送给虚拟交换机1的需要经过网关设备转发的数据报文,则SDN控制器还可以在网关设备上下发表5所示的流表。针对虚拟交换机1发送给虚拟交换机2的需要经过网关设备转发的数据报文,则SDN控制器还可以在网关设备上下发表6所示的流表。SDN控制器下发该流表的过程不再赘述。网关设备组合表5所示的流表和表6所示的流表,用于指导数据报文的传输。
表5
匹配选项 | 动作选项 |
10.1.1.1 | 目的MAC地址:0000-2222-2222,源MAC地址:0000-1111-1111,出端口:端口7 |
10.1.1.2 | 目的MAC地址:0000-2222-2222,源MAC地址:0000-1111-1111,出端口:端口7 |
表6
匹配选项 | 动作选项 |
10.1.1.3 | 目的MAC地址:0000-3333-3333,源MAC地址:0000-1111-1111,出端口:端口7 |
10.1.2.4 | 目的MAC地址:0000-3333-3333,源MAC地址:0000-1111-1111,出端口:端口7 |
本发明实施例中,虚拟交换机根据第一数据报文关联的IP地址获取对应的第三流表的过程,具体包括但不限于:当第一数据报文的源IP地址和目的IP地址位于相同的子网时,第一数据报文关联的IP地址为第一数据报文的目的IP地址,虚拟交换机获得第一数据报文的目的IP地址对应的第三流表;或者,当第一数据报文的源IP地址和目的IP地址位于不同的子网时,第一数据报文关联的IP地址为第一数据报文的源IP地址所属子网的网关设备的IP地址,虚拟交换机确定第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得网关设备的IP地址对应的第三流表;或者,当虚拟交换机无法识别出第一数据报文的目的IP地址所属子网时,第一数据报文关联的IP地址为第一数据报文的源IP地址所属子网的网关设备的IP地址,虚拟交换机确定第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得网关设备的IP地址对应的第三流表。
进一步的,基于得到的第一数据报文对应的第三流表以及该第一数据报文,虚拟交换机可以生成该第一数据报文转发所需的第一流表和第二流表。
在图1所示的应用场景下,针对VM1和VM2的数据报文传输过程,第一数据报文的目的MAC地址为0000-2222-2222,目的IP地址为10.1.1.2,源MAC地址为0000-2222-3333,源IP地址为10.1.1.1。由于源IP地址和目的IP地址位于相同的子网(即Subnet1),因此,虚拟交换机1从表1中获得目的IP地址10.1.1.2对应的第三流表。基于第一数据报文和该第三流表,可以得到表7所示的第一流表,并得到表8所示的第二流表。
表7
表8
在图1所示的应用场景下,针对VM1和VM3的数据报文传输过程,第一数据报文的目的MAC地址为0000-2222-2222,目的IP地址为10.1.1.3,源MAC地址为0000-2222-3333,源IP地址为10.1.1.1。由于源IP地址和目的IP地址位于相同的子网(即Subnet1),因此,虚拟交换机1从表1中获得目的IP地址10.1.1.3对应的第三流表。基于第一数据报文和该第三流表,可以得到表9所示的第一流表,并得到表10所示的第二流表。
表9
表10
在图1所示的应用场景下,针对VM1和VM4的数据报文传输过程,第一数据报文的目的MAC地址为0000-2222-2222,目的IP地址为10.1.2.4,源MAC地址为0000-2222-3333,源IP地址为10.1.1.1。由于源IP地址和目的IP地址位于不同的子网(即Subnet1和Subnet2),因此,虚拟交换机1确定源IP地址10.1.1.1所属子网的网关设备的IP地址10.1.1.254,并从表3中获得IP地址10.1.1.254对应的第三流表。基于第一数据报文和该第三流表,可以得到表11所示的第一流表,并得到表12所示的第二流表。
表11
表12
在图1所示的应用场景下,针对VM1和外部网络的数据报文传输过程,第一数据报文的目的MAC地址为0000-2222-2222,目的IP地址为外部网络的IP地址,源MAC地址为0000-2222-3333,源IP地址为10.1.1.1。由于无法识别出目的IP地址所属子网,因此,虚拟交换机1确定源IP地址10.1.1.1所属子网的网关设备的IP地址10.1.1.254,并从表3中获得IP地址10.1.1.254对应的第三流表。基于第一数据报文和该第三流表,得到的第一流表与表11类似,只是匹配选项的目的IP地址为外部网络的IP地址,而且得到的第二流表与表12类似,只是匹配选项的源IP地址为外部网络的IP地址。
本发明实施例中,虚拟交换机利用第一流表将第一数据报文发送给目的设备的过程,具体可以包括但不限于如下发送方式:虚拟交换机将该第一数据报文的目的MAC地址修改为该第一流表中记录的目的MAC地址,并将该第一数据报文的源MAC地址修改为该第一流表中记录的源MAC地址,并通过该第一流表中记录的出端口发送修改后的第一数据报文。
针对VM1和VM2的数据报文传输过程,虚拟交换机1将第一数据报文的目的MAC地址0000-2222-2222修改为表7所示的第一流表中记录的目的MAC地址0000-2222-4444,并将第一数据报文的源MAC地址0000-2222-3333修改为表7所示的第一流表中记录的源MAC地址0000-2222-2222,并通过表7所示的第一流表中记录的出端口(即端口2)发送修改后的第一数据报文,此时该第一数据报文被发送给VM2。至此,完成数据报文的传输过程。
针对VM1和VM3的数据报文传输过程,虚拟交换机1将第一数据报文的目的MAC地址0000-2222-2222修改为表9所示的第一流表中记录的目的MAC地址0000-3333-3333,并将第一数据报文的源MAC地址0000-2222-3333修改为表9所示的第一流表中记录的源MAC地址0000-2222-2222,通过表9所示的第一流表中记录的出端口(即端口3)发送修改后的第一数据报文,此时第一数据报文被发送给互联设备。由于第一数据报文的目的MAC地址0000-3333-3333为虚拟交换机2的MAC地址,因此互联设备将第一数据报文发送给虚拟交换机2。虚拟交换机2在接收到第一数据报文后,获知第一数据报文的目的MAC地址为0000-3333-3333,目的IP地址为10.1.1.3,源MAC地址为0000-2222-2222,源IP地址为10.1.1.1,从表2中获得目的IP地址10.1.1.3对应的第三流表。基于第一数据报文和该第三流表,得到表13所示的第一流表,得到表14所示的第二流表。虚拟交换机2将第一数据报文的目的MAC地址0000-3333-3333修改为表13所示的第一流表中记录的目的MAC地址0000-3333-4444,将第一数据报文的源MAC地址0000-2222-2222修改为表13所示的第一流表中记录的源MAC地址0000-3333-3333,通过表13所示的第一流表中记录的出端口(即端口4)发送修改后的第一数据报文,此时该第一数据报文被发送给VM3。至此,完成数据报文的传输过程。
表13
表14
针对VM1和VM4的数据报文传输过程,虚拟交换机1将第一数据报文的目的MAC地址0000-2222-2222修改为表11所示的第一流表中记录的目的MAC地址0000-1111-1111,并将第一数据报文的源MAC地址0000-2222-3333修改为表11所示的第一流表中记录的源MAC地址0000-2222-2222,通过表11所示的第一流表中记录的出端口(即端口3)发送修改后的第一数据报文,此时第一数据报文被发送给互联设备。由于第一数据报文的目的MAC地址0000-1111-1111为网关设备的MAC地址,因此互联设备将第一数据报文发送给网关设备。网关设备在收到第一数据报文后,通过使用目的IP地址10.1.2.4查询表5和表6,并将第一数据报文的目的MAC地址0000-1111-1111修改为表6中记录的目的MAC地址0000-3333-3333,将第一数据报文的源MAC地址0000-2222-2222修改为表6中记录的源MAC地址0000-1111-1111,并通过表6中记录的出端口(即端口7)发送修改后的第一数据报文,此时第一数据报文被发送给互联设备。由于第一数据报文的目的MAC地址0000-3333-3333为虚拟交换机2的MAC地址,因此互联设备将第一数据报文发送给虚拟交换机2。虚拟交换机2在收到第一数据报文后,获知第一数据报文的目的MAC地址为0000-3333-3333,目的IP地址为10.1.2.4,源MAC地址为0000-1111-1111,源IP地址为10.1.1.1,从表2中获得目的IP地址10.1.2.4对应的第三流表。基于第一数据报文和该第三流表,得到表15所示的第一流表,得到表16所示的第二流表。虚拟交换机2将第一数据报文的目的MAC地址0000-3333-3333修改为表15所示的第一流表中记录的目的MAC地址0000-3333-5555,将第一数据报文的源MAC地址0000-1111-1111修改为表15所示的第一流表中记录的源MAC地址0000-3333-3333,通过表15所示的第一流表中记录的出端口(即端口5)发送修改后的第一数据报文,此时该第一数据报文被发送给VM4。至此,完成数据报文的传输过程。
表15
表16
针对VM1和外部网络的数据报文传输过程,虚拟交换机1将第一数据报文的目的MAC地址0000-2222-2222修改为表11(以表11为例)所示的第一流表中记录的目的MAC地址0000-1111-1111,并将第一数据报文的源MAC地址0000-2222-3333修改为表11所示的第一流表中记录的源MAC地址0000-2222-2222,通过表11所示的第一流表中记录的出端口(即端口3)发送第一数据报文,此时第一数据报文被发送给互联设备。由于第一数据报文的目的MAC地址0000-1111-1111为网关设备的MAC地址,因此互联设备将第一数据报文发送给网关设备。网关设备在收到第一数据报文后,由于第一数据报文的目的IP地址为外部网络的IP地址,因此将第一数据报文发送给外部网络,具体发送方式不再赘述。至此,完成数据报文的传输过程。
步骤302,虚拟交换机接收来自目的设备的第二数据报文,并利用第一数据报文对应的第二流表,将该第二数据报文发送给源设备。
本发明实施例中,虚拟交换机利用第一数据报文对应的第二流表,将该第二数据报文发送给源设备的过程,具体可以包括但不限于如下方式:虚拟交换机将该第二数据报文的目的MAC地址修改为该第二流表中记录的目的MAC地址,将该第二数据报文的源MAC地址修改为该第二流表中记录的源MAC地址,并通过该第二流表中记录的出端口发送修改后的第二数据报文。
针对VM2和VM1的数据报文传输过程,虚拟交换机1在收到来自VM2的第二数据报文后,基于表8所示的第二流表,将第二数据报文的目的MAC地址修改为表8所示的第二流表中记录的目的MAC地址0000-2222-3333,并将第二数据报文的源MAC地址修改为表8所示的第二流表中记录的源MAC地址0000-2222-2222,并通过表8所示的第二流表中记录的出端口(即端口1)发送修改后的第二数据报文,此时该第二数据报文被发送给VM1。
针对VM3和VM1的数据报文传输过程,虚拟交换机2在收到来自VM3的第二数据报文后,基于表14所示的第二流表,将第二数据报文的目的MAC地址修改为表14所示的第二流表中记录的目的MAC地址0000-2222-2222,将第二数据报文的源MAC地址修改为表14所示第二流表中记录的源MAC地址0000-3333-3333,通过表14所示的第二流表中记录的出端口(即端口6)发送修改后的第二数据报文,此时第二数据报文被发送给互联设备。由于第二数据报文的目的MAC地址0000-2222-2222为虚拟交换机1的MAC地址,因此互联设备将第二数据报文发送给虚拟交换机1。虚拟交换机1在收到第二数据报文后,基于表10所示的第二流表,将第二数据报文的目的MAC地址修改为表10所示的第二流表中记录的目的MAC地址0000-2222-3333,将第二数据报文的源MAC地址修改为表10所示的第二流表中记录的源MAC地址0000-2222-2222,并通过表10所示的第二流表中记录的出端口(即端口1)发送修改后的第二数据报文,此时该第二数据报文被发送给VM1。
针对VM4和VM1的数据报文传输过程,虚拟交换机2在接收到来自VM4的第二数据报文之后,基于表16所示的第二流表,将该第二数据报文的目的MAC地址修改为表16所示的第二流表中所记录的目的MAC地址0000-1111-1111,并将第二数据报文的源MAC地址修改为表16所示的第二流表中记录的源MAC地址0000-3333-3333,并通过表16所示的第二流表中记录的出端口(即端口6)发送修改后的第二数据报文,此时第二数据报文被发送给互联设备。由于第二数据报文的目的MAC地址0000-1111-1111为网关设备的MAC地址,因此互联设备将第二数据报文发送给网关设备。网关设备在接收到第二数据报文之后,通过使用目的IP地址10.1.1.1查询表5和表6,并将第二数据报文的目的MAC地址修改为表5中记录的目的MAC地址0000-2222-2222,将第二数据报文的源MAC地址修改为表5中记录的源MAC地址0000-1111-1111,并通过表5中记录的出端口(即端口7)发送修改后的第二数据报文,此时第二数据报文被发送给互联设备。由于第二数据报文的目的MAC地址0000-2222-2222为虚拟交换机1的MAC地址,因此互联设备将第二数据报文发送给虚拟交换机1。虚拟交换机1在收到第二数据报文后,基于表12所示的第二流表,将第二数据报文的目的MAC地址修改为表12所示的第二流表中记录的目的MAC地址0000-2222-3333,将第二数据报文的源MAC地址修改为表12所示的第二流表中记录的源MAC地址0000-2222-2222,并通过表12所示的第二流表中记录的出端口(即端口1)发送修改后的第二数据报文,此时该第二数据报文被发送给VM1。
针对外部网络和VM1的数据报文传输过程,网关设备在接收到来自外部网络的第二数据报文之后,通过使用目的IP地址10.1.1.1查询表5和表6,并将第二数据报文的目的MAC地址修改为表5中记录的目的MAC地址0000-2222-2222,将第二数据报文的源MAC地址修改为表5中记录的源MAC地址0000-1111-1111,并通过表5中记录的出端口(即端口7)发送修改后的第二数据报文,此时第二数据报文被发送给互联设备。由于第二数据报文的目的MAC地址0000-2222-2222为虚拟交换机1的MAC地址,因此互联设备将第二数据报文发送给虚拟交换机1。虚拟交换机1在收到第二数据报文后,基于表12所示的第二流表,将第二数据报文的目的MAC地址修改为表12所示的第二流表中记录的目的MAC地址0000-2222-3333,将第二数据报文的源MAC地址修改为表12所示的第二流表中记录的源MAC地址0000-2222-2222,并通过表12所示的第二流表中记录的出端口(即端口1)发送修改后的第二数据报文,此时该第二数据报文被发送给VM1。
本发明实施例的上述过程中,第一流表和第二流表具体可以通过Session(会话)实现,匹配选项为会话匹配项,动作选项为会话动作。
数据报文(如第一数据报文和第二数据报文)具体可以包括但不限于:ICMP(Internet Control Message Protocol,Internet控制报文协议)报文。
本发明实施例中,虚拟交换机在收到来自源设备的ARP请求报文后,伪造ARP应答报文,并向源设备返回ARP应答报文,不需要在整个网络中广播ARP请求报文,减少网络中的ARP请求报文的数量,避免大量ARP请求报文在网络中广播的问题,避免大量ARP请求报文导致网络拥塞的情况。
当虚拟交换机在网络中广播ARP请求报文时,如果网络中出现ARP欺骗(故意攻击或者中毒等情况导致),则将导致正常VM之间的通信出现问题,如VM3始终仿冒VM2,向VM1返回ARP应答报文时,VM1会将需要发送给VM2的数据报文发送给VM3,从而导致数据报文的错误传输。而本发明实施例中,各VM学习到的目的MAC地址始终为虚拟交换机的MAC地址,不会学习到其它VM的MAC地址,从而避免了ARP欺骗的问题。
当两个VM的网络配置不一致时,可能导致两个VM之间无法通信,例如,VM1基于网络配置确定VM1和VM2位于同一Subnet,而VM2基于网络配置确定VM1和VM2不位于同一Subnet时,VM2在接收到来自VM1的ARP请求报文时,不会向VM1发送ARP应答报文,从而导致VM1和VM2之间无法通信。而本发明实施例中,可以由虚拟交换机向各VM返回ARP应答报文,避免VM无法收到其它VM返回的ARP应答报文,所导致的两个VM之间无法通信的问题,从而保证VM之间的数据报文的正确传输。
本发明实施例中,通过为数据报文生成第一流表和第二流表,并利用第一流表和第二流表发送数据报文,从而提高了数据报文的转发效率。
本发明实施例中,在网关设备上配置的流表(如表5和表6)的动作选项(即下一跳信息)直接与虚拟交换机相关,而不与VM相关,从而在部署大量VM的情况下,减少在网关设备上配置的流表的数量。
本发明提出的数据报文的传输装置,可以应用在虚拟交换机中,该数据报文的传输装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的虚拟交换机的处理器,将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本发明提出的数据报文的传输装置所在的虚拟交换机的一种硬件结构图,除了图4所示的处理器、网络接口、内存以及非易失性存储器外,虚拟交换机还可以包括其他硬件,如负责处理报文的转发芯片等;从硬件结构上来讲,该虚拟交换机还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
基于与上述方法同样的发明构思,本发明实施例中提供一种数据报文的传输装置,该数据报文的传输装置应用在虚拟交换机上,针对源设备和目的设备之间的数据报文传输过程,如图5所示,地址信息的传输装置具体包括:
判断模块11,用于接收来自源设备的第一数据报文,并判断当前是否存在所述第一数据报文对应的第一流表;
生成模块12,用于当判断结果为不存在时,则根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表;
发送模块13,用于利用所述第一流表将第一数据报文发送给目的设备;
接收来自所述目的设备的第二数据报文,并利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备。
所述第一流表的匹配选项包括:目的MAC地址为第一数据报文的目的MAC地址,目的IP地址为第一数据报文的目的IP地址,源MAC地址为第一数据报文的源MAC地址,源IP地址为第一数据报文的源IP地址;所述第一流表的动作选项包括:源MAC地址为所述第三流表中记录的源MAC地址,目的MAC地址为所述第三流表中记录的目的MAC地址,出端口为所述第三流表中记录的出端口;所述第二流表的匹配选项包括:目的MAC地址为所述第三流表中记录的源MAC地址,目的IP地址为第一数据报文的源IP地址,源MAC地址为所述第三流表中记录的目的MAC地址,源IP地址为第一数据报文的目的IP地址;所述第二流表的动作选项包括:源MAC地址为第一数据报文的目的MAC地址,目的MAC地址为第一数据报文的源MAC地址,出端口为第一数据报文在所述虚拟交换机上对应的接收端口。
所述生成模块12,还用于当设备为虚拟机时,接收软件定义网络SDN控制器下发的虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口,并利用所述虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述虚拟机对应的第三流表;其中,当所述虚拟机由所述虚拟交换机管理时,所述虚拟机对应的MAC地址为所述虚拟机的MAC地址,当所述虚拟机由其它虚拟交换机管理时,所述虚拟机对应的MAC地址为所述其它虚拟交换机的MAC地址;其中,所述第三流表的匹配选项包括:所述虚拟机的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述虚拟机对应的MAC地址,出端口为所述虚拟机在所述虚拟交换机上对应的端口;
当设备为网关设备时,接收SDN控制器下发的网关设备的IP地址和MAC地址、网关设备在虚拟交换机上对应的端口,并利用网关设备的IP地址和MAC地址、网关设备在虚拟交换机上对应的端口、虚拟交换机的MAC地址生成所述网关设备对应的第三流表;或者,接收SDN控制器下发的网关设备的IP地址,并利用所述网关设备的IP地址向网关设备发送ARP请求报文,并接收网关设备返回的ARP应答报文,并利用所述ARP应答报文学习所述网关设备的MAC地址、网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表;其中,所述第三流表的匹配选项包括:所述网关设备的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述网关设备对应的MAC地址,出端口为所述网关设备在所述虚拟交换机上对应的端口。
所述生成模块12,具体用于在根据所述第一数据报文关联的IP地址获取对应的第三流表的过程中,当所述第一数据报文的源IP地址和目的IP地址位于相同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的目的IP地址,获得所述第一数据报文的目的IP地址对应的第三流表;或者,当所述第一数据报文的源IP地址和目的IP地址位于不同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表;或者,当无法识别出所述第一数据报文的目的IP地址所属子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表。
所述发送模块13,具体用于在利用所述第一流表将所述第一数据报文发送给所述目的设备的过程中,将所述第一数据报文的目的MAC地址修改为所述第一流表中记录的目的MAC地址,将所述第一数据报文的源MAC地址修改为所述第一流表中记录的源MAC地址,并通过所述第一流表中记录的出端口发送修改后的第一数据报文;在利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备的过程中,将所述第二数据报文的目的MAC地址修改为所述第二流表中记录的目的MAC地址,将所述第二数据报文的源MAC地址修改为所述第二流表中记录的源MAC地址,并通过所述第二流表中记录的出端口发送修改后的第二数据报文。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (14)
1.一种数据报文的传输方法,其特征在于,应用于与SDN控制器相连的虚拟交换机,所述SDN控制器通过控制网络分别与虚拟交换机、网关设备三层互通;
针对源设备和目的设备之间的数据报文传输过程,所述方法包括以下步骤:
虚拟交换机接收来自源设备的第一数据报文,根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表,并利用所述第一流表将第一数据报文发送给目的设备;以及,向所述源设备返回伪造的第一数据报文的应答报文;其中,所述应答报文的源IP地址为第一数据报文的目的IP地址、源MAC地址为本虚拟交换机的MAC地址,目的MAC地址为第一数据报文的源MAC地址、目的IP地址为第一数据报文的源IP地址;当所述第一数据报文的源IP地址和目的IP地址位于相同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的目的IP地址;
所述虚拟交换机接收来自所述目的设备的第二数据报文,并利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备;
所述虚拟交换机接收所述SDN控制器下发的网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表。
2.根据权利要求1所述的方法,其特征在于,
所述虚拟交换机接收来自源设备的第一数据报文,根据所述第一数据报文关联的IP地址获取对应的第三流表,具体包括:
虚拟交换机接收来自源设备的第一数据报文,并判断当前是否存在所述第一数据报文对应的第一流表;如果不存在,则根据所述第一数据报文关联的IP地址获取对应的第三流表。
3.根据权利要求1所述的方法,其特征在于,
所述第一流表的匹配选项包括:目的MAC地址为第一数据报文的目的MAC地址,目的IP地址为第一数据报文的目的IP地址,源MAC地址为第一数据报文的源MAC地址,源IP地址为第一数据报文的源IP地址;
所述第一流表的动作选项包括:源MAC地址为所述第三流表中记录的源MAC地址,目的MAC地址为所述第三流表中记录的目的MAC地址,出端口为所述第三流表中记录的出端口;
所述第二流表的匹配选项包括:目的MAC地址为所述第三流表中记录的源MAC地址,目的IP地址为第一数据报文的源IP地址,源MAC地址为所述第三流表中记录的目的MAC地址,源IP地址为第一数据报文的目的IP地址;
所述第二流表的动作选项包括:源MAC地址为第一数据报文的目的MAC地址,目的MAC地址为第一数据报文的源MAC地址,出端口为第一数据报文在所述虚拟交换机上对应的接收端口。
4.根据权利要求1或3所述的方法,其特征在于,所述方法进一步包括:
所述虚拟交换机接收SDN控制器下发的虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口,并利用所述虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述虚拟机对应的第三流表;其中,当所述虚拟机由所述虚拟交换机管理时,所述虚拟机对应的MAC地址为所述虚拟机的MAC地址,当所述虚拟机由其它虚拟交换机管理时,所述虚拟机对应的MAC地址为所述其它虚拟交换机的MAC地址;其中,所述第三流表的匹配选项包括:所述虚拟机的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述虚拟机对应的MAC地址,出端口为所述虚拟机在所述虚拟交换机上对应的端口;
所述虚拟交换机接收所述SDN控制器下发的网关设备的IP地址,并利用所述网关设备的IP地址向所述网关设备发送ARP请求报文,并接收所述网关设备返回的ARP应答报文,并利用所述ARP应答报文学习所述网关设备的MAC地址、所述网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表;其中,所述第三流表的匹配选项包括:所述网关设备的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述网关设备对应的MAC地址,出端口为所述网关设备在所述虚拟交换机上对应的端口。
5.根据权利要求4所述的方法,其特征在于,所述虚拟交换机根据所述第一数据报文关联的IP地址获取对应的第三流表的过程,具体包括:
当所述第一数据报文的源IP地址和目的IP地址位于不同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,所述虚拟交换机确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表;或者,
当所述虚拟交换机无法识别出所述第一数据报文的目的IP地址所属子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,所述虚拟交换机确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表。
6.根据权利要求4所述的方法,其特征在于,所述虚拟交换机利用所述第一流表将第一数据报文发送给目的设备的过程,具体包括:
所述虚拟交换机将第一数据报文的目的MAC地址修改为第一流表中记录的目的MAC地址,将第一数据报文的源MAC地址修改为第一流表中记录的源MAC地址,通过第一流表中记录的出端口发送修改后的第一数据报文。
7.根据权利要求4所述的方法,其特征在于,所述虚拟交换机利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备的过程,具体包括:
所述虚拟交换机将所述第二数据报文的目的MAC地址修改为所述第二流表中记录的目的MAC地址,将所述第二数据报文的源MAC地址修改为所述第二流表中记录的源MAC地址,并通过所述第二流表中记录的出端口发送修改后的第二数据报文。
8.一种数据报文的传输装置,其特征在于,应用与SDN控制器相连的虚拟交换机,所述SDN控制器通过控制网络分别与虚拟交换机、网关设备三层互通;
针对源设备和目的设备之间的数据报文传输过程,所述数据报文的传输装置具体包括:
生成模块,用于接收来自源设备的第一数据报文,根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表;以及,向所述源设备返回伪造的第一数据报文的应答报文;其中,所述应答报文的源IP地址为目的设备的IP地址、源MAC地址为本虚拟交换机的MAC地址,目的MAC地址为源设备的MAC地址、目的IP地址为源设备的IP地址;当所述第一数据报文的源IP地址和目的IP地址位于相同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的目的IP地址;
发送模块,用于利用所述第一流表将第一数据报文发送给目的设备;接收来自所述目的设备的第二数据报文,并利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备;
所述生成模块,还用于所述虚拟交换机接收所述SDN控制器下发的网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
判断模块,用于接收来自源设备的第一数据报文,并判断当前是否存在所述第一数据报文对应的第一流表;
所述生成单元,具体用于当判断结果为不存在时,则根据所述第一数据报文关联的IP地址获取对应的第三流表,并利用所述第一数据报文和所述第三流表生成所述第一数据报文转发所需的第一流表和第二流表。
10.根据权利要求8所述的装置,其特征在于,
所述第一流表的匹配选项包括:目的MAC地址为第一数据报文的目的MAC地址,目的IP地址为第一数据报文的目的IP地址,源MAC地址为第一数据报文的源MAC地址,源IP地址为第一数据报文的源IP地址;
所述第一流表的动作选项包括:源MAC地址为所述第三流表中记录的源MAC地址,目的MAC地址为所述第三流表中记录的目的MAC地址,出端口为所述第三流表中记录的出端口;
所述第二流表的匹配选项包括:目的MAC地址为所述第三流表中记录的源MAC地址,目的IP地址为第一数据报文的源IP地址,源MAC地址为所述第三流表中记录的目的MAC地址,源IP地址为第一数据报文的目的IP地址;
所述第二流表的动作选项包括:源MAC地址为第一数据报文的目的MAC地址,目的MAC地址为第一数据报文的源MAC地址,出端口为第一数据报文在所述虚拟交换机上对应的接收端口。
11.根据权利要求8或10所述的装置,其特征在于,
所述生成模块,还用于所述虚拟交换机接收SDN控制器下发的虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口,并利用所述虚拟机的IP地址、虚拟机对应的MAC地址、虚拟机在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述虚拟机对应的第三流表;其中,当所述虚拟机由所述虚拟交换机管理时,所述虚拟机对应的MAC地址为所述虚拟机的MAC地址,当所述虚拟机由其它虚拟交换机管理时,所述虚拟机对应的MAC地址为所述其它虚拟交换机的MAC地址;其中,所述第三流表的匹配选项包括:所述虚拟机的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述虚拟机对应的MAC地址,出端口为所述虚拟机在所述虚拟交换机上对应的端口;
所述虚拟交换机接收所述SDN控制器下发的网关设备的IP地址,并利用所述网关设备的IP地址向所述网关设备发送ARP请求报文,并接收所述网关设备返回的ARP应答报文,并利用所述ARP应答报文学习所述网关设备的MAC地址、所述网关设备在虚拟交换机上对应的端口,并利用所述网关设备的IP地址和MAC地址、所述网关设备在虚拟交换机上对应的端口、所述虚拟交换机的MAC地址生成所述网关设备对应的第三流表;其中,所述第三流表的匹配选项包括:所述网关设备的IP地址;动作选项包括:源MAC地址为所述虚拟交换机的MAC地址,目的MAC地址为所述网关设备对应的MAC地址,出端口为所述网关设备在所述虚拟交换机上对应的端口。
12.根据权利要求11所述的装置,其特征在于,
所述生成模块,具体用于在根据所述第一数据报文关联的IP地址获取对应的第三流表的过程中,当所述第一数据报文的源IP地址和目的IP地址位于不同的子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表;或者,当无法识别出所述第一数据报文的目的IP地址所属子网时,所述第一数据报文关联的IP地址为所述第一数据报文的源IP地址所属子网的网关设备的IP地址,确定所述第一数据报文的源IP地址所属子网的网关设备的IP地址,并获得所述网关设备的IP地址对应的第三流表。
13.根据权利要求11所述的装置,其特征在于,
所述发送模块,具体用于在利用所述第一流表将所述第一数据报文发送给所述目的设备的过程中,将所述第一数据报文的目的MAC地址修改为所述第一流表中记录的目的MAC地址,将所述第一数据报文的源MAC地址修改为所述第一流表中记录的源MAC地址,并通过所述第一流表中记录的出端口发送修改后的第一数据报文。
14.根据权利要求11所述的装置,其特征在于,
所述发送模块,具体用于在利用所述第一数据报文对应的第二流表,将所述第二数据报文发送给所述源设备的过程中,将所述第二数据报文的目的MAC地址修改为所述第二流表中记录的目的MAC地址,将所述第二数据报文的源MAC地址修改为所述第二流表中记录的源MAC地址,并通过所述第二流表中记录的出端口发送修改后的第二数据报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910030886.7A CN109617816B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510594652.7A CN105306368B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
CN201910030886.7A CN109617816B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510594652.7A Division CN105306368B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109617816A CN109617816A (zh) | 2019-04-12 |
CN109617816B true CN109617816B (zh) | 2020-08-14 |
Family
ID=55203138
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510594652.7A Active CN105306368B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
CN201910030886.7A Active CN109617816B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510594652.7A Active CN105306368B (zh) | 2015-09-17 | 2015-09-17 | 一种数据报文的传输方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN105306368B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629160B (zh) | 2012-03-16 | 2016-08-03 | 华为终端有限公司 | 一种输入法、输入装置及终端 |
WO2018058677A1 (zh) | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 一种报文处理方法、计算设备以及报文处理装置 |
CN109873768B (zh) * | 2017-12-01 | 2021-06-22 | 华为技术有限公司 | 更新转发表的方法、硬件加速器、ovs和服务器 |
CN110858821B (zh) * | 2018-08-23 | 2022-01-07 | 阿里巴巴集团控股有限公司 | 容器通信方法及装置 |
CN110995744B (zh) * | 2019-12-13 | 2022-02-22 | 深信服科技股份有限公司 | 报文的传输方法、装置、软件定义网络交换机及存储介质 |
CN112532524B (zh) * | 2020-11-24 | 2022-12-13 | 锐捷网络股份有限公司 | 一种报文处理方法及装置 |
CN114911567A (zh) * | 2021-02-07 | 2022-08-16 | 中移(苏州)软件技术有限公司 | 虚拟机占用流表的控制方法、控制装置、终端及存储介质 |
CN115225708B (zh) * | 2022-07-28 | 2023-08-08 | 天翼云科技有限公司 | 一种报文转发方法计算机设备及存储介质 |
CN115665043A (zh) * | 2022-09-09 | 2023-01-31 | 中国联合网络通信集团有限公司 | 数据报文转发方法、vtep、装置、介质及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414626A (zh) * | 2013-08-28 | 2013-11-27 | 盛科网络(苏州)有限公司 | 基于网络虚拟化的报文处理方法及装置 |
CN104283785A (zh) * | 2014-10-29 | 2015-01-14 | 杭州华三通信技术有限公司 | 一种快速处理流表的方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011144495A1 (en) * | 2010-05-19 | 2011-11-24 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and apparatus for use in an openflow network |
CN103997414B (zh) * | 2013-02-18 | 2016-11-09 | 华为技术有限公司 | 生成配置信息的方法和网络控制单元 |
CN103346981B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
CN104184664B (zh) * | 2014-08-05 | 2017-07-04 | 新华三技术有限公司 | 路由转发表项生成方法及装置 |
CN104301446B (zh) * | 2014-08-08 | 2019-04-09 | 新华三技术有限公司 | 一种报文处理方法、交换机设备及系统 |
CN104301238A (zh) * | 2014-10-17 | 2015-01-21 | 福建星网锐捷网络有限公司 | 一种报文处理方法、装置及系统 |
CN104486103B (zh) * | 2014-12-03 | 2018-03-16 | 新华三技术有限公司 | 一种报文传输的方法和设备 |
-
2015
- 2015-09-17 CN CN201510594652.7A patent/CN105306368B/zh active Active
- 2015-09-17 CN CN201910030886.7A patent/CN109617816B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414626A (zh) * | 2013-08-28 | 2013-11-27 | 盛科网络(苏州)有限公司 | 基于网络虚拟化的报文处理方法及装置 |
CN104283785A (zh) * | 2014-10-29 | 2015-01-14 | 杭州华三通信技术有限公司 | 一种快速处理流表的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105306368B (zh) | 2019-02-26 |
CN105306368A (zh) | 2016-02-03 |
CN109617816A (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109617816B (zh) | 一种数据报文的传输方法和装置 | |
US11050586B2 (en) | Inter-cloud communication method and related device, and inter-cloud communication configuration method and related device | |
CN107733799B (zh) | 一种报文传输方法和装置 | |
US10182005B2 (en) | Software defined network (SDN) switch clusters having layer-3 distributed router functionality | |
US20130024553A1 (en) | Location independent dynamic IP address assignment | |
CN117692334A (zh) | 虚拟私有云通信及配置方法以及相关装置 | |
JP2019503599A (ja) | クラウドコンピューティングシステムにおけるパケット処理方法、ホスト及びシステム | |
CN110063045B (zh) | 云计算系统中的报文处理方法及设备 | |
CN109728962B (zh) | 一种发送报文的方法和设备 | |
CN103814554A (zh) | 一种虚拟可扩展局域网的通信方法、装置和系统 | |
CN105262683A (zh) | 网络系统和路由控制方法 | |
JP2015536003A (ja) | 仮想クラウドインフラストラクチャへの仮想セキュリティ装置アーキテクチャの提供 | |
CN104506408A (zh) | 基于sdn的数据传输的方法及装置 | |
CN107547665B (zh) | 一种dhcp地址分配的方法、设备及系统 | |
CN110224917B (zh) | 数据传输方法、装置及系统、服务器 | |
WO2018068588A1 (zh) | 提供组播业务的方法和软件定义网络控制器 | |
US9716688B1 (en) | VPN for containers and virtual machines in local area networks | |
CN112583655B (zh) | 数据传输方法、装置、电子设备及可读存储介质 | |
US10212122B2 (en) | Fan network management | |
CN104683428A (zh) | 网络业务处理方法与装置 | |
CN107517129B (zh) | 一种基于OpenStack配置设备上行接口的方法和装置 | |
CN115208888A (zh) | 云实例跨可用区的通信方法及装置和电子设备 | |
WO2023168287A1 (en) | Synchronizing dynamic host configuration protocol snoop information | |
CN106254154B (zh) | 一种资源共享方法和装置 | |
US11005706B2 (en) | Method for configuring forwarding table for user equipment, apparatus, and system |
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 |