CN107566262A - 虚拟可扩展局域网vxlan中报文转发方法及装置 - Google Patents
虚拟可扩展局域网vxlan中报文转发方法及装置 Download PDFInfo
- Publication number
- CN107566262A CN107566262A CN201610506713.4A CN201610506713A CN107566262A CN 107566262 A CN107566262 A CN 107566262A CN 201610506713 A CN201610506713 A CN 201610506713A CN 107566262 A CN107566262 A CN 107566262A
- Authority
- CN
- China
- Prior art keywords
- vtep
- mac address
- message
- corresponding relation
- multicast
- 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.)
- Pending
Links
Landscapes
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种虚拟可扩展局域网VXLAN中报文转发方法及装置,该方法包括:第一虚拟隧道终端VTEP接收来自第一虚拟机VM的第一报文,其中,该第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;上述第一VTEP根据第一VTEP中记录的第二VM的MAC地址和与第二VM连接的第二VTEP的对应关系确定第二VTEP,其中,该第二VM的MAC地址和第二VTEP的对应关系为第二VTEP告知给第一VTEP的;上述第一VTEP将第一报文通过上述第二VTEP转发给第二VM。通过本发明,解决了相关技术中存在的在VTEP之间进行报文转发时会出现占据网络带宽影响设备性能的问题。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种虚拟可扩展局域网VXLAN中报文转发方法及装置。
背景技术
在数据中心云计算多租户环境中,每个用户分配有不同的虚拟机和资源,不同的租户之间需要进行逻辑隔离。传统上采用虚拟局域网(Virtual Local Area Network,简称为VLAN)进行隔离,但是12位的VLAN标识的隔离能力只能达到4096,在日益发展的大规模数据中心的环境中,采用VLAN隔离的方式已经不能满足需求。同时,在数据中心进行迁移和备份时,基于互联网协议(Internet Protocol,简称为IP)子网划分的方式也限制了二层的连通性。
虚拟可扩展局域网(Virtual eXtensible Local Area Network,简称为VXLAN)技术主要用于解决上述问题。它将原始报文封装在用户数据协议(User Date Protocol,简称为UDP)报文里,通过VXLAN封装后的2层以太网帧可以跨3层网络边界,让组网以及应用部署变得更加灵活。VXLAN使用24位的虚拟可扩展局域网网络标识(VXLAN NetworkIdentifier,简称为VNID)来标识不同的逻辑网络,极大地扩展了逻辑网络的数目。
图1是相关技术中的VXLAN报文格式示意图,其中O-SIP和O-DIP分别代表外层IP头的源IP和目的IP,I-DMAC和I-SMAC分别代表内层报文以太头部目的MAC和源MAC。
图2是相关技术中的VXLAN网络的组网示意图。假设虚拟隧道终端VTEP1(VirtualTunnel End Point)下的虚拟机VM A(Virtual Machine)要与VTEP2下的VM C实现通信,一般情况下通过组播进行。通过指定VNID映射到一个组播组,网络中相同VNID所属的VTEP加入同一个组播组,利用组播和学习机制完成MAC地址学习和报文转发,具体包括以下步骤:
1、VM A发送I-SMAC为A、I-DMAC为C的报文,VTEP1首先学习A的地址(即,记录VM A的MAC地址),然后在VTEP1上查找C的地址,若查找不到则将原始数据报文加上VXLAN头以组播的形式封装发送给所有加入该组播组的其他VTEP;
2、网络中的其他VTEP收到VTEP1发送过来的组播封装的VXLAN报文,学习报文中I-SMAC的地址A,然后查找I-DMAC的地址C,查找不到则将报文解封装,然后在本地接入的VM中泛洪;
3、VM C接收到VTEP2泛洪的报文,至此VM A发送的I-SMAC为A、I-DMAC为C的数据报文顺利到达VM C。
这个时候问题就出现了,如果VM C不发送反向到VM A的报文的话,VTEP2以及VTEP1则不会知道VM C的地址,VM A发送的到VM C的数据报文会一直以组播的形式封装出去,其他VTEP以及其他VM会收到本不必收到的报文,这种情况下会占据网络带宽并且影响设备性能。针对此类情况,相关技术中提出了如下解决方案:在网络中加入代理服务器,使所有的未知单播报文都经代理服务器转发,以此来减少网络中的组播,但是此方法需要额外添加高性能代理服务器设备,并且也会增加组网部署的复杂度。
针对相关技术中存在的在VTEP之间进行报文转发时会出现的占据网络带宽影响设备性能的问题,相关技术中并未提出有效的解决方案。
发明内容
本发明实施例提供了一种虚拟可扩展局域网VXLAN中报文转发方法及装置,以至少解决相关技术中存在的在VTEP之间进行报文转发时会出现的占据网络带宽影响设备性能的问题。
根据本发明的一个实施例,提供了一种虚拟可扩展局域网VXLAN中报文转发方法,包括:第一虚拟隧道终端VTEP接收来自第一虚拟机VM的第一报文,其中,所述第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;所述第一VTEP根据所述第一VTEP中记录的所述第二VM的MAC地址和与所述第二VM连接的第二VTEP的对应关系确定所述第二VTEP,其中,所述第二VM的MAC地址和所述第二VTEP的对应关系为所述第二VTEP告知给所述第一VTEP的;所述第一VTEP将所述第一报文通过所述第二VTEP转发给所述第二VM。
可选地,在所述第一VTEP接收来自所述第一VM的所述第一报文之前,所述方法还包括:所述第一VTEP接收第二报文,其中,所述第二报文的目的VM MAC地址为所述第二VM的MAC地址;所述第一VTEP在确定所述第一VTEP中未记录有所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,将所述第二报文封装为组播VXLAN报文;所述第一VTEP将所述组播VXLAN报文发送给与所述第一VTEP属于同一个组播组的其他VTEP;所述第一VTEP接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系。
可选地,所述第一VTEP在将所述组播VXLAN报文发送给与所述第一VTEP属于同一个组播组的所述其他VTEP之后,所述方法还包括:所述第一VTEP在未接收到所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,丢弃所述第二报文;或者,所述第一VTEP在未接收到所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,重新将所述第二报文封装成组播VXLAN报文;将重新封装成的组播VXLAN报文发送给与所述第一VTEP属于同一个组播组的其他VTEP。
可选地,所述第一VTEP在接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系之前,所述方法还包括:所述第一VTEP接收第三报文,其中,所述第三报文的目的VM MAC地址为所述第二VM的MAC地址;缓存所述第三报文;以及,所述第一VTEP在接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系之后,所述方法还包括:所述第一VTEP根据所述第二VM的MAC地址和所述第二VTEP的对应关系将缓存的所述第三报文通过所述第二VTEP转发给所述第二VM。
可选地,所述第一VTEP在接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系之后,所述方法还包括:所述第一VTEP在记录了所述第二VM的MAC地址和所述第二VTEP的对应关系之后的第一预定时间之内未接收到与所述第二VM连接的VTEP再次应答的所述对应关系的情况下,删除记录的所述第二VM的MAC地址和所述第二VTEP的对应关系;和/或,所述第一VTEP在记录了所述第二VM的MAC地址和所述第二VTEP的对应关系之后的第一预定时间之内接收到与所述第二VM连接的VTEP再次应答的所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,维持记录的所述第二VM的MAC地址和所述第二VTEP的对应关系。
可选地,所述方法还包括:所述第一VTEP接收与所述第一VTEP连接的一个或多个VM通告的所述一个或多个VM的MAC地址;所述第一VTEP记录与所述第一VTEP连接的一个或多个VM的MAC地址;其中,当所述第一VTEP在记录了与所述第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与所述第一VTEP连接的一个或多个VM中的第一部分VM再次通告的所述第一部分VM的MAC地址的情况下,删除记录的所述第一部分VM的MAC地址;和/或,当所述第一VTEP在记录了与所述第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与所述第一VTEP连接的一个或多个VM中的第二部分VM再次通告的所述第二部分VM的MAC地址的情况下,维持记录的所述第二部分VM的MAC地址。
根据本发明的另一个实施例,还提供了一种虚拟可扩展局域网VXLAN中报文转发方法,包括:第二虚拟隧道终端VTEP接收来自第一VTEP的组播VXLAN报文,其中,所述组播VXLAN报文是由所述第一VTEP对来自第一虚拟机VM的第二报文进行封装得到的,所述第二报文的源VM媒体接入控制MAC地址为所述第一VM的MAC地址,所述第二报文的目的VM MAC地址为第二VM的MAC地址;所述第二VTEP查找与所述第二VTEP连接的VM中是否存在所述第二VM;所述第二VTEP在查找到所述第二VM的情况下,对所述组播VXLAN报文进行解封装并将得到的所述第二报文发送给所述第二VM,以及,将所述第二VM的MAC地址和所述第二VTEP的对应关系应答给所述第一VTEP。
可选地,所述第二VTEP在接收来自第一VTEP的组播VXLAN报文之后,所述方法还包括:所述第二VTEP记录所述第一VM的MAC地址和所述第一VTEP的对应关系。
可选地,所述第二VTEP在记录所述第一VM的MAC地址和所述第一VTEP的对应关系之后,所述方法还包括:所述第二VTEP在记录了所述第一VM的MAC地址和所述第一VTEP的对应关系之后的第一预定时间之内未接收到来自所述第一VTEP的且源VM MAC地址为所述第一VM的报文的情况下,删除记录的所述第一VM的MAC地址和所述第一VTEP的对应关系;和/或,所述第二VTEP在记录了所述第一VM的MAC地址和所述第一VTEP的对应关系之后的第一预定时间之内接收到来自所述第一VTEP的且源VM MAC地址为所述第一VM的报文的情况下,维持记录的所述第一VM的MAC地址和所述第一VTEP的对应关系。
可选地,所述方法还包括:所述第二VTEP接收与所述第二VTEP连接的一个或多个VM通告的所述一个或多个VM的MAC地址;所述第二VTEP记录与所述第二VTEP连接的一个或多个VM的MAC地址;其中,当所述第二VTEP在记录了与所述第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与所述第二VTEP连接的一个或多个VM中的第一部分VM再次通告的所述第一部分VM的MAC地址的情况下,删除记录的所述第一部分VM的MAC地址;和/或,当所述第二VTEP在记录了与所述第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与所述第二VTEP连接的一个或多个VM中的第二部分VM再次通告的所述第二部分VM的MAC地址的情况下,维持记录的所述第二部分VM的MAC地址。
根据本发明的另一个实施例,还提供了一种虚拟可扩展局域网VXLAN中报文转发装置,所述装置应用于第一虚拟隧道终端VTEP中,包括:第一接收模块,用于接收来自第一虚拟机VM的第一报文,其中,所述第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;确定模块,用于根据所述第一VTEP中记录的所述第二VM的MAC地址和与所述第二VM连接的第二VTEP的对应关系确定所述第二VTEP,其中,所述第二VM的MAC地址和所述第二VTEP的对应关系为所述第二VTEP告知给所述第一VTEP的;转发模块,用于将所述第一报文通过所述第二VTEP转发给所述第二VM。
根据本发明的另一个实施例,还提供了一种虚拟可扩展局域网VXLAN中报文转发装置,所述装置应用于第二虚拟隧道终端VTEP中,包括:第二接收模块,用于接收来自第一VTEP的组播XLAN报文,其中,所述组播VXLAN报文是由所述第一VTEP对来自第一虚拟机VM的第二报文进行封装得到的,所述第二报文的源VM媒体接入控制MAC地址为所述第一VM的MAC地址,所述第二报文的目的VM MAC地址为第二VM的MAC地址;查找模块,用于查找与所述第二VTEP连接的VM中是否存在所述第二VM;发送模块,用于在查找到所述第二VM的情况下,对所述组播VXLAN报文进行解封装并将得到的所述第二报文发送给所述第二VM,以及,将所述第二VM的MAC地址和所述第二VTEP的对应关系应答给所述第一VTEP。
根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行上述各步骤的程序代码。
通过本发明,由于第一VTEP中可以预先记录有其他VM的MAC地址和与该VM连接的VTEP的对应关系,因此,可以根据第一VTEP中记录的其他VM的MAC地址和与该VM连接的VTEP的对应关系定向转发报文,从而无需一直以组播的方式发送报文,有效避免向其他非相关VTEP发送报文,有效解决了相关技术中存在的在VTEP之间进行报文转发时会出现占据网络带宽影响设备性能的问题,达到了避免过多占用网络带宽,提高设备性能的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是相关技术中的VXLAN报文格式示意图;
图2是相关技术中的VXLAN网络的组网示意图;
图3是根据本发明实施例的VXLAN中报文转发方法的流程图(一);
图4是根据本发明实施例的VXLAN中报文转发方法的流程图(二);
图5是根据本发明实施例的VXLAN网络中报文转发的流程图;
图6是根据本发明实施例的VXLAN中报文结构示意图;
图7是根据本发明具体实施例一的VXLAN中报文转发流程图;
图8是根据本发明具体实施例二的VXLAN中报文转发流程图;
图9是根据本发明具体实施例三的VXLAN中报文转发流程图;
图10是根据本发明实施例的VXLAN中报文转发装置的结构框图(一);
图11是根据本发明实施例的VXLAN中报文转发装置的结构框图(二);
图12是根据本发明实施例的VXLAN中报文转发装置结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本实施例中提供了一种虚拟可扩展局域网VXLAN中报文转发方法,图3是根据本发明实施例的VXLAN中报文转发方法的流程图(一),如图3所示,该流程包括如下步骤:
步骤S302,第一虚拟隧道终端VTEP接收来自第一虚拟机VM的第一报文,其中,该第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;
步骤S304,上述第一VTEP根据第一VTEP中记录的第二VM的MAC地址和与第二VM连接的第二VTEP的对应关系确定第二VTEP,其中,该第二VM的MAC地址和第二VTEP的对应关系为第二VTEP告知给第一VTEP的;
步骤S306,上述第一VTEP将第一报文通过上述第二VTEP转发给第二VM。
其中,上述第一VM是与第一VTEP连接的,上述第一报文的源VM MAC地址即该第一VM的MAC地址。在上述实施例中,当第一VM向第一VTEP发送报文(例如,上述的第一报文)之后,第一VTEP中会记录(也可称为学习)第一VM的MAC地址。上述的第二VM的MAC地址和第二VTEP的对应关系可以是第二VTEP在将来自第一VTEP(可以是第一VTEP连接的第一VM发送的,也可以是第一VTEP连接的其他VM发送的)且待发送到第二VM的报文转发给第二VM之后,向第一VTEP反向通告的。
通过上述步骤,由于第一VTEP中可以预先记录有其他VM的MAC地址和与该VM连接的VTEP的对应关系,因此,可以根据第一VTEP中记录的其他VM的MAC地址和与该VM连接的VTEP的对应关系单播转发报文,从而无需一直以组播的方式发送报文,有效避免向其他非相关VTEP发送报文,有效解决了相关技术中存在的在VTEP之间进行报文转发时会出现占据网络带宽影响设备性能的问题,达到了避免过多占用网络带宽,提高设备性能的效果。
由上述实施例可知,在第一VTEP中可以记录有第二VM的MAC地址和第二VTEP的对应关系,下面对如何记录上述第二VM的MAC地址和第二VTEP的对应关系进行说明:在上述第一VTEP接收来自第一VM的第一报文之前,上述方法还包括:第一VTEP接收第二报文,其中,该第二报文的目的VM MAC地址为第二VM的MAC地址;上述第一VTEP在确定第一VTEP中未记录有第二VM的MAC地址和第二VTEP的对应关系的情况下,将第二报文封装为组播VXLAN报文;上述第一VTEP将组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP;第一VTEP接收并记录其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系。在本实施例中,第一VTEP在将组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP后,该同一个组播组中的其他VTEP可以记录第一VM的MAC地址和第一VTEP的对应关系,其中,与第二VM连接的第二VTEP在查找到自身连接有第二VM之后,会对上述组播VXLAN报文解封装并将解封装后得到的第二报文发送给第二VM,并且第二VTEP会向第一VTEP通告第二VM的MAC地址和第二VTEP的对应关系。余下的VTEP(即,同一个组播组的其他VTEP中除第一VTEP之外的VTEP)在自身连接的VM中未查找到第二VM,则会将接收到的组播VXLAN报文丢弃。并且,余下的VTEP上经过一段时间之后若未再接收到来自第一VTEP且源VM MAC地址是第一VM的MAC地址的报文的情况下,余下的VTEP会将记录的第一VM的MAC地址和第一VTEP的对应关系老化删除。上述的组播VXLAN报文的外层IP头的O-DIP为VNID对应的组播IP地址(即,组播组的IP地址),O-SIP为源VTEP(即,第一VTEP)的IP地址。
在一个可选的实施例中,上述第一VTEP在将组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP之后,上述方法还包括:第一VTEP在未接收到第二VM的MAC地址和第二VTEP的对应关系的情况下,丢弃上述第二报文;或者,第一VTEP在未接收到第二VM的MAC地址和第二VTEP的对应关系的情况下,重新将上述第二报文封装成组播VXLAN报文;将重新封装成的组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP。在本实施例中,当第一VTEP没有接收(可以是在一个预定的时间内没有接收)到第二VM的MAC地址和第二VTEP的对应关系时,说明其他VTEP可能没有连接第二VM,为了避免资源占用,可以丢弃第二报文。在本实施例中,当第一VTEP没有接收(可以是在一个预定的时间内没有接收)到第二VM的MAC地址和第二VTEP的对应关系时,除了执行上述的丢弃操作之外,也可以重新组播封装第二报文,并再次发送封装后的组播VXLAN报文,需要说明的是,执行重新封装第二报文的前提条件也可以是第一VTEP没有接收(可以是在一个预定的时间内没有接收)到第二VM的MAC地址和第二VTEP的对应关系,并且,第一VTEP持续收到待发送到第二VM的报文。
在一个可选的实施例中,上述第一VTEP在接收并记录其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和所述第二VTEP的对应关系之前,上述方法还包括:第一VTEP接收第三报文,其中,该第三报文的目的VM MAC地址为第二VM的MAC地址;缓存该第三报文;以及,第一VTEP在接收并记录其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系之后,上述方法还包括:第一VTEP根据第二VM的MAC地址和第二VTEP的对应关系将缓存的第三报文通过第二VTEP转发给第二VM。在本实施例中,可以将等待获取第二VM的MAC地址和与所述第二VM连接的所述第二VTEP的对应关系的等待时间内接收到的待发送到第二VM的报文暂时缓存起来,等获取到上述第二VM的MAC地址和与第二VM连接的第二VTEP的对应关系之后,再单播发送暂时缓存的报文,从而可以减少组播发送报文的次数,有效降低网络带宽的占用。
在一个可选的实施例中,上述第一VTEP在接收并记录其他VTEP中与第二VM连接的VTEP根据所述组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系之后,上述方法还包括:第一VTEP在记录了第二VM的MAC地址和第二VTEP的对应关系之后的第一预定时间之内未接收到与第二VM连接的VTEP再次应答的对应关系的情况下,删除记录的上述第二VM的MAC地址和第二VTEP的对应关系;和/或,第一VTEP在记录了第二VM的MAC地址和第二VTEP的对应关系之后的第一预定时间之内接收到与第二VM连接的VTEP再次应答的第二VM的MAC地址和第二VTEP的对应关系的情况下,维持记录的上述第二VM的MAC地址和第二VTEP的对应关系。在本实施例中,第一VTEP中记录的对应关系是有一定的老化时间的,当到达老化时间之后没有再次收到上述对应关系时,为了避免不必要的空间占用,需要将上述对应关系删除(删除之后,若再次收到上述对应关系,可以再次进行记录),以及,在老化时间到达之前,再次接收到了上述对应关系时,可以根据再次接收的时间重新计时对应关系的老化时间。
在一个可选的实施例中,上述方法还包括:第一VTEP接收与第一VTEP连接的一个或多个VM通告的一个或多个VM的MAC地址;第一VTEP记录与第一VTEP连接的一个或多个VM的MAC地址;其中,当该第一VTEP在记录了与第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与第一VTEP连接的一个或多个VM中的第一部分VM再次通告的第一部分VM的MAC地址的情况下,删除记录的第一部分VM的MAC地址;和/或,当第一VTEP在记录了与第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与第一VTEP连接的一个或多个VM中的第二部分VM再次通告的第二部分VM的MAC地址的情况下,维持记录的第二部分VM的MAC地址。在本实施例中,各VM在接入对应的VTEP时,需要上报自身的MAC地址,并且,各VM需要周期性地向对应的VTEP通告自身的状态(即,上报自身的MAC地址),以便对应的VTEP维护本地活跃的VM的MAC地址信息,达到老化时间后,若VM的状态信息没有更新,则将记录的状态信息没有更新的VM的MAC地址删除。
在本实施例中还提供了一种虚拟可扩展局域网VXLAN中报文转发方法,图4是根据本发明实施例的VXLAN中报文转发方法的流程图(二),如图4所示,该流程包括如下步骤:
步骤S402,第二虚拟隧道终端VTEP接收来自第一VTEP的组播VXLAN报文,其中,该组播VXLAN报文是由第一VTEP对来自第一虚拟机VM的第二报文进行封装得到的,第二报文的源VM媒体接入控制MAC地址为所述第一VM的MAC地址,第二报文的目的VM MAC地址为第二VM的MAC地址;
步骤S404,上述第二VTEP查找与第二VTEP连接的VM中是否存在第二VM;
步骤S406,上述第二VTEP在查找到第二VM的情况下,对组播VXLAN报文进行解封装并将得到的第二报文发送给第二VM,以及,将第二VM的MAC地址和第二VTEP的对应关系应答给第一VTEP。
通过上述步骤,第二VTEP在确定自身连接有第二VM时,可以将第二VM的MAC地址和第二VTEP的对应关系应答给第一VTEP,从而使得第一VTEP根据记录的对应关系单播转发报文,从而无需一直以组播的方式发送报文,有效避免向其他非相关VTEP发送报文,有效解决了相关技术中存在的在VTEP之间进行报文转发时会出现占据网络带宽影响设备性能的问题,达到了避免过多占用网络带宽,提高设备性能的效果。
在一个可选的实施例中,上述第二VTEP在接收来自第一VTEP的组播VXLAN报文之后,上述方法还包括:第二VTEP记录第一VM的MAC地址和第一VTEP的对应关系。从而使得第二VTEP在接收到待发送到第一VM的报文后可以根据第二VTEP中记录的对应关系对报文进行单播发送,无需组播发送。可选地,第二VTEP在接收到单播VXLAN报文时,可以学习报文的I-SMAC,并在本地MAC地址信息表中查找I-DMAC,将该VXLAN报文解封装然后发给对应的本地VM。该单播VXLAN报文是指,VXLAN报文的O-SIP与O-DIP均为单播IP地址,对应组网中某一VTEP(例如该第二VTEP)的IP。当第一VM发送I-DMAC已知的报文时,第一VTEP会在第一VTEP中查找I-DMAC对应的VTEP的IP地址,将数据报文封装为单播VXLAN报文发送给目的VTEP(即,第二VTEP)。
在一个可选的实施例中,上述第二VTEP在记录第一VM的MAC地址和第一VTEP的对应关系之后,上述方法还包括:第二VTEP在记录了第一VM的MAC地址和第一VTEP的对应关系之后的第一预定时间之内未接收到来自第一VTEP的且源VM MAC地址为第一VM的报文的情况下,删除记录的第一VM的MAC地址和第一VTEP的对应关系;和/或,第二VTEP在记录了第一VM的MAC地址和第一VTEP的对应关系之后的第一预定时间之内接收到来自第一VTEP的且源VM MAC地址为第一VM的报文的情况下,维持记录的上述第一VM的MAC地址和第一VTEP的对应关系。在本实施例中,第二VTEP中记录的对应关系是有一定的老化时间的,当到达老化时间之后没有再次收到第二VTEP中记录的对应关系时,为了避免不必要的空间占用,需要将该对应关系删除(删除之后,若再次收到上述对应关系,可以再次进行记录),以及,在老化时间到达之前,再次接收到了该对应关系时,可以根据再次接收的时间重新计时对应关系的老化时间。
在一个可选的实施例中,上述方法还包括:第二VTEP接收与第二VTEP连接的一个或多个VM通告的一个或多个VM的MAC地址;第二VTEP记录与第二VTEP连接的一个或多个VM的MAC地址;其中,当该第二VTEP在记录了与第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与第二VTEP连接的一个或多个VM中的第一部分VM再次通告的第一部分VM的MAC地址的情况下,删除记录的第一部分VM的MAC地址;和/或,当第二VTEP在记录了与第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与第二VTEP连接的一个或多个VM中的第二部分VM再次通告的第二部分VM的MAC地址的情况下,维持记录的上述第二部分VM的MAC地址。在本实施例中,各VM在接入对应的VTEP时,需要上报自身的MAC地址,并且,各VM需要周期性地向对应的VTEP通告自身的状态(即,上报自身的MAC地址),以便对应的VTEP维护本地活跃的VM的MAC地址信息,达到老化时间后,若VM的状态信息没有更新,则将记录的状态信息没有更新的VM的MAC地址删除。
下面结合图2对本发明进行具体说明:
图5是根据本发明具体实施例的报文转发的流程图,图6为本发明中VM A(对应于上述的第一VM)首次向VM C(对应于上述的第二VM)发送报文时主要报文的流程示意图。结合图5与图6,本发明的具体实施步骤主要包括:
步骤S502:当本地接入侧有VM(例如,VM A)接入时,VM周期性地向VTEP(例如,VTEP1)通告自身状态,VTEP学习并维护本地活跃VM的MAC地址信息。达到老化时间后,若VM的状态信息没有更新,则删除该VM对应的MAC信息。
优选的,VM向VTEP通告并保活自身状态时可以采用链路层发现协议(Link LayerDiscovery Protocol,简称为LLDP)。当然,通告及保活方式并不限于此种方法,例如,还可以通过私有协议的方式通告。
优选的,本地VM的MAC地址信息表可以按表1所示的格式保存,以VTEP1上保存的MAC为例:
表1
MAC | VNID | INTERFACE |
MAC A | 16000 | Gei-1 |
MAC B | 16000 | Gei-2 |
步骤S504:当本地VM发送I-DMAC未知的数据报文时,源VTEP(例如,VTEP1)将数据报文封装为组播VXLAN报文,发送给同一组播组的其他VTEP;同时将后续到该I-DMAC的报文暂时缓存起来,等待获取该I-DMAC对应的VTEP信息后再发送。
上述组播VXLAN报文是指,VXLAN报文的外层IP头的目的IP字段O-DIP为VNID对应的组播IP地址,源IP字段O-SIP为本VTEP的IP地址。
优选的,在步骤S504的基础上,若本地VM发送的报文是组播或者广播报文时,不对其做缓存等待处理,直接将其封装为组播VXLAN报文之后发送给其他VTEP。
如附图6所示,VM A发送的到VM C的报文经VTEP1封装后的组播报文的形式如附图6中报文2所示,其中O-SIP为VTEP1的IP-1,O-DIP为VM A所属VNID映射的组播组的组播IP地址IP-M。
步骤S506:当VTEP(例如,VTEP2)接收到组播VXLAN报文时,学习I-SMAC;并在本地MAC地址信息表中查找I-DMAC,若查找到,则将I-DMAC与本VTEP(例如,VTEP2)的对应关系应答给地址为O-SIP的源VTEP(例如,VTEP1);并将报文解封装然后发送给I-DMAC对应的本地VM(例如,VM C)。
优选的,将I-DMAC与本VTEP(例如,VTEP2)的对应关系应答给地址为O-SIP的源VTEP(例如,VTEP1)可以采用封装一份反向单播空数据VXLAN报文发送给源VTEP的形式来实施。
上述反向单播空数据VXLAN报文是指,内层报文的PAYLOAD段置为无效值,内层数据报文的I-SMAC和I-DMAC分别置为收到的组播VXLAN报文的内层数据报文的I-DMAC和I-SMAC,外层IP头的O-SIP置为本VTEP的IP,外层IP头的O-DIP置为收到的组播VXLAN报文IP头中的O-SIP。
如附图6所示,VTEP2发送给VTEP1的反向单播空数据报文如附图6中报文4所示,其中O-SIP置为VTEP2的IP-2,O-DIP置为IP-1,也就是收到的组播VXLAN报文的O-SIP字段的值;I-DMAC置为A,I-SMAC置为C,对应于收到的组播VXLAN报文的I-SMAC字段和I-DMAC字段的值;PAYLOAD’字段置为无效值。这种应答方式不需要额外的协议支持,源VTEP也不需要对应答报文做特殊处理。当然,向源VTEP应答的方式并不限于此种方式。
步骤S508:当VTEP(例如,VTEP2)收到单播VXLAN报文时,学习I-SMAC,并在本地MAC地址信息表中查找I-DMAC,然后将该VXLAN报文解封装发给I-DMAC对应的本地VM(例如,VMC)。
优选的,远端VM的MAC地址信息表可以按表2所示的格式保存,以VTEP2上保存的远端MAC为例:
表2
MAC | VNID | VTEP IP |
MAC A | 16000 | IP1 |
优选的,在步骤S504的基础上,VM(例如,VM A)发送的I-DMAC未知的报文经VTEP(例如,VTEP1)封装发送一份出去后,暂时将到该I-DMAC的报文缓存起来,若预定时间内未收到回复,说明其他VTEP下也没有该I-DMAC对应的VM,丢弃该类报文。
优选的,在上述步骤S504的基础上,若VTEP(例如,VTEP1)持续收到本地VM发送到该I-DMAC的报文,除了执行丢弃操作外,一定时间之后重新组播封装发送该报文,再次请求该I-DMAC对应的VTEP信息。
优选的,在步骤S506的基础上,VTEP(例如,VTEP1)学习到远端VM(例如,VM C)对应的I-SMAC信息之后,经过一段时间之后,若再未收到该I-SMAC的报文,则可以老化删除该I-SMAC。
步骤S510:当VM(例如,VM A)发送的数据报文I-DMAC已知时,在本VTEP(例如,VTEP1)上查找I-DMAC对应的目的VTEP的IP,将数据报文封装为单播VXLAN报文发送给目的VTEP(例如,VTEP2)。
优选的,当VM(例如,VM A)发送的数据报文的I-DMAC已知,并且是本VTEP(例如,VTEP1)下其他VM(例如,VM B)的地址时,报文不需经过封装,根据保存的I-DMAC对应的接口信息直接转发给目的VM即可。
综上,通过本发明实施例中的方法,可以在本VTEP(例如,VTEP1)内减少泛洪,在VTEP之间减少组播。
下面结合具体实施例对本发明进行说明:
具体实施例一:
参见图2,各VTEP按图2所示建立链路,各VTEP按图2所示接入VM。所有的VTEP属于同一个组播组,所有的VM都同属于一个VNID 16000。假设VM A要与VM C之间互相通信,依据本发明的VXLAN的报文转发步骤如图7所示,具体包括:
步骤S702:各VTEP下的VM主动向VTEP通告自身状态,各VTEP学习并维护本地VM对应的MAC地址信息。
步骤S704:VM A发送目的为MAC C的报文,在VTEP1上查找MAC C的记录,没有查找到,将报文封装成组播VXLAN报文发送给其他VTEP。
步骤S706:VTEP2收到组播VXLAN报文,学习内层报文的源MAC A,查找内层报文的目的MAC C,查找得到,封装一份反向单播空数据VXLAN报文给VTEP1,同时将收到的报文解封装发送给VM C;VTEP3、VTEP4收到组播VXLAN报文,学习内层报文的源MAC A,查找内层报文的目的MAC C,没查找到,不再继续处理。
步骤S708:VTEP1收到VTEP2发来的单播VXLAN报文,学习内层报文的源MAC C,查找内层报文的目的MAC A,查找得到,将报文解封装发送给VM A。
步骤S710:VM A继续发送目的为MAC C的数据报文,在VTEP1上查找MAC C的记录,能够查到,将报文封装成单播VXLAN报文发送给VTEP2。
步骤S712:VTEP2收到单播VXLAN报文,学习内层报文的源MAC A,若保存的MAC A的信息还未老化,则不必重复保存;查找内层报文的目的MAC C,查找得到,将报文解封装发送给VM C。
步骤S714:VM C发送目的为MAC A的数据报文,在VTEP2上查找MAC A的记录,能够查到,将报文封装成单播VXLAN报文发送给VTEP1。
步骤S716:VTEP3、VTEP4上经过一段时间之后再未收到VTEP1发送来的源为MAC A的数据报文,将MAC A的记录老化删除。
通过上面的步骤,完成了VM A与VM C之间的互通,网络状态趋于稳定之后,VTEP1上面保存了远端的MAC C,VTEP2上面保存了远端的MAC A,VTEP3和VTEP4无新增MAC,所有的VTEP都没有保存无用的MAC信息。转发的过程中,VTEP1只在首次发包的时候使用了组播,后续使用单播的形式,减少了组播;VTEP2发送报文给本地VM时,直接查找本地MAC信息表得到出接口,然后发送给对应的VM,没有泛洪。
具体实施例二:
在具体实施例1所示的组网环境下,假设VM A要与VM B之间互相通信,依据本发明实施例中的VXLAN的报文转发的步骤流程如图8所示,主要包括:
步骤S802:各VTEP下的VM主动向VTEP通告自身状态,各VTEP学习并维护本地VM对应的MAC地址信息。
步骤S804:VM A发送目的为MAC B的数据报文,在VTEP1上查找MAC B的记录,能够查到并且是在本地,直接将报文从对应端口Gei-2发出。
步骤S806:VM B发送目的为MAC A的数据报文,在VTEP1上查找MAC A的记录,能够查到并且是在本地,直接将报文从对应端口Gei-1发出。
通过上面的步骤,完成了VM A与VM B的互通,相比于传统的方式,在VM B发送反向流量之前,报文是直接发送给VM B的,减少了往其他VTEP发送组播以及在本VTEP内的泛洪。
具体实施例三:
在具体实施例1所示的组网环境下,假设VM A发送目的为MAC N的数据报文,其中MAC N不存在该VXLAN网络中,这种情况下依据本发明的VXLAN的报文转发的步骤流程如图9所示,主要包括:
步骤S902:各VTEP下的VM主动向VTEP通告自身状态,各VTEP学习并维护本地VM对应的MAC地址信息。
步骤S904:VM A发送目的为MAC N的数据报文,在VTEP1上查找MAC N的记录,没有查找到,将报文封装成组播的形式发送给其他VTEP。
步骤S906:VTEP2、VTEP3、VTEP4收到组播封装的VXLAN报文,学习内层报文的源MACA,查找内层报文的目的MAC N,没查找到,不再继续处理。
步骤S908:VTEP1没有收到任何返回答复的报文,将报文丢弃处理。
优选的,本发明实施例在步骤S908中还可以启用定时重传机制,在一定时间内无目的报文反馈,会被丢弃,到达重传时间之后,会再次往外发送一份组播报文,请求目的信息。具体如步骤S910所述。
步骤S910:定时重传时间之后,在VTEP1上再次查找MAC N的记录,没有查找到,再次将报文封装成组播的形式发送给其他VTEP。
通过上面的步骤,在VTEP之间,减少了组播的次数,只在到达定时重传时间之后才会发送一份组播封装的报文出去;在VTEP1内,查找不到MAC N之后,说明本地不存在MAC N,也不会在本VTEP下泛洪。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种报文转发装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本发明实施例的VXLAN中报文转发装置的结构框图(一),该装置可以应用于第一虚拟隧道终端VTEP中,如图10所示,该装置包括第一接收模块102、确定模块104和转发模块106,下面对该装置进行说明:
第一接收模块102,用于接收来自第一虚拟机VM的第一报文,其中,该第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;确定模块104,连接至上述第一接收模块102,用于根据第一VTEP中记录的第二VM的MAC地址和与第二VM连接的第二VTEP的对应关系确定第二VTEP,其中,该第二VM的MAC地址和第二VTEP的对应关系为第二VTEP告知给第一VTEP的;转发模块106,连接至上述确定模块104,用于将第一报文通过第二VTEP转发给第二VM。
在一个可选的实施例中,上述装置还包括第一处理模块,用于在第一VTEP接收来自第一VM的第一报文之前,接收第二报文,其中,该第二报文的目的VM MAC地址为第二VM的MAC地址;在确定第一VTEP中未记录有第二VM的MAC地址和第二VTEP的对应关系的情况下,将第二报文封装为组播VXLAN报文;将组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP;接收并记录其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系。
在一个可选的实施例中,上述装置还包括第二处理模块,用于在将组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP之后,在未接收到第二VM的MAC地址和第二VTEP的对应关系的情况下,丢弃第二报文;或者,在未接收到第二VM的MAC地址和第二VTEP的对应关系的情况下,重新将第二报文封装成组播VXLAN报文;将重新封装成的组播VXLAN报文发送给与第一VTEP属于同一个组播组的其他VTEP。
在一个可选的实施例中,上述装置还包括第三处理模块,用于在接收并记录其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系之前,接收第三报文,其中,该第三报文的目的VM MAC地址为第二VM的MAC地址;缓存第三报文;以及,在接收并记录所述其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系之后,根据第二VM的MAC地址和第二VTEP的对应关系将缓存的第三报文通过第二VTEP转发给第二VM。
在一个可选的实施例中,上述装置还包括第四处理模块,用于在接收并记录其他VTEP中与第二VM连接的VTEP根据组播VXLAN报文应答的第二VM的MAC地址和第二VTEP的对应关系之后,在记录了第二VM的MAC地址和第二VTEP的对应关系之后的第一预定时间之内未接收到与第二VM连接的VTEP再次应答的对应关系的情况下,删除记录的第二VM的MAC地址和第二VTEP的对应关系;和/或,在记录了第二VM的MAC地址和第二VTEP的对应关系之后的第一预定时间之内接收到与第二VM连接的VTEP再次应答的第二VM的MAC地址和第二VTEP的对应关系的情况下,维持记录的第二VM的MAC地址和第二VTEP的对应关系。
在一个可选的实施例中,上述装置还包括第五处理模块,用于接收与第一VTEP连接的一个或多个VM通告的一个或多个VM的MAC地址;记录与第一VTEP连接的一个或多个VM的MAC地址;其中,当第一VTEP在记录了与第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与第一VTEP连接的一个或多个VM中的第一部分VM再次通告的第一部分VM的MAC地址的情况下,删除记录的第一部分VM的MAC地址;和/或,当第一VTEP在记录了与第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与第一VTEP连接的一个或多个VM中的第二部分VM再次通告的第二部分VM的MAC地址的情况下,维持记录的第二部分VM的MAC地址。
图11是根据本发明实施例的VXLAN中报文转发装置的结构框图(二),该装置可以应用于第二虚拟隧道终端VTEP中,如图11所示,该装置包括第二接收模块112、查找模块114和发送模块116,下面对该装置进行说明:
第二接收模块112,用于接收来自第一VTEP的组播VXLAN报文,其中,该组播VXLAN报文是由第一VTEP对来自第一虚拟机VM的第二报文进行封装得到的,第二报文的源VM媒体接入控制MAC地址为第一VM的MAC地址,第二报文的目的VM MAC地址为第二VM的MAC地址;查找模块114,连接至上述第二接收模块112,用于查找与第二VTEP连接的VM中是否存在第二VM;发送模块116,连接至上述查找模块114,用于在查找到第二VM的情况下,对组播VXLAN报文进行解封装并将得到的第二报文发送给第二VM,以及,将第二VM的MAC地址和第二VTEP的对应关系应答给第一VTEP。
在一个可选的实施例中,上述装置还包括第六处理模块,用于在接收来自第一VTEP的组播VXLAN报文之后,记录第一VM的MAC地址和第一VTEP的对应关系。
在一个可选的实施例中,上述装置还包括第七处理模块,用于在记录第一VM的MAC地址和第一VTEP的对应关系之后,在记录了第一VM的MAC地址和第一VTEP的对应关系之后的第一预定时间之内未接收到来自第一VTEP的且源VM MAC地址为第一VM的报文的情况下,删除记录的第一VM的MAC地址和第一VTEP的对应关系;和/或,第二VTEP在记录了第一VM的MAC地址和第一VTEP的对应关系之后的第一预定时间之内接收到来自第一VTEP的且源VMMAC地址为第一VM的报文的情况下,维持记录的第一VM的MAC地址和第一VTEP的对应关系。
在一个可选的实施例中,上述装置还包括第八处理模块,用于接收与第二VTEP连接的一个或多个VM通告的一个或多个VM的MAC地址;第二VTEP记录与第二VTEP连接的一个或多个VM的MAC地址;其中,当第二VTEP在记录了与第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与第二VTEP连接的一个或多个VM中的第一部分VM再次通告的第一部分VM的MAC地址的情况下,删除记录的第一部分VM的MAC地址;和/或,当第二VTEP在记录了与第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与第二VTEP连接的一个或多个VM中的第二部分VM再次通告的第二部分VM的MAC地址的情况下,维持记录的第二部分VM的MAC地址。
图12是根据本发明实施例的VXLAN中报文转发装置结构示意图,该装置可以位于VTEP上,包括:
报文接收模块122(对应于上述的第一接收模块102和第二接收模块112):用于接收报文,包括本地接入侧端口收到的原始数据报文和网络侧端口收到的VXLAN报文;
MAC信息学习模块124(对应于上述的第五处理模块和第八处理模块):用于学习报文的MAC信息,记录MAC地址与对应的转发出接口的关系,保存到MAC信息表中。
优选的,MAC信息学习模块可以进一步包含本地MAC信息表维护子模块1241和远端MAC信息表维护子模块1242,其中:
本地MAC信息表维护子模块1241:用于维护本地MAC信息表,学习到新的本地MAC条目时添加对应的MAC条目,老化时间过后删除需要老化的MAC条目;
远端MAC信息表维护子模块1242:用于维护远端MAC信息表,学习到新的远端MAC条目时添加对应的MAC条目,老化时间过后删除需要老化的MAC条目;
本地MAC信息应答模块126(对应于上述的查找模块114和发送模块116):用于收到组播VXLAN报文时,查询内层报文的I-DMAC是否在本地,如果在本地则将I-DMAC与本VTEP的对应关系应答给地址为O-SIP的源VTEP。
报文转发模块128(对应于上述转发模块106和发送模块116):用于将收到的数据报文封装之后发送给其他VTEP,以及将收到的VXLAN封装的报文解封装之后发送给本地的VM。
优选的,报文转发模块128可以进一步包括封装发送子模块1281和解封装发送子模块1282,其中:
封装发送子模块1281:用于将数据报文封装为VXLAN报文发送出去,目的MAC已知的情况下,封装为单播报文,目的MAC未知的情况下,封装为组播报文;
解封装发送子模块1282:用于将VXLAN报文解封装为原始报文,然后发送给本地对应的VM。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行上述各方法实施例中的步骤的程序代码。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述各步骤。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
本发明实施例中的装置位于VTEP上,不需要在组网中额外添加集中控制器或者代理服务器,能够减少组网成本。
本发明实施例中VM采用主动通告机制,VTEP维护本地活跃VM的地址信息,远端到本地的VXLAN报文,若在VTEP上查不到内层数据报文的目的地址,则直接丢弃,减少了VTEP下的泛洪。
本发明实施例中的目的MAC对应的VTEP信息采用“按需请求”的方式,本地VM发送目的MAC未知的报文,先通过组播封装发送给其他VTEP,该目的MAC所在VTEP收到组播VXLAN报文之后,将该目的MAC与本VTEP的关系应答给源VTEP,相当于源VTEP“请求”了该目的MAC的信息,源VTEP只会学习流量转发所需的MAC,不会维护不必要的远端MAC信息。
本发明实施例中未知MAC对应的VTEP信息请求不到的情况下,说明其他VTEP下没有对应该MAC地址的VM,丢弃该报文,减少VTEP之间的组播转发。
本发明中远端MAC对应的VTEP信息请求得到的情况下,数据报文会通过单播的形式发送给目的VTEP,减少了VTEP之间的组播转发。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种虚拟可扩展局域网VXLAN中报文转发方法,其特征在于,包括:
第一虚拟隧道终端VTEP接收来自第一虚拟机VM的第一报文,其中,所述第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;
所述第一VTEP根据所述第一VTEP中记录的所述第二VM的MAC地址和与所述第二VM连接的第二VTEP的对应关系确定所述第二VTEP,其中,所述第二VM的MAC地址和所述第二VTEP的对应关系为所述第二VTEP告知给所述第一VTEP的;
所述第一VTEP将所述第一报文通过所述第二VTEP转发给所述第二VM。
2.根据权利要求1所述的方法,其特征在于,在所述第一VTEP接收来自所述第一VM的所述第一报文之前,所述方法还包括:
所述第一VTEP接收第二报文,其中,所述第二报文的目的VM MAC地址为所述第二VM的MAC地址;
所述第一VTEP在确定所述第一VTEP中未记录有所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,将所述第二报文封装为组播VXLAN报文;
所述第一VTEP将所述组播VXLAN报文发送给与所述第一VTEP属于同一个组播组的其他VTEP;
所述第一VTEP接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述第一VTEP在将所述组播VXLAN报文发送给与所述第一VTEP属于同一个组播组的所述其他VTEP之后,所述方法还包括:
所述第一VTEP在未接收到所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,丢弃所述第二报文;或者,
所述第一VTEP在未接收到所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,重新将所述第二报文封装成组播VXLAN报文;将重新封装成的组播VXLAN报文发送给与所述第一VTEP属于同一个组播组的其他VTEP。
4.根据权利要求2所述的方法,其特征在于,
所述第一VTEP在接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系之前,所述方法还包括:所述第一VTEP接收第三报文,其中,所述第三报文的目的VM MAC地址为所述第二VM的MAC地址;缓存所述第三报文;以及,
所述第一VTEP在接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系之后,所述方法还包括:所述第一VTEP根据所述第二VM的MAC地址和所述第二VTEP的对应关系将缓存的所述第三报文通过所述第二VTEP转发给所述第二VM。
5.根据权利要求2所述的方法,其特征在于,所述第一VTEP在接收并记录所述其他VTEP中与所述第二VM连接的VTEP根据所述组播VXLAN报文应答的所述第二VM的MAC地址和所述第二VTEP的对应关系之后,所述方法还包括:
所述第一VTEP在记录了所述第二VM的MAC地址和所述第二VTEP的对应关系之后的第一预定时间之内未接收到与所述第二VM连接的VTEP再次应答的所述对应关系的情况下,删除记录的所述第二VM的MAC地址和所述第二VTEP的对应关系;和/或,
所述第一VTEP在记录了所述第二VM的MAC地址和所述第二VTEP的对应关系之后的第一预定时间之内接收到与所述第二VM连接的VTEP再次应答的所述第二VM的MAC地址和所述第二VTEP的对应关系的情况下,维持记录的所述第二VM的MAC地址和所述第二VTEP的对应关系。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
所述第一VTEP接收与所述第一VTEP连接的一个或多个VM通告的所述一个或多个VM的MAC地址;
所述第一VTEP记录与所述第一VTEP连接的一个或多个VM的MAC地址;
其中,当所述第一VTEP在记录了与所述第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与所述第一VTEP连接的一个或多个VM中的第一部分VM再次通告的所述第一部分VM的MAC地址的情况下,删除记录的所述第一部分VM的MAC地址;和/或,当所述第一VTEP在记录了与所述第一VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与所述第一VTEP连接的一个或多个VM中的第二部分VM再次通告的所述第二部分VM的MAC地址的情况下,维持记录的所述第二部分VM的MAC地址。
7.一种虚拟可扩展局域网VXLAN中报文转发方法,其特征在于,包括:
第二虚拟隧道终端VTEP接收来自第一VTEP的组播VXLAN报文,其中,所述组播VXLAN报文是由所述第一VTEP对来自第一虚拟机VM的第二报文进行封装得到的,所述第二报文的源VM媒体接入控制MAC地址为所述第一VM的MAC地址,所述第二报文的目的VM MAC地址为第二VM的MAC地址;
所述第二VTEP查找与所述第二VTEP连接的VM中是否存在所述第二VM;
所述第二VTEP在查找到所述第二VM的情况下,对所述组播VXLAN报文进行解封装并将得到的所述第二报文发送给所述第二VM,以及,将所述第二VM的MAC地址和所述第二VTEP的对应关系应答给所述第一VTEP。
8.根据权利要求7所述的方法,其特征在于,所述第二VTEP在接收来自第一VTEP的组播VXLAN报文之后,所述方法还包括:
所述第二VTEP记录所述第一VM的MAC地址和所述第一VTEP的对应关系。
9.根据权利要求8所述的方法,其特征在于,所述第二VTEP在记录所述第一VM的MAC地址和所述第一VTEP的对应关系之后,所述方法还包括:
所述第二VTEP在记录了所述第一VM的MAC地址和所述第一VTEP的对应关系之后的第一预定时间之内未接收到来自所述第一VTEP的且源VM MAC地址为所述第一VM的报文的情况下,删除记录的所述第一VM的MAC地址和所述第一VTEP的对应关系;和/或,
所述第二VTEP在记录了所述第一VM的MAC地址和所述第一VTEP的对应关系之后的第一预定时间之内接收到来自所述第一VTEP的且源VM MAC地址为所述第一VM的报文的情况下,维持记录的所述第一VM的MAC地址和所述第一VTEP的对应关系。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述第二VTEP接收与所述第二VTEP连接的一个或多个VM通告的所述一个或多个VM的MAC地址;
所述第二VTEP记录与所述第二VTEP连接的一个或多个VM的MAC地址;
其中,当所述第二VTEP在记录了与所述第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内未接收到与所述第二VTEP连接的一个或多个VM中的第一部分VM再次通告的所述第一部分VM的MAC地址的情况下,删除记录的所述第一部分VM的MAC地址;和/或,当所述第二VTEP在记录了与所述第二VTEP连接的一个或多个VM的MAC地址之后的第二预定时间内接收到了与所述第二VTEP连接的一个或多个VM中的第二部分VM再次通告的所述第二部分VM的MAC地址的情况下,维持记录的所述第二部分VM的MAC地址。
11.一种虚拟可扩展局域网VXLAN中报文转发装置,其特征在于,应用于第一虚拟隧道终端VTEP中,包括:
第一接收模块,用于接收来自第一虚拟机VM的第一报文,其中,所述第一报文的目的VM媒体接入控制MAC地址为第二VM的MAC地址;
确定模块,用于根据所述第一VTEP中记录的所述第二VM的MAC地址和与所述第二VM连接的第二VTEP的对应关系确定所述第二VTEP,其中,所述第二VM的MAC地址和所述第二VTEP的对应关系为所述第二VTEP告知给所述第一VTEP的;
转发模块,用于将所述第一报文通过所述第二VTEP转发给所述第二VM。
12.一种虚拟可扩展局域网VXLAN中报文转发装置,其特征在于,应用于第二虚拟隧道终端VTEP中,包括:
第二接收模块,用于接收来自第一VTEP的组播VXLAN报文,其中,所述组播VXLAN报文是由所述第一VTEP对来自第一虚拟机VM的第二报文进行封装得到的,所述第二报文的源VM媒体接入控制MAC地址为所述第一VM的MAC地址,所述第二报文的目的VM MAC地址为第二VM的MAC地址;
查找模块,用于查找与所述第二VTEP连接的VM中是否存在所述第二VM;
发送模块,用于在查找到所述第二VM的情况下,对所述组播VXLAN报文进行解封装并将得到的所述第二报文发送给所述第二VM,以及,将所述第二VM的MAC地址和所述第二VTEP的对应关系应答给所述第一VTEP。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610506713.4A CN107566262A (zh) | 2016-06-30 | 2016-06-30 | 虚拟可扩展局域网vxlan中报文转发方法及装置 |
PCT/CN2017/090953 WO2018001339A1 (zh) | 2016-06-30 | 2017-06-29 | 虚拟可扩展局域网vxlan中报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610506713.4A CN107566262A (zh) | 2016-06-30 | 2016-06-30 | 虚拟可扩展局域网vxlan中报文转发方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107566262A true CN107566262A (zh) | 2018-01-09 |
Family
ID=60785255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610506713.4A Pending CN107566262A (zh) | 2016-06-30 | 2016-06-30 | 虚拟可扩展局域网vxlan中报文转发方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107566262A (zh) |
WO (1) | WO2018001339A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401726A (zh) * | 2018-04-24 | 2019-11-01 | 中兴通讯股份有限公司 | 地址解析协议报文的处理方法、装置及设备、存储介质 |
CN112134776A (zh) * | 2019-06-25 | 2020-12-25 | 华为技术有限公司 | 生成组播转发表项的方法和接入网关 |
CN115225573A (zh) * | 2022-07-18 | 2022-10-21 | 中国联合网络通信集团有限公司 | 表项老化处理方法、流量转发方法、装置、vtep及vxlan |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048946B (zh) * | 2018-01-15 | 2020-08-28 | 厦门靠谱云股份有限公司 | 一种基于Linux bridge和SDN控制器的单播VXLAN管理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140146817A1 (en) * | 2012-11-29 | 2014-05-29 | Futurewei Technologies, Inc. | System and Method for VXLAN Intern-Domain Communications |
CN104115453A (zh) * | 2013-12-31 | 2014-10-22 | 华为技术有限公司 | 一种实现虚拟机通信的方法和装置 |
CN104243269A (zh) * | 2014-09-24 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟扩展局域网报文的处理方法及装置 |
CN104601463A (zh) * | 2015-02-28 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种vxlan网络中报文转发方法及装置 |
CN104954218A (zh) * | 2014-03-24 | 2015-09-30 | 杭州华三通信技术有限公司 | 分布式虚拟交换装置及转发方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888386B (zh) * | 2012-12-24 | 2017-10-17 | 华为技术有限公司 | 可扩展虚拟局域网报文的传输方法及装置、系统 |
CN103841028B (zh) * | 2014-03-24 | 2017-02-08 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
US9509527B2 (en) * | 2014-06-30 | 2016-11-29 | Arista Networks, Inc. | Method and system for VXLAN encapsulation offload |
-
2016
- 2016-06-30 CN CN201610506713.4A patent/CN107566262A/zh active Pending
-
2017
- 2017-06-29 WO PCT/CN2017/090953 patent/WO2018001339A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140146817A1 (en) * | 2012-11-29 | 2014-05-29 | Futurewei Technologies, Inc. | System and Method for VXLAN Intern-Domain Communications |
CN104115453A (zh) * | 2013-12-31 | 2014-10-22 | 华为技术有限公司 | 一种实现虚拟机通信的方法和装置 |
CN104954218A (zh) * | 2014-03-24 | 2015-09-30 | 杭州华三通信技术有限公司 | 分布式虚拟交换装置及转发方法 |
CN104243269A (zh) * | 2014-09-24 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟扩展局域网报文的处理方法及装置 |
CN104601463A (zh) * | 2015-02-28 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种vxlan网络中报文转发方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401726A (zh) * | 2018-04-24 | 2019-11-01 | 中兴通讯股份有限公司 | 地址解析协议报文的处理方法、装置及设备、存储介质 |
CN110401726B (zh) * | 2018-04-24 | 2022-04-15 | 中兴通讯股份有限公司 | 地址解析协议报文的处理方法、装置及设备、存储介质 |
CN112134776A (zh) * | 2019-06-25 | 2020-12-25 | 华为技术有限公司 | 生成组播转发表项的方法和接入网关 |
CN115225573A (zh) * | 2022-07-18 | 2022-10-21 | 中国联合网络通信集团有限公司 | 表项老化处理方法、流量转发方法、装置、vtep及vxlan |
Also Published As
Publication number | Publication date |
---|---|
WO2018001339A1 (zh) | 2018-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103841023B (zh) | 数据转发的方法和设备 | |
CN104935516B (zh) | 基于软件定义网络的通信系统及方法 | |
EP2600573B1 (en) | Method for transmitting addresses correspondence relationship in second-layer protocol using link status routing | |
US8134919B2 (en) | Method and device for protecting ethernet tree services | |
CN101577722B (zh) | 实现强制mac转发功能的方法和装置 | |
CN105591916B (zh) | 一种报文传输方法及装置 | |
US11477114B2 (en) | Packet forwarding method and apparatus | |
CN108075969B (zh) | 报文转发方法和装置 | |
CN104869042A (zh) | 报文转发方法和装置 | |
US10812292B2 (en) | Packet processing method and device | |
CN107566262A (zh) | 虚拟可扩展局域网vxlan中报文转发方法及装置 | |
US10652142B2 (en) | SDN-based ARP implementation method and apparatus | |
CN106209689B (zh) | 从vxlan至vlan的组播数据报文转发方法和设备 | |
CN104320267A (zh) | 基于SDN框架实现VxLAN的ARP广播抑制系统及方法 | |
CN109474507B (zh) | 一种报文转发方法及装置 | |
CN102420762B (zh) | 报文转发方法、系统、网络设备和防火墙线卡 | |
CN107707476B (zh) | 基于fpga的高效无线转发装置及方法 | |
CN107770072A (zh) | 一种发送和接收报文的方法和设备 | |
CN104579981B (zh) | 一种组播数据报文转发方法及设备 | |
CN103973833A (zh) | 一种arp缓存更新方法和装置 | |
CN107135118B (zh) | 一种单播通信方法、网关以及vxlan接入设备 | |
CN104378302B (zh) | 地址对应关系发送方法和路由桥设备 | |
CN113794615A (zh) | 一种报文转发方法及设备 | |
CN115865844B (zh) | 基于sdn与ndn的虚实结合动态流量调度方法及装置 | |
CN107547691B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180109 |
|
WD01 | Invention patent application deemed withdrawn after publication |