一种报文处理方法和装置转让专利

申请号 : CN201410421043.7

文献号 : CN104158718A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵昌峰

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明提供了一种报文处理方法,该方法包括:当接收到目的MAC地址为网关MAC地址,且链路层上一层使用IP封装的单播用户报文时,对该单播用户报文进行VxLAN封装时携带三层转发标识,并通过与网关设备建立的第一单播隧道转发,使网关设备在接收到该VxLAN封装的单播用户报文时,剥掉VxLAN封装和内层MAC层后进行路由转发。基于同样的发明构思,本申请还提出一种报文处理装置,使网关设备在处理报文时不需要进行两次查表,从而提高了VxLAN中网关设备处理报文的效率。

权利要求 :

1.一种报文处理方法,应用于可扩展虚拟局域网络VxLAN中,其特征在于,所述方法包括:

边缘设备接收到单播用户报文;

若所述单播用户报文的目的媒体访问控制MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用因特网协议IP封装,则所述边缘设备通过与网关设备建立的第一单播隧道向所述网关设备发送第一VxLAN报文,所述第一VxLAN报文为所述单播用户报文使用第一单播隧道的封装格式进行VxLAN封装后的报文,所述第一VxLAN报文携带三层转发标识,以使所述网关设备根据所述三层转发标识剥掉所述第一VxLAN报文的VxLAN封装和内层MAC层后进行路由转发。

2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:

建立网关MAC地址对应的VxLAN MAC表项,该VxLAN MAC表项包括该网关MAC地址与第一单播隧道的对应关系;

所述若所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,所述方法进一步包括:根据该单播用户报文的目的MAC地址在VxLAN MAC表中进行匹配,确定传输该单播用户报文的隧道为第一单播隧道。

3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:

若接收到的所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用除IP之外的其它协议封装,则所述边缘设备通过与所述网络设备建立的第二单播隧道向所述网关设备发送第二VxLAN报文,所述第二VxLAN报文为所述单播用户报文使用第二单播隧道的封装格式进行VxLAN封装后的报文,所述第二VxLAN报文携带中央处理器CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第二VxLAN报文的VxLAN封装后上送CPU处理。

4.根据权利要求1-3任意一项所述的方法,其特征在于,所述方法进一步包括:

所述边缘设备在本地配置网关MAC地址、进行组播转发的组播组地址、三层转发标识、CPU处理标识、以及网关设备使能协议使用的组播组地址。

5.根据权利要求4所述的方法,其特征在于,所述方法进一步包括:

所述边缘设备接收到组播用户报文;

若所述组播用户报文的目的MAC地址为网关使能协议使用的组播MAC地址,且所述组播用户报文的链路层上一层使用该组播MAC地址对应的网关使能协议封装,则所述边缘设备对所述组播用户报文进行复制,通过第一组播隧道向所述网关设备发送第三VxLAN报文,所述第三VxLAN报文为复制的所述组播用户报文使用第一组播隧道的封装格式进行VxLAN封装后的报文,所述第三VxLAN报文携带CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第三VxLAN报文的VxLAN封装后上送CPU处理。

6.一种报文处理装置,应用于可扩展虚拟局域网络VxLAN中的边缘设备,其特征在于,所述装置包括:接收单元,用于接收单播用户报文;

处理单元,用于当所述接收单元接收到单播用户报文时,若所述单播用户报文的目的媒体访问控制MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用因特网协议IP封装,则所述边缘设备通过与网关设备建立的第一单播隧道向所述网关设备发送第一VxLAN报文,所述第一VxLAN报文为所述单播用户报文使用第一单播隧道的封装格式进行VxLAN封装后的报文,所述第一VxLAN报文携带三层转发标识,以使所述网关设备根据所述三层转发标识剥掉所述第一VxLAN报文的VxLAN封装和内层MAC层后进行路由转发。

7.根据权利要求6所述的装置,其特征在于,所述装置进一步包括:建立单元;

所述建立单元,用于建立网关MAC地址对应的VxLAN MAC表项,该VxLAN MAC表项包括该网关MAC地址与第一单播隧道的对应关系;

所述处理单元,进一步用于若所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,则根据该单播用户报文的目的MAC地址在所述建立单元建立的VxLAN MAC表中进行匹配,确定传输该单播用户报文的隧道为第一单播隧道。

8.根据权利要求6所述的装置,其特征在于,

所述处理单元,进一步用于若所述接收单元接收到的所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用除IP之外的其它协议封装,则所述边缘设备通过与所述网络设备建立的第二单播隧道向所述网关设备发送第二VxLAN报文,所述第二VxLAN报文为所述单播用户报文使用第二单播隧道的封装格式进行VxLAN封装后的报文,所述第二VxLAN报文携带中央处理器CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第二VxLAN报文的VxLAN封装后上送CPU处理。

9.根据权利要求6-8任意一项所述的装置,其特征在于,所述装置进一步包括:配置单元;

所述配置单元,用于在本地配置网关MAC地址、进行组播转发的组播组地址、三层转发标识、CPU处理标识、以及网关设备使能协议使用的组播组地址。

10.根据权利要求9所述的装置,其特征在于,

所述接收单元,进一步用于接收组播用户报文;

所述处理单元,进一步用于当所述接收单元接收到组播用户报文时,若所述组播用户报文的目的MAC地址为网关使能协议使用的组播MAC地址,且所述组播用户报文的链路层上一层使用该组播MAC地址对应的网关使能协议封装,则所述边缘设备对所述组播用户报文进行复制,通过第一组播隧道向所述网关设备发送第三VxLAN报文,所述第三VxLAN报文为复制的所述组播用户报文使用第一组播隧道的封装格式进行VxLAN封装后的报文,所述第三VxLAN报文携带CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第三VxLAN报文的VxLAN封装后上送CPU处理。

说明书 :

一种报文处理方法和装置

技术领域

[0001] 本发明涉及通信技术领域,特别涉及一种报文处理方法和装置。

背景技术

[0002] 随着数据中心云计算和虚拟化技术的发展,一个数据中心需要支持的虚拟机规模出现爆炸式增长,同时虚拟机迁移需要在同一个二层域内,不同租户之间需要逻辑隔离。由于传统虚拟局域网(Virtual Local Area Network,VLAN)最大只支持4096个,如果使用VLAN技术进行二层域划分和隔离,从规模上已经远远满足不了需求。另外,VLAN的部署需要整个数据中心是一个大二层的物理网络,随着网络规模的扩大,生成树协议(Spanning Tree Protocol,STP)高负荷、广播泛洪消耗、媒体访问控制(Media Access Control,MAC)表容量不足、大量配置部署困难等问题越来越突出。
[0003] 因此,可扩展虚拟局域网络(Virtual extensible LAN,VxLAN)技术应运而生,它具有更大的标识空间并基于三层因特网协议(Internet Protocol,IP)网络之上运行,更容易部署和维护。
[0004] VxLAN中作为VxLAN IP网关的可扩展的虚拟局域网隧道结点设备(VXLAN Tunnel End Point,VTEP),接入到IP网络。服务器上的流量若要访问IP网络,则报文通过与该服务器连接的VTEP封装后发送到IP网关,该IP网关查找VxLAN相关表项确定需要解封装时,则解封装;在解封封装之后,确定需要进行三层转发,则再查找路由表项进行路由转发。这样在VxLAN IP网关上,需要两次查表。
[0005] 目前一些典型的交换机设备不支持二次查表,导致无法直接支持VxLAN IP网关功能。基于NP的硬件的路由器设备,支持二次查表,但价格要昂贵的多。
[0006] 现有实现中,在设备上连接自环线,当作两台设备使用,每台设备进行一次查表,以实现最终的两次查表;但是在用户流量大的情况下,需要多条自环线进行多次查表实现报文转发,处理效率低下。

发明内容

[0007] 有鉴于此,本申请提供一种报文处理方法和装置,以解决VxLAN中网关设备处理报文效率低下的问题。
[0008] 为解决上述技术问题,本申请的技术方案是这样实现的:
[0009] 一种报文处理方法,应用于可扩展虚拟局域网络VxLAN中,所述方法包括:
[0010] 边缘设备接收到单播用户报文;
[0011] 若所述单播用户报文的目的媒体访问控制MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,则所述边缘设备通过与网关设备建立的第一单播隧道向所述网关设备发送第一VxLAN报文,所述第一VxLAN报文为所述单播用户报文使用第一单播隧道的封装格式进行VxLAN封装后的报文,所述第一VxLAN报文携带三层转发标识,以使所述网关设备根据所述三层转发标识剥掉所述第一VxLAN报文的VxLAN封装和内层MAC层后进行路由转发。
[0012] 一种报文处理装置,应用于可扩展虚拟局域网络VxLAN中的边缘设备,所述装置包括:
[0013] 接收单元,用于接收单播用户报文;
[0014] 处理单元,用于当所述接收单元接收到单播用户报文时,若所述单播用户报文的目的媒体访问控制MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,则所述边缘设备通过与网关设备建立的第一单播隧道向所述网关设备发送第一VxLAN报文,所述第一VxLAN报文为所述单播用户报文使用第一单播隧道的封装格式进行VxLAN封装后的报文,所述第一VxLAN报文携带三层转发标识,以使所述网关设备根据所述三层转发标识剥掉所述第一VxLAN报文的VxLAN封装和内层MAC层后进行路由转发。
[0015] 综上所述,本申请中边缘设备在接收到需要发送给网关设备,且需网关设备进行三层转发的单播用户报文时,对该用户报文进行VxLAN封装时携带三层转发标识,并通过与网关设备建立的单播隧道转发,使网关设备直接剥掉VxLAN头,以及用户MAC层进行路由转发。该方案中网关设备在处理报文时不需要进行两次查表,从而提高了VxLAN中网关设备处理报文的效率。

附图说明

[0016] 图1为本申请实施例中网关MAC信息结构示意图;
[0017] 图2为本申请实施例中和组播协议MAC匹配信息结构示意图;
[0018] 图3为本申请具体实施例中VTEP处理报文流程示意图;
[0019] 图4为VxLAN组网示意图;
[0020] 图5为本申请具体实施例中应用于上述技术的报文处理装置结构示意图。

具体实施方式

[0021] 为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并据实施例,对本发明的技术方案进行详细说明。
[0022] 下面首先描述VxLAN中的边缘设备需要进行的配置处理:边缘设备在本地配置网关MAC地址、进行组播转发的组播组地址、三层转发标识、CPU处理标识、以及网关设备使能协议使用的组播组地址。在具体实现时,可以静态配置或动态获取配置,下面以动态获取的方式为例,详细说明配置上述信息的过程。
[0023] 在具体实现时,动态获取配置上述信息的方式不做限制,本申请实施例中给出通过以太网虚拟化互联邻居发现客户端(EVI Neighbor Discovery Client,EDNC)向以太网虚拟化互联邻居发现服务器(EVI Neighbor Discovery Server,EDNS)注册的方式获取相关信息的过程。
[0024] 以边缘设备为VTEP为例,作为EDNC的VTEP会向作为EDNS的VTEP注册,本申请在具体实现注册时,作为网关设备且为EDNC的VTEP还需携带网关设备的网关MAC信息,也可以携带或不携带组播协议MAC匹配信息。
[0025] 在具体实现时,网关MAC信息可以携带在ENDP的扩展部分,具体信息参见图1,图1为本申请实施例中网关MAC信息结构示意图。
[0026] 图1中,
[0027] 网关MAC类型(IP GW MAC Type):用于表明此结构的类型;
[0028] Flag:标志位,表示一些状态信息。其中,0x00表示MAC后面仅包括N1对应的封装内容,没有N2对应的封装内容和Multicast Group字段;0x01表示MAC地址后面包括N1和N2对应的封装内容,没有Multicast Group字段;0x02表示MAC地址后面包括N1对应的封装内容和Multicast Group字段,没有N2对应的封装内容;0x03表示MAC地址后面有N1、N2对应的封装内容和Multicast Group字段。
[0029] MAC Address:MAC地址,表示此网关设备使用的MAC地址。
[0030] 封装内容:由标志位Flag填充的值,可以获知MAC地址后面对应的封装内容,图1中给出的实现方式中标志位Flag填充值为0x03,则封装内容中的具体字段和表示的含义具体如下:
[0031] 图1中的网关MAC信息结构携带N1,当N1置位时,则表明网关设备需要对报文进行三层转发时,使用该封装内容中指定的UDP Port1号作为三层转发标识进行VxLAN封装;当N1未置位时,表明网关设备需要对报文进行三层转发时,使用该封装内容中的指定的VxLAN Reserved value(0x01)作为三层转发标识进行VxLAN封装转发。
[0032] 图1中的网关MAC信息结构携带N2,当N2置位时,则表明网关设备需要将报文上送CPU处理时,使用该封装内容中指定的UDP Port2号作为CPU处理标识进行VxLAN封装;当N2未置位时,表明网关设备需要将该报文上送CPU处理时,使用该封装内容中的VxLAN Reserved value(0x10)作为CPU处理标识进行VxLAN封装。
[0033] 图1中的网关MAC信息结构携带组播组地址(Multicast Group),表明广播报文和组播报文可以使用此组播组进行转发。
[0034] VNI list:表示使用此MAC地址的VNI信息。这是个可选可变长的字段。若默认VxLAN都使用此MAC地址,则VNI list可以为空。
[0035] ENDS接收到ENDC发送的注册信息后,如果该ENDC不为网关设备,则同现有处理;若该ENDC为网关设备,则将注册信息中携带的网关MAC信息和现有的ENDC注册时发送的信息绑定存储;并且ENDS会将其他ENDC的信息通告给该ENDC,如果包括网关MAC信息,会一同发送给该ENDC。
[0036] 这样实现后,各VTEP就知道哪台设备为网关设备,并且获知其使用的网关MAC信息。
[0037] 对于作为非网关设备的VTEP,在接收到ENDS同步的相关信息后,如果与其他VTEP之间存在相同的VxLAN,则与对应的VTEP建立源单播隧道,同现有实现。
[0038] 本申请在具体实现时,还需为该网关MAC地址创建特殊的隧道,在建立特殊隧道时,首先建立第一单播隧道;若网关MAC信息中还携带N2对应的封装内容,则还需建立第二单播隧道。建立的特殊隧道依附于已与网关设备建立的源单播隧道(即目的地址和出接口,下一跳等信息随已有源单播隧道变化而变化,源单播隧道down后,建立的特殊隧道删除)。
[0039] 其中,第一单播隧道对应的封装格式为,在进行VxLAN封装时,携带三层转发标识;第二单播隧道对应的封装格式为,在进行VxLAN封装时,携带CPU处理转发标识。
[0040] 该VTEP若根据接收到的网关MAC信息确定该源单播隧道的另外一端的VTEP为网关设备,则根据用户需要可以在建立第一单播隧道之后立刻生成该网关MAC地址对应的VxLAN MAC表项;或同现有实现,接收到相关报文时进行该网关MAC地址的VxLAN MAC表项学习。该VTEP生成的VxLAN MAC表项中网关MAC地址对应的隧道为第一单播隧道。
[0041] 由上述描述可知,本申请具体实现时,当接收到的单播用户报文的目的MAC地址为网关MAC地址,且该单播用户报文的链路层上一层使用IP封装时,使用第一单播隧道对应的封装格式进行封装,并通过第一单播隧道发送;如果建立第二单播隧道,当接收到的单播用户报文的目的MAC地址为网关MAC地址,且该单播用户报文的链路层上一层使用除IP之外的其它协议封装时,使用第二单播隧道对应的封装格式进行封装,并通过第二单播隧道发送;如果未建立第二单播隧道,按现有实现处理该类单播用户报文,即使用建立的源单播隧道对应的封装格式封装该单播用户报文,并通过该源单播隧道转发。
[0042] 本实施例以网关设备向ENDS注册时携带组播协议MAC匹配信息为例。网关设备在使能协议后,将使能协议需要使用的组播MAC地址和对应协议号以组播协议MAC匹配信息的形式携带在ENDP的扩展部分,具体信息参见图2,图2为本申请实施例中和组播协议MAC匹配信息结构示意图。
[0043] 图2中,
[0044] IP GW Protocol Type:用于表明此结构的类型为协议MAC。
[0045] Number:后面Multicast MAC和Protocol Number组合的数量。
[0046] Multicast MAC:组播MAC地址
[0047] Protocol Number:协议编号,若为0,则标示不用关心协议编号;其他值则表明需关心的协议的实际编号。
[0048] 网关设备之外的VTEP接收到组播协议MAC匹配信息后,在本地形成组播分类表,用于对用户侧上来的组播用户报文进行组播分类。
[0049] 在现有实现中,建立单播隧道之后,配置组播组地址,对应的组播隧道即建立完成,本申请中称这样建立的组播隧道为源组播隧道,还需建立第一组播隧道,该第一组播隧道依附与该源组播隧道建立,该第一组播隧道的封装格式为,在进行VxLAN封装时,携带CPU处理转发标识。
[0050] 如果建立第一组播隧道,当接收到的组播用户报文的目的MAC地址为网关使能协议使用的组播MAC地址,且所述组播用户报文的链路层上一层使用该组播MAC地址对应的网关使能协议封装,则所述边缘设备对所述组播用户报文进行复制,通过第一组播隧道对应的封装格式进行封装,并通过第一组播隧道发送,对于原组播用户报文,按现有实现处理;如果未建立第一组播隧道,接收到组播用户报文直接按现有实现处理即可。
[0051] 作为网关设备的VTEP在接收到VxLAN报文时,当该VxLAN为发送给本网关设备的单播报文时,若确定该VxLAN报文中携带三层转发标识,则剥掉该VxLAN报文的VxLAN封装和内层MAC层后进行路由转发;若确定该VxLAN报文中携带CPU处理标识,则剥掉所述VxLAN报文的VxLAN封装后上送CPU处理;否则,按现有实现处理该VxLAN报文。
[0052] 当该VxLAN为发送给本网关设备的组播报文时,若确定该VxLAN报文中携带CPU处理标识,则剥掉所述VxLAN报文的VxLAN封装后上送CPU处理;否则,按现有实现处理该VxLAN报文。
[0053] 下面详细描述不作为网关设备的VTEP处理报文的过程。
[0054] 参见图3,图3为本申请具体实施例中VTEP处理报文流程示意图。具体步骤为:
[0055] 步骤301,边缘设备接收到单播用户报文。
[0056] 步骤302,若该单播用户报文的目的MAC地址为网关MAC地址,且该单播用户报文的链路层上一层使用IP封装,则该边缘设备通过与所述网关设备建立的第一单播隧道向所述网关设备发送第一VxLAN报文,结束本流程。
[0057] 本步骤中第一VxLAN报文为所述单播用户报文使用第一单播隧道的封装格式进行VxLAN封装后的报文,第一VxLAN报文携带三层转发标识,以使所述网关设备根据所述三层转发标识剥掉所述第一VxLAN报文的VxLAN封装和内层MAC层后进行路由转发。
[0058] 其中,封装时携带的三层转发标识可以是与网关设备约定的UDP端口号,也可以是使用与网关设备约定的在预留字段中选定的字段标识。
[0059] 作为网关设备的VTEP在接收到VxLAN封装的报文时,若确定该VxLAN头中携带三层转发标识,直接剥掉VxLAN封装和内层MAC层后进行路由转发。这样网关设备上不需要进行二次查表以实现报文的转发,提高了网关设备的报文处理效率。
[0060] 本申请具体实现时对于进行三层转发的报文,根据其目的IP地址在路由表中查找,根据查找结果进行处理,该报文也可能是发送给网关设备的单播协议报文,因此,查找路由表项的结果也可能是上送CPU处理。
[0061] 步骤303,若接收到的该单播用户报文的目的MAC地址为网关MAC地址,且该单播用户报文的链路层上一层使用除IP之外的其它协议封装,则所述边缘设备通过与所述网络设备建立的第二单播隧道向所述网关设备发送第二VxLAN报文。
[0062] 本步骤中第二VxLAN报文为所述单播用户报文使用第二单播隧道的封装格式进行VxLAN封装后的报文,第二VxLAN报文携带CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第二VxLAN报文的VxLAN封装后上送CPU处理。
[0063] 其中,封装时携带的CPU处理标识可以是与网关设备约定的UDP端口号,也可以是使用与网关设备约定的在预留字段中选定的字段标识。
[0064] 作为网关设备的VTEP在接收到VxLAN封装的报文时,当确定该VxLAN头中携带CPU处理标识时,直接剥掉VxLAN封装并连同接收该VxLAN封装的用户报文的接口的接口号上送CPU处理。这样网关设备上不需要进行二次查表以实现报文的转发,提高了网关设备的报文处理效率。
[0065] 为了对现有报文处理流程改变较小,本申请具体实施例中还提供了如下报文处理方法:
[0066] 建立网关MAC地址对应的VxLAN MAC表项,该VxLAN MAC表项包括该网关MAC地址与第一单播隧道的对应关系;
[0067] 若所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,所述方法进一步包括:根据该单播用户报文的目的MAC地址在VxLAN MAC表中进行匹配,确定传输该单播用户报文的隧道为第一单播隧道。
[0068] 本申请具体实施例中,边缘设备当接收到组播用户报文时,若所述组播用户报文的目的MAC地址为网关使能协议使用的组播MAC地址,且所述组播用户报文的链路层上一层使用该组播MAC地址对应的网关使能协议封装,则所述边缘设备对所述组播用户报文进行复制,通过第一组播隧道向所述网关设备发送第三VxLAN报文。
[0069] 其中,第三VxLAN报文为复制的所述组播用户报文使用第一组播隧道的封装格式进行VxLAN封装后的报文,所述第三VxLAN报文携带CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第三VxLAN报文的VxLAN封装后上送CPU处理。
[0070] 该VTEP将接收到的原组播用户报文按现有实现处理。
[0071] 下面结合附图,详细说明本申请具体实施例中如何实现报文处理。
[0072] 参见图4,图4为VxLAN组网示意图。图4中包括了三个VTEP,分别为VTEP1、VTEP2和VTEP3,设VTEP1和VTEP2为EDNC,VTEP3为EDNS,VTEP2为网关设备。
[0073] 设VTEP1和VTEP2上都配置VxLAN 1,VTEP1的VxLAN 1单播隧道使用的地址为100.1.1.1,VTEP2的VxLAN 1单播隧道使用的地址为103.0.0.1,网关设备的IP地址为
10.0.0.1。
[0074] 本实施例中以网关MAC自学习为例进行描述。
[0075] VTEP2向VTEP3注册时,携带网关MAC信息和组播协议MAC匹配信息,同时还携带现有实现的其他信息,如使能的VxLAN、ARP代理、正常转发的组播组,源地址等。
[0076] 本实施例以网关MAC信息中携带网关MAC地址0010-0000-0001,并携带N1、N2和Multicast Group为例。
[0077] 当N1置位时,对应的封装内容为UDP Port 6000,即三层转发标识为UDP Port6000;
[0078] 当N2置位时,对应的封装内容为UDP Port 6001,即CPU处理标识为UDP Port6001;
[0079] 当N1未置位时,对应的封装内容为VxLAN Reserved value(0x01),即三层转发标识为VxLAN Reserved value(0x01);
[0080] 当N2未置位时,对应的封装内容为VxLAN Reserved value(0x10),即CPU处理标识为VxLAN Reserved value(0x10)。
[0081] Multicast Group为225.0.0.2。
[0082] 组播协议MAC匹配信息中,网关设备使能的协议为开放最短路径优先(Open Shortest Path First,OSPF)协议,且OSPF使 用组 播MAC地址 0100-5e00-0005和0100-5e00-0006。
[0083] 同时VTEP1也会向VTEP3注册,由于VTEP1不是网关设备,因此,其注册过程同现有实现。
[0084] VTEP3将VTEP2和VTEP1注册时发送的信息都保存在本地,对于VTEP2,将其注册时携带的网关MAC信息和组播协议MAC匹配信息与使能的VxLAN、ARP代理、正常转发的组播组,源地址等绑定保存;并将存储的VTEP2对应的信息以及自身的相关信息发送给VTEP1,将存储的VTEP1的信息以及自身的相关信息发送给VTEP2。
[0085] VTEP1接收到VTEP2的相关信息后,发现VTEP2与其有相同的VxLAN(VNI1)信息,则向VTEP2建立单播隧道Tunnel0。组播隧道在VTEP1配置对应的VxLAN后自动创建;并在VTEP1连接用户侧接口下发ARP代理信息,对于ARP请求目的IP地址为10.0.0.1的ARP报文,进行ARP应答,应答ARP报文时源MAC地址使用0010-0000-0001,此为现有实现。
[0086]Tunnel号 Destation 封装格式 类型
Tunnel0 103.0.0.1 UDP Port4789+VNI+0x00 Normal
[0087] 表1
[0088] 表1为VTEP1为VNI1建立的到VTEP2的单播隧道包含的信息。该隧道的建立同现有实现,在本申请具体实现时,该隧道称为源隧道。
[0089] VTEP1根据信息中的网关MAC信息和组播协议MAC匹配信息发现VTEP2为网关设备,则根据网关MAC信息,生成到网关设备的第一单播隧道Tunnel1和第二单播隧道Tunnel2,第一单播隧道Tunnel1和第二单播隧道Tunnel2依附于原来产生的单播Tunne10。
[0090] 下面分别以N1和N2均置位,以及N1和N2均未置位两种情况分别来描述隧道建立过程:
[0091] 具体参见表2,表2为使用端口号作为标识时VTEP1建立的到VTEP2的扩展隧道包含的信息。
[0092]扩展Tunnel号 源Tunnel 封装格式 类型
Tunnel1 Tunnel0 UDP Port6000+VNI+0x00 三层转发
Tunnel2 Tunnel0 UDP Port6001+VNI+0x00 CPU处理
[0093] 表2
[0094] 具体参见表3,表3为使用预留字段作为标识时VTEP1建立的到VTEP2的扩展隧道包含的信息。
[0095]扩展Tunnel号 源Tunnel 封装格式 类型
Tunnel1 Tunnel0 UDP Port4789+VNI+0x01 三层转发
Tunnel2 Tunnel0 UDP Port4789+VNI+0x10 CPU处理
[0096] 表3
[0097] 由表2可见,由于使用端口号作为标识,因此,第一单播隧道Tunnel1和第二单播隧道Tunnel2对应的封装格式中的预留字段同表1中的源单播隧道Tunnel0对应的封装格式中的预留字段(0x00);由表3可见,由于使用预留字段作为标识,因此,第一单播隧道Tunnel1和第二单播隧道Tunnel2的封装格式中的端口号同表1中的源单播隧道Tunnel0对应的封装格式中的端口号(UDP Port4789)。
[0098] 本申请在具体实现时,还可以交叉使用预留字段标识和端口号标识,如N1置位,且N2未置位;N1未置位,且N2置位,具体实现时根据实际应用进行配置使用。
[0099] 本实施例中在获取到网关MAC信息并建立第一单播隧道之后配置生成网关设备MAC地址表项为例。参见表4,表4为VTEP1在VxLAN1下建立的网关设备的MAC地址表项包含的内容。
[0100]MAC地址 VNI Tunnel State
0010-0000-0001 VxLAN1 Tunnel1 Control
[0101] 表4
[0102] 由表4可见,建立的网关MAC地址表项中,网关MAC地址(0010-0000-0001)对应的隧道为第一单播隧道Tunnel1,在接收到目的MAC地址为网关MAC地址(0010-0000-0001),且链路层上一层使用IP封装的单播用户报文时,根据该单播用户报文的目的MAC地址在VxLAN MAC表中进行匹配,匹配到表4时,确定传输该单播用户报文的隧道为第一单播隧道。
[0103] 本申请实施例中还需同现有实现建立组播隧道,组播隧道在源单播隧道建立完成后,添加组播地址,即可完成组播隧道的建立,此时建立的组播隧道称为源组播隧道MTunnel0。参见表5,表5为建立的源组播隧道包含的内信息。
[0104]Tunnel号 Group Type 封装格式
MTunnel0 225.0.0.2 MT UDP Port4789+VNI+0x00
[0105] 表5
[0106] 由上文可知,网关MAC信息中还携带了组播MAC地址,因此,还需依附源组播隧道建立第一组播隧道MTunnel1。
[0107] 具体参见表6,表6为N2置位时VTEP1建立的到VTEP2的第一组播隧道包含的信息。
[0108]Tunnel号 Group Type 封装格式
MTunnel1 225.0.0.2 MT UDP Port6001+VNI+0x00
[0109] 表6
[0110] 具体参见表7,表7为N2未置位时VTEP1建立的到VTEP2的第一组播隧道包含的信息。
[0111]Tunnel号 Group Type 封装格式
MTunnel1 225.0.0.2 MT UDP Port4789+VNI+0x10
[0112] 表7
[0113] 由表6可见,由于使用端口号作为标识,因此,第一组播隧道的封装格式中的预留字段同表5中的源组播隧道对应的封装格式中的预留字段(0x00);由表7可见,由于使用预留字段作为标识,因此,第一组播隧道的封装格式中的端口号同表5中的源组播隧道对应的封装格式中的端口号(UDP Port4789)。
[0114] 如果在具体实现时,网关MAC信息中未携带N2,但是携带组播地址,则不会建立第一组播隧道。
[0115] 下面以使用端口号作为标识封装报文为例,在VTEP1连接用户侧接口下发分流信息:
[0116] 对目的MAC地址为0010-0000-0001且链路层上一层使用IP封装的单播用户报文,则查VxLAN MAC表项转发,走Tunnel1转发;这样实现对现有实现过程改进比较小,先在VxLAN MAC表中查找,再根据查找到的表项对应的隧道进行封装转发。
[0117] 在具体实现时,对目的MAC地址为0010-0000-0001且链路层上一层使用IP封装的单播用户报文,也可以直接按Tunnel1对应的封装格式封装并转发。
[0118] 对目的MAC地址为0010-0000-0001且链路层上一层使用除IP之外的协议封装的单播用户报文,则按Tunnel2对应的封装格式封装并转发;
[0119] 对目的MAC为0100-5e00-0005或0100-5e00-0006且链路层上一层使用对应组播MAC地址的协议封装的报文,复制两份,一份走现有的组播隧道转发,一份走新增的MTunnel1,在转发前按各自隧道对应的封装格式进行封装。
[0120] 其他报文按现有流程处理。
[0121] VTEP2(网关设备)接收到对应报文进行如下处理:
[0122] 对匹配VxLAN封装为UDP Port6000+VNI+0x00的报文,剥掉VxLAN封装及内层MAC层,即直接剥除VxLAN封装及其后面14个字节,将余下的数据内容作为IP报文进行路由转发。
[0123] 对匹配VxLAN封装为UDP Port6001+VNI+0x00的报文(包括从单播隧道和组播隧道收到的),剥掉VxLAN封装,将剥掉封装的报文上送CPU处理。CPU会按照现有处理流程处理。
[0124] 以VTEP1下挂的VM1(IP地址为10.0.0.2,MAC地址为0-1-1)需要访问IP网络中的地址220.0.01为例,详细描述VxLAN中的报文转发过程。
[0125] VTEP1下挂的VM1发送ARP请求报文,请求IP地址10.0.0.1对应的MAC地址。
[0126] VTEP1接收到该ARP请求报文时,将IP地址10.0.0.1对应的MAC地址0010-0000-0001响应给VM1。
[0127] VM1接收到VTEP1响应MAC地址的报文后,使用该响应的MAC地址进行报文发送。参见表8,表8为VM1发送的单播用户报文包含的内容。
[0128]
[0129] 表8
[0130] VTEP1收到该单播用户报文时,确定该单播用户报文的目的MAC地址为0010-0000-0001,且链路上一层使用IP封装的报文时,匹配VxLAN MAC表中0010-0000-0001对应的MAC表项,确定该MAC地址对应第一单播隧道Tunnel1,则按照第一单播隧道Tunnel1的封装格式进行VxLAN封装:
[0131] 参见表9,表9为对表8中的单播用户报文进行VxLAN封装的VxLAN报文包含的内容。
[0132]
[0133] 表9
[0134] 00-22-33为P1设备MAC地址,00-1-1为VTEP1的MAC地址,100.1.1.1为VTEP1的IP地址,103.0.0.1为VTEP2的IP地址。
[0135] 报文经过P1转发到达VTEP2,确定该报文为VxLAN封装,且匹配UDP Port6000+VNI+0x00,则将其VxLAN头及其后14字节的报文内容剥掉,参见表10,表10为对表9中的VxLAN报文剥掉VxLAN头以及其后14字节的报文内容后包含的内容。
[0136]
[0137]
[0138] 表10
[0139] 表10的内容对应表9中的单播用户报文剥掉MAC层的14字节(用户源MAC地址、用户目的MAC地址和封装协议)后的内容,即表8对应的单播用户报文剥掉用户目的MAC、用户源MAC后对应的内容。
[0140] VTEP2根据表10中的用户目的IP地址在本地路由表中查找,并根据查找到的出口转发到IP网络中。
[0141] IP网络中的设备(IP地址为220.0.0.1)回应报文到达VTEP2时,VTEP2查找路由转发表项,发现目的IP为远端VxLAN网络中报文,则按现有技术进行转发和封装。报文通过VxLAN网络达到VM1。
[0142] 本申请基于同样的发明构思,还提出一种报文处理装置,应用于可扩展虚拟局域网络VxLAN中的边缘设备。参见图5,图5为本申请具体实施例中应用于上述技术的报文处理装置结构示意图。该报文处理装置包括:
[0143] 接收单元501,用于接收单播用户报文;
[0144] 处理单元502,用于当接收单元501接收到单播用户报文时,若所述单播用户报文的目的媒体访问控制MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,则所述边缘设备通过与网关设备建立的第一单播隧道向所述网关设备发送第一VxLAN报文,所述第一VxLAN报文为所述单播用户报文使用第一单播隧道的封装格式进行VxLAN封装后的报文,所述第一VxLAN报文携带三层转发标识,以使所述网关设备根据所述三层转发标识剥掉所述第一VxLAN报文的VxLAN封装和内层MAC层后进行路由转发。
[0145] 较佳地,所述装置进一步包括:建立单元503;
[0146] 建立单元503,用于建立网关MAC地址对应的VxLAN MAC表项,该VxLAN MAC表项包括该网关MAC地址与第一单播隧道的对应关系;
[0147] 处理单元502,进一步用于若所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用IP封装,则根据该单播用户报文的目的MAC地址在建立单元503建立的VxLAN MAC表中进行匹配,确定传输该单播用户报文的隧道为第一单播隧道。
[0148] 较佳地,
[0149] 处理单元502,进一步用于若接收单元501接收到的所述单播用户报文的目的MAC地址为网关MAC地址,且所述单播用户报文的链路层上一层使用除IP之外的其它协议封装,则所述边缘设备通过与所述网络设备建立的第二单播隧道向所述网关设备发送第二VxLAN报文,所述第二VxLAN报文为所述单播用户报文使用第二单播隧道的封装格式进行VxLAN封装后的报文,所述第二VxLAN报文携带中央处理器CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第二VxLAN报文的VxLAN封装后上送CPU处理。
[0150] 较佳地,所述装置进一步包括:配置单元504;
[0151] 配置单元504,用于在本地配置网关MAC地址、进行组播转发的组播组地址、三层转发标识、CPU处理标识、以及网关设备使能协议使用的组播组地址。
[0152] 较佳地,
[0153] 接收单元501,进一步用于接收组播用户报文;
[0154] 处理单元502,进一步用于当接收单元501接收到组播用户报文时,若所述组播用户报文的目的MAC地址为网关使能协议使用的组播MAC地址,且所述组播用户报文的链路层上一层使用该组播MAC地址对应的网关使能协议封装,则所述边缘设备对所述组播用户报文进行复制,通过第一组播隧道向所述网关设备发送第三VxLAN报文,所述第三VxLAN报文为复制的所述组播用户报文使用第一组播隧道的封装格式进行VxLAN封装后的报文,所述第三VxLAN报文携带CPU处理标识,以使所述网关设备根据所述CPU处理标识剥掉所述第三VxLAN报文的VxLAN封装后上送CPU处理。
[0155] 上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
[0156] 综上所述,本申请中VTEP在接收到需要发送给网关设备,且需网关设备进行三层转发的用户报文时,对该用户报文进行VxLAN封装时携带三层转发标识,并通过与网关设备建立的单播隧道转发,使网关设备直接剥掉VxLAN头,以及用户MAC进行路由转发。该方案中网关设备在处理报文时不需要进行两次查表,从而提高了VxLAN中网关设备处理报文的效率。
[0157] 本申请具体实施例中还给出需要上送CPU处理的报文在VxLAN封装时携带CPU处理标识,以使网关设备不需进行二次查表处理,提高了VxLAN中网关设备处理报文的效率。
[0158] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。