覆盖网络的互连的制作方法

文档序号:14186902阅读:270来源:国知局

本发明的实施例总体上涉及通信领域,并且更具体地涉及用于覆盖网络的互连的方法和装置。



背景技术:

网络虚拟化的发展对高网络容量和效率提出了很高的要求。被称为流行的网络虚拟化技术的覆盖网络技术可以容纳数十万个虚拟机(vm),并且从而可以极大地提高网络容量和效率。通常,基于覆盖网络技术的覆盖网络建立在底层物理网络基础设施之上。底层物理网络基础设施可以包括多个计算设备。示例计算设备包括但不限于服务器、交换机、台式计算机、膝上型计算机、平板电脑、智能手机、移动电话、个人数字助理(pda)等。覆盖网络中的虚拟节点可以通过虚拟或逻辑链路连接,并且每个链路对应于底层物理网络中的计算设备之间的一个或多个物理链路。

虚拟可扩展局域网(vxlan)是用于在第3层网络上覆盖虚拟化的层2网络的典型的覆盖网络技术。vxlan允许将媒体访问控制(mac)分组到因特网协议(ip)分组的隧道传输。具体地,vxlan网络中可以存在多个vm和vxlan隧道端点(vtep)。一个vtep连接到一个或多个vm。vtep或vm可以位于底层物理网络中的一个或多个计算设备内。如果源vm意图向目的地vm发送数据,则源vm生成数据分组并且向与其连接的源vtep发送该分组。在接收到数据分组时,源vtep通过插入外部报头将分组封装成覆盖分组,并且向连接到目的地vm的目的地vtep传输覆盖分组。如本文中使用的,术语“覆盖分组”是指在两个vtep之间传输的经封装的分组,其由vtep之一通过使用外部报头封装来自相应vm的分组而生成。在目的地vtep接收到覆盖分组之后,目的地vtep将覆盖分组解封装成数据分组并且向目的地vm传输数据分组。这样,源vtep和目的地vtep形成了用于数据分组的传输的隧道。

通用vxlan网络和软件定义网络(sdn)vxlan网络是两个典型的vxlan网络。互联网工程任务组(ietf)已经提出了请求注释(rfc)7348来指定通用vxlan网络的框架。对于sdnvxlan网络,允许具体供应商指定具体框架。



技术实现要素:

通常,本发明的实施例为覆盖网络的互连提供了有效的解决方案。

第一方面,提供了一种通信设备。该设备包括耦合到第一覆盖网络的第一vtep和耦合到第二覆盖网络的第二vtep,其中第一和第二覆盖网络使用相同的虚拟网络标识符。第一vtep被配置为从第一覆盖网络接收针对第二覆盖网络中的目的地虚拟机(vm)的地址解析请求,其中地址解析请求包含目的地vm的因特网协议(ip)地址。第二vtep被配置为向第二覆盖网络转发地址解析请求,从第二覆盖网络接收地址解析响应,并且从地址解析响应中获得与目的地vm相关联的端点信息。第一vtep还被配置为向第一覆盖网络发送端点信息。

第二方面,提供了一种通信方法。该方法包括:从第一覆盖网络接收针对第二覆盖网络中的目的地虚拟机(vm)的地址解析请求,第一和第二覆盖网络使用相同的虚拟网络标识符,并且地址解析请求包含目的地vm的因特网协议(ip)地址;向第二覆盖网络转发地址解析请求;从第二覆盖网络接收针对地址解析请求的地址解析响应;从地址解析响应中获得与目的地vm相关联的端点信息;以及向第一覆盖网络发送端点信息。还提供了相应的计算机程序产品。

根据本发明的实施例,利用中介器,可以在使用相同的虚拟网络标识符的不同的覆盖网络之间转发与这些覆盖网络中的vm相关联的端点信息。以这种方式,一个覆盖网络中的源vm可以直接与另一覆盖网络中的目的地vm进行通信。这样的直接通信可以有效且高效地避免性能瓶颈和单点故障的问题。

附图说明

图1示出了本发明的实施例可以在其中实施的环境;

图2示出了根据本发明一个实施例的中介器的示例结构;

图3例示了根据本发明另一实施例的中介器的示例结构;

图4示出了根据本发明的一个实施例的其中中介器实现sdnvxlan网络中的vm与非sdnvxlan网络中的vm之间的通信的示例场景;

图5示出了根据本发明的一个实施例的由中介器从sdnvxlan网络向非sdnvxlan网络转发广播分组的过程;以及

图6示出了根据本发明一个实施例的通信方法的流程图。

具体实施方式

现在将参考若干示例实施例来讨论本发明。应当理解,这些实施例被讨论仅仅是为了使得本领域技术人员能够更好地理解和实现本发明,而不是对本发明的范围提出任何限制。

如本文中使用的,术语“包括”及其变体应当被解读为表示“包括但不限于”的开放式术语。术语“基于”应当被解读为“至少部分地基于”。术语“一个实施例”和“实施例”应当被解读为“至少一个实施例”。术语“另一实施例”应当被解读为“至少一个其他实施例”。下面可以包括其他明确的和隐含的定义。

图1示出了本发明的实施例可以在其中实施的示例环境100。如图所示,在环境100中,存在两个覆盖网络,包括sdnvxlan网络110和非sdnvxlan网络120。在本发明的上下文中,术语“非sdnvxlan网络”是指其框架符合例如由ietf标准化的rfc7348等标准的vxlan网络。

如图1所示,sdnvxlan网络110包括两个vm113和114、以及分别连接到vm113和114的两个sdnvtep111和112。非sdnvxlan网络120包括两个vm123和124、以及分别连接到vm123和124的两个非sdnvtep121和122。应当认识到,环境100中的覆盖网络的数目和类型仅用于说明的目的,而没有提出限制。环境100中可以有任意适当数目的覆盖网络,并且覆盖网络可以是任意适当的类型。同样,个体覆盖网络110或120中的vm和vtep的数目仅用于说明的目的,而没有提出限制。在sdnvxlan网络110或非sdnvxlan网络120中,可以有任意适当数目的vm连接到任意适当数目的vtep。

如上所述,诸如sdnvxlan网络110和非sdnvxlan网络120等覆盖网络可以建立在包括多个计算设备的底层物理网络之上。计算设备的示例包括但不限于服务器、交换机、台式计算机、膝上型计算机、平板电脑、智能手机、移动电话、pda等。诸如vm113、114、123和124以及vtep111、112、121和122等覆盖网络中的虚拟节点可以位于底层物理网络中的一个或多个计算设备内。

在底层物理网络中,计算设备可以通过通信介质与另一计算设备通信。通信介质包括但不限于用电、光、rf、红外、声学或其他载体实现的有线或无线技术。

如上所述,在vxlan网络中,vtep通常执行分组的封装和解封装。逻辑上,vtep可以包括覆盖模块和交换模块。交换模块经由本地端口连接到vm,并且可以从vm接收分组(有时也称为帧等)。如本文中使用的,术语“本地端口”是指能够实现vm与vtep之间的传输的任意适当的虚拟或逻辑端口。覆盖模块将从vm接收的分组封装成覆盖分组,并且通过底层物理网络之上的虚拟隧道向远程vtep发送覆盖分组。同时,覆盖模块可以将经由外部端口从远程vtep接收的覆盖分组解封装,并且然后解封装的分组又通过交换模块和本地端口被发送给vm。如本文中使用的,术语“外部端口”是指能够实现vtep之间的传输的任意适当的端口。

vxlan网络可以包括多个vxlan段,并且只有相同vxlan段内的vm可以彼此通信。vxlan段可以由vxlan网络标识符(vnid)来标识,vidlan网络标识符通常由24个比特组成,以使得最多1600万个vxlan段能够共存于vxlan网络中。为了实现具有相同vxlan段的vm之间的通信,vtep具有包含单个vnid的条目的转发表。转发表中的一个条目指示mac地址到本地端口或相应的vxlan段内的远程vtep的ip地址的映射。

具体地,根据这个示例实施例,当vtep在本地端口从vm接收到分组时,vtep使用目的地vm的目的地mac地址在转发表中搜索朝向目的地vm的本地端口、或者连接到目的地vm的目的地vtep的映射ip地址。在本发明的上下文中,源vm是指发起通信的vm,并且目的地vm是指终止通信的vm。相应地,源vtep是指经由本端端口连接到源vm的vtep,并且目的地vtep是指经由本端端口连接到目的地vm的vtep。在找到映射的条目后,vtep可以确定接收的分组应当通过本地端口传送给所连接的vm,还是应当被封装并且通过虚拟化隧道发送给远程vtep。另一方面,当经由外部接口接收到经封装的分组时,vtep使用内部目的地mac地址在转发表中搜索朝向目的地vm的本地端口。然后,分组被解封装并且经由本地端口传送给目的地vm。

根据协议,在sdnvxlan网络110和非sdnvxlan网络120中,mac地址到ip地址的映射由vtep以不同的方式创建和更新。具体地,sdnvxlan网络110中的vtep获知控制平面中的与vm和vtep相关联的地址,而非sdnvxlan120中的vtep获知数据平面中的与vm和vtep相关联的地址。

作为示例,在vm123向非sdnvxlan网络120中的vm124发起通信的情况下,在源vtep121从源vm123接收到目的地为目的地vm124的分组之后,源vtep121通过查找转发表来确定源vm123和目的地vm124是否在同一vxlan段内以及是否存在分组中包含的目的地mac地址到远程vtep122的ip地址或本地端口的映射。响应于映射指向vtep122,源vtep121使用外部报头来封装分组。外部报头可以包括mac报头、ip报头和vxlan报头,其中mac报头包括目的地vtep122的mac地址,ip报头包括目的地vtep122的ip地址,并且vxlan报头包括vnid。然后,经封装的分组被发送给vtep122。

在接收到经封装的分组时,目的地vtep122验证vnid的有效性,并且通过查找其自己的转发表来确定在所连接的vm中是否存在如下vm,该vm与vnid相对应并且使用所接收的分组中携带的目的地mac地址。响应于找到vm124,所接收的分组被解封装并且经由相应的本地端口传送给vm124。

除了将分组传送给目的地vm124之外,目的地vtep122还获知vm123的源mac地址到vtep121的源ip地址的映射,并且继而将这个映射存储在转发表中。这样,当目的地vm124发送响应分组时,vtep122可以从转发表中获得转发地址信息,并且因此可以避免响应分组的未知目的地泛洪。

在sdnvxlan网络110中,转发过程类似于非sdnvxlan网络120中的转发过程。sdnvxlan网络110中的vtep111或112也使用转发表来确定如何转发经由外部接口或经由本地端口接收的分组。不同之处在于,在sdnvxlan网络110中,如上所述,地址是在控制平面中获知的。具体地,vtep111或112不是在数据平面中获知地址之间的映射以及自己创建转发条目,而是向专用控制器查询与目的地vm相关联的端点信息。在本发明的上下文中,与vm相关联的端点信息包括但不限于vm的mac地址、vm的ip地址、连接到vm的vtep的ip地址以及与vm相关联的vnid。如图1所示,sdnvxlan网络110还包括实现这样的查询的sdn控制器115。同样,sdn控制器115可以位于底层物理网络中的一个或多个计算设备内。在从sdn控制器115接收到端点信息之后,vtep111或112可以在本地高速缓存该信息。以这种方式,vtep111或112下一次不必查询控制器115。

除了向sdn控制器115查询与目的地vm相关联的端点信息之外,vtep111或112还向控制器115注册与源vm相关联的端点信息。例如,在vm113和114属于与vnid相对应的同一vxlan段的情况下,在vtep111从vm113接收到将vm114的ip地址解析为相应的mac地址的地址解析协议(arp)请求之后,vtep111在本地高速缓存中搜索mac地址。如果未找到mac地址,则vtep111向控制器115查询与vm114相关联的端点信息。如果控制器115不知道端点信息,则控制器115可以指示包含vnid的所有vtep执行解析。在vtep112接收到指令之后,vtep112可以向与其连接的vm查询。如果从vm114接收到arp响应,则vtep112将向控制器115注册被包含在arp响应中的相关联的端点信息。

如上所述,非sdnvxlan网络120的框架由rfc7348中的ietf指定,而sdnvxlan网络110的框架由特定供应商指定。由于两种类型的vxlan网络的框架的标准化不一致,所以非sdnvxlan网络中的vm可能无法与sdnvxlan网络中的vm通信,并且来自一个供应商的sdnvxlan网络中的vm可能无法与来自另一供应商的sdnvxlan网络中的vm通信。

根据本发明的示例实施例,如图1所示,在sdnvxlan网络110与非sdnvxlan网络120之间布置有被称为中介器130的通信设备。中介器130同样可以位于底层物理网络中的一个或多个计算设备内。在sdnvxlan网络110和非sdnvxlan网络120使用相同的vnid的情况下,通过中介器130,sdnvxlan网络110中的vm113或114可以获得非sdnvxlan网络120中的vm123或124的mac地址,并且sdnvxlan网络110中的vtep111或112可以获得vm123或124的mac地址到非sdnvxlan网络120中的vtep121或122的ip地址的映射。因此,vm113或114可以直接与vm123或124通信。

图2示出了根据本发明一个示例实施例的中介器130的示例结构。如图所示,中介器130包含两个vtep,其包括第一vtep210和第二vtep220。第一vtep210耦合到第一覆盖网络,第二vtep220耦合到第二覆盖网络,第二覆盖网络与第一覆盖网络使用相同的虚拟网络标识符。如本文中使用的,术语“虚拟网络标识符”是指可以标识覆盖网络的任意适当的标识符。这样的标识符的示例包括但不限于vnid。

根据本发明的示例实施例,第一和第二覆盖网络可以是符合例如ietf标准等标准的任意适当类型的覆盖网络,或者可以由特定供应商提供。因此,第一vtep210和第二vtep220分别用作第一和第二覆盖网络内的vtep。可以理解,中介器130中的vtep的数目仅用于说明的目的,而不提出限制。中介器130可以包括耦合到相应数目的覆盖网络以实现这些覆盖网络的互连的任意适当数目的vtep。

根据本发明的示例实施例,中介器130中的第一vtep210从第一覆盖网络接收针对第二覆盖网络中的目的地vm的地址解析请求,其中地址解析请求携带目的地vm的ip地址。地址解析请求包括针对目的地vm的arp请求和针对目的地vm的端点信息解析请求中的至少一个。在本发明的上下文中,术语“arp请求/响应”是指基于arp分组的地址解析请求/响应。术语“端点信息解析请求/响应”是指通过sdn控制平面传送的地址解析请求/响应。地址解析请求的实现取决于第一覆盖网络的实现,这将在下面参考图3详细描述。

通过中介器130,源自于第一覆盖网络的地址解析请求可以被转发给第二覆盖网络。中介器130中的第二vtep220可以从第二覆盖网络接收地址解析响应,作为对来自第一覆盖网络的地址解析请求的响应。然后,第二vtep220从地址解析响应中获得与目的地vm相关联的端点信息。所获得的地址可以经由中介器130被发送给第一覆盖网络。以这种方式,第一覆盖网络中的源vm可以知道第二覆盖网络中的目的地vm的mac地址,并且第一覆盖网络中的源vtep可以知道目的地vm的mac地址到第二覆盖中的目的地vtep的ip地址的映射。因此,不同覆盖网络中的vm可以直接通信。根据本发明的实施例实现的系统因此可以避免或减轻否则可能存在的流量瓶颈和/或单点故障的问题。

图3示出了根据本发明的另一示例实施例的中介器130的示例结构。在这个示例中,中介器130包括耦合到sdnvxlan网络的sdnvtep310和耦合到非sdnvxlan网络的非sdnvtep320。应当理解,中介器130可以应用于图1中的环境100。因此,sdnvtep310耦合到sdnvxlan网络110,并且非sdnvtep320耦合到非sdnvxlan网络120。

应当理解,中介器130中的vtep的类型仅用于说明的目的,而不提出限制。根据本发明的示例实施例,中介器130可以包括耦合到相应类型的覆盖网络的任意适当类型的vtep。例如,中介器130可以包括耦合到两个sdnvxlan网络的两个sdnvtep。

如图3所示,sdnvtep310包括耦合到sdnvxlan网络110的sdn接口311、sdn控制平面代理312和sdn交换模块313。非sdnvtep320包括耦合到非sdnvxlan网络120的非sdn接口321、非sdn覆盖模块322和非sdn交换模块323。下面将参考图4来描述sdnvtep310和非sdnvtep320的组件的功能,图4示出了其中中介器130实现sdnvxlan网络110中的vm113与非sdnvxlan网络120中的vm123之间的通信的示例场景。

在如图4所示的场景中,sdnvxlan网络110中的vm113想要使用ip地址“ip3”与非sdnvxlan网络120中的vm123通信。源vm113向在sdnvxlan网络110中与其连接的源vtep111发送将ip地址“ip3”解析为相应的mac地址的arp请求。在接收到arp请求之后,vtep111在本地高速缓存中的转发表中搜索与跟vm113相关联的vnid相对应的转发条目。如果找到目的地vm123的mac地址,则vtep111向vm113发送回携带mac地址的arp响应。如果未找到mac地址,则vtep111向sdn控制器115发送针对与vm123相关联的端点信息的端点信息解析请求。同时,vtep111向控制器115注册与vm113相关联的端点信息。

在sdn控制器115从vtep111接收到请求之后,控制器确定与目的地vm123相关联的端点信息。如果sdn控制器115不知道端点信息,则控制器115向每个sdnvtep发出包含vnid的端点信息解析请求,以使用ip地址“ip3”查询与vm123相关联的端点信息。

在这种情况下,中介器130可以接收sdnvxlan网络110中的控制器115发送的端点信息解析请求,并且然后向非sdnvxlan网络120转发端点信息解析请求。具体地,中介器130中的sdnvtep310的sdn接口311从控制器115接收端点信息解析请求。然后,sdn控制平面代理312基于所接收的端点信息解析请求生成arp请求,其中arp请求包含中介器130的mac地址作为源mac地址。通过sdnvtep310的sdn交换模块313和非sdnvtep320的非sdn交换模块323,arp请求被输入到非sdnvtep320中。

在接收到arp请求之后,非sdnvtep320的非sdn覆盖模块322通过使用非sdnvtep320的ip地址作为外部报头的源ip地址对arp请求进行封装。耦合到非sdnvxlan网络120的非sdn接口321向非sdnvxlan网络120发送经封装的arp请求。以这种方式,来自sdnvxlan网络110中的控制器115的地址解析请求可以被转发给非sdnvxlan网络120。

经封装的arp请求可以以任意适当的方式发送到非sdnvxlan网络120。例如,经封装的arp请求可以广播给非sdnvxlan网络120中的所有vtep121和122。具体地,通过插入包含非sdnvxlan网络120的ip多播组地址作为目的地ip地址的外部报头,arp请求可以被封装成覆盖分组。因此,经封装的arp请求被传送给非sdnvxlan网络120中的vtep121和122。作为备选示例,通过将vtep121和122的ip地址分别作为目的地ip地址插入到外部报头中,经封装的arp请求可以单播到非sdnvxlan网络120中的vtep121和122。

在如图4所示的场景中,在非sdnvxlan网络120中的vtep121或122接收到经封装的arp请求之后,vtep121或者122将其解封装成arp请求,并且然后将arp请求传送给与其相连并且与vnid相关联的所有vm。同时,vtep121或122还获知中介器130的mac地址到中介器130的非sdnvtep320的ip地址的映射,因为作为源mac地址的中介器130的mac地址已经被包含在内部报头中并且作为源ip地址的非sdnvtep320的ip地址已经被包含在外部报头中。

在目的地vm123从目的地vtep121接收到arp请求之后,vm123用包含vm123的mac地址“mac3”作为源mac地址并且包含中介器130的mac地址作为目的地mac地址的arp响应进行应答。一旦接收到arp响应,vtep121通过查找转发表来获得从中介器130的mac地址到非sdnvtep320的ip地址的映射。然后,vtep121通过插入包含vtep121的ip地址作为源ip地址并且包含非sdnvtep320的ip地址作为目的地ip地址的外部报头来封装arp响应。vtep121向中介器130发送经封装的arp响应。

根据本发明的示例实施例,中介器130还可以从非sdnvxlan网络120向sdnvxlan网络110转发与目的地vm123相关联的端点信息。具体地,非sdnvtep320的非sdn接口321从非sdnvxlan网络120接收经封装的arp响应。非sdn覆盖模块322将经封装的arp响应解封装成arp响应,并且获得与目的地vm123相关联的端点信息。非sdnvtep320的非sdn交换模块323向sdnvtep310的sdn交换模块313传输arp响应。在接收到arp响应之后,sdn控制平面代理312获取由非sdnvtep320的非sdn覆盖模块322获得的端点信息。然后,sdn控制平面代理312生成携带所获得的端点信息的端点信息解析响应,并且经由sdn接口311向sdnvxlan网络110中的sdn控制器115发送端点信息解析响应。

为了便于操作,在一个示例实施例中,所获得的端点信息可以由非sdnvtep320的非sdn覆盖模块322存储在中介器130处。因此,sdnvtep310的sdn控制平面代理312可以在中介器130中搜索端点信息。端点信息的存储可以以任意适当的方式来实现。例如,端点信息可以存储在与在解封装之后得出的arp响应相关联的元数据中。

通过由中介器130从非sdnvxlan网络120向sdnvxlan网络110转发与目的地vm123相关联的端点信息,sdnvxlan网络110的源vm113可以向非sdnvxlan网络120的目的地vm120直接传输数据。例如,如图4所示,在sdn控制器115接收到与目的地vm123相关联的端点信息之后,控制器115发送来自vtep111的端点信息解析请求的端点信息解析响应。该响应携带与目的地vm123相关联的端点信息。当vtep111接收到端点信息时,它使用该信息在转发表中为vm123创建条目,并且同时向vm113发送携带有ip地址“ip3”到mac地址“mac3”的解析结果的arp响应。在获知vm123的mac地址之后,vm113可以向vm123直接发送数据。

在如图4所示的场景中,sdnvxlan网络110的vm113与非sdnvxlan网络120的vm123之间的通信是双向的。例如,在非sdnvxlan网络120中的vm123接收到从sdnvxlan网络110中的vm113传输的数据之后,vm123可以向vm113发送响应数据。在这种情况下,由于vm123不知道vm113的mac地址,所以vm123也发送将vm113的ip地址“ip1”解析相为应的mac地址的arp请求,其中arp请求包含vm113的mac地址作为源mac地址。

在vtep121接收到来自vm123的arp请求之后,vtep121在本地转发表中查找映射关系。如果未找到映射,则vtep121通过插入包含vtep121的ip地址作为源ip地址的外部报头来封装arp请求,并且在非sdnvxlan网络120中广播经封装的arp请求。因此,中介器130可以接收经封装的arp请求。

根据本发明的示例实施例,中介器130同样可以从非sdnvxlan网络120向sdnvxlan网络110转发经封装的arp请求。具体地,在经封装的arp请求由非sdnvtep320的sdn接口321从非sdnvxlan网络120接收到之后,非sdn覆盖模块322将经封装的arp请求解封装成arp请求。然后,非sdn交换模块313向sdnvtep310的sdn交换模块313发送该arp请求。

在经由sdn交换模块323接收到arp请求之后,sdnvtep310的sdn控制平面代理312基于所接收的arp请求生成端点信息解析请求。然后,端点信息解析请求经由sdn接口311被发送到sdnvxlan网络110的sdn控制器115。以这种方式,源自于非sdnvxlan网络120的地址解析请求可以被转发给sdnvxlan网络110。

在一个示例实施例中,中介器130可以向sdn控制器115注册vm123的mac地址到vtep121的ip地址的映射。例如,在经封装的arp请求经由非sdn接口321从非sdnvxlan网络120被输入到非sdnvtep320中之后,非sdn覆盖模块322获得与vm123相关联的端点信息。然后,在解封装之后生成的arp请求经由sdn交换模块313被输入到sdnvtep310中,sdn控制平面代理312获取所获得的端点信息,并且经由sdn接口311向sdn控制器115注册获取到的端点信息。

同样,由非sdnvtep320的非sdn覆盖模块322获得的端点信息可以被存储在中介器130处。因此,sdnvtep310的sdn控制平面代理312可以在中介器130中搜索端点信息。同样,端点信息可以存储在与在解封装之后生成的arp请求相关联的元数据中。

如上所述,当vm113发送针对vm123的arp请求时,sdn控制器115能够从vtep111获知vm113的端点信息。因此,响应于从中介器130接收到端点信息解析请求,sdn控制器115使用与中介器130相关联的端点信息来对中介器130进行响应。因此,中介器130可以向非sdnvxlan网络120转发端点信息。

具体地,sdnvtep310的sdn接口311从sdn控制器115接收端点信息解析响应。sdn控制层代理312从所接收的端点信息解析响应中获得与vm113相关联的端点信息,并且生成携带所获得的端点信息中的mac地址作为源mac地址的arp响应。然后,arp响应经由sdn交换模块323和非sdn交换模块313从sdnvtep310传输到非sdnvtep320。

在接收到arp响应之后,非sdn覆盖模块322通过插入包含所获得的端点信息中的ip地址作为源ip地址的外部报头来封装arp响应。然后,非sdn接口313向非sdnvxlan网络120发送经封装的arp响应。以这种方式,与vm113相关联的端点信息可以从sdnvxlan网络110被转发给非sdnvxlan网络120。

在如图4所示的场景中,非sdnvxlan网络120中的vtep121可以接收由中介器130发送的经封装的arp响应。然后,vtep121将经封装的arp响应解封装成arp响应,并且将该arp响应传送给vm123。在vm123获知vm113的mac地址“mac1”之后,vm123可以使用mac地址“mac1”作为目的地mac地址直接向vm113发送数据。

根据本发明的示例实施例,通过中介器130,与不同覆盖网络中的vm相关联的端点信息可以在彼此之间被转发,并且因此,vm可以彼此直接通信。与传统方法相比,使用中介器130的方法可以避免性能瓶颈和单点故障,并且因此更加有效和高效。根据本发明的实施例实现的系统因此可以避免或减轻否则可能存在的流量瓶颈和/或单点故障的问题。

在一个示例实施例中,当中介器130从一个覆盖网络向另一覆盖网络转发与vm相关联的端点信息时,中介器130可以将端点信息存储在本地转发表中。因此,当中介器130下次接收到针对端点信息的地址解析请求时,中介器130可以在表中搜索端点信息,并且使用搜索到的端点信息向请求者作出响应,以便实现更高效的地址解析。

除了如上所述转发端点信息之外,在一个示例实施例中,中介器130可以从一个覆盖网络向另一覆盖网络转发广播通信。转发广播通信的这一功能将在下面参考图5来描述,图5示出了由中介器130从sdnvxlan网络110向非sdnvxlan网络120转发广播分组的过程。

如图5所示,sdnvxlan网络110中的vm113发送包含vm113的mac地址作为源mac地址的mac广播分组。在连接到vm113的vtep111接收到mac分组之后,vtep111获得与vm113相关联的vnid,并且通过分别使用在sdnvxlan网络110中的所有vtep的ip地址中的每个ip地址作为外层报头的目的地ip地址来将mac广播分组封装成多个ip分组。此外,vtep111将其自己的ip地址作为源ip地址插入到外部报头中。在这种情况下,作为sdnvxlan网络110的成员,中介器130可以接收ip分组之一。例如,中介器130的sdnvtep310可以经由sdn接口311接收ip分组。应当理解,作为备选示例,可以不是经由sdn接口311,而是经由sdnvtep310中的另一接口来接收ip分组。

如图3所示,中介器130中的sdnvtep310还包括sdn覆盖模块314。在从sdnvxlan网络110接收到ip分组之后,sdn覆盖模块314将ip分组解封装成mac广播分组。然后,sdn交换模块313向非sdnvtep320的非sdn交换模块323传输mac广播分组。

在接收到mac分组时,非sdn覆盖模块322通过插入包含第二覆盖网络的ip多播组地址作为目的地ip地址的外部报头来将mac广播分组封装成另外的ip分组。因此,经封装的ip分组可以被发送给非sdnvxlan网络120中的所有vtep121和122。以这种方式,在sdnvxlan网络110中广播的分组可以被转发给非sdnvxlan网络120。

此外,sdn覆盖模块314可以从sdnvxlan网络110接收的ip分组的外部报头中获得作为源ip地址的vtep111的ip地址。因此,非sdn覆盖模块322可以使用vtep111的ip地址作为另外的ip分组的外部报头的源ip地址。因此,非sdnvxlan网络120中的vtep121和122可以获知vm113的mac地址到vtep111的ip地址的映射。

类似于由中介器130获得的与vm相关联的端点信息,vtep111的所获得的ip地址也可以通过sdnvtep310的sdn覆盖模块314存储在中介器130处。因此,非sdnvtep320的非sdn覆盖模块322可以在中介器130中搜索vtep111的ip地址。同样,端点信息可以存储在与在解封装ip分组之后得出的与mac分组相关联的元数据中。

如上所述,从非sdnvxlan网络120到sdnvxlan网络110的转发过程类似于从sdnvxlan网络110到非sdnvxlan网络120的转发过程。不同之处在于,由中介器130接收和传输的ip分组的形式是不同的。例如,中介器130的非sdnvtep320可以经由非sdn接口321从非sdnvxlan网络110接收ip组播分组。ip组播分组由非sdnvxlan中的vtep网络110通过使用ip多播组地址封装mac广播分组来生成。此外,sdnvtep320的sdn覆盖模块322通过分别使用sdnvxlan网络110中的所有vtep的ip地址中的每个ip地址作为外部报头的目的地ip地址来将mac广播分组封装成多个ip分组。

在如图5所示的场景中,在vm113广播分组之后,广播分组通过底层物理网络被泛洪。这可能导致在中介器130中的sdnvtep310和非sdnvtep320两者处接收到广播分组。如果sdnvtep310和非sdnvtep320两者都执行转发,则可能发生转发循环或广播风暴的问题。

为了避免这样的问题,在一个示例实施例中,中介器130可以在诸如sdnvtep310和非sdnvtep320等内部vtep中包括过滤模块。过滤模块可以使得从外部覆盖网络接收到的分组能够只由相应的内部vtep处理。例如,如图3所示,在中介器130中,sdnvtep310可以包括sdn过滤模块315,并且非sdnvtep320可以包括非sdn过滤模块324。通过sdn过滤模块315和非sdn过滤模块324,只有sdnvtep310处理源自于sdnvxlan网络110的分组,并且只有非sdnvtep320处理源自于非sdnvxlan网络120的分组。

根据本发明的示例实施例,过滤模块可以使用过滤规则来确定接收的分组是否将被传送给内部vtep中的后续组件。具体地,如果分组符合过滤规则,则分组将被传送;否则,分组将被丢弃。

过滤模块可以使用任意适当的过滤规则。在一个示例实施例中,过滤规则可以基于包含允许的ip地址或ip子网的访问控制列表(acl)。如果接收的分组使用被包含在acl中的ip地址或ip子网,则分组将被允许通过。应当理解,使用acl作为过滤规则仅仅用于说明的目的,而没有提出任何限制。本发明的范围在这方面将不受限制。

被包括在中介器130中的模块可以以各种方式来实现,包括软件、硬件、固件或其任何组合。在一个示例实施例中,一个或多个模块可以使用软件和/或固件(例如,存储在存储介质上的机器可执行指令)来实现。除了机器可执行指令之外或代替机器可执行指令,中介器130中的部分或全部模块可以至少部分地由一个或多个硬件逻辑组件来实现。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、系统级芯片系统(soc)、复杂可编程逻辑器件(cpld)等。

图6示出了根据本发明的一个示例实施例的通信方法600的流程图。可以理解,方法600可以由图1和2所示的中介器130来实现。

如图6所示,在610,从第一覆盖网络接收针对第二覆盖网络中的目的地vm的地址解析请求。第一和第二覆盖网络使用相同的虚拟网络标识符,并且地址解析请求包含目的地vm的因特网协议(ip)地址。

在610,向第二覆盖网络转发地址解析请求。在620,从第二覆盖网络接收地址解析请求的地址解析响应。在630,从地址解析响应中获得与目的地vm相关联的端点信息,然后在640,向第一覆盖网络发送该端点信息。

在一个示例实施例中,第一覆盖网络可以是sdnvxlan网络,第二覆盖网络可以是非sdnvxlan网络。在这种情况下,从第一覆盖网络接收地址解析请求的步骤可以包括:从sdnvxlan网络的sdn控制器接收端点信息解析请求。向第二覆盖网络转发地址解析请求的步骤可以包括:基于所接收的端点信息解析请求生成arp请求,arp请求使用通信设备的mac地址作为源mac地址,通过插入包含非sdnvtep的ip地址作为源ip地址的外层报头来封装arp请求,并且向非sdnvxlan网络发送经封装的arp请求。

备选地或另外地,在这种情况下,从第二覆盖网络接收地址解析响应的步骤可以包括:从非sdnvxlan网络接收经封装的arp响应。从地址解析响应中获得端点信息的步骤可以包括:从经封装的arp响应中获得端点信息。向第一覆盖网络发送端点信息的步骤可以包括:生成携带所获得的端点信息的端点信息解析响应,并且向sdn控制器发送该端点信息解析响应。

在一个示例实施例中,第一覆盖网络可以是非sdnvxlan网络,并且第二覆盖网络是sdnvxlan网络。在这种情况下,从第一覆盖网络接收地址解析请求的步骤可以包括:从非sdnvxlan网络接收针对目的地vm的经封装的arp请求。向第二覆盖网络转发地址解析请求的步骤可以包括:将经封装的arp请求解封装成arp请求,基于arp请求生成端点信息解析请求,并且向sdnvxlan网络的sdn控制器发送该端点信息解析请求。在这种情况下,在一个示例实施例中,方法600还可以包括:获得与源vm相关联的另外的端点信息;并且向sdn控制器发送另外的端点信息。

备选地或另外地,在这种情况下,从第二覆盖网络接收地址解析响应的步骤可以包括:从sdn控制器接收端点信息解析响应。从地址解析响应中获得端点信息的步骤可以包括:从所接收的端点信息解析响应中获得端点信息。向第一覆盖网络发送端点信息的步骤可以包括:使用所获得的端点信息中的mac地址作为源mac地址来生成arp响应,通过插入包含所获得的端点信息中的ip地址作为源ip地址的外部报头来封装arp响应,并且向非sdnvxlan网络发送经封装的arp响应。

在一个示例实施例中,方法600还可以包括:从第一覆盖网络接收ip分组,该ip分组是通过封装mac广播分组而生成的;并且向第二覆盖网络转发该ip分组。

在一个示例实施例中,向第二覆盖网络转发ip分组的步骤可以包括:将ip分组解封装成mac广播分组;通过插入包含与第二覆盖网络相关联的ip地址作为目的地ip地址的外部报头来将mac广播分组封装成另外的ip分组;以及向第二覆盖网络传输另外的ip分组。

在一个示例实施例中,方法600还可以包括:获得从第一覆盖网络接收的ip组播分组的原始源ip地址。在这个示例中,将mac广播分组封装成另外的ip分组的步骤包括:使用原始源ip地址作为另外的ip分组的源ip地址。

应当理解,被包括在中介器130中的模块的功能对应于方法600的步骤。以上参考图2至图5描述的所有操作和特征同样适用于方法600的步骤,并且具有类似的效果。为简化起见,将省略细节。

通常,本发明的各种实施例可以用硬件或专用电路、软件、逻辑或其任何组合来实现。一些方面可以用硬件来实现,而其他方面可以用可以由控制器、微处理器或其他计算设备执行的固件或软件来实现。虽然本发明的实施例的各个方面被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的框、装置、系统、技术或方法可以用硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备、或其某种组合来实现。

作为示例,本发明的实施例可以在机器可执行指令的一般上下文中描述,诸如在目标真实或虚拟处理器上的设备中执行的程序模块中包括的机器可执行指令。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可以在各种实施例中根据需要在程序模块之间组合或拆分。程序模块的机器可执行指令可以在本地或分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质中。

用于执行本发明的方法的程序代码可以以一种或多种编程语言的任何组合来编写。这些程序代码可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码在由处理器或控制器执行时引起在流程图和/或框图中指定的功能/操作被实现。程序代码可以完全在机器上、部分在机器上、作为独立软件包、部分在机器上并且部分在远程机器上、或者完全在远程机器或服务器上执行。

在本发明的上下文中,机器可读介质可以是可以包含或存储用于由或者结合指令执行系统、装置或设备使用的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体的系统、装置或设备、或前述的任意适当的组合。机器可读存储介质的更具体的示例将包括具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备、或前述的任意适当的组合。

此外,尽管以特定顺序描述了操作,但是这不应当被理解为要求这样的操作以所示的特定顺序或按顺序执行,或者要执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。同样,尽管在上面的讨论中包含了若干具体的实现细节,但是这些细节不应当被解释为对本发明的范围的限制,而是作为可以特定于特定实施例的特征的描述。在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任意适当的子组合来实现。

虽然本发明已经以特定于结构特征和/或方法动作的语言进行了描述,但是应当理解,所附权利要求书中限定的本发明不一定限于上面描述的具体特征或动作。相反,上面描述的具体特征和动作被公开作为实现权利要求的示例形式。

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