用在软件定义网络中的数据转发装置及数据转发方法与流程

文档序号:13937459阅读:143来源:国知局
用在软件定义网络中的数据转发装置及数据转发方法与流程

本发明涉及通信领域,更具体地涉及一种用在软件定义网络中的数据转发装置及数据转发方法。



背景技术:

随着网络技术的快速发展,软件定义网络(英文:software-definednetworking,简称:sdn)技术应运而生,其核心思想是将网络设备的控制层面与转发层面分离,从而实现对网络流量的灵活控制。具体地,sdn将交换机的功能进行拆分,由数据转发装置负责交换机的数据转发功能,并由sdn控制器负责交换机的除数据转发功能之外的其他功能,例如,网关控制功能、负载均衡功能等。

在sdn网络中,数据转发装置和sdn控制器之间使用开放流(openflow)协议进行通信,其中,sdn控制器向数据转发装置发出控制指令,数据转发装置从sdn控制器接收控制指令并基于控制指令转发数据。这里,sdn控制器只是一个平台,sdn控制器的各种功能都是由sdn控制器上的sdn应用完成的。也就是说,sdn网络包括三个架构层级:sdn应用、sdn控制器、以及包括数据转发装置在内的底层物理网络。图1示出了sdn网络架构的示例性示意图。



技术实现要素:

本发明实施例提供了一种用在软件定义网络中的数据转发装置、及数据转发方法。

第一方面,提供了一种用在软件定义网络中的数据转发装置,包括:接收单元,用于从第一虚拟机接收针对第二虚拟机的第一地址请求消息,第一地址请求消息包括第二虚拟机的因特网协议ip地址,并且用于请求所述第二虚拟机的媒体访问控制mac地址,第一虚拟机接入该数据转发装置;存储单元,用于存储地址映射表;处理单元,用于确定地址映射表中是否存储有第二虚拟机的地址映射表项,并且在地址映射表中没有存储第二虚拟机的地址映射表项时,为第一地址请求消息添加第一外层隧道封装,得到第二地址请求消息;发送单元,用于向数据转发装置所在的二层网络中的除数据转发装置之外的其他数据转发装置发送第二地址请求消息,第一外层隧道封装包括该二层网络得到虚拟网络标识;接收单元还用于接收第二虚拟机接入的第二数据转发装置发送的第二地址响应消息,第二地址响应消息是第二数据转发装置为第二虚拟机发送的第一地址响应消息添加第二外层隧道封装得到的,第二外层隧道封装包括该二层网络的虚拟网络标识和第二数据转发装置的ip地址,第一地址响应消息包括第二虚拟机的mac地址;处理单元还用于根据第二地址响应消息生成第二虚拟机的地址映射表项,并将地址映射表项存储到地址映射表中,从第二地址响应消息中剥离第二外层隧道封装,得到第一地址响应消息,该第二虚拟机的地址映射表项包括第二虚拟机的ip地址、第二数据转发装置的ip地址、以及该二层网络的虚拟网络标识;以及发送单元还用于将第一地址响应消息发送给第一虚拟机。

根据第一方面的数据转发装置可以存储第二虚拟机的地址信息,因此可以在第一虚拟机再次发送针对第二虚拟机的地址请求消息时、或者接入数据转发装置中的其他虚拟机发送针对第二虚拟机的地址请求时直接将针对第二虚拟机的地址请求消息转发给第二数据转发装置,而无需向该数据转发装置所在的二层网络中的所有其他数据转发装置转发针对第二虚拟机的地址请求消息。这样,在多个虚拟机接入数据转发装置时可以大大减轻数据转发装置的处理负荷,而且不需要通过控制器下发每一台虚拟机的地址信息给数据转发装置,避免了在控制器下发地址信息失败的情况下导致的网络连通性问题和异常处理流程复杂,影响网络系统健壮性的问题。

第二方面,提供了一种数据转发方法,用于软件定义网络中的数据转发装置,包括:从第一虚拟机接收针对第二虚拟机的第一地址请求消息,第一地址请求消息包括第二虚拟机的因特网协议ip地址,并且用于请求第二虚拟机的媒体访问控制mac地址,该第一虚拟机接入该数据转发装置;确定预先存储的地址映射表中是否存储有第二虚拟机的地址映射表项,并且在地址映射表中没有存储第二虚拟机的地址映射表项时,为第一地址请求消息添加第一外层隧道封装,得到第二地址请求消息;向该数据转发装置所在的二层网络中的除数据转发装置之外的其他数据转发装置发送第二地址请求消息,第一外层隧道封装包括该二层网络的虚拟网络标识;接收第二虚拟机接入的第二数据转发装置发送的第二地址响应消息,第二地址响应消息是第二数据转发装置为第二虚拟机发送的第一地址响应消息添加第二外层隧道封装得到的,第二外层隧道封装包括该二层网络的虚拟网络标识和第二数据转发装置的ip地址,第一地址响应消息包括第二虚拟机的mac地址;根据第二地址响应消息生成第二虚拟机的地址映射表项,将地址映射表项存储到地址映射表中,并从第二地址响应消息中剥离第二外层隧道封装,得到第一地址响应消息,第二虚拟机的地址映射表项包括第二虚拟机的ip地址,第二数据转发装置的ip地址以及该二层网络的虚拟网络标识;以及将第一地址响应消息发送给第一虚拟机。

第三方面,提供了一种数据转发装置,包括:接收单元,用于接收第一虚拟机发送的第一数据报文,第一数据报文的目的ip地址为另一虚拟机的ip地址,其中,第一虚拟机接入数据转发装置,另一虚拟机接入另一数据转发装置,第一虚拟机与另一虚拟机位于不同的三层网络;存储单元,用于存储路由转发表;发送单元,用于在存储单元尚未存储另一虚拟机的路由转发表项的情况下向控制器发送第一数据报文;接收单元,还用于接收控制器发送的第二数据报文,第二数据报文是由控制器为第一数据报文添加外层隧道封装得到的,所述外层隧道封装包括另一虚拟机所在三层网络的虚拟网络标识以及另一虚拟机接入的数据转发装置的ip地址;发送单元,还用于在存储单元存储有另一虚拟机的路由转发表项的情况下根据路由转发表项发送第二数据报文,第二数据报文是由数据转发装置为第一数据报文添加另一外层隧道封装得到的,另一外层隧道封装包括第一虚拟机所在三层网络的虚拟网络标识以及数据转发装置的ip地址。

另一方面,提供了一种数据转发方法,用于软件定义网络中的数据转发装置,包括:接收第一虚拟机发送的第一数据报文,第一数据报文的目的ip地址为另一虚拟机的ip地址,其中,第一虚拟机接入数据转发装置,另一虚拟机接入另一数据转发装置,第一虚拟机与另一虚拟机位于不同的三层网络;在尚未存储另一虚拟机的路由转发表项的情况下向控制器发送第一数据报文;接收控制器发送的第二数据报文,第二数据报文是由控制器为第一数据报文添加外层隧道封装得到的,所述外层隧道封装包括另一虚拟机的虚拟网络标识vni以及另一虚拟机接入的数据转发装置的ip地址;在存储有另一虚拟机的路由转发表项的情况下根据路由转发表项发送第二数据报文,第二数据报文是由数据转发装置为第一数据报文添加另一外层隧道封装得到的,另一外层隧道封装包括第一虚拟机所在的三层网络的虚拟网络标识vni以及数据转发装置的ip地址。

采用根据第四方面的数据转发方法的数据转发装置可以存储另一虚拟机的路由转发表项,因此可以在第一虚拟机再次期望向另一虚拟机发送第一数据报文时、或者接入数据转发装置中的与另一虚拟机处于不同三层网络段的其他虚拟机期望向另一虚拟机发送第一报文时,直接将该第一报文进行外层隧道封装后转发给另一虚拟机接入的数据转发装置,而无需将该第一报文转发给控制器进行进一步处理。这样,可以简化软件定义网络中的第一报文的转发流程,减轻软件定义网络控制器的处理负荷。

第五方面,提供了一种数据转发装置,包括:发送单元,用于当虚拟机从第二数据转发装置迁入数据转发装置时,向控制器发送端口上线消息,端口上线消息包括虚拟机接入数据转发装置的端口标识;接收单元,用于接收控制器发送的虚拟机的二层转发表项,接收单元还用于接收控制器发送的至少一个通知消息,每个通知消息的外层隧道封装中包括与数据转发装置属于相同三层网络的另一数据转发装置的地址信息。外层隧道封装中还包括三层网络的虚拟网络标识。

结合第五方面,在第一种可能的实现方式,二层转发表项包括虚拟机的ip地址,mac地址以及该端口标识;每个通知消息的外层隧道封装中的源ip地址为数据转发装置的ip地址,外层隧道封装中的目的ip地址为与数据转发装置属于相同三层网络的另一数据转发装置的ip地址,每个通知消息的内层源ip地址为虚拟机的ip地址,内层目的ip地址为设定ip地址;外层隧道封装中还包括三层网络的虚拟网络标识;发送单元还用于根据每个通知消息的外层隧道封装中的目的ip地址向目的ip地址的数据转发装置转发通知消息。

第六方面,用于软件定义网络中的数据转发方法,包括:当虚拟机从第二数据转发装置迁入数据转发装置时,发送单元用于向控制器发送端口上线消息,端口上线消息包括虚拟机接入数据转发装置的端口标识;接收控制器发送的虚拟机的二层转发表项以及接收控制器发送的至少一个通知消息,每个通知消息的外层隧道封装中包括与数据转发装置属于相同三层网络的另一数据转发装置的地址信息。外层隧道封装中还包括三层网络的虚拟网络标识。

采用根据第六方面的数据转发方法的数据转发装置可以存储虚拟机从第二数据转发装置迁移到数据转发装置后的路由转发表项以及与数据转发装置属于相同三层网络的另一数据转发装置的地址信息。因此接入在数据转发装置中的虚拟机可以将变更后的路由转发表项转发给自身期望通信的与数据转发装置属于相同三层网络的另一数据转发装置。避免控制器在虚拟机迁移后进行路由表更新时需要对所有属于相同三层网络的数据转发装置下发虚拟机的二层转发表项的情况,降低了三层路由更新的复杂度及网络系统对控制器的性能要求。

第七方面,提供了一种数据转发装置,包括:存储器,用于存储程序代码;以及处理器,在执行所述程序代码时,可实现上述数据转发方法、或数据转发装置。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。

图1示出了sdn网络架构的示例性示意图;

图2示出了经由传统的数据转发装置实现的虚拟机接入sdn网络的示例性过程;

图3示出了经由传统的数据转发装置实现的sdn网络中处于不同三层网络的虚拟机之间进行通信的示例性过程;

图4示出了根据本发明实施例的用在sdn网络中的数据转发装置的示例性框图;

图5示出了应用图4所示的数据转发装置的第一场景的示例性示意图;

图6示出了图4所示的数据转发装置在图5所示的第一场景中的示例性处理过程的流程图;

图7示出了应用图4所示的数据转发装置的第二场景的示例性示意图;

图8示出了图4所示的数据转发装置在图7所示的第二场景中的示例性处理过程的流程图;

图9示出了应用图4所示的数据转发装置的第三场景的示例性示意图;

图10示出了图4所示的数据转发装置在图9所示的第三场景中的示例性处理流程的流程图;

图11示出了能够实现根据本发明实施例的数据转发方法和数据转发装置的至少一部分的计算设备的示例性硬件架构的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

图2示出了经由传统的数据转发装置实现的虚拟机接入sdn网络的示例性过程。如图2所示,sdn控制器管控n个数据转发装置1至n,n是大于1的整数;虚拟机1接入数据转发装置1,从而接入sdn网络;当虚拟机1上线时,虚拟机1接入的数据转发装置1向sdn控制器发送端口上线消息,该端口上线消息中包括虚拟机1接入数据转发装置1的端口的端口标识;sdn控制器根据该端口上线消息获取虚拟机1的因特网协议(英文:internetprotocol,简称:ip)地址和媒体访问控制(英文:mediaaccesscontrol,简称:mac)地址,向数据转发装置1至n下发(propagate)包括虚拟机1的ip地址和mac地址的通知消息。

在图2所示的示例性过程中,如果多个虚拟机同时上线,则sdn控制器需要具有支持几百甚至几千条通知消息的并行下发能力;如果通知消息下发失败,则会导致sdn网络的连通性问题;在虚拟机接入sdn网络的过程中异常处理流程多,sdn网络的健壮性差。

图3示出了经由传统的数据转发装置实现的sdn网络中处于不同三层网络的虚拟机之间进行通信的示例性过程。如图3所示,虚拟机1和虚拟机2接入数据转发装置1,虚拟机3和虚拟机4接入数据转发装置2;虚拟机1和虚拟机3属于三层网络1,虚拟机2和虚拟机4属于三层网络2;数据转发装置1由sdn控制器1管控,数据转发装置2由sdn控制器2管控。

当虚拟机1期望与虚拟机4通信时,虚拟机1向数据转发装置1发送数据报文p1-4,这里的数据报文p1-4可以是虚拟机1期望发往虚拟机4的报文,数据报文p1-4的源ip地址为虚拟机1的ip地址、目的ip地址为虚拟机4的ip地址;当数据转发装置1没有存储虚拟机4的路由转发表项时,数据转发装置1向sdn控制器1发送数据报文p1-4,例如可以是发送包括数据报文p1-4的控制消息;sdn控制器1收到包括数据报文p1-4的控制消息后,基于数据报文p1-4中包括的虚拟机4的ip地址查找虚拟机4的路由转发表项,并向数据转发装置1下发虚拟机4的路由转发表项,其中虚拟机4的路由转发表项包括虚拟机4的ip地址、以及虚拟机4所接入的数据转发装置2的ip地址;为了使虚拟机4返回虚拟机1的数据报文不再被数据转发装置2发送给sdn控制器2,sdn控制器1还经由sdn控制器2向数据转发装置2下发虚拟机1的路由转发表项,其中虚拟机1的路由转发表项包括虚拟机1的ip地址、以及虚拟机1所接入的数据转发装置1的ip地址。sdn控制器1利用数据转发装置1的ip地址、数据转发装置2的ip地址、以及虚拟机4所在三层网络的网络标识为数据报文p1-4添加外层隧道封装得到数据报文t1-4,并将数据报文t1-4发送给数据转发装置1,例如,将包括数据报文t1-4的控制消息发送给数据转发装置1,随该控制消息下发的还有数据报文t1-4的出端口;数据转发装置1基于虚拟机4的路由转发表项,向虚拟机4转发数据报文t1-4。

这里,数据转发装置1在接收到虚拟机4的路由转发表项后会对虚拟机4的路由转发表项进行缓存,数据转发装置2在接收到虚拟机1的路由转发表项后会对虚拟机1的路由转发表项进行缓存,因此经过结合图3描述的示例性过程虚拟机1和虚拟机4之间可以经由数据转发装置1和数据转发装置2进行通信。

在结合图3描述的示例性过程中,由于sdn控制器1需要向数据转发装置1下发虚拟机4的路由转发表项并向数据转发装置2下发虚拟机1的路由转发表项,因此对于sdn控制器1的性能要求高;由于sdn控制器1需要经由sdn控制器2将虚拟机1的路由转发表项发送给数据转发装置2,因此sdn网络的开销比较大。

考虑到结合图2和图3描述的上述情况,本发明提出了一种用在sdn网络中的数据转发装置、及数据转发方法。

图4示出了根据本发明实施例的用在sdn网络中的数据转发装置的示例性框图。如图4所示,数据转发装置400包括接收单元401、存储单元402、处理单元403和转发单元404,其中:接收单元401用于为从接入数据转发装置400中的虚拟机、sdn控制器、或者其他数据转发装置接收信息;存储单元402用于存储接收到的信息中包含的用于与其他数据转发装置的虚拟机进行通信的相关信息;处理单元403用于确定存储单元402中是否存储有用于与期望的虚拟机进行通信的相关信息,并且根据确定结果进行相应的处理;转发单元404用于将接收到的信息转发给接入数据转发装置400的虚拟机、sdn控制器、或者其他数据转发装置。下面结合图5至图10,详细描述本发明实施例的数据转发装置及数据转发方法。

图5示出了应用图4所示的数据转发装置的第一场景的示例性示意图。如图5所示,虚拟机1和虚拟机3接入数据转发装置400-1,虚拟机2接入数据转发装置400-n;数据转发装置400-1至400-n属于同一个二层网络;接入数据转发装置400-1虚拟机1期望与虚拟机2通信。

在图5所示的场景中,数据转发装置400-1中的接收单元401-1、存储单元402-1、处理单元403-1和发送单元404-1执行以下处理:

接收单元401-1从虚拟机1接收针对虚拟机2的第一地址请求消息,该第一地址请求消息用于请求虚拟机2的mac地址;

处理单元403-1为该第一地址请求消息添加第一外层隧道封装得到第二地址请求消息,该第二地址请求消息的源ip地址为数据转发装置400-1的ip地址,目的ip地址包括数据转发装置400-1所在的二层网络中除数据转发装置400-1以外的所有其他数据转发装置(即,数据转发装置400-2至400-n)的ip地址,该第一外层隧道封装还包括虚拟网络标识(英文:vxlannetworkidentifier,简称:vni),该虚拟网络标识用于识别上述二层网络;该发送单元404-1向该二层网络中除所述数据转发装置400-1以外的所有其他数据转发装置(即,数据转发装置400-2至400-n)发送该第二地址请求消息;

接收单元401-1还从数据转发装置400-n(即虚拟机2接入的数据转发装置)接收第二地址响应消息,该第二地址响应消息是由数据转发装置400-n为虚拟机2发送的第一地址响应消息添加第二外层隧道封装得到的,该第二外层隧道封装的源ip地址为数据转发装置400-n的ip地址,目的ip地址为数据转发装置400-1的ip地址,该第二外层隧道封装还包括该虚拟网络标识,该第一地址响应消息包括虚拟机2的ip地址和mac地址;

该处理单元403-1还根据第二地址响应消息生成并存储地址映射表项,该地址映射表项包括该虚拟网络标识,虚拟机2的ip地址以及数据转发装置400-n的关系,处理单元403-1还剥离该第二地址响应消息的该第二外层隧道封装,得到该第一地址响应消息,该发送单元404-1向虚拟机1发送该第一地址响应消息。虚拟机1接收到该第一地址响应消息后,即可得到虚拟机2的mac地址。

当虚拟机3需要获取虚拟机2的mac地址时,虚拟机3向数据转发装置400-1发送第三地址请求消息,该第三地址请求消息用于请求虚拟机2的mac地址。当数据转发装置400-1的接收单元401-1接收到该第三地址请求消息后,处理单元403-1确定虚拟机3的二层网络的虚拟网络标识,根据虚拟机3的二层网络的虚拟网络标识和虚拟机2的ip地址确定处理单元403-1中是否存在对应的地址映射表项,当存在对应的地址映射表项时,根据该地址映射表项中的数据转发装置的ip地址为该第三地址请求消息封装第三外层隧道封装,得到第四地址请求消息,并向所述数据转发装置单播发送所述第四地址请求消息。由于上述过程中,处理单元403-1已经存储了虚拟机2的ip地址的地址映射表项,则处理单元403-1根据该地址映射表项生成的第四地址请求消息的外层隧道封装中包括所述二层网络的虚拟网络标识,该数据转发装置400-1的ip地址和数据转发装置400-n的ip地址,该发送单元404-1直接通过单播方式将该第四地址请求消息发送给数据转发装置400-n。图5中带箭头的虚线体现了单播发送该第四地址请求消息的路径。

在图5所示的场景中,数据转发装置400-2至400-n中的每一个数据转发装置在接收到上述第二地址请求消息时,会剥离该第一外层隧道封装,得到该第一地址请求消息,然后向接入该数据转发装置的各个虚拟机广播该第一地址请求消息。在sdn网络,虚拟机的ip地址是唯一的,因此只有虚拟机2发送针对该第一地址请求消息的第一地址响应消息。

在一个实施例中,数据转发装置400-1在图5所示的场景中执行图6所示的数据转发方法。如图6所示,该数据转发方法包括:

s602,从虚拟机1接收第一地址请求消息,该第一地址请求消息用于请求虚拟机2的mac地址,其中,虚拟机1接入数据转发装置400-1,虚拟机2接入与数据转发装置400-1处于同一个二层网络的数据转发装置400-n。

s604,确定预先存储的地址映射表中是否存储有所述第二虚拟机的地址映射表项,并且在所述地址映射表中没有存储所述第二虚拟机的地址映射表项时,为该第一地址请求消息添加第一外层隧道封装,得到第二地址请求消息,该第一外层隧道封装的源ip地址为数据转发装置400-1的ip地址,目的ip地址包括数据转发装置400-1所在的二层网络中除数据转发装置400-1以外的所有其他数据转发装置(即,数据转发装置400-2至400-n)的ip地址,该第一外层隧道封装还包括虚拟网络标识(vni),该虚拟网络标识用于指示该二层网络;将该第二地址请求消息转发给二层网络中除数据转发装置400-1以外的所有其他数据转发装置。

s606,从数据转发装置400-n接收第二地址响应消息,该第二地址响应消息是由数据转发装置400-n为虚拟机2发送的第一地址响应消息添加第二外层隧道封装得到的,该第二外层隧道封装的源ip地址为数据转发装置400-n的ip地址,目的ip地址为数据转发装置400-1的ip地址,该第二外层隧道封装还包括该虚拟网络标识,该第一地址响应消息包括虚拟机2的ip地址和mac地址。

s608,剥离该第二地址响应消息的第二外层隧道封装,得到该第一地址响应消息,存储虚拟机2的地址映射表项并向虚拟机1转发所述第一地址响应消息,该地址映射表项包括该二层网络的虚拟网络标识,虚拟机2的ip地址以及数据转发装置400-n的对应关系。

该方法进一步还可以包括:数据转发装置400-1可以接收另一虚拟机,例如虚拟机3,发送的第三地址请求消息,该第三地址请求消息于请求虚拟机2的mac地址;确定虚拟机3的二层网络的虚拟网络标识,根据虚拟机3的二层网络的虚拟网络标识和虚拟机2的ip地址确定是否存储有虚拟机2的地址映射表项,当存在对应的地址映射表项时,根据该地址映射表项中的数据转发装置的ip地址为该第三地址请求消息封装第三外层隧道封装,得到第四地址请求消息,该第三外层隧道封装中包括该二层网络的虚拟网络标识,向该数据转发装置单播发送该第四地址请求消息。

经过结合图5描述的示例性过程中,当虚拟机3期望与虚拟机2进行通信时,由于存储单元402-1已经存储有虚拟机2的地址映射表项,所以发送单元404-1无需向数据转发装置400-2至400-n广播针对虚拟机2的地址请求消息,而可以直接将来自虚拟机3的针对虚拟机2的地址请求消息转发给数据转发装置400-n。这里,地址请求消息可以是地址解析协议(英文:addressresolutionprotocol,简称:arp)请求报文,地址响应消息可以是arp响应报文。

图7示出了应用图4所示的数据转发装置的第二场景的示例性示意图。如图7所示,虚拟机1和虚拟机3接入数据转发装置400-1,虚拟机2和虚拟机4接入数据转发装置400-2;虚拟机1和虚拟机3属于三层网络1,虚拟机2和虚拟机4属于三层网络2;数据转发装置400-1由sdn控制器1管控,数据转发装置400-2由sdn控制器2管控;接入数据转发装置400-1的虚拟机1期望与接入数据转发装置400-2的虚拟机4进行通信。

在图7所示的场景中,数据转发装置400-1中的接收单元401-1存储单元402-1、处理单元403-1和发送单元404-1执行以下处理:接收单元401-1从虚拟机1接收虚拟机1期望发送给虚拟机4的第一数据报文p1-4;处理单元403-1在确定存储单元402-1尚未存储虚拟机4的路由转发表项的情况下通过发送单元404-1将第一数据报文p1-4发送给sdn控制器1,其中,虚拟机4的路由转发表项包括虚拟机4的ip地址、数据转发装置400-2的ip地址以及虚拟机4所在三层网络的网络标识符。

在图7所示的场景中,在处理单元404-1判断存储单元402-1尚未存储虚拟机4的路由转发表项的情况下,数据转发装置400-1中的接收单元401-1、存储单元402-1、处理单元403-1和发送单元404-1还执行以下处理:接收单元401-1从sdn控制器1接收第二数据报文t1-4,该第二数据报文是sdn控制器1利用数据转发装置400-1的ip地址、数据转发装置400-2的ip地址、以及虚拟机4所在的三层网络的网络标识符对第一数据报文p1-4进一步封装得到的;处理单元403-1根据第二数据报文t1-4生成虚拟机4的路由转发表项,虚拟机4的路由转发表项包括虚拟机4的ip地址、虚拟机4接入的数据转发装置400-2的ip地址、以及虚拟机4所在的三层网络的虚拟网络标识。发送单元404-1基于虚拟机4的路由转发表项将第二数据报文t1-4转发给数据转发装置400-2。在一个示例中,第二数据报文t1-4使得虚拟机4接入的数据转发装置400-2能够生成虚拟机1的路由转发表项,虚拟机1的路由转发表项包括数据转发装置400-1的ip地址、虚拟机1的ip地址、以及虚拟机1所在的三层网络的虚拟网络标识。

在图7所示的场景中,在处理单元403-1判断存储单元402-1尚未存储虚拟机4的路由转发表项的情况下,数据转发装置400-1中的接收单元401-1和转发单元404-1也可以执行以下处理:接收单元401-1从sdn控制器1接收包括第二数据报文t1-4和数据转发装置400-1的用于发送第二数据报文t1-4的端口的控制消息,第二数据报文是由控制器为第一数据报文添加进一步隧道封装得到的;该发送单元404-1通过该端口向虚拟机4接入的数据转发装置400-2发送第二数据报文t1-4,第二数据报文t1-4使得虚拟机4接入的数据转发装置400-2能够生成虚拟机1的路由转发表项,虚拟机1的路由转发表项包括数据转发装置400-1的ip地址、虚拟机1的ip地址、以及虚拟机1所在的三层网络的虚拟网络地址。在一个示例中,处理单元403-1解析该控制消息,得到该第二数据报文t1-4,并通过该端口将该第二数据报文t1-4转发给数据转发装置400-2;在一个示例中,在虚拟机4响应于第二数据报文t1-4构造期望发送给虚拟机1的第三数据报文p4-1时,接收单元401-1从数据转发装置400-2接收由数据转发装置400-2对第三数据报文添加外层隧道封装后得到的第四数据报文t4-1;处理单元403-1根据该第四数据报文t4-1得到生成虚拟机4的路由转发表项并存储,以及剥离所述第四数据报文t4-1的外层隧道封装后,得到该第三数据报文p4-1,发送单元将该第三数据报文p4-1转发给虚拟机1。

在图7所示的场景中,数据转发装置400-2的接收单元401-2、存储单元402-2、处理单元403-2和转发单元404-2执行以下处理:接收单元401-2从数据转发装置400-1接收第二数据报文t1-4;处理单元403-2将第二数据报文t1-4剥离外层隧道封装后,得到第一数据报文p1-4,发送单元404-2将第一数据报文p1-4转发给虚拟机4,处理单元403-2根据第二数据报文t1-4生成并存储虚拟机1的路由转发表项到存储单元402-2;在虚拟机4响应于第一数据报文p1-4构造期望发送给虚拟机1的第三数据报文时p4-1,接收单元402-2从虚拟机4接收第三数据报文p4-1,处理单元403-2基于存储单元402-2所存储的虚拟机1的路由转发表项为该第三数据报文p4-1添加外层隧道封装,得到第四数据报文t4-1。发送单元将第四数据报文t4-1转发给数据转发装置400-1。这里,虚拟机1的路由转发表项包括虚拟机1的ip地址和数据转发装置400-1的ip地址。

数据转发装置400-1在图7所示的场景中执行图8所示的数据转发方法。如图8所示,该数据转发方法包括:

s802,接收虚拟机1发送的第一数据报文,第一数据报文的目的ip地址为虚拟机4的ip地址,虚拟机1和虚拟机4位于不同的三层网络。

s804,查找预先存储的路由转发表,当路由转发表中没有存储虚拟机4的路由转发表项时,生成虚拟机4的路由转发表项;当路由转发表中存储有虚拟机4的路由转发表项时,根据该路由转发表项发送第一数据报文至虚拟机4接入的数据转发装置。

具体地,在结合图7描述的场景中,虚拟机1向数据转发装置400-1发送虚拟机1期望发送给虚拟机4的第一数据报文,第一数据报文包括虚拟机1的ip地址、以及虚拟机4的ip地址;数据转发装置400-1基于第一数据报文中包括的虚拟机4的ip地址查找虚拟机4的路由转发表项,并在没有查找到虚拟机4的路由转发表项的情况下向sdn控制器1发送第一数据报文和接收该第一数据报文的端口;sdn控制器1基于第一数据报文中包括的虚拟机4的ip地址查找虚拟机4所接入的数据转发装置400-2的ip地址,利用数据转发装置400-1的ip地址、数据转发装置400-2的ip地址、以及虚拟机4所在的三层网络的网络标识符将第一数据报文进一步封装成第二数据报文,并通过控制消息向数据转发装置400-1发送包括第二数据报文和所述第二数据报文在数据转发装置400-1上的出端口;数据转发装置400-1接收所述控制消息,根据所述控制消息生成虚拟机4的路由转发表项,根据所述路由转发表项向数据转发装置400-2转发第二数据报文t1-4,并存储虚拟机4的路由转发表项;数据转发装置400-2向虚拟机4转发第二报文t1-4,并存储虚拟机1的路由转发表项。

经过结合图7描述的示例性过程中,当虚拟机1再次期望与虚拟机4进行通信时,由于数据转发装置400-1已经存储有虚拟机4的路由转发表项,所以数据转发装置400-1无需将虚拟机1期望发送给虚拟机4的后续数据报文转发给sdn控制器1,而可以直接基于虚拟机4的路由转发表项将后续数据报文转发给虚拟机4;类似地,当虚拟机4期望与虚拟机1进行通信时,由于数据转发装置400-2已经存储有虚拟机1的路由转发表项,所以数据转发装置400-2可以基于虚拟机1的路由转发表项直接将虚拟机4期望发送给虚拟机1的数据报文p4-1转发给虚拟机1。这样,可以简化软件定义网络中的数据报文的转发流程,减轻软件定义网络控制器的处理负荷。

图9示出了应用图4所示的数据转发装置的第三场景的示例性示意图。如图9所示,虚拟机2接入数据转发装置400-2,虚拟机400-3接入数据转发装置400-3,虚拟机4接入数据转发装置400-4,虚拟机5接入数据转发装置400-5中,虚拟机6接入数据转发装置400-6中;虚拟机2至5属于三层网络1,虚拟机6属于三层网络2;数据转发装置400-1至400-6由sdn控制器1管控;接入数据转发装置400-3中的虚拟机3从数据转发装置400-3迁移到数据转发装置400-1。

在图9所示的场景中,数据转发装置400-1中的接收单元402-1和转发单元404-1执行以下处理:接收单元402-1在虚拟机3从数据转发装置400-3迁移到数据转发装置400-1时,从sdn控制器1接收针对虚拟机3的一个或多个通知消息;发送单元404-1将一个或多个通知消息分别转发给与虚拟机2处于同一个三层网络的一个或多个虚拟机所接入的一个或多个数据转发装置,其中,该一个或多个通知消息是sdn控制器利用数据转发装置400-1的ip地址、上述一个或多个数据转发装置的ip地址、以及虚拟机3所在的三层网络的网络标识符构造的,每个通知消息的外层隧道封装中的源ip地址为所述数据转发装置的ip地址、外层隧道封装中的目的ip地址为与所述数据转发装置属于相同三层网络的另一数据转发装置的ip地址,每个通知消息的内层源ip地址为所述第二虚拟机的ip地址、内层目的ip地址为设定ip地址,所述外层隧道封装中还包括所述数据转发装置所在的三层网络的虚拟网络标识。

例如,在图9所示的场景中,在虚拟机2从数据转发装置400-2迁移到数据转发装置400-1时,发送单元404-1向控制器1发送端口上线消息,该端口上线消息包括虚拟机2接入数据转发装置400-1的端口的端口标识;接收单元401-1从sdn控制器1接收虚拟机2的二层转发表项,该二层转发表项包括该第二虚拟机的ip地址,mac地址以及该端口标识。接收单元401-1还可以接收控制器1发送的至少一个通知消息,例如,针对数据转发装置400-3的通知消息t13、针对数据转发装置400-4的通知消息t14、以及针对数据转发装置400-5的通知消息t15,这里的通知消息的外层隧道封装中的源ip地址为数据转发装置400-1的ip地址,外层隧道封装中的目的ip地址为与数据转发装置400-1属于相同三层虚拟网络的另一数据转发装置的ip地址,每个通知消息的内层源ip地址为虚拟机2的ip地址,内层目的ip地址为设定ip地址;外层隧道封装中还包括该三层网络的虚拟网络标识。发送单元404-1还可以根据每个通知消息的外层隧道封装中的目的ip地址向目的ip地址对应的数据转发装置转发上述通知消息。例如,发送单元404-1将通知消息t13转发给数据转发装置400-3、将通知消息t14转发给数据转发装置400-4、将通知消息t15转发给数据转发装置400-5。这里,如果数据转发装置400-2中还接入有与虚拟机2处于同一个三层网络的虚拟机,接收单元401-1还可以从sdn控制器接收针对数据转发装置400-2的通知消息t12,发送单元404-1还将通知消息t12转发给数据转发装置400-2。这里,通知消息t12至t15分别包括虚拟机2从数据转发装置400-2迁移到数据转发装置400-1后的路由信息;数据转发装置400-2至400-5中的存储单元402-2至402-5可以根据通知消息t12至t15存储虚拟机2从数据转发装置400-2迁移到数据转发装置400-1后的路由转发表项,即,利用通知消息t12至t15来更新所存储的虚拟机2的路由转发表项。

如图10所示,本发明提供了一种在图9所示场景中的数据转发方法,该数据转发方法包括:

s1002,当虚拟机2从数据转发装置400-2迁入数据转发装置400-1时,虚拟机2向控制器发送端口上线消息,该端口上线消息包括虚拟机2接入数据转发装置400-1的端口标识。

s1004,接收控制器发送的虚拟机2的二层转发表项,该二层转发表项包括虚拟机2的ip地址,mac地址以及该端口标识。其中,每个通知消息的外层隧道封装中的源ip地址为数据转发装置1的ip地址,外层隧道封装中的目的ip地址为与数据转发装置1属于相同三层虚拟网络的另一数据转发装置的ip地址,每个通知消息的内层源ip地址为虚拟机2的ip地址,内层目的ip地址为设定ip地址;外层隧道封装中还包括该三层网络的虚拟网络标识,例如,数据转发装置400-6具有与数据转发装置400-1不同的虚拟网络标识,则接收单元401-1不会接收针对数据转发装置400-6的控制消息。

具体地,在结合图9描述的场景中,当虚拟机2从数据转发装置400-2迁移到数据转发装置400-1时,sdn控制器1可以指示数据转发装置400-2删除虚拟机2的相关信息,指示数据转发装置400-1添加虚拟机2的相关信息,并且查找与虚拟机2处于同一个三层网络中的所有虚拟机、以及这些虚拟机所接入的数据转发装置(即,虚拟机3、4、5、以及数据转发装置400-3、400-4、400-5);sdn控制器1分别封装针对数据转发装置400-3、400-4、400-5的通知消息,并将这些通知消息发送给数据转发装置400-1,由数据转发装置400-1将相应的通知消息转发给相应的数据转发装置;针对数据转发装置400-3、400-4、400-5任意一个数据转发装置的通知消息包括虚拟机2的ip地址、以及虚拟机2所接入的数据转发装置400-1的ip地址;数据转发装置400-3、400-4、400-5接收转发给其的通知消息,并根据接收的通知消息存储虚拟机2的路由转发表项。

换句话说,当与虚拟机3至5处于同一个三层网络的虚拟机2接入数据转发装置400-1、并且虚拟机2从数据转发装置400-2迁移到数据转发装置400-1时,数据转发装置400-1中的接收单元401-1、存储单元402-1、处理单元403-1和发送单元404-1执行以下处理:接收单元403-1从数据转发装置400-1接收针对虚拟机2的通知消息t13,其中,通知消息t13是sdn控制器1利用数据转发装置400-1的ip地址、数据转发装置400-3的ip地址、以及虚拟机2所在的三层网络的网络标识符构造;处理单元403-1判断储存单元402-1是否存储有虚拟机1的路由转发表项,在没有存储虚拟机1的路由转发表项的情况下,根据通知消息存储虚拟机1的路由转发表项。

经过结合图9描述的示例性过程,当虚拟机3、4、5中任意一个虚拟机期望与虚拟机2进行通信时,数据转发装置400-3、400-4、400-5中的相应数据转发装置可以将相应虚拟机期望发送给虚拟机1的数据报文转发给数据转发装置400-1,而不会将该数据报文转发给数据转发装置400-2。这样,可以简化软件定义网络中的数据报文的转发流程,减轻软件定义网络控制器的处理负荷。

这里,在结合图5至10描述的示例性过程中,数据转发装置和sdn控制器可以利用可扩展虚拟局域网(英文:virtualextensiblelocalareanetwork,简称:vxlan)技术来为数据报文构造外层隧道封装。

结合5至图10描述的数据转发装置和数据转发方法的至少一部分可以由计算设备实现。图11是示出能够实现根据本发明实施例的数据转发装置和数据转发方法的至少一部分的计算设备的示例性硬件架构的结构图。如图11所示,计算设备1100包括输入端口1101、处理器1102、存储器1103以及输出端口1104。其中,输入端口1101、处理器1102、存储器1103、以及输出端口1104通过总线1110相互连接。当通过图11所示的计算设备1100实现结合图5至图10描述的数据转发装置时,输入端口1101从其他数据转发装置接收地址请求消息/响应消息、数据报文,并将地址请求/响应信息、数据报文传送到处理器1102;处理器1102基于存储器1103中存储的程序代码,根据地址请求/响应信息、数据报文生成相应虚拟机的地址映射表项或者路由转发表项,将所生成的地址映射表项或者路由转发表项临时或者永久地存储在存储器1103中,随后可以基于所存储的地址映射表项或者路由转发表项转发报文。

也就是说,根据本发明实施例的数据转发装置也可以被实现为包括存储有计算机程序代码的存储器;以及处理器,该处理器在执行计算机程序代码时,可以实现结合图5至图10描述的数据转发装置和数据转发方法。

需要明确,本发明并不局限于上文所描述并在图中示出的特定配置和处理。并且,为了简明起见,这里省略对已知方法技术的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后作出各种改变、修改和添加,或者改变步骤之间的顺序。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些端口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1