一种数据报文的传输方法和装置与流程

文档序号:17375224发布日期:2019-04-12 23:13阅读:132来源:国知局
一种数据报文的传输方法和装置与流程
本发明涉及通信
技术领域
,尤其涉及一种数据报文的传输方法和装置。
背景技术
:随着数据中心业务的日益增加,用户需求不断提高,数据中心的规模和功能日趋复杂,管理难度越来越高。这种情况下,整合数据中心、降低数据中心的管理成本,充分挖掘现有资源能力以适应更高的业务需求,成为数据中心的重要任务。对数据中心资源进行虚拟化,成为数据中心整合的重要趋势。虚拟化技术通过对物理资源提供的服务进行抽象化,让资源使用者和管理者不关心对象的细节,从而降低资源使用和管理的复杂度,提高使用效率。数据中心的虚拟化技术主要包括三个方面:网络虚拟化、存储虚拟化和服务器虚拟化。在服务器虚拟化技术中,通过专用的虚拟化软件,可以在一个物理服务器上虚拟出多个vm(virtualmachine,虚拟机),每个vm独立运行,互不影响,都有自己的操作系统、应用程序和虚拟的硬件环境。如图1所示,为数据中心的一种典型网络拓扑示意图,假设vm1、vm2和vm3属于subnet1(子网1),vm4属于subnet2。vm1需要与vm2进行通信时,需要先获得vm2的mac(mediaaccesscontrol,媒体访问控制)地址,因此,vm1发送针对vm2的arp(addressresolutionprotocol,地址解析协议)请求报文,该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(softwaredefinednetwork,软件定义网络)控制器通过控制网络分别与虚拟交换机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,出端口:端口610.1.1.2目的mac地址:0000-2222-2222,源mac地址:0000-3333-3333,出端口:端口610.1.1.3目的mac地址:0000-3333-4444,源mac地址:0000-3333-3333,出端口:端口410.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,出端口:端口310.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,出端口:端口610.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,出端口:端口710.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,出端口:端口710.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(internetcontrolmessageprotocol,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地址,并通过所述第二流表中记录的出端口发送修改后的第二数据报文。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1