一种报文转发方法及转发设备与流程

文档序号:14737229发布日期:2018-06-19 20:45阅读:130来源:国知局
一种报文转发方法及转发设备与流程

本发明涉及数据通信技术领域,尤其涉及一种报文转发方法及转发设备。



背景技术:

组播又称多播,是一种一对多的信息传输技术,如电视会议、聊天室等场景中都会用到组播。

组播需要借助路由器、交换机等转发设备实现。目前,对于三层组播的实现一般都是根据组播协议建立支持最长匹配查找的组播查找表,支持(*,G)和(S,G),其中,(*,G)表示只匹配组播组的D类网络之间互连的协议地址(D-Internet Protocol,DIP),(S,G)表示需同时匹配组播组ID和组播源网络之间互连的协议地址(Source Internet Protocol,SIP)。在收到组播报文后,转发设备先根据报文中的{DIP,SIP}查找组播查找表,获取组播叶子表,组播叶子表按照链表组织,把一个组播组中的叶子通过链表串起来,其中叶子包括虚拟局域网(Virtual Local Area Network,VLAN)的标识和端口信息。在通过组播叶子表确定了{DIP,SIP}对应的VLAN和端口后,逐份完成组播报文复制和封装,并发送封装后的组播报文。这种方法对于每一个组播组就分别需要使用一个大的组播叶子表,这对于转发芯片的资源是一个很大的开销,对芯片的功耗和面积带来较大的增加。

例如,对于一个组播组,假设发往该组播组的组播报文需要组播去往20个VLAN,每个VLAN分别需要从16个端口发送组播报文,则该组播叶子表需要建立20*16个组播叶子,如果网络中存在多个组播组,则需要建立多个组播叶子表,每个组播叶子表需要维护多个组播叶子信息。

综上所述,现有的组播报文转发方法对于转发设备的资源开销较大。



技术实现要素:

本发明提供一种报文转发方法及转发设备,用以降低三层组播报文转发的资源开销。

本发明实施例提供一种报文转发方法,包括:

转发设备的三层转发模块获取待转发的组播报文;

所述转发设备的三层转发模块根据所述组播报文的源网络之间互连的协议地址SIP和目标组播组的D类网络之间互连的协议地址DIP,确定所述组播报文对应的VLAN标识集;所述VLAN标识集为所述组播报文需要发往的VLAN的标识集合;

所述转发设备的二层转发模块针对所述VLAN标识集中的每一个VLAN标识,根据所述组播报文的目标物理地址DMAC,确定所述VLAN标识对应的输出端口标识集,以及,所述转发设备的发送模块从所述VLAN标识对应的输出端口标识集的每一个输出端口发送所述组播报文。

可选的,所述三层转发模块包括记录有多个SIP和DIP组合和/或仅DIP的组播组查找表和记录有多个VLAN标识集的组播表;所述组播组查找表和所述组播表之间存在映射关系;

所述转发设备的三层转发模块根据所述组播报文的SIP和DIP,确定所述组播报文对应的VLAN标识集,包括:

所述三层转发模块根据所述组播报文的SIP和DIP查找所述组播组查找表,确定所述组播表中满足所述映射关系的VLAN标识集。

可选的,所述转发设备的发送模块从所述VLAN标识对应的输出端口标识集的每一个输出端口发送所述组播报文,包括:

所述转发设备的复制模块根据所述输出端口标识集中输出端口标识的数量复制所述组播报文获得相当数量的组播报文;

所述转发设备的发送模块获取所述相当数量的组播报文,并从所述VLAN标识对应的输出端口标识集的每一个输出端口发送所述组播报文。

可选的,所述转发设备的二层转发模块针对所述VLAN标识集中的每一个VLAN标识,根据所述组播报文的目标物理地址DMAC,确定所述VLAN标识对应的输出端口标识集,包括:

所述转发设备的二层转发模块接收所述组播报文,并获取所述VLAN标识集中的第一个VLAN标识;

根据所述组播报文的目标物理地址DMAC,确定所述第一个VLAN标识对应的输出端口标识集;

所述转发设备的复制模块复制所述组播报文获得N份复制报文;N=M-1,M为所述VLAN标识集中VLAN标识的数量;

所述转发设备的二层转发模块接收所述复制报文,并确定所述VLAN标识集中的下一个VLAN标识对应的输出端口标识集;

返回所述转发设备的二层转发模块接收所述复制报文的步骤直至遍历所述VLAN标识集中的全部VLAN标识。

可选的,所述转发设备的二层转发模块接收所述组播报文,并获取所述VLAN标识集中的第一个VLAN标识之前,还包括:

所述转发设备的三层转发模块为所述组播报文添加所述VLAN标识集在所述组播表中对应的第一指针;

所述转发设备的二层转发模块接收所述复制报文之前,还包括:

所述三层转发模块接收所述复制报文;

所述三层转发模块获取所述复制报文中的第一指针;

所述三层转发模块根据所述第一指针读取所述组播表,获取所述VLAN标识集并确定下一个VLAN标识;

所述三层转发模块将所述复制报文和所述下一个VLAN标识发送至所述二层转发模块。

本发明实施例提供一种报文转发设备,包括:

三层转发模块,用于获取待转发的组播报文;

所述三层转发模块,还用于根据所述组播报文的SIP和DIP,确定所述组播报文对应的VLAN标识集;所述VLAN标识集为所述组播报文需要发往的VLAN的标识集合;

二层转发模块,用于针对所述VLAN标识集中的每一个VLAN标识,根据所述组播报文的DMAC,确定所述VLAN标识对应的输出端口标识集;

发送模块,用于从每一个VLAN标识所对应的输出端口标识集中的每一个输出端口发送所述组播报文。

可选的,所述三层转发模块包括记录有多个SIP和DIP组合和/或仅DIP的组播组查找表和记录有多个VLAN标识集的组播表;所述组播组查找表和所述组播表之间存在映射关系;

所述三层转发模块具体用于:

根据所述组播报文的SIP和DIP查找所述组播组查找表,确定所述组播表中满足所述映射关系的VLAN标识集。

可选的,所述转发设备还包括复制模块;

所述复制模块,用于根据所述输出端口标识集中输出端口标识的数量复制所述组播报文获得相当数量的组播报文;

所述转发模块具体用于:

获取所述相当数量的组播报文,并从所述输出端口标识集的每一个输出端口发送所述组播报文。

可选的,所述转发设备还包括复制模块;

所述二层转发模块,具体用于:

接收所述组播报文,并获取所述VLAN标识集中的第一个VLAN标识;

根据所述组播报文的目标物理地址DMAC,确定所述第一个VLAN标识对应的输出端口标识集;

所述复制模块,用于:

复制所述组播报文获得N份复制报文;N=M-1,M为所述VLAN标识集中VLAN标识的数量;

所述二层转发模块,具体还用于:

接收所述复制报文,并确定所述VLAN标识集中的下一个VLAN标识对应的输出端口标识集。

可选的,所述三层转发模块,还用于:

为所述组播报文添加所述VLAN标识集在所述组播表中对应的第一指针;

所述三层转发模块还用于:

接收所述复制报文;

获取所述复制报文中的第一指针;

根据所述第一指针读取所述组播表,获取所述VLAN标识集并确定下一个VLAN标识;

将所述复制报文和所述下一个VLAN标识发送至所述二层转发模块。

综上所述,本发明实施例提供一种报文转发方法及转发设备,其中方法包括:转发设备的三层转发模块获取待转发的组播报文;转发设备的三层转发模块根据组播报文的SIP和DIP,确定组播报文对应的VLAN标识集;VLAN标识集为组播报文需要发往的VLAN的标识集合;转发设备的二层转发模块针对VLAN标识集中的每一个VLAN标识,根据组播报文的目标物理地址DMAC,确定VLAN标识对应的输出端口标识集,以及,转发设备的发送模块从VLAN标识对应的输出端口标识集的每一个输出端口发送组播报文。转发设备在进行三层组播报文转发时,其三层转发模块只需获得组播报文对应的VLAN标识集,之后,二层转发模块会根据组播报文的DMAC进一步确定每一个VLAN标识对应的输出端口。与现有的三层组播报文转发方法相比,本发明实施例中的转发设备无需保存并维护众多组播叶子表,只需在三层转发模块中增加协议地址集与VLAN标识集之间的对应关系即可,而之后二层转发模块中根据组播报文的DMAC确定VLAN标识对应的输出端口集是现有二层组播报文转发中已有的对应关系,本发明实施例中直接复用二层组播报文中已有的对应关系,减少了三层转发模块所保存的数据量,从而节省了三层组播报文转发的资源开销。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种报文转发方法流程示意图;

图2为本发明实施例提供的一种三层转发模块对应关系示意图;

图3为本发明实施例提供的一种二层转发模块对应关系示意图;

图4为本发明实施例提供的一种具体可行的报文转发方法流程示意图;

图5为本发明实施例提供的一种转发设备结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例一

图1为本发明实施例提供的一种报文转发方法流程示意图,如图1所示,包括以下步骤:

S101:转发设备的三层转发模块获取待转发的组播报文。

S102:转发设备的三层转发模块根据组播报文的SIP和DIP,确定组播报文对应的VLAN标识集;VLAN标识集为组播报文需要发往的VLAN的标识集合。

S103:转发设备的二层转发模块针对VLAN标识集中的每一个VLAN标识,根据组播报文的DMAC,确定VLAN标识对应的输出端口标识集,以及,转发设备的发送模块从该VLAN标识对应的输出端口标识集的每一个输出端口发送组播报文。

在S101中,转发设备在工作过程中既有可能接收到组播报文,也有可能收到单播报文等其它形式的报文。可选的,转发设备可以在接收到待转发报文时,先获取待转发报文中的目标物理地址(DestinationMedium Access,DMAC),根据DMAC的形式判断是否为组播报文,若是组播报文,则三层转发模块获取该组播报文。具体来说,组播报文的DMAC前25位具有特殊定义,因此转发设备可通过待转发报文的DMAC判断待转发报文是否为组播报文。

可选的,若待转发报文为单播报文,则转发设备可以进一步判断该单播报文为二层单播报文还是三层单播报文,若为二层单播报文,则二层转发模块获取该单播报文,若为三层单播报文,则三层转发模块获取该单播报文。其具体实现方式与现有技术类似,本发明实施例对此不多作限定。

在S102中,需要根据组播报文的SIP和DIP确定组播报文对应的VLAN标识集,本发明实施例以{SIP,DIP}形式表示一个组播报文中的SIP和DIP。在三层转发模块中保存有多个{SIP,DIP}和/或{*,DIP}与VLAN标识集之间的对应关系,其中,{*,DIP}表示的是不论组播报文的SIP为何,仅匹配组播报文的DIP的特殊情况。三层转发模块通过比对组播报文的SIP和DIP便可以确定满足对应关系的VLAN标识集,而VLAN标识集中的VLAN标识便是组播报文需要发往的VLAN。

可选的,VLAN标识集以VLAN位图(VLAN Bitmap)的形式表示,VLAN位图中每一位代表一个VLAN,VLAN位图的每一位的取值分别代表了组播报文是否需要发送至对应的VLAN。举例说明,转发设备共支持32个VLAN,则VLAN位图共有32位,假设VLAN位图由低到高分别代表VLAN1到VLAN32,VLAN位图的每一位的取值分别代表了该组播报文是否需要发送至对应的VLAN,若VLAN位图中某一位为1,说明该组播报文需要发送至该位对应的VLAN,若某一位为0,说明该组播报文不需要发送至该位对应的VLAN。以一具体实例说明,假设三层转发模块获得的与组播报文的协议地址集对应的VLAN标识集—VLAN位图为VLAN Bitmap=00000000_00000000_111100000_00001111时,说明,该组播报文需发送至VLAN1、VLAN2、VLAN3、VLAN4、VLAN13、VLAN14、VLAN15和VLAN16。

在具体实施过程中,也可能出现组播报文的{SIP,DIP}匹配不到VLAN标识集的情况。可选的,可将匹配不到VLAN标识集的组播报文发送至二层转发模块,由二层转发模块进行二层转发。

在S103中,二层转发模块中保存有DMAC和VLAN与输出端口标识集之间的关系。本发明实施例以{VLAN,DMAC}表示VLAN与DMAC的组合。对于S102所确定的VLAN标识集中的每一个VLAN标识,二层转发模块都会根据{VLAN,DMAC}查找对应的输出端口标识集。在现有技术中,{VLAN,DMAC}与输出端口标识集之间的对应关系多用于二层转发,本发明实施例复用了二层转发中{VLAN,DMAC}与输出端口标识集之间的对应关系实现了三层组播报文转发,从而降低了三层组播报文转发的资源开销。

可选的,输出端口标识集以输出端口位图的形式表示,输出端口位图中每一位代表一个端口,输出端口位图的每一位的取值分别代表了组播报文是否需要从对应的输出端口输出。举例说明,转发设备共有32个输出端口,则输出端口位图共有32位,假设输出端口位图由低到高分别代表端口1到端口32,则输出端口位图的每一位的取值分别代表了该组播报文是否需要从对应的输出端口输出,若输出端口位图中某一位为1,说明该组播报文需要从该位对应的输出端口输出,若某一位为0,说明该组播报文不需要从该位对应的输出端口输出。以一具体实例说明,假设二层转发模块获得的与{VLAN,DMAC}对应的输出端口标识集—输出端口位图为Port Bitmap=00000000_00000000_000000000_11111111时,说明,该组播报文需从端口1、端口2、端口3、端口4、端口5、端口6、端口7和端口8输出。在确定了任一VLAN对应的输出端口标识集后,转发设备的发送模块会从该输出端口集中的每一个输出端口发送该组播报文。

在本发明实施例中,三层转发模块会根据{SIP,DIP}确定组播报文对应的VLAN标识集。可选的,三层转发模块包括记录有多个SIP和DIP组合的组播组查找表和记录有多个VLAN标识集的组播表;组播组查找表和组播表之间存在映射关系;转发设备的三层转发模块根据组播报文的SIP和DIP,确定组播报文对应的VLAN标识集,包括:三层转发模块根据组播报文的SIP和DIP查找组播组查找表,确定组播表中满足映射关系的VLAN标识集。图2为本发明实施例提供的一种三层转发模块对应关系示意图,如图2所示,三层转发模块中包括组播组查找表和组播表,组播组查找表中记录了多个{SIP,DIP}和/或{*,DIP}。三层转发模块的组播中记录了多个VLAN标识集,此处VLAN标识集以VLAN Bitmap表示。组播组查找表和组播表之间存在映射关系,例如,组播组查找表记录有{SIP,DIP}和/或{*,DIP}与第一指针之间的对应关系,组播表中记录有第一指针与VLAN标识集之间的对应关系,与相同的第一指针对应的{SIP,DIP}和/或{*,DIP}与VLAN标识集之间满足映射关系。三层转发模块获取组播报文的SIP和DIP后,三层转发模块根据{SIP,DIP}查找组播组查找表,确定组播组查找表中与组播报文的{SIP,DIP}相匹配的{SIP,DIP}或{*,DIP},进而确定对应的第一指针;三层转发模块进一步根据该第一指针查找组播表,确定该第一指针对应的VLAN标识集即为该组播报文对应的VLAN标识集。

转发设备在进行三层组播报文转发时,其三层转发模块只需获得组播报文对应的VLAN标识集,之后,二层转发模块会根据组播报文的DMAC进一步确定每一个VLAN标识对应的输出端口。与现有的三层组播报文转发方法相比,本发明实施例中的转发设备无需保存并维护众多组播叶子表,只需在三层转发模块中增加协议地址集与VLAN标识集之间的对应关系即可,而之后二层转发模块中根据组播报文的DMAC确定VLAN标识对应的输出端口集是现有二层组播报文转发中已有的对应关系,本发明实施例中直接复用二层转发模块中已有的用于二层组播报文转发的对应关系,减少了三层转发模块所保存的数据量,从而节省了三层组播报文转发的资源开销。

基于类似的构思,本发明实施例还提供一种根据{VLAN,DMAC}确定输出端口标识集的方法。图3为本发明实施例提供的一种二层转发模块对应关系示意图,如图3所示,二层转发模块包括MAC转发表和MAC动作表。MAC转发表中记录有多个{VLAN,DMAC},由于交换设备在工作时既有可能进行组播报文的转发,也有可能进行单播报文的转发,因此,MAC转发表中的DMAC既有组播MAC,又有单播MAC。MAC动作表中记录有多个输出端口标识集,此处以Port Bitmap表示。可选的,MAC转发表和MAC动作表之间的映射关系可以通过第二指针实现的,即,MAC转发表记录有{VLAN,DMAC}与第二指针之间的对应关系,MAC动作表中记录有第二指针与输出端口标识集之间的对应关系,与相同的第二指针对应{VLAN,DMAC}和输出端口标识集之间满足映射关系。二层转发模块获取{VLAN,DMAC}后,根据MAC转发表,确定{VLAN,DMAC}对应的第二指针;二层转发模块进一步根据MAC动作表,确定该第二指针对应的输出端口标识集。MAC转发表和MAC动作表可用于交换设备的二层转发,本发明实施例以此为基础实现了三层组播报文的转发并降低了三层组播报文转发的资源开销。

对于组播报文需要发往的每一个VLAN需要从多个输出端口发送,对于需要发往的每一个VLAN,确定该VLAN对应的输出端口集后,需要多份组播报文才能实现向一个VLAN的每一个输出端口的发送。可选的,转发设备中还包括复制模块,转发设备的复制模块根据输出端口标识集中输出端口标识的数量复制组播报文获得相当数量的组播报文;转发设备的发送模块获取相当数量的组播报文,并从VLAN标识对应的输出端口标识集的每一个输出端口发送组播报文。举例说明,假设输出端口标识集中共包括8个输出端口,则转发设备会至少再复制7个组播报文,使这8个输出端口中的每一个输出端口都可以向外发送一个组播报文。

在组播报文的转发过程中,三层转发模块所确定的VLAN标识集中往往具有多个VLAN,每一个VLAN都需匹配输出端口标识集。可选的,转发设备可以通过以下方式分别确定VLAN标识集中每一个VLAN标识所对应的输出端口标识集,包括:

步骤一:转发设备的二层转发模块接收组播报文,并获取VLAN标识集中的第一个VLAN标识。

步骤二:转发设备的二层转发模块根据组播报文的目标物理地址DMAC,确定第一个VLAN标识对应的输出端口标识集。

步骤三:转发设备的复制模块复制组播报文获得N份复制报文;N=M-1,M为VLAN标识集中VLAN标识的数量。

步骤四:转发设备的二层转发模块接收复制报文,并确定VLAN标识集中的下一个VLAN标识对应的输出端口标识集。

步骤五:返回步骤四直至遍历VLAN标识集中的全部VLAN标识。

针对以上步骤一至步骤五,本发明实施例提供两个可行的具体可行的实现方式以进行说明:

可行的实现方式一:

该实现方式中,三层转发模块在向二层转发模块发送的组播报文中加入从组播表中查找到的该组播报文的VLAN标识集,由二层转发模块根据该组播报文包括的VLAN标识集,在VLAN标识集中确定下一个VLAN标识。

在步骤一之前,三层转发模块接收组播报文,三层转发模块在通过组播组查找表和组播表确定了组播报文的VLAN标识集后,将VLAN标识集加入组播报文的报文头,并将组播报文发送至二层转发模块。

在步骤一中,二层转发模块接收来自三层转发模块的组播报文,该组播报文的报文头中携带有组播报文对应的VLAN标识集。二层转发模块获取报文头中的VLAN标识集,并确定VLAN标识集中的第一个VLAN标识。

在步骤二中,二层转发模块根据组播报文的DMAC和第一个VLAN标识查询MAC转发表,获取DMAC和第一个VLAN标识对应的第二指针。二层转发模块根据第二指针读取MAC动作表,从而确定第一个VLAN标识对应的输出端口标识集。

在步骤三中,复制报文为复制模块复制获得的特殊的组播报文。复制模块在复制组播报文时,会根据VLAN标识集中VLAN标识的数量M复制N份复制报文,其中,N=M-1,这N份复制报文将会在步骤四的多次循环中分别用于确定VLAN标识集剩下的N个VLAN标识所对应的输出端口标识集。举例说明,假设VLAN标识集中共有8个VLAN标识,则复制模块会复制组播报文共获得7份复制报文,这7份复制报文将会分别用于确定第二至第八个VLAN标识所对应的输出端口标识集,由于组播报文中加入了VLAN标识集,因此复制报文中也会有VLAN标识集。

在步骤四和步骤五中,二层转发模块从复制模块接收复制报文,获取复制报文中的VLAN标识集,按照预设的顺序依次确定VLAN标识集中下一个VLAN标识,并进一步确定下一个VLAN标识对应的输出端口集,之后,由发送模块从输出端口集中的每一个输出端口发送该复制报文。可选的,二层转发模块记录已确定了对应输出端口标识集的VLAN标识的数量,以用于确定下一个VLAN标识。举例说明,VLAN标识集为VLAN Bitmap形式,二层转发模块按照由低位到高位的顺序依次确定每一个VLAN标识对应的输出端口标识集。假设已确定了对应输出端口标识集的VLAN标识的数量为a,二层转发模块在确定下一个VLAN标识时,会在从复制报文中获取VLAN Bitmap之后,将VLAN Bitmap中由低到高a个1位掩0,再获取掩0后的VLAN Bitmap中最低位1对应的VLAN标识,即下一个VLAN标识。

可行的实现方式二:

该实现方式中,三层转发模块在向二层转发模块发送的组播报文中加入VLAN标识集在组播表中对应的第一指针,三层转发模块根据复制报文中的第一指针查找组播表,确定组播报文对应的VLAN标识集,进而确定下一个VLAN标识。

三层转发模块通过接收组播报文的端口判断组播报文是新接收的原组播报文还是复制获得的复制报文,若接收组播报文的端口为外部端口,则说明组播报文是新接收的原组播报文,若接收组播报文的端口为内部端口,则说明组播报文是复制报文。在组播报文为原组播报文时,三层转发模块在通过组播组查找表和组播表确定了组播报文的VLAN标识集后,将VLAN标识集在组播表中对应的第一指针加入组播报文的报文头,并将组播报文和第一个VLAN标识发送至二层转发模块。在组播报文为复制报文时,三层转发模块直接获取第一指针并读取组播表,获取组播报文的VLAN标识集。

由于原组播报文被三层转发模块添加了第一指针,因此在步骤三中,复制模块复制获得的复制报文的报文头中也会携带有第一指针。在步骤三复制模块复制原组播报文获得N份复制报文之后,复制模块将复制报文发送至三层转发模块。三层转发模块根据复制报文中的第一指针查找组播表,确定组播报文对应的VLAN标识集,进而确定下一个VLAN标识。之后,三层转发模块将该复制报文和下一个VLAN标识发送至二层转发模块。在步骤四中,二层转发模块接收的是来自于三层转发模块的复制报文。可选的,三层转发模块还会对已确定输出端口标识集的VLAN标识进行计数,以便于确定下一个VLAN标识。例如,三层转发模块在确定组播报文为原组播报文时,确定该组播报文对应的VLAN标识集并保存该组播报文对应的第一指针和VLAN标识集中VLAN标识的数量。在接下来的循环过程中,三层转发模块在收到了该组播报文的复制报文后,根据第一指针确定组播表中该组播报文对应的VLAN标识集,进而获取下一个VLAN标识,同时,三层转发模块还会对该组播报文中已确定了输出端口标识集的VLAN标识进行计数,三层转发模块在确定下一个VLAN标识时,便是根据已确定了输出端口标识集的VLAN标识的数量确定的。

为了更进一步地说明本发明实施例所提供的报文转发方法,本发明实施例还提供以下一种具体可行的实现方式。应理解,以下实现方式仅为举例说明,并不代表本发明实施例仅包括或仅适用于以下实现方式。

图4为本发明实施例提供的另一种具体可行的报文转发方法流程示意图,用于三层组播报文的转发。如图4所示,包括以下步骤:

S401:三层转发模块获取组播报文。

组播报文分为复制报文和原组播报文两种情况,三层转发模块在获取组播报文时,既可以获取复制报文,也可以获取原组播报文。

S402:三层转发模块判断组播报文是否为复制报文;若是,则执行S411;若否,则执行S403。

三层转发模块可以通过接收组播报文的端口判断组播报文是否为复制报文。若接收组播报文的端口为外部端口,则该组播报文为原组播报文,若接收组播报文的端口为内部端口,则该组播报文为复制报文。

S403:三层转发模块根据组播报文的{SIP,DIP}查找组播组查找表。

S404:三层转发模块若能够命中组播组查找表,则执行S405;若不能命中组播组查找表,则执行S412。

若三层转发模块中记录有组播报文的{SIP,DIP}或{*,DIP},能够命中组播组查找表。

S405:三层转发模块在组播报文的报文头中添加第一指针。

在命中了组播组查找表后,三层转发模块进而可以获取组播报文对应的第一指针,并将第一指针添加入组播报文的报文头。

S406:三层转发模块读取组播表中第一指针对应的VLAN标识集—VLAN Bitmap。

VLAN标识集以VLAN Bitmap的形式表示,VLAN Bitmap中每一位代表一个VLAN,VLAN Bitmap的每一位的取值分别代表了组播报文是否需要发送至对应的VLAN。

S407:三层转发模块在组播报文为复制报文时,执行S413;在组播报文非复制报文时,执行S408。

S408:三层转发模块计算VLAN Bitmap中包含的1的个数,记作M,最低位的1对应的VLAN记作VLANA,并将M告知复制模块,用于复制模块执行S415。

S409:二层转发模块确定VLANA对应的输出端口标识集,发送模块从输出端口标识集中的每一个输出端口发送组播报文。

二层转发模块确定VLANA对应的输出端口标识集后,转发设备的复制模块根据输出端口标识集中输出端口标识的数量复制组播报文获得相当数量的组播报文,假设输出端口标识集中共包括8个输出端口,则转发设备会再复制7个组播报文,加之用于复制的组播报文,刚好共有8个组播报文可以由发送模块分别从8个输出端口输出。

S410:结束。

S411:三层转发模块获取组播报文对应的第一指针。

在组播报文为复制报文时,其报文头携带有第一指针,三层转发模块可从组播报文的报文头直接获取第一指针后,执行S406。

S412:二层转发模块进行二层组播报文转发。

S413:三层转发模块把读取到的VLAN Bitmap由低到高a个为1的位掩0,a为已确定了输出端口标识集的VLAN标识的数量。

具体实施过程中,三层转发模块可以根据发送给二层转发模块的复制报文的数量确定a的取值,例如,三层转发模块记录已向二层转发模块发送了3份复制报文,则加之最初的原组播报文,可知a为4。之后,三层转发模块将读取到的VLAN Bitmap最低4位1掩0,假设读取的VLAN Bitmap=00000000_00000000_111100000_00001111,则掩0后,VLAN Bitmap=00000000_00000000_111100000_00000000。应理解,本步操作仅是对获取到的VLAN Bitmap进行的操作,其为该VLAN Bitmap在组播表中的原始形式,且掩0操作并不会改变该VLAN Bitmap在组播表中的原始形式。

S414:三层转发模块获取掩0处理后的VLAN Bitmap最低位1所对应的VLAN,记作VLANA。

三层转发模块按照由VLAN Bitmap低位至高位的顺序依次确定作为VLANA的VLAN,每一次确定的VLANA都是尚未确定输出端口标识集的多个VLAN中在VLAN Bitmap中对应位最低的VLAN。

S415:复制模块复制组播报文获得M-1份复制报文并将M-1份复制报文环回到三层转发模块。

综上所述,本发明实施例提供了一种报文转发方法,包括:转发设备的三层转发模块获取待转发的组播报文;转发设备的三层转发模块根据组播报文的SIP和DIP,确定组播报文对应的VLAN标识集;VLAN标识集为组播报文需要发往的VLAN的标识集合;转发设备的二层转发模块针对VLAN标识集中的每一个VLAN标识,根据组播报文的目标物理地址DMAC,确定VLAN标识对应的输出端口标识集,以及,转发设备的发送模块从VLAN标识对应的输出端口标识集的每一个输出端口发送组播报文。转发设备在进行三层组播报文转发时,其三层转发模块只需获得组播报文对应的VLAN标识集,之后,二层转发模块会根据组播报文的DMAC进一步确定每一个VLAN标识对应的输出端口。与现有的三层组播报文转发方法相比,本发明实施例中的转发设备无需保存并维护众多组播叶子表,只需在三层转发模块中增加协议地址集与VLAN标识集之间的对应关系即可,而之后二层转发模块中根据组播报文的DMAC确定VLAN标识对应的输出端口集是现有二层组播报文转发中已有的对应关系,本发明实施例中直接复用二层组播报文转发中已有的对应关系,减少了三层转发模块所保存的数据量,从而节省了三层组播报文转发的资源开销。

基于相同的技术构思,本发明实施例还提供一种报文转发设备,该转发设备可以实现上述任一实施例所提供的报文转发方法。图5为本发明实施例提供的一种转发设备结构示意图,如图5所示,转发设备500包括:三层转发模块501、二层转发模块502、复制模块503和发送模块504,其中:

三层转发模块501,用于获取待转发的组播报文;

三层转发模块501,还用于根据组播报文的SIP和DIP,确定组播报文对应的VLAN标识集;VLAN标识集为该组播报文需要发往的VLAN的标识集合;

二层转发模块502,用于针对VLAN标识集中的每一个VLAN标识,根据组播报文的DMAC,确定VLAN标识对应的输出端口标识集;

发送模块504,用于从每一个VLAN标识所对应的输出端口标识集中的每一个输出端口发送组播报文。

可选的,三层转发模块501包括记录有多个SIP和DIP组合和/或仅DIP的组播组查找表和记录有多个VLAN标识集的组播表;组播组查找表和组播表之间存在映射关系;

三层转发模块501具体用于:

根据组播报文的SIP和DIP查找组播组查找表,确定组播表中满足映射关系的VLAN标识集。

可选的,转发设备500还包括复制模块503,

复制模块503,用于根据输出端口标识集中输出端口标识的数量复制组播报文获得相当数量的组播报文;

发送模块504具体用于:

获取所述相当数量的组播报文,并从输出端口标识集的每一个输出端口发送组播报文。

可选的,转发设备500还包括复制模块503;

二层转发模块502具体用于:

接收组播报文,并获取VLAN标识集中的第一个VLAN标识;

根据组播报文的DMAC,确定第一个VLAN标识对应的输出端口标识集;

复制模块503,用于:

复制组播报文获得N份复制报文;N=M-1,M为VLAN标识集中VLAN标识的数量;

二层转发模块502,具体还用于:

接收复制报文,并确定VLAN标识集中的下一个VLAN标识对应的输出端口标识集。

可选的,三层转发模块501,还用于:

为组播报文添加VLAN标识集在组播表中对应的第一指针;

三层转发模块501还用于:

接收复制报文;

获取复制报文中的第一指针;

根据第一指针读取组播表,获取VLAN标识集并确定下一个VLAN标识;

将复制报文和下一个VLAN标识发送至二层转发模块502。

综上所述,本发明实施例提供一种报文转发方法及转发设备,其中方法包括:转发设备的三层转发模块获取待转发的组播报文;转发设备的三层转发模块根据组播报文的SIP和DIP,确定组播报文对应的VLAN标识集;转发设备的二层转发模块针对VLAN标识集中的每一个VLAN标识,根据组播报文的目标物理地址DMAC,确定VLAN标识对应的输出端口标识集,以及,转发设备的发送模块从VLAN标识对应的输出端口标识集的每一个输出端口发送组播报文。转发设备在进行三层组播报文转发时,其三层转发模块只需获得组播报文对应的VLAN标识集,之后,二层转发模块会根据组播报文的DMAC进一步确定每一个VLAN标识对应的输出端口。与现有的三层组播报文转发方法相比,本发明实施例中的转发设备无需保存并维护众多组播叶子表,只需在三层转发模块中增加协议地址集与VLAN标识集之间的对应关系即可,而之后二层转发模块中根据组播报文的DMAC确定VLAN标识对应的输出端口集是现有二层组播报文转发中二层转发模块已有的用于二层组播报文转发的对应关系,本发明实施例中直接复用二层转发模块已有的用于二层组播报文转发的对应关系,减少了三层转发模块所保存的数据量,从而节省了三层组播报文转发的资源开销。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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