CN107800628A - 用在软件定义网络中的数据转发装置及数据转发方法 - Google Patents
用在软件定义网络中的数据转发装置及数据转发方法 Download PDFInfo
- Publication number
- CN107800628A CN107800628A CN201610808232.9A CN201610808232A CN107800628A CN 107800628 A CN107800628 A CN 107800628A CN 201610808232 A CN201610808232 A CN 201610808232A CN 107800628 A CN107800628 A CN 107800628A
- Authority
- CN
- China
- Prior art keywords
- address
- virtual machine
- data
- data forwarding
- forwarding device
- 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.)
- Granted
Links
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/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/825—Involving tunnels, e.g. MPLS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了一种用在软件定义网络中的数据转发装置、及数据转发方法。该数据转发装置,包括:接收单元,用于从第一虚拟机接收针对第二虚拟机的第一地址请求消息,第一地址请求消息包括第二虚拟机的因特网协议IP地址,并且用于请求所述第二虚拟机的媒体访问控制MAC地址;存储单元,用于存储地址映射表;处理单元,用于确定地址映射表中是否存储有第二虚拟机的地址映射表项;发送单元,用于向数据转发装置所在的二层网络中的除数据转发装置之外的其他数据转发装置发送第二地址请求消息。在多个虚拟机接入数据转发装置时,可以大大减轻数据转发装置的处理负荷。
Description
技术领域
本发明涉及通信领域,更具体地涉及一种用在软件定义网络中的数据转发装置及数据转发方法。
背景技术
随着网络技术的快速发展,软件定义网络(英文:software-defined networking,简称: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的因特网协议(英文:Internet Protocol,简称:IP)地址和媒体访问控制(英文:media access control,简称: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地址,该第一外层隧道封装还包括虚拟网络标识(英文:vxlan network identifier,简称: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。这里,地址请求消息可以是地址解析协议(英文:Address Resolution Protocol,简称: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控制器可以利用可扩展虚拟局域网(英文:virtual extensible local area network,简称: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描述的数据转发装置和数据转发方法。
需要明确,本发明并不局限于上文所描述并在图中示出的特定配置和处理。并且,为了简明起见,这里省略对已知方法技术的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后作出各种改变、修改和添加,或者改变步骤之间的顺序。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些端口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (21)
1.一种用在软件定义网络中的数据转发装置,包括:
接收单元,用于从第一虚拟机接收针对第二虚拟机的第一地址请求消息,所述第一地址请求消息包括所述第二虚拟机的因特网协议IP地址,并且用于请求所述第二虚拟机的媒体访问控制MAC地址,所述第一虚拟机接入于所述数据转发装置;
存储单元,用于存储地址映射表;
处理单元,用于确定所述地址映射表中是否存储有所述第二虚拟机的地址映射表项,并且在所述地址映射表中没有存储所述第二虚拟机的地址映射表项时,为所述第一地址请求消息添加第一外层隧道封装,得到第二地址请求消息;
发送单元,用于向所述数据转发装置所在的二层网络中的除所述数据转发装置之外的其他数据转发装置发送所述第二地址请求消息,所述第一外层隧道封装包括所述二层网络的虚拟网络标识,其中:
所述接收单元还用于接收所述第二虚拟机接入的第二数据转发装置发送的第二地址响应消息,所述第二地址响应消息是所述第二数据转发装置为所述第二虚拟机发送的第一地址响应消息添加第二外层隧道封装得到的,所述第二外层隧道封装包括所述二层网络的虚拟网络标识和所述第二数据转发装置的IP地址,所述第一地址响应消息包括所述第二虚拟机的MAC地址;
所述处理单元还用于根据所述第二地址响应消息生成所述第二虚拟机的地址映射表项,将所述第二虚拟机的地址映射表项存储到所述地址映射表中,并从所述第二地址响应消息剥离所述第二外层隧道封装,得到所述第一地址响应消息,所述第二虚拟机的地址映射表项包括所述第二虚拟机的IP地址、所述第二数据转发装置的IP地址、以及所述二层网络的虚拟网络标识;以及
所述发送单元还用于将所述第一地址响应消息发送给所述第一虚拟机。
2.根据权利要求1所述的数据转发装置,其特征在于:
所述接收单元还用于接收第三虚拟机发送的第三地址请求消息,所述第三地址请求消息包括所述第二虚拟机的IP地址,并用于请求所述第二虚拟机的MAC地址,所述第三虚拟机接入所述数据转发装置;
所述处理单元还用于根据所述第二虚拟机的IP地址在所述地址映射表中查找所述第二虚拟机的地址映射表项,根据所述第二虚拟机的地址映射表项为所述第三地址请求消息添加第三外层隧道封装,得到第四地址请求消息,所述第三外层隧道封装包括所述二层网络的虚拟网络标识、以及所述第二数据转发装置的IP地址;
所述发送单元还用于将所述第四地址请求消息单播发送给所述第二数据转发装置;
所述接收单元还用于接收所述第二数据转发装置发送的第四地址响应消息,所述第四地址响应消息是所述第二数据转发装置为所述第二虚拟机发送的第三地址响应消息添加所述第二外层隧道封装得到的,所述第三地址响应消息包括所述第二虚拟机的MAC地址;
所述处理单元还用于从所述第四地址响应消息剥离所述第二外层隧道封装,得到所述第三地址响应消息;
所述发送单元还用于将所述第三地址响应消息发送给所述第三虚拟机。
3.根据权利要求1或2所述的数据转发装置,其特征在于,所述第一地址请求消息为地址解析协议ARP请求,所述第一地址响应消息为ARP响应。
4.根据权利要求1所述的数据转发装置,其特征在于:
所述接收单元还用于接收所述第一虚拟机发送的第一数据报文,所述第一数据报文的目的IP地址为第四虚拟机的IP地址,所述第一虚拟机和所述第四虚拟机位于不同的三层网络;
所述存储单元还用于存储路由转发表;
所述处理单元还用于确定所述路由转发表中是否存储有所述第四虚拟机的路由转发表项,并且在所述路由转发表中没有存储所述第四虚拟机的路由转发表项时,生成所述第四虚拟机的路由转发表项,在所述路由转发表中存储有所述第四虚拟机的路由转发表项时触发所述发送单元根据所述第四虚拟机的路由转发表项发送所述第一数据报文。
5.根据权利要求4所述的路由转发装置,其特征在于,当生成所述第四虚拟机的路由转发表项时,
所述发送单元用于向控制器发送所述第一数据报文;
所述接收单元还用于接收所述控制器发送的第二数据报文,所述第二数据报文是由所述控制器为所述第一数据报文添加第四外层隧道封装得到的,所述第四外层隧道封装包括所述第四虚拟机所在的三层网络的虚拟网络标识、以及所述第四虚拟机接入的数据转发装置的IP地址;
所述处理单元还用于根据所述第二数据报文生成所述第四虚拟机的路由转发表项,所述第四虚拟机的路由转发表项包括所述第四虚拟机的IP地址、所述第四虚拟机接入的数据转发装置的IP地址、以及所述第四虚拟机所在的三层网络的虚拟网络标识;以及
所述发送单元还用于将所述第二数据报文发送给所述第四虚拟机接入的数据转发装置,所述第二数据报文使得所述第四虚拟机接入的数据转发装置能够生成所述第一虚拟机的路由转发表项,所述第一虚拟机的路由转发表项包括所述数据转发装置的IP地址、所述第一虚拟机的IP地址、以及所述第一虚拟机所在的三层网络的虚拟网络标识。
6.根据权利要求4所述的路由转发装置,其特征在于,当生成所述第四虚拟机的路由转发表项时,
所述发送单元用于向控制器发送所述第一数据报文;
所述接收单元还用于接收所述控制器发送的第二数据报文、以及所述数据转发装置用于发送所述第二数据报文的端口,所述第二数据报文是由所述控制器为所述第一数据报文添加第四外层隧道封装得到的,所述第四外层隧道封装包括所述第四虚拟机所在的三层网络的虚拟网络标识、以及所述第四虚拟机接入的数据转发装置的IP地址;以及
所述发送单元还用于通过所述端口向所述第四虚拟机接入的数据转发装置发送所述第二数据报文,所述第二数据报文使得所述第四虚拟机接入的数据转发装置能够生成所述第一虚拟机的路由转发表项,所述第一虚拟机的路由转发表项包括所述数据转发装置的IP地址、所述第一虚拟机的IP地址、以及所述第一虚拟机所在的三层网络的虚拟网络地址。
7.根据权利要求6所述的路由转发装置,其特征在于,
所述接收单元还用于接收所述第四虚拟机接入的数据转发装置发送的第四数据报文,所述第四数据报文是由所述第四虚拟机接入的数据转发装置根据所述第一虚拟机的路由转发表项为第三数据报文封装第五外层隧道封装得到,所述第三数据报文的源IP地址为所述第四虚拟机的IP地址、目的IP地址为所述第一虚拟机的IP地址;
所述处理单元还用于根据所述第四数据报文生成所述第四虚拟机的路由转发表项,所述第四虚拟机的路由转发表项包括所述第四虚拟机的IP地址、所述第四虚拟机接入的数据转发装置的IP地址、以及所述第四虚拟机所在的三层网络的虚拟网络地址。
8.根据权利要求1所述的数据转发装置,其特征在于,
当所述第二虚拟机从所述第二数据转发装置迁入所述数据转发装置时,所述发送单元还用于向控制器发送端口上线消息,所述端口上线消息包括所述第二虚拟机接入所述数据转发装置的端口的端口标识;
所述接收单元还用于接收所述控制器发送的所述第二虚拟机的二层转发表项,所述二层转发表项包括所述第二虚拟机的IP地址、MAC地址、以及所述端口标识。
9.根据权利要求8所述的装置,其特征在于,
所述接收单元还用于接收所述控制器发送的至少一个通知消息,每个通知消息的外层隧道封装中的源IP地址为所述数据转发装置的IP地址、外层隧道封装中的目的IP地址为与所述数据转发装置属于相同三层网络的另一数据转发装置的IP地址,每个通知消息的内层源IP地址为所述第二虚拟机的IP地址、内层目的IP地址为设定IP地址,所述外层隧道封装中还包括所述数据转发装置所在的三层网络的虚拟网络标识;以及
所述发送单元还用于根据每个通知消息的外层隧道封装中的目的IP地址向所述目的IP地址的数据转发装置转发所述通知消息。
10.根据权利要求1所述的数据转发装置,其特征在于,
当所述第一虚拟机迁移到另一数据转发装置时,所述接收单元还用于接收控制器发送的通知消息,所述通知消息的外层隧道封装中的源IP地址为所述另一数据转发装置的IP地址、目的IP地位为所述数据转发装置的IP地址,所述通知消息的内层源IP地址为所述第一虚拟机的IP地址、内层目的IP地址为设定IP地址;所述通知消息的外层隧道封装中还包括所述第一虚拟机所属的三层网络的虚拟网络标识;
所述处理单元还用于根据所述通知消息生成所述第一虚拟机的路由转发表项,并且根据所述设定IP地址丢弃所述通知消息,所述路由转发表项包括所述第一虚拟机的IP地址、所述另一数据转发装置的IP地址、以及所述第一虚拟机所在的三层网络的虚拟网络标识。
11.一种数据转发方法,用于软件定义网络中的数据转发装置,包括:
从第一虚拟机接收针对第二虚拟机的第一地址请求消息,所述第一地址请求消息包括所述第二虚拟机的因特网协议IP地址,并且用于请求所述第二虚拟机的媒体访问控制MAC地址,所述第一虚拟机接入于所述数据转发装置;
确定预先存储的地址映射表中是否存储有所述第二虚拟机的地址映射表项,并且在所述地址映射表中没有存储所述第二虚拟机的地址映射表项时,为所述第一地址请求消息添加第一外层隧道封装,得到第二地址请求消息;
向所述数据转发装置所在的二层网络中的除所述数据转发装置之外的其他数据转发装置发送所述第二地址请求消息,所述第一外层隧道封装包括所述二层网络的虚拟网络标识;接收所述第二虚拟机接入的第二数据转发装置发送的第二地址响应消息,所述第二地址响应消息是所述第二数据转发装置为所述第二虚拟机发送的第一地址响应消息添加第二外层隧道封装得到的,所述第二外层隧道封装包括所述二层网络的虚拟网络标识和所述第二数据转发装置的IP地址,所述第一地址响应消息包括所述第二虚拟机的MAC地址;
根据所述第二地址响应消息生成所述第二虚拟机的地址映射表项,将所述地址映射表项存储到所述地址映射表中,并从所述第二地址响应消息中剥离所述第二外层隧道封装,得到所述第一地址响应消息,所述第二虚拟机的地址映射表项包括所述第二虚拟机的IP地址,所述第二数据转发装置的IP地址以及所述二层网络的虚拟网络标识;以及
将所述第一地址响应消息发送给所述第一虚拟机。
12.根据权利要求11所述的数据转发方法,其特征在于,还包括:
接收第三虚拟机发送的第三地址请求消息,所述第三地址请求消息包括所述第二虚拟机的IP地址,并用于请求所述第二虚拟机的MAC地址,所述第三虚拟机接入所述数据转发装置;
根据所述第二虚拟机的IP地址在所述地址映射表中查找第二虚拟机的地址映射表项,根据所述第二虚拟机的地址映射表项为所述第三地址请求消息封装第三外层隧道封装,得到第四地址请求消息,所述第三外层隧道封装包括所述二层网络的虚拟网络标识、以及所述第二数据转发装置的IP地址;
将所述第四地址请求消息单播发送给所述第二数据转发装置;
接收所述第二数据转发装置发送的第四地址响应消息,所述第四地址响应消息是所述第二数据转发装置为所述第二虚拟机发送的第三地址响应消息添加所述第二外层隧道封装得到的,所述第三地址响应消息包括所述第二虚拟机的MAC地址;
从所述第四地址响应消息剥离所述第二外层隧道封装,得到所述第三地址响应消息;以及
将所述第三地址响应消息发送给所述第三虚拟机。
13.根据权利要求11或12所述的数据转发方法,其特征在于,
所述第一地址请求消息为地址解析协议ARP请求,所述第一地址响应消息为ARP响应。
14.根据权利要求11所述的数据转发方法,其特征在于,还包括:
接收所述第一虚拟机发送的第一数据报文,所述第一数据报文的目的IP地址为第四虚拟机的IP地址,所述第一虚拟机和所述第四虚拟机位于不同的三层网络;
确定预先存储的路由转发表中是否存储有所述第四虚拟机的路由转发表项,并且在所述路由转发表中没有存储所述第四虚拟机的路由转发表项时,生成所述第四虚拟机的路由转发表项,在所述路由转发表中存储有所述第四虚拟机的路由转发表项时,触发所述发送单元根据所述第四虚拟机的路由转发表项发送所述第一数据报文。
15.根据权利要求14所述的路由转发方法,其特征在于,当生成所述第四虚拟机的路由转发表项时,还包括:
向控制器发送所述第一数据报文;
接收所述控制器发送的第二数据报文,所述第二数据报文是由所述控制器为所述第一数据报文添加第四外层隧道封装得到的,所述第四外层隧道封装包括所述第四虚拟机所在的三层网络的虚拟网络标识、以及所述第四虚拟机接入的数据转发装置的IP地址;
根据所述第二数据报文生成所述第四虚拟机的路由转发表项,所述第四虚拟机的路由转发表项包括所述第四虚拟机的IP地址、所述第四虚拟机接入的数据转发装置的IP地址、以及所述第四虚拟机所在的三层网络的虚拟网络标识;以及
将所述第二数据报文发送给所述第四虚拟机接入的数据转发装置,所述第二数据报文使得所述第四虚拟机接入的数据转发装置能够生成所述第一虚拟机的路由转发表项,所述第一虚拟机的路由转发表项包括所述数据转发装置的IP地址、所述第一虚拟机的IP地址、以及所述第一虚拟机所在的三层网络的虚拟网络标识。
16.根据权利要求14所述的路由转发方法,其特征在于,当生成所述第四虚拟机的路由转发表项时,还包括:
向控制器发送所述第一数据报文;
接收所述控制器发送的第二数据报文、以及所述数据转发装置用于发送所述第二数据报文的端口,所述第二数据报文是由所述控制器为所述第一数据报文添加第四外层隧道封装得到的,所述第四外层隧道封装包括所述第四虚拟机所在的三层网络的虚拟网络标识、以及所述第四虚拟机接入的数据转发装置的IP地址;以及
通过所述端口向所述第四虚拟机接入的数据转发装置发送所述第二数据报文,所述第二数据报文使得所述第四虚拟机接入的数据转发装置能够生成所述第一虚拟机的路由转发表项,所述第一虚拟机的路由转发表项包括所述数据转发装置的IP地址、所述第一虚拟机的IP地址以及所述第一虚拟机所在的三层网络的虚拟网络标识。
17.根据权利要求16所述的路由转发方法,其特征在于,还包括:
接收所述第四虚拟机接入的数据转发装置发送的第四数据报文,所述第四数据报文是由所述第四虚拟机接入的数据转发装置根据所述第一虚拟机的路由转发表项为第三数据报文封装第五外层隧道封装得到,所述第三数据报文的源IP地址为所述第四虚拟机的源IP地址、目的IP地址为所述第一虚拟机的IP地址;以及
根据所述第四数据报文生成所述第四虚拟机的路由转发表项,所述第四虚拟机的路由转发表项包括所述第四虚拟机的IP地址、所述第四虚拟机接入的数据转发装置的IP地址以及所述第四虚拟机所在的三层网络的虚拟网络标识。
18.根据权利要求11所述的数据转发方法,其特征在于,当所述第二虚拟机从所述第二数据转发装置迁入所述数据转发装置时,还包括:
向控制器发送端口上线消息,所述端口上线消息包括所述第二虚拟机接入所述数据转发装置的端口的端口标识;以及
接收所述控制器发送的所述第二虚拟机的二层转发表项,所述二层转发表项包括所述第二虚拟机的IP地址、MAC地址、以及所述端口标识。
19.根据权利要求18所述的方法,其特征在于,还包括:
接收所述控制器发送的至少一个通知消息,每个通知消息的外层隧道封装中的源IP地址为所述数据转发装置的IP地址、外层隧道封装中的目的IP地址为与所述数据转发装置属于相同三层网络的另一数据转发装置的IP地址,每个通知消息的内层源IP地址为所述第二虚拟机的IP地址、内层目的IP地址为设定IP地址,所述外层隧道封装中还包括所述数据转发装置所在的三层网络的虚拟网络标识;以及
根据每个通知消息的外层隧道封装中的目的IP地址向所述目的IP地址的数据转发装置转发所述通知消息。
20.根据权利要求11所述的数据转发方法,其特征在于,
当所述第一虚拟机迁移到另一数据转发装置时,还包括:
接收控制器发送的通知消息,所述通知消息的外层隧道封装中的源IP地址为所述另一数据转发装置的IP地址、外层隧道封装中的目的IP地位为所述数据转发装置的IP地址,所述通知消息的内层源IP地址为所述第一虚拟机的IP地址、内层目的IP地址为设定IP地址;所述通知消息的外层隧道封装中还包括所述第一虚拟机所属的三层网络的虚拟网络标识;以及
根据所述通知消息生成所述第一虚拟机的路由转发表项,并且根据所述设定IP地址丢弃所述通知消息,所述路由转发表项包括所述第一虚拟机的IP地址、所述另一数据转发装置的IP地址、以及所述第一虚拟机所在的三层网络的虚拟网络标识。
21.一种用于软件定义网络中的数据转发装置,其特征在于,包括:
存储器,用于存储程序代码;
处理器,用于执行所述存储器存储的程序代码,所述程序代码使得所述处理器执行权利要求11至权利要求20所述的任一项数据转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610808232.9A CN107800628B (zh) | 2016-09-07 | 2016-09-07 | 用在软件定义网络中的数据转发装置及数据转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610808232.9A CN107800628B (zh) | 2016-09-07 | 2016-09-07 | 用在软件定义网络中的数据转发装置及数据转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107800628A true CN107800628A (zh) | 2018-03-13 |
CN107800628B CN107800628B (zh) | 2020-12-01 |
Family
ID=61530938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610808232.9A Active CN107800628B (zh) | 2016-09-07 | 2016-09-07 | 用在软件定义网络中的数据转发装置及数据转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107800628B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988439A (zh) * | 2019-05-21 | 2020-11-24 | 深信服科技股份有限公司 | 一种arp请求抑制***、方法、设备及存储介质 |
CN113994639A (zh) * | 2019-08-28 | 2022-01-28 | 华为技术有限公司 | 基于远程网络节点的l3虚拟映射的虚拟本地存在 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938794A (zh) * | 2012-11-14 | 2013-02-20 | 华为技术有限公司 | 地址解析协议arp消息转发方法、交换机和控制器 |
CN103476062A (zh) * | 2012-06-06 | 2013-12-25 | 华为技术有限公司 | 一种数据流调度的方法、设备和*** |
CN103841028A (zh) * | 2014-03-24 | 2014-06-04 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
CN103905283A (zh) * | 2012-12-25 | 2014-07-02 | 华为技术有限公司 | 基于可扩展虚拟局域网的通信方法及装置 |
US20140376550A1 (en) * | 2013-06-24 | 2014-12-25 | Vmware, Inc. | Method and system for uniform gateway access in a virtualized layer-2 network domain |
CN104350714A (zh) * | 2014-05-29 | 2015-02-11 | 华为技术有限公司 | 一种报文转发方法和VxLAN网关 |
US20150058463A1 (en) * | 2013-08-26 | 2015-02-26 | Vmware, Inc. | Proxy methods for suppressing broadcast traffic in a network |
US20150124817A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Ip-based forwarding of bridged and routed ip packets and unicast arp |
CN105099960A (zh) * | 2014-04-30 | 2015-11-25 | 国际商业机器公司 | 用于实现服务链的方法和装置 |
CN105207908A (zh) * | 2015-09-30 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | 一种报文处理方法及体系架构 |
CN105376154A (zh) * | 2014-08-11 | 2016-03-02 | 博科通讯***有限公司 | 渐进式mac地址学习 |
-
2016
- 2016-09-07 CN CN201610808232.9A patent/CN107800628B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103476062A (zh) * | 2012-06-06 | 2013-12-25 | 华为技术有限公司 | 一种数据流调度的方法、设备和*** |
CN102938794A (zh) * | 2012-11-14 | 2013-02-20 | 华为技术有限公司 | 地址解析协议arp消息转发方法、交换机和控制器 |
CN103905283A (zh) * | 2012-12-25 | 2014-07-02 | 华为技术有限公司 | 基于可扩展虚拟局域网的通信方法及装置 |
US20140376550A1 (en) * | 2013-06-24 | 2014-12-25 | Vmware, Inc. | Method and system for uniform gateway access in a virtualized layer-2 network domain |
US20150058463A1 (en) * | 2013-08-26 | 2015-02-26 | Vmware, Inc. | Proxy methods for suppressing broadcast traffic in a network |
US20150124817A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Ip-based forwarding of bridged and routed ip packets and unicast arp |
CN103841028A (zh) * | 2014-03-24 | 2014-06-04 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
CN105099960A (zh) * | 2014-04-30 | 2015-11-25 | 国际商业机器公司 | 用于实现服务链的方法和装置 |
CN104350714A (zh) * | 2014-05-29 | 2015-02-11 | 华为技术有限公司 | 一种报文转发方法和VxLAN网关 |
CN105376154A (zh) * | 2014-08-11 | 2016-03-02 | 博科通讯***有限公司 | 渐进式mac地址学习 |
CN105207908A (zh) * | 2015-09-30 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | 一种报文处理方法及体系架构 |
Non-Patent Citations (4)
Title |
---|
HIMANSHU SHAH,ET AL.: ""ARP Broadcast Reduction for Large Data Centers draft-shah-armd-arp-reduction-02.txt"", 《IETF》 * |
L. DUNBAR,ET AL.: ""Practices for Scaling ARP and Neighbor Discovery (ND)"", 《IETF》 * |
朱明明,等: ""基于SDN的数据中心网络研究"", 《邮电设计技术》 * |
李翔: "基于VXLAN和SDN的云数据中心解决方案", 《电子科学技术》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988439A (zh) * | 2019-05-21 | 2020-11-24 | 深信服科技股份有限公司 | 一种arp请求抑制***、方法、设备及存储介质 |
CN111988439B (zh) * | 2019-05-21 | 2023-07-14 | 深信服科技股份有限公司 | 一种arp请求抑制***、方法、设备及存储介质 |
CN113994639A (zh) * | 2019-08-28 | 2022-01-28 | 华为技术有限公司 | 基于远程网络节点的l3虚拟映射的虚拟本地存在 |
CN113994639B (zh) * | 2019-08-28 | 2023-09-22 | 华为云计算技术有限公司 | 基于远程网络节点的l3虚拟映射的数据传输方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN107800628B (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10958461B2 (en) | SDN facilitated multicast in data center | |
CN104935516B (zh) | 基于软件定义网络的通信***及方法 | |
CN105706398B (zh) | 重叠网络中的虚拟端口信道弹回的方法和*** | |
CN104869042B (zh) | 报文转发方法和装置 | |
US9590820B1 (en) | Methods and apparatus for improving load balancing in overlay networks | |
CN106254256B (zh) | 基于三层vxlan网关的数据报文转发方法和设备 | |
CN103795636B (zh) | 组播处理方法、装置及*** | |
CN106209648B (zh) | 跨虚拟可扩展局域网的组播数据报文转发方法和设备 | |
CN106936939A (zh) | 一种报文处理方法、相关装置及nvo3网络*** | |
CN106209636B (zh) | 从vlan至vxlan的组播数据报文转发方法和设备 | |
CN107911258A (zh) | 一种基于sdn网络的安全资源池的实现方法及*** | |
CN107404436A (zh) | 用于虚拟可扩展局域网的通信方法和装置 | |
CN105681198B (zh) | 一种业务链处理方法、设备及*** | |
CN104170331A (zh) | 用于vxlan的l3网关 | |
CN104811382B (zh) | 数据包的处理方法与装置 | |
CN106452857A (zh) | 生成配置信息的方法和网络控制单元 | |
CN106453023B (zh) | 一种用于物理设备与虚拟网络的通信方法、设备与*** | |
CN104660479A (zh) | 一种组网方法以及网络*** | |
CN106209638A (zh) | 从虚拟局域网至虚拟可扩展局域网的报文转发方法和设备 | |
CN106209689A (zh) | 从vxlan至vlan的组播数据报文转发方法和设备 | |
CN107113221A (zh) | 使用通用路由封装的网络虚拟化双向转发检测 | |
CN107332772A (zh) | 转发表项建立方法和装置 | |
CN108040135A (zh) | 一种vpws报文穿越三层ip网络的方法及装置 | |
CN108322391A (zh) | 基于流表的数据传送方法 | |
CN106209637A (zh) | 从虚拟可扩展局域网至虚拟局域网的报文转发方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |