路由器转发平面的等价路由管理方法和装置与流程

文档序号:12278447阅读:652来源:国知局
路由器转发平面的等价路由管理方法和装置与流程
本发明涉及路由管理
技术领域
,具体来讲是一种路由器转发平面的等价路由管理方法和装置。
背景技术
:网络拓扑中存在多条到达同一目的地址的不同路径,通常称为ECMP(Equal-CostMultipathRouting,等价路由)。ECMP的最大特点是能够实现路由多路径负载均衡和链路备份,且静态路由、OSPF(OpenShortestPathFirst,开放式最短路径优先)、BGP(BorderGatewayProtocol,边界网关协议)和IS-IS(IntermediateSystem-to-IntermediateSystem,中间系统到中间系统)等常用的路由协议都支持ECMP,ECMP已成为路由器设备不可或缺的一项重要功能。从概念来看ECMP的本质是多条路由的集合,在路由设备上表现的特征是:去往相同的目的地址的路由,具有多个下一跳,多个下一跳对于设备而言意味着不同的出接口,我们通常称这种去往相同目的地址的多条路由的集合为一个ECMP组,每条路由称为该ECMP组的成员。当前,在路由器控制层面的多种协议对ECMP支持的前提下,转发平面如何能够对ECMP路由的高效管理和转发处理是影响路由器性能的关键。目前路由器转发平面主要有两类平台实现,一类是ASIC(ApplicationSpecificIntegratedCircuit,集成电路)架构芯片(例如,网络处理器、交换芯片),另一类是基于CPU(CentralProcessingUnit,中央处理器)平台(例如,多核处理器)。基于ASIC架构芯片这类平台中ECMP表项设计、表项增加、删除和表项查找都被芯片固化成严格的流水线逻辑,不具有太多的灵活性,同时这类平台将ECMP与普通路由进行严格区分,两者在表项设计和表项存储都完全不相同,在进行ECMP与普通路由角色平滑转换的过程中存在困难。而基于处理器芯片平台,由于其高性能的处理器在数据处理过程中能够实现并行处理,并且表项和流程设计灵活,硬件约束较小,因此被普遍使用。但该平台的ECMP功能完全依靠软件算法来实现,因此,最终算法的实现方式和管理方法是决定ECMP路由转发性能的关键。ECMP组对外是一条具有多个下一跳的路由,对内是多条相同目的地址的路由集合,其本质是路由,在处理器平台ECMP通常采用路由表的存储和查找的方法来实现,并遵循路由查找中的最长掩码匹配原则,应用最广泛的查找方法是树型结构算法和分段路由算法。目前,树型算法主要有:RadixTrie(基数树)、MultibitTrie(多分支树)等。如图1所示,树型路由表中,路由表表项分部在树的各叶子节点上(黑色圆点),每增加一条路由表项,其路由前缀决定挂载哪个叶子节点上;具有相同的路由前缀和掩码的路由,因其下一跳目的地址不同,而被认为是不同的路由表项,在叶子节点上通过链表结构挂载在一起,形成ECMP在的树型路由表中的线性存储方式。另外,树的高度代表了路由表项的存储深度和平均查找的次数,随着路由表项的增加树的高度会随之增加,为了解决上述问题算法引入了平衡树,在路由总数相同的情况下,平衡树的树高度相对之前的算法达到最优,查找性能也有所改善,但在路由容量较大的情况下,树的高度增加,导致查找性能降低。而分段路由算法有分段路由和优化的分段路由等,分段路由算法主要通过路由分段展开,采用空间换时间的原理实现查找较高效率,其本质是将树型算法中的平均查找次数从多次减少为确定的三次或两次,解除了树型算法中平均查找的次数与路由总条目直接的线性耦合关系,但分段路由算法采用空间换时间的原理,并不适用于所有的场景,易造成空间的极大浪费。综上所述,单纯采用传统树型路由算法或分段路由算法在ECMP实现上,由于其组织结构设计和算法的组织方式的局限性,难以满足处理器平台大容量ECMP路由的快速查找,难以实现ECMP路由与普通路由的平滑转换,给基于处理器平台的网络设备造成性能技术瓶颈,使得处理器的并行处理能力不能完全得以发挥,造成极大的性能和内存资源浪费。技术实现要素:本发明的目的是为了克服上述
背景技术
的不足,提供一种路由器转发平面的等价路由管理方法和装置,不但能满足处理器平台大容量ECMP路由的快速查找要求,而且能实现ECMP路由与普通路由的平滑转换,解决了网络路由器设备在处理器平台中的性能瓶颈问题。为达到以上目的,本发明提供一种路由器转发平面的等价路由管理方法,包括以下步骤:步骤S1、快表创建:在路由器转发平面内创建一个用于存储普通路由查找信息和ECMP路由查找信息的快表,转入步骤S2;步骤S2、快表查找:当报文进入路由器转发平面后,提取报文中IP头部的目的地址和VPN值,在创建的快表中进行匹配查找,若未查找到相匹配的路由查找信息,表明表项尚未创建,转入步骤S3;若查找到相匹配的路由查找信息,表明表项已存在,转入步骤S4;步骤S3、快表表项的添加:利用报文中的目的地址和VPN值,通过在已有的树型路由表中进行路由表项查找的方式,判断是普通路由还是ECMP路由,若是普通路由,则将目的地址解析所获得的路由信息作为普通路由查找信息添加到快表中,返回步骤S2;若是ECMP路由,则将目的地址解析所获得的路由信息作为ECMP路由查找信息添加到快表中,返回步骤S2;步骤S4、报文的转发:根据查找到的相匹配的路由查找信息,判断是普通路由还是ECMP路由,若是普通路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的普通路由查找信息进行普通路由的转发;若是ECMP路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的ECMP路由查找信息进行ECMP路由的转发。本发明同时还提供一种基于上述方法的路由器转发平面的等价路由管理装置,包括快表创建单元、快表查找单元、快表表项添加单元和报文转发单元;所述快表创建单元用于:在路由器转发平面内创建一个用于存储普通路由查找信息和ECMP路由查找信息的快表,并向快表查找单元发送查找信号;所述快表查找单元用于:收到查找信号后,当报文进入路由器转发平面时,提取报文中IP头部的目的地址和VPN值,在创建的快表中进行匹配查找,若未查找到相匹配的路由查找信息,向快表表项添加单元发送添加信号;若查找到相匹配的路由查找信息,向报文转发单元发送转发信号;所述快表表项添加单元用于:收到添加信号后,利用报文中的目的地址和VPN值,通过在已有的树型路由表中进行路由表项查找的方式,判断是普通路由还是ECMP路由,若是普通路由,则将目的地址解析所获得的路由信息作为普通路由查找信息添加到快表中,并向快表查找单元发送查找信号;若是ECMP路由,则将目的地址解析所获得的路由信息作为ECMP路由查找信息添加到快表中,并向快表查找单元发送查找信号;所述报文转发单元用于:收到转发信号后,根据查找到的相匹配的路由查找信息,判断是普通路由还是ECMP路由,若是普通路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的普通路由查找信息进行普通路由的转发;若是ECMP路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的ECMP路由查找信息进行ECMP路由的转发。本发明的有益效果在于:(1)与单纯的树型路由表的查找算法相比,本发明利用创建的存储普通路由查找信息和ECMP路由查找信息的快表,记录了前期树型路由查找过程中的必要的信息,并组建了数据流的快表表项。让后续的数据报文从快表中直接获取路由查找中的必要信息,直接进行数据转发,将原本树型结构中的多次匹配,变化为快表中的有限几次匹配,从而提高了处理器平台在路由查找中的执行效率,满足了处理器平台大容量ECMP路由的快速查找要求。(2)本发明中,将快表设计成能够兼容存储普通路由查找信息和ECMP路由查找信息的结构,使得在相同的表项中能够同时存储普通路由和ECMP路由,不但节约了内存开销,而且兼容了普通路由与ECMP路由,实现了普通路由与ECMP路由平滑转换,避免了普通路由与ECMP路由分离存储的问题。(3)本发明在完成报文ECMP路由的转发时,兼容实现了ECMP负载均衡的两种模式——基于数据流的ECMP分流模式或基于报文逐包的ECMP分流模式,对于ECMP等价路由在进行流量均衡具有更加灵活的功能。(4)本发明在进行报文转发的过程中,无论是普通路由还是ECMP路由,在确认树型路由表中叶子节点发生变更的情况下,均会执行快表的更新操作,即能够进行快表表项的自清洁和新的表项的创建,满足了实际使用需求,适用性高。附图说明图1为现有的树型路由表的结构示意图;图2为本发明实施例中路由器转发平面的等价路由管理方法的流程图;图3为本发明实施例中ECMP成员信息表数组ecmp_cache指向树型路由表叶子节点的ECMP链表成员地址的示意图;具体实施方式下面结合附图及具体实施例对本发明作进一步的详细描述。参见图2所示,本发明实施例提供一种路由器转发平面的等价路由管理方法,包括以下步骤:步骤S1、快表创建:在路由器转发平面内创建一个用于存储普通路由查找信息和ECMP路由查找信息的快表(Fast_Table),转入步骤S2;具体来说,所述快表是一个基于目的地址和VPN(VirtualPrivateNetwork,虚拟专用网络)值为关键字的哈希表,该哈希表中具有若干个哈希桶(Bucket),经目的地址和VPN值计算出的哈希值对应一个哈希桶;每个哈希桶中包括至少两个用于存储普通路由查找信息或ECMP路由查找信息的冲突域成员(Entry),当冲突域成员(Entry)存储普通路由查找信息时,其数据结构包括以下字段:路由通用字段+普通路由字段;当冲突域成员(Entry)存储ECMP路由查找信息时,其数据结构包括以下字段:路由通用字段+ECMP路由字段。另外,可以理解的是,该快表建立后的初始状态为空,即快表结构定义完成,具体表项数据为空。其中,路由通用字段包括:有效位(In_use),用于表示该表项是否使用,当In_use为1,表示使用;当In_use为0,表示未使用;状态位(Pending),用于表示当前表项的状态,当Pending为1,表示当前表项不可用;当Pending为0,表示当前表项可用;ECMP标志位(Multipath),用于表示是否存在ECMP,当Multipath=1时,表示存在ECMP即存储的是ECMP路由查找信息;当Multipath=0时,表示不存在ECMP即存储的是普通路由查找信息;目的地址(Addr),用于表示目的地址;实例号(Vrf),表示VPN实例。普通路由字段包括:普通路由地址指针(Rt),用于指向已有的树型路由表的叶子节点路由地址;普通路由接口内层Vlan值(Subvlan),用于存储普通路由出接口的内层Vlan值;普通路由接口值(Ifidx),用于存储普通路由的出接口值;普通路由接口外层Vlan值(Vlan),用于存储普通路由出接口的外层Vlan值;普通路由下一跳MAC地址(Edst_mac),用于存储普通路由下一跳MAC地址值。ECMP路由字段包括:ECMP成员总数值(Ecmp_total),用于存储ECMP成员个数值;ECMP成员使用值(Ecmp_index),用于存储数据流从哪个ECMP成员值出;ECMP地址指针(Ecmp_ptr),用于指向ECMP成员信息表(ecmp_cache)的地址;保留字段(Unused),用于预留可扩展空间。其中,所述ECMP成员信息表用于存储ECMP的成员信息,该成员信息包括:ECMP路由地址指针(Ecmp_Rt),用于ECMP指向树型路由表的叶子节点路由地址;ECMP接口内层Vlan值(Ecmp_Subvlan),用于存储ECMP成员出接口的内层Vlan值;ECMP接口值(Ecmp_Ifidx),用于存储ECMP路由的出接口值;ECMP接口外层Vlan值(Ecmp_vlan),用于存储ECMP成员出接口的外层Vlan值;ECMP下一跳MAC地址(Ecmp_Edst_mac),用于存储ECMP成员下一跳MAC地址值。举例来说,当Multipath=0,冲突域成员(Entry)存储普通路由查找信息时,Entry的数据结构如表1所示:表1、Multipath=0的情况下Entry字段内容和位宽In_usePendingMultipathAddrVrf191190189188:157156:144RtSubvlanIfidxVlanEdst_mac143:8483:7271:6059:4847:0当Multipath=1,冲突域成员(Entry)存储ECMP路由查找信息时,Entry的数据结构如表2所示:表2、Multipath=1的情况下Entry字段内容和位宽In_usePendingMultipathAddrVrf191190189188:157156:144Unused1Unused2Ecmp_totalEcmp_indexEcmp_ptr143:8483:7271:6564:6059:0另外,ECMP成员信息表(ecmp_cache)的内容如表3所示:表2、Multipath=1的情况下Entry字段内容和位宽Ecmp_RtEcmp_SubvlanEcmp_IfidxEcmp_vlanEcmp_Edst_mac143:8483:7271:6059:4847:0本发明中,为了兼容普通路由与ECMP路由,并考虑到节约内存的问题,将快表设计成能够兼容存储普通路由查找信息和ECMP路由查找信息的结构,且快表的冲突域成员(Entry)中具有ECMP标志位(Multipath),用于标识该条信息是否是ECMP路由查找信息(即是否存在ECMP),如果是ECMP路由查找信息,则该冲突域成员(Entry)中的ECMP地址指针(Ecmp_ptr)字段,将指向一个ECMP成员信息表(ecmp_cache)的地址,该ECMP成员信息表由数组(ecmp_cache[])组成且其成员(Ecmp_Rt)中记录了指向树型路由表的叶子节点路由地址,即树型路由表的ECMP链表成员地址,如图3所示。步骤S2、快表查找:当报文进入路由器转发平面后,提取报文中IP头部的目的地址(对应Addr字段)和VPN值(对应Vrf字段),并在创建的快表中进行匹配查找,若未查找到相匹配的路由查找信息,表明表项尚未创建,转入步骤S3;若查找到相匹配的路由查找信息,表明表项已存在,转入步骤S4。实际操作时,步骤S2具体包括以下操作:步骤S201:当报文进入路由器转发平面后,提取报文中IP头部的目的地址和VPN值,通过CRC运算获得32位的哈希值Hash_Value,转入步骤S202。步骤S202:在创建的快表中,用Hash_Value取余哈希桶的最大值Bucket_Max,得到Bucket[Hash_Value%Bucket_Max]表项,标记为Bucket[j],j为正整数,转入步骤S203;可以理解的是,经过步骤S201和S202,则根据目的地址和VPN值找到了对应的哈希桶Bucket[j]。步骤S203:依次遍历Bucket[j]中的每一个冲突域成员Entry,寻找有效位In_use为1、状态位Pending为0的冲突域成员Entry,一旦找到,则转入步骤S204,如果Bucket[j]中一直没有找到,则表明表项尚未创建,转入步骤S3。步骤S204:将找到的冲突域成员Entry标记为Entry[i],(i为正整数且小于等于Bucket[j]中冲突域成员的个数);将报文中提取的目的地址、VPN值分别与Entry[i]中的目的地址Addr字段、实例号Vrf字段的值进行比较,如果不匹配,则返回步骤S203继续寻找,如果匹配,则转入步骤S4。步骤S3、快表表项的添加:利用报文中的目的地址和VPN值,通过在已有的树型路由表中进行路由表项查找的方式,判断是普通路由还是ECMP路由,若是普通路由,则将目的地址解析所获得的路由信息作为普通路由查找信息添加到快表中,返回步骤S2;若是ECMP路由,则将目的地址解析所获得的路由信息作为ECMP路由查找信息添加到快表中,返回步骤S2。实际操作时,步骤S3具体包括以下操作:步骤S301:依次遍历Bucket[j]中的每一个冲突域成员Entry,找到有效位In_use为1的冲突域成员Entry,标记为Entry[k],(k为正整数且小于等于Bucket[j]中冲突域成员的个数),表明找到一个空闲的表项,转入步骤S302;步骤S302:将Entry[k]中的目的地址Addr字段、实例号Vrf字段分别填写成报文中的目的地址、VPN值,并将有效位In_use置为1,状态位Pending置为1,转入步骤S303;步骤S303:将报文的目的地址、VPN值带入到已有的树型路由表中进行路由表项的查找,根据路由的最长掩码匹配,查找到树型路由表的叶子节点,检测该叶子节点的状态,判断是否存在ECMP的路由,如果不存在,表示是普通路由,转入步骤S304,如果存在,表示是ECMP路由,转入步骤S305;步骤S304:将该叶子节点的地址填入到Entry[k]中的普通路由地址指针Rt字段中,将ECMP标志位Multipath字段置为0;并解析报文的目的地址的ARP(AddressResolutionProtocol,地址解析协议),获取下一跳MAC地址信息、出接口值信息、内层Vlan信息和外层Vlan信息,并将上述信息分别填入到Entry[k]中对应的普通路由下一跳MAC地址Edst_mac字段、普通路由接口值Ifidx字段、普通路由接口内层Vlan值Subvlan字段和普通路由接口外层Vlan值Vlan字段中,转入步骤S307;步骤S305:申请内存用于存储ECMP成员信息表的数组ecmp_cache[N],N为正整数,表示ECMP成员的个数;将Entry[k]中的ECMP标志位Multipath字段置为1,将ECMP成员信息表的数组的地址值填入Entry[k]中的ECMP地址指针Ecmp_ptr字段中,将ECMP成员的个数填入ECMP成员总数值Ecmp_total字段中,转入步骤S306;步骤S306:依次获取该叶子节点中的每一个ECMP成员,并解析每一个ECMP成员的目的地址的ARP,获取其下一跳MAC地址信息、出接口值信息、内层Vlan信息和外层Vlan信息,并将上述信息依次填入到的每一个ECMP成员对应的ECMP下一跳MAC地址Ecmp_Edst_mac字段、ECMP接口值Ecmp_Ifidx字段、ECMP接口内层Vlan值Ecmp_Subvlan字段、ECMP接口外层Vlan值Ecmp_vlan字段中,转入步骤S307;步骤S307:将Entry[k]中的状态位Pending置为0,表明当前表项可用;完成上述过程,报文在快表Entry[k]中完成相应表项的添加。步骤S4、报文的转发:根据查找到的相匹配的路由查找信息,判断是普通路由还是ECMP路由,若是普通路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的普通路由查找信息进行普通路由的转发;若是ECMP路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的ECMP路由查找信息进行ECMP路由的转发。实际操作时,步骤S4具体包括以下操作:步骤S401:根据匹配到的冲突域成员Entry[i]中的ECMP标志位Multipath字段,判断是普通路由还是ECMP路由,若Multipath=0表示普通路由,转入步骤S402,若Multipath=1表示ECMP路由,转入步骤S403;步骤S402:获取Entry[i]中的普通路由地址指针Rt,通过该指针获取已有的树型路由表的叶子节点,确认该叶子节点未发生变更后,从Entry[i]中获取存储的普通路由下一跳MAC地址Edst_mac、普通路由接口值Ifidx、普通路由接口内层Vlan值Subvlan和普通路由接口外层Vlan值Vlan;根据上述获取的值,组装报文的二层以太网头部,并根据普通路由接口值Ifidx转发到相应的出接口上,完成报文普通路由的转发,结束。步骤S403:根据Entry[i]中的ECMP地址指针Ecmp_ptr获取ECMP成员信息表,并从Entry[i]中的ECMP成员总数值Ecmp_total获取ECMP成员信息表中的成员个数,转入步骤S404;步骤S404:遍历ECMP成员信息表的所有成员,根据每个成员的ECMP路由地址指针Ecmp_Rt,获取到所有成员对应的树型路由表的叶子节点,确认所有叶子节点未发生变更后,转入步骤S405;步骤S405:根据基于数据流的ECMP分流算法或基于报文逐包的ECMP分流算法,找出此次ECMP路由所对应的ECMP成员;获取该ECMP成员的ECMP下一跳MAC地址Ecmp_Edst_mac、ECMP接口值Ecmp_Ifidx、ECMP接口内层Vlan值Ecmp_Subvlan和ECMP接口外层Vlan值Ecmp_vlan,转入步骤S406;步骤S406:根据上述获取到的值,组装报文的二层以太网头部,根据ECMP接口值Ecmp_Ifidx转发到相应的出接口上,完成报文ECMP路由的转发,结束。进一步地,步骤S405具体包括以下操作:步骤S405a:判断逐包分流是否使能,若否,则提取报文的五元组(IP头目的地址、源地址、TCP/UDP目的端口号、源端口号和入接口)通过CRC运算,计算的哈希值HASH,转入步骤S405b;若是,则转入步骤S405c;步骤S405b:取ECMP成员信息表中的一个成员,该成员编号由HASH取余ECMP成员总数值得到,即该成员为ecmp_cache[HASH%Ecmp_total],标记为ecmp_cache[i],转入步骤S405d;步骤S405c:由Entry[i]中的ECMP成员使用值Ecmp_index,获取ECMP成员信息表中成员编号为Ecmp_index的一个成员,即该成员为ecmp_cache[Ecmp_index],标记为ecmp_cache[i];将Ecmp_index中的值加1,如果Ecmp_index大于Ecmp_total,则进行一次取模运算,即Ecmp_index=Ecmp_index%Ecmp_total,完成上述操作后,转入步骤S405d;步骤步骤S405d:根据获得的ecmp_cache[i],返回该成员的ECMP下一跳MAC地址Ecmp_Edst_mac、ECMP接口值Ecmp_Ifidx、ECMP接口内层Vlan值Ecmp_Subvlan和ECMP接口外层Vlan值Ecmp_vlan。更进一步地,步骤S4中,无论是普通路由还是ECMP路由,在确认树型路由表中叶子节点发生变更的情况下,均会执行快表的更新操作,其具体流程为:若为普通路由,则直接对Entry[i]中的所有字段内容进行清除;然后,转入步骤S3,重新对报文进行快表表项的添加;若为ECMP路由,则需先对ECMP成员信息表(ecmp_cache)进行内存释放;然后,对Entry[i]中的所有字段内容进行清除;最后,转入步骤S3,重新对报文进行快表表项的添加。另外,本发明实施例还提供一种路由器转发平面的等价路由管理装置,包括快表创建单元、快表查找单元、快表表项添加单元和报文转发单元。其中,快表创建单元用于:在路由器转发平面内创建一个用于存储普通路由查找信息和ECMP路由查找信息的快表,并向快表查找单元发送查找信号。快表查找单元用于:收到查找信号后,当报文进入路由器转发平面时,提取报文中IP头部的目的地址和VPN值,在创建的快表中进行匹配查找,若未查找到相匹配的路由查找信息,向快表表项添加单元发送添加信号;若查找到相匹配的路由查找信息,向报文转发单元发送转发信号。其具体操作流程为:当报文进入路由器转发平面后,提取报文中IP头部的目的地址和VPN值,通过CRC运算获得32位的哈希值Hash_Value;在创建的快表中,用Hash_Value取余哈希桶的最大值Bucket_Max,得到Bucket[Hash_Value%Bucket_Max]表项,标记为Bucket[j],j为正整数;依次遍历Bucket[j]中的每一个冲突域成员Entry,寻找有效位为1、状态位为0的Entry,一旦找到,将找到的Entry标记为Entry[i],i为正整数且小于等于Bucket[j]中冲突域成员的个数,并将报文中提取的目的地址、VPN值分别与Entry[i]中的目的地址字段、实例号字段的值进行比较,如果不匹配,则继续遍历寻找,如果匹配,则向报文转发单元发送转发信号;如果Bucket[j]中一直没有找到,则表明表项尚未创建,向快表表项添加单元发送添加信号。快表表项添加单元用于:收到添加信号后,利用报文中的目的地址和VPN值,通过在已有的树型路由表中进行路由表项查找的方式,判断是普通路由还是ECMP路由,若是普通路由,则将目的地址解析所获得的路由信息作为普通路由查找信息添加到快表中,并向快表查找单元发送查找信号;若是ECMP路由,则将目的地址解析所获得的路由信息作为ECMP路由查找信息添加到快表中,并向快表查找单元发送查找信号。其具体操作流程为:所述快表表项添加单元依次遍历Bucket[j]中的每一个冲突域成员Entry,找到有效位为1的Entry,标记为Entry[k],k为正整数且小于等于Bucket[j]中冲突域成员的个数;将Entry[k]中的目的地址字段、实例号字段分别填写成报文中的目的地址、VPN值,并将有效位置为1,状态位置为1;将报文的目的地址、VPN值带入到已有的树型路由表中进行路由表项的查找,根据路由的最长掩码匹配,查找到树型路由表的叶子节点,检测该叶子节点的状态,判断是否存在ECMP的路由;如果不存在,表示是普通路由,将该叶子节点的地址填入到Entry[k]中的普通路由地址指针字段中,将ECMP标志位字段置为0;并解析报文的目的地址的ARP,获取下一跳MAC地址信息、出接口值信息、内层Vlan信息和外层Vlan信息,并将上述信息分别填入到Entry[k]中对应的普通路由下一跳MAC地址字段、普通路由接口值字段、普通路由接口内层Vlan值字段和普通路由接口外层Vlan值字段中,并将Entry[k]中的状态位置为0;如果存在,表示是ECMP路由,申请内存用于存储ECMP成员信息表的数组;将Entry[k]中的ECMP标志位字段置为1,将ECMP成员信息表的数组的地址值填入Entry[k]中的ECMP地址指针字段中,将ECMP成员的个数填入ECMP成员总数值字段中;依次获取该叶子节点中的每一个ECMP成员,并解析每一个ECMP成员的目的地址的ARP,获取其下一跳MAC地址信息、出接口值信息、内层Vlan信息和外层Vlan信息,并将上述信息依次填入到的每一个ECMP成员对应的ECMP下一跳MAC地址字段、ECMP接口值字段、ECMP接口内层Vlan值字段、ECMP接口外层Vlan值字段中,并将Entry[k]中的状态位置为0。报文转发单元用于:收到转发信号后,根据查找到的相匹配的路由查找信息,判断是普通路由还是ECMP路由,若是普通路由,在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的普通路由查找信息进行普通路由的转发;若是ECMP路由,则在确认树型路由表中叶子节点未发生变更的情况下,将报文按照查找到的ECMP路由查找信息进行ECMP路由的转发。其具体操作流程为:根据匹配到的冲突域成员Entry[i]中的ECMP标志位字段,判断是普通路由还是ECMP路由;若是普通路由,获取Entry[i]中的普通路由地址指针,通过该指针获取已有的树型路由表的叶子节点,确认该叶子节点未发生变更后,从Entry[i]中获取存储的普通路由下一跳MAC地址、普通路由接口值、普通路由接口内层Vlan值和普通路由接口外层Vlan值;根据上述获取的值,组装报文的二层以太网头部,并根据普通路由接口值转发到相应的出接口上,完成报文普通路由的转发;若是ECMP路由,根据Entry[i]中的ECMP地址指针获取ECMP成员信息表,并从Entry[i]中的ECMP成员总数值获取ECMP成员信息表中的成员个数;遍历ECMP成员信息表的所有成员,根据每个成员的ECMP路由地址指针,获取到所有成员对应的树型路由表的叶子节点,确认所有叶子节点未发生变更后,根据基于数据流的ECMP分流算法或基于报文逐包的ECMP分流算法找出此次ECMP路由所对应的ECMP成员;获取该ECMP成员的ECMP下一跳MAC地址、ECMP接口值、ECMP接口内层Vlan值和ECMP接口外层Vlan值;根据上述获取到的值,组装报文的二层以太网头部,根据ECMP接口值转发到相应的出接口上,完成报文ECMP路由的转发。更进一步地,该装置还包括快表表项更新单元,所述快表表项更新单元在报文转发单元确认树型路由表中叶子节点发生变更的情况下,执行快表表现的更新操作,其具体流程为:若为普通路由,则直接对Entry[i]中的所有字段内容进行清除;然后,向快表表项添加单元发送添加信号,重新对报文进行快表表项的添加;若为ECMP路由,则需先对ECMP成员信息表进行内存释放;然后,对Entry[i]中的所有字段内容进行清除;最后,向快表表项添加单元发送添加信号,重新对报文进行快表表项的添加。需要说明的是:上述实施例提供的系统在进行操作时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。本发明不局限于上述实施方式,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1