CN104022952B - 一种报文转发方法及装置 - Google Patents
一种报文转发方法及装置 Download PDFInfo
- Publication number
- CN104022952B CN104022952B CN201410244454.3A CN201410244454A CN104022952B CN 104022952 B CN104022952 B CN 104022952B CN 201410244454 A CN201410244454 A CN 201410244454A CN 104022952 B CN104022952 B CN 104022952B
- Authority
- CN
- China
- Prior art keywords
- exit port
- port
- equal
- hash
- cost route
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文转发方法及装置,通过本发明能够在某条等价路由的链路故障时,保持正常的等价路由的出端口不变,并使用正常状态的出端口替换故障的出端口。在等价路由对应的链路恢复时,同样保持原正常链路上的出端口不变,将恢复链路与出端口的对应关系恢复到原始状态。从而避免重新计算出端口导致正常等价路由上的流量瞬间断流,并且能够将流量恢复到原始转发路径。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种报文转发方法及装置。
背景技术
随着大数据时代的到来,用户对数据的稳定性要求也越来越高。为了避免因为链路中断给客户的业务带来中断并产生不良的影响,等价多路径(Equal Cost Multipath,ECMP)路由技术应运而生。
多条去往同一目的地址且路径开销相同的路径构成等价路径,每一条等价路径对应的下一跳,报文转发设备在转发去往该目的地址的报文时,会在各条下一跳路径间实现负载分担。通过特定的ECMP算法,根据流量的特定参数平均分配到不同的出端口。这种情况下,一条等价路径的链路中断后,流量可以马上通过其他的等价路径转发,使链路中断的影响到最小。
现有的ECMP实现中,如果其中一条或者多条等价路径故障(包括端口故障、链路中断、中间节点故障等情况),所有业务流量会在剩余的可用路径间重新进行出端口分配,实现新的负载均衡。虽然有些流量所走的路径没有故障,但因为ECMP算法的重新计算,使得该流量更换了出端口,对于等价路由的目的端设备来说,就会产生瞬时的断流甚至是丢包,从而影响下游业务的稳定性和持续性。
发明内容
本申请提供了一种基于IRF系统的组播处理方法及装置,用于解决ECMP实现中,等价路由端口故障和恢复时,端口重新分配,影响流量的稳定性和持续性的技术问题。
为实现本发明目的,根据本发明的实施例的提出如下技术方案:
一种报文转发方法,应用于报文转发设备上,所述方法包括:
在通过等价路由转发报文时,基于报文属性计算哈希值,通过哈希映射表确定哈希值对应的出端口,通过确定的出端口转发该报文,所述哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系;
当某条等价路由的链路故障时,将端口状态表中该条等价路由对应的端口状态置为故障状态,所述端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的端口状态;
将所述哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口。
进一步地,所述方法还包括以下初始化的步骤:
在对所述端口状态表初始化时,为到达同一目的地址的每一条等价路由所述使用的出端口建立表项,并将每一表项中的端口状态设置为正常状态;
在对所述哈希映射表初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中。
进一步地,所述方法还包括:
当产生链路故障的等价路由恢复正常时,将端口状态表中该条恢复正常的等价路由对应的出端口的端口状态置为正常状态;
按初始化时该条恢复正常的等价路由对应的出端口在所述哈希映射表中与哈希值的对应关系确定出需要处理的哈希映射表表项,将所确定出的需要处理的哈希映射表表项的出端口替换为该条恢复正常的等价路由对应的出端口。
进一步地,在按初始化时在所述哈希映射表中建立的该条恢复正常的等价路由对应的出端口与哈希值的对应关系完成对应哈希值的出端口替换后,该方法还包括:
判断所述端口状态表中是否还有处于故障状态的出端口表项,当存在时,针对每一个处于故障状态的出端口,执行如下动作:
按初始化时当前处于故障的出端口在所述哈希映射表中与哈希值的对应关系确定需要替换出端口的哈希映射表表项,依次循环用所述端口状态表中处于正常状态的出端口替换所确定的需要替换出端口的哈希映射表表项的出端口;
将所述哈希映射表中所有该当前处理的处于故障状态的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口。
进一步地,所述报文转发设备为交换设备或路由设备。
基于本发明的实施例,本发明还提供一种报文转发装置,应用于报文转发设备上,所述装置包括:
转发模块,用于在通过等价路由转发报文时,基于报文属性计算哈希值,通过哈希映射表确定哈希值对应的出端口,通过确定的出端口转发该报文;所述哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系;
状态维护模块,用于当某条等价路由的链路故障时,将端口状态表中该条等价路由对应的端口状态置为故障状态;所述端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的端口状态;
哈希映射模块,用于当某条等价路由的链路故障时,将所述哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口。
进一步地,所述状态维护模块还用于对所述端口状态表进行初始化,在初始化时,为到达同一目的地址的每一条等价路由所述使用的出端口建立表项,并将每一表项中的端口状态设置为正常状态;
所述哈希映射模块还用于对所述哈希映射表进行初始化,在初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中。
进一步地,所述状态维护模块还用于,在产生链路故障的等价路由恢复正常时,将端口状态表中该条恢复正常的等价路由对应的出端口的端口状态置为正常状态;
所述哈希映射模块还用于,按初始化时该条恢复正常的等价路由对应的出端口在所述哈希映射表中与哈希值的对应关系确定出需要处理的哈希映射表表项,将所确定出的需要处理的哈希映射表表项的出端口替换为该条恢复正常的等价路由对应的出端口。
进一步地,所述哈希映射模块还用于,在按初始化时在所述哈希映射表中建立的该条恢复正常的等价路由对应的出端口与哈希值的对应关系完成对应哈希值的出端口替换后,判断所述端口状态表中是否还有处于故障状态的出端口表项,当存在时,针对每一个处于故障状态的出端口,按初始化时当前处于故障的出端口在所述哈希映射表中与哈希值的对应关系确定需要替换的哈希映射表的表项,依次循环用所述端口状态表中处于正常状态的出端口替换所确定的需要替换的哈希映射表的表项中的出端口。
通过本发明能够在某条等价路由的链路故障时,保持正常的等价路由的出端口不变,并使用正常状态的出端口替换故障的出端口。在等价路由对应的链路恢复时,同样保持原正常链路上的出端口不变,将恢复链路与出端口的对应关系恢复到原始状态。从而避免重新计算出端口导致正常等价路由上的流量瞬间断流,并且能够将流量恢复到原始转发路径。
附图说明
图1为本发明实施例提供的报文转发方法流程图;
图2为本发明实施例提供报文转发装置结构示意图。
具体实施方式
为使本发明提供的技术方案更加清楚,以下结合附图对本发明的实施例进行详细描述。
针对现有技术中的缺陷提出了一种报文转发方法及装置,本发明通过端口状态表和哈希映射表来实现基于等价路由的流量的负载分担,在等价路由的链路(或称为等价路径)故障时,通过预定的算法保持在未产生故障的等价路由上的流量不改变出端口,在等价路由的链路恢复时,将流量恢复到原始的等价路径上。
图1为本发明一实施例提供的报文转发方法的步骤流程图,该方法应用于报文转发设备上,所述报文转发设备可以是路由设备或具有三层转发功能的交换设备,该方法包括:
步骤101、在通过等价路由转发报文时,基于报文属性计算哈希值,根据哈希映射表确定哈希值对应的出端口,通过确定的出端口转发该报文,所述哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系;
本发明中,当报文转发设备接收到一个报文时,会通过报文的目的地址在路由表或转发表(以下统称为路由表)中确定出端口,当针对同一目的地址存在多条等价路径时,会在路由表中存在多条等价路由表项。本发明在通过等价路由转发报文时,首先基于报文属性计算哈希值,所述的报文属性可以是源地址、协议类型、所属虚拟专用网络(VirtualPrivate Network,VPN)等一种或多种的组合,本发明不做限定。在获得哈希值后,通过哈希映射表确定哈希值对应的出端口,通过所确定的出端口转发该报文。
本发明中,哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系,该哈希映射表至少包括哈希值字段和出端口字段,如表1所示,哈希值字段取值范围等于哈希函数的哈希值的值域空间,即哈希映射表中每一个表项中的哈希字段的值对应哈希函数一个可能的哈希值,整个哈希字段的值的集合构成哈希函数的哈希值的值域空间。
表1
哈希值 | 出端口 |
1 | Port1 |
... | ... |
N | Portn |
步骤102、当某条等价路由的链路故障时,将端口状态表中该条等价路由对应的端口状态置为故障状态,所述端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的对应关系及端口状态;
本发明中,端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的端口状态,该端口状态表至少包括出端口及端口状态字段。出端口字段用于保存分配给等价路由的物理出端口的端口标识。端口状态字段用于指示对应的出端口的端口状态,端口状态包括正常或可用状态、故障或不可用状态。本发明中,导致端口状态字段为故障的情况可以是端口故障、链路中断、中间节点故障等情况,因此,实际上该端口状态字段实际上标识的是等价路由对应链路是否可用的状态。
本发明中的端口状态表应理解为一个抽象概括性的表,该表可以与路由表合并设置,成为路由表的一部分,如表2所示,路由表中的出端口和端口状态字段构成端口状态表,也可以单独设置,如表3所示。
表2
路由标识1 | 目的IP | ... | 出端口 | 端口状态 |
1 | 1.1.1.1 | ... | Port1 | True(正常) |
... | ... | ... | ... | ... |
N | 1.1.1.1 | ... | Portn | False(故障) |
表3
出端口 | 端口状态 |
Port1 | True(正常) |
... | ... |
Portn | False(故障) |
步骤103、将所述哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口;
在某条等价路由的链路故障,且完成端口状态表中对应等价路由的出端口状态的替换后,将哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口。在执行该步骤时,本发明不执行所有等价路由对应出端口的重新计算和分配,仍然保持正常出端口的等价路由上的流量出端口不变,通过将故障出端口循环替换为正常出端口的方式,将故障等价路由链路上的流量负载分担到正常等价路由链路上。
步骤104、当产生链路故障的等价路由恢复正常时,将端口状态表中该条恢复正常的等价路由对应的出端口的端口状态置为正常状态;
步骤105、按初始化时该条恢复正常的等价路由对应的出端口在所述哈希映射表中与哈希值的对应关系确定出需要处理的哈希映射表表项即需要替换出端口的哈希映射表表项,将所确定出的需要处理的哈希映射表表项的出端口替换为该条恢复正常的等价路由对应的出端口。
需要进一步说明的是,在执行步骤101之前,本发明提供的方法还需要执行以下初始化的步骤:
在对所述端口状态表初始化时,为到达同一目的地址的每一条等价路由所述使用的出端口建立表项,并将每一表项中的端口状态设置为正常状态;
在对所述哈希映射表初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中。
在完成端口状态表和哈希映射表的初始化后,出端口在端口状态表中的顺序以及哈希值在哈希映射表中的顺序保持不变,因此,在某条等价路由的链路恢复后,采用初始化时的规则和顺序,将恢复正常的等价路由的出端口恢复到初始化时的状态。例如,在初始化时,等价路由3的出端口初始化为Port3,哈希值3、7、11、15初始化时对应的出端口为Port3,当Port3故障时,哈希值3、7、11、15被替换为其它正常的出端口,当Port3恢复正常时,哈希值3、7、11、15对应的出端口会回复到初始化时的状态,即恢复为Port3。
在完成步骤105后,就可以将产生故障的等价路由与流量的对应关系恢复到初始情况,如果当前所有等价链路都正常,则可在不需要为所有等价路由重新分配出端口的情况下,将流量恢复到初始的均衡状态,提高了流量的稳定性。但如果当前还存在其它处于故障状态的出端口,则可能造成流量的负载分担的不均衡,因此,为了提高流量的均衡性,本发明提供的报文转发方法还可进一步执行下述步骤106。
步骤106、当所述端口状态表中还有处于故障状态的出端口表项时,针对每一个处于故障状态的出端口,执行如下动作:按初始化时当前处于故障的出端口在哈希映射表中与哈希值的对应关系确定出需要替换出端口的哈希映射表表项,依次循环用端口状态表中处于正常状态的出端口替换所确定出的需要替换出端口的哈希映射表表项的出端口。
通过该步骤,可以在多个出端口出现故障的情况下,当某个出端口恢复正常时,使各端口的流量尽可能的保持均衡。
为使本发明的方案更加清楚,以下结合具体的实施例来举例说明。
以交换机为例,假设交换机控制平面计算出到达同一目的地址的等价路由有4条,为这4条等价路由分配的出端口为Port1~Port4,根据出端口信息初始化端口状态表,如表4所示。
表4
出端口 | 端口状态 |
Port1 | True |
Port2 | True |
Port3 | True |
Port4 | True |
初始化时将所有的出端口对应的状态都初始化为正常True状态。
假设对报文进行哈希运算的哈希函数有16个哈希值,值域空间为1~16,则在初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中,如表5所示。
表5
哈希值 | 出端口 |
1 | Port1 |
2 | Port2 |
3 | Port3 |
4 | Port4 |
5 | Port1 |
6 | Port2 |
7 | Port3 |
8 | Port4 |
9 | Port1 |
10 | Port2 |
11 | Port3 |
12 | Port4 |
13 | Port1 |
14 | Port2 |
15 | Port3 |
16 | Port4 |
报文到达交换机并命中等价路由后,交换机根据报文属性(例如源IP或源MAC地址等)计算哈希值,通过哈希值获得对应的出端口,通过与哈希值对应的出端口转发该报文,从而将流量均衡分配不同的出端口上。
例如,参考表5,对甲报文经过哈希计算后得到的哈希值为5,则查找哈希映射表中哈希值为5的表项,得到出端口为Port1,则通过Port1转发甲报文。
假设,由于某种原因导致位于Port1的等价路由的链路出现故障,使得通过该条等价路径不可达,则首先将端口状态表中Port1的端口状态置位故障False状态,如表6所示。然后,依次循环将哈希映射表中出端口字段为Port1的表项出端口字段值替换为端口状态表中端口状态为正常状态的出端口,如表7所示。
表6
出端口 | 端口状态 |
Port1 | True→False |
Port2 | True |
Port3 | True |
Port4 | True |
表7
哈希值 | 出端口 |
1 | Port1→Port2 |
2 | Port2 |
3 | Port3 |
4 | Port4 |
5 | Port1→Port3 |
6 | Port2 |
7 | Port3 |
8 | Port4 |
9 | Port1→Port4 |
10 | Port2 |
11 | Port3 |
12 | Port4 |
13 | Port1→Port2 |
14 | Port2 |
15 | Port3 |
16 | Port4 |
从表6和表7中可以看出,在Port1故障前,哈希映射表中出端口为Port1的表项有4个,在Port1故障后,端口状态表中Port2、Port3、Port4仍然处于正常状态,因此依次循环用Port2、Port3、Port4替换哈希映射表中的Port1,表中的“→”代表执行替换操作的意思。替换后,之前对应哈希值5的流量,现在通过出端口Port3转发,对应哈希值为9的流量,现在通过出端口Port4转发,以此类推。
假设在对应出端口Port1的等价路由故障之后,对应出端口Port3的等价路由也发生故障,则使用同样的规则对端口状态表和哈希映射表进行处理,如表8和表9所示。
表8
出端口 | 端口状态 |
Port1 | False |
Port2 | True |
Port3 | True→False |
Port4 | True |
表9
哈希值 | 出端口 |
1 | Port2 |
2 | Port2 |
3 | Port3→Port2 |
4 | Port4 |
5 | Port3→Port4 |
6 | Port2 |
7 | Port3→Port2 |
8 | Port4 |
9 | Port4 |
10 | Port2 |
11 | Port3→Port4 |
12 | Port4 |
13 | Port2 |
14 | Port2 |
15 | Port3→Port2 |
16 | Port4 |
从表8和表9中可以看出,在Port3故障前,哈希映射表中出端口为Port3的表项有5个,在Port3故障后,端口状态表中Port2、Port4仍然处于正常状态,因此依次循环用Port2、Port4替换哈希映射表中的Port3。替换后,之前对应哈希值3的流量,现在通过出端口Port2转发,对应哈希值为5的流量,现在通过出端口Port4转发,以此类推。
下面说明链路恢复后的处理过程,在回复过程中,保证之前不受影响的流量不改变出端口。
假设,Port3对应的等价路由的链路恢复正常,将端口状态表中Port3的状态修改为True,然后按初始化时在哈希映射表中建立的Port3与哈希值的对应关系(参考表5)确定出需要处理的哈希映射表表项,即哈希值为3、7、11、15的表项,将这些表项的出端口替换为Port3。处理后的端口状态表和哈希映射表如表10和表11所示。
表10
出端口 | 端口状态 |
Port1 | False |
Port2 | True |
Port3 | False→True |
Port4 | True |
表11
哈希值 | 出端口 |
1 | Port2 |
2 | Port2 |
3 | Port2→Port3 |
4 | Port4 |
5 | Port4 |
6 | Port2 |
7 | Port2→Port3 |
8 | Port4 |
9 | Port4 |
10 | Port2 |
11 | Port4→Port3 |
12 | Port4 |
13 | Port2 |
14 | Port2 |
15 | Port2→Port3 |
16 | Port4 |
为了进一步实现在端口恢复后流量在各正常出端口的负载均衡,在Port3恢复后,还需要判断端口状态表中是否还有处于故障状态的出端口,该实施例中Port1仍处于故障状态,则针对Port1执行如下的处理:
按初始化时Port1在哈希映射表中与哈希值的对应关系确定出需要替换出端口的哈希映射表表项,该实施例中为哈希值1、5、9、13对应的哈希映射表表项,然后依次循环用端口状态表中处于正常状态的出端口即Port2、Port3、Port4替换哈希值1、5、9、13对应的哈希映射表表项的出端口,处理后的状态如表12所示。
表12
哈希值 | 出端口 |
1 | Port2→Port2 |
2 | Port2 |
3 | Port3 |
4 | Port4 |
5 | Port4→Port3 |
6 | Port2 |
7 | Port3 |
8 | Port4 |
9 | Port4→Port4 |
10 | Port2 |
11 | Port3 |
12 | Port4 |
13 | Port2→Port2 |
14 | Port2 |
15 | Port3 |
16 | Port4 |
进一步地,当Port1对应的链路也恢复正常时,将端口状态表中Port1的状态修改为True,然后按初始化时在哈希映射表中建立的Port1与哈希值的对应关系确定出需要处理的哈希映射表表项,即哈希值为1、5、9、13的表项,将这些表项的出端口替换为Port1,则在所有端口全部恢复到正常状态时,哈希映射表也将恢复到初始化的状态,如表13所示。
表13
哈希值 | 出端口 |
1 | Port2→Port1 |
2 | Port2 |
3 | Port3 |
4 | Port4 |
5 | Port3→Port1 |
6 | Port2 |
7 | Port3 |
8 | Port4 |
9 | Port4→Port1 |
10 | Port2 |
11 | Port3 |
12 | Port4 |
13 | Port2→Port1 |
14 | Port2 |
15 | Port3 |
16 | Port4 |
通过上面的处理过程,可以看到Port2、Port4两个出端口对应的等价路由上流量没有中断过,其在哈希映射表中的出端口没有变化,说明之前通过这2条等价链路的流没有受影响,而且最后表项还原到链路断开之前的表项,所有流量的出端口和之前没有变化。并且在中断链路、恢复链路的过程中,始终尽量保持有变化的流均匀哈希到各处于正常状态的出端口。
基于同样的思路,本发明实施例还提供一种报文转发装置,该装置应用于报文转发设备上,图2为本发明实施例提供的与物理结构相结合的装置结构示意图,用于实现本发明实施例提供的方法步骤的计算机可读指令或程序模块存储于非易失性存储器中,例如磁盘或只读存储器,由报文转发设备上的中央处理单元CPU调入到内存中运行后,形成本发明实施例提供的装置中的模块,通过这些模块执行相应的动作及这些模块之间的信息交互完成本发明实施例提供报文转发方法的功能。该装置包括:
转发模块201,用于在通过等价路由转发报文时,基于报文属性计算哈希值,通过哈希映射表确定哈希值对应的出端口,通过确定的出端口转发该报文;所述哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系;
状态维护模块202,用于当某条等价路由的链路故障时,将端口状态表中该条等价路由对应的端口状态置为故障状态;所述端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的端口状态;
哈希映射模块203,用于当某条等价路由的链路故障时,将所述哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口。
状态维护模块202还用于对所述端口状态表进行初始化,在初始化时,为到达同一目的地址的每一条等价路由所述使用的出端口建立表项,并将每一表项中的端口状态设置为正常状态。哈希映射模块203还用于对所述哈希映射表进行初始化,在初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中。
状态维护模块202还用于在产生链路故障的等价路由恢复正常时,将端口状态表中该条恢复正常的等价路由对应的出端口的端口状态置为正常状态。哈希映射模203块还用于按初始化时该条恢复正常的等价路由对应的出端口在所述哈希映射表中与哈希值的对应关系确定出需要处理的哈希映射表表项,将所确定出的需要处理的哈希映射表表项的出端口替换为该条恢复正常的等价路由对应的出端口。
哈希映射模块203还用于,在按初始化时在所述哈希映射表中建立的该条恢复正常的等价路由对应的出端口与哈希值的对应关系完成对应哈希值的出端口替换后,判断所述端口状态表中是否还有处于故障状态的出端口表项,当存在时,针对每一个处于故障状态的出端口,按初始化时当前处于故障的出端口在所述哈希映射表中与哈希值的对应关系确定需要替换的哈希映射表的表项,依次循环用所述端口状态表中处于正常状态的出端口替换所确定的需要替换的哈希映射表的表项中的出端口。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (8)
1.一种报文转发方法,应用于报文转发设备上,其特征在于,所述方法包括:
在通过等价路由转发报文时,基于报文属性计算哈希值,通过哈希映射表确定哈希值对应的出端口,通过确定的出端口转发该报文,所述哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系;
当某条等价路由的链路故障时,将端口状态表中该条等价路由对应的端口状态置为故障状态,所述端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的端口状态;
将所述哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口,并维持所述哈希映射表中正常状态的等价路由对应的出端口不变;
当产生链路故障的等价路由恢复正常时,将端口状态表中该条恢复正常的等价路由对应的出端口的端口状态置为正常状态,按初始化时该条恢复正常的等价路由对应的出端口在所述哈希映射表中与哈希值的对应关系确定出需要处理的哈希映射表表项,将所确定出的需要处理的哈希映射表表项的出端口替换为该条恢复正常的等价路由对应的出端口。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括以下初始化的步骤:
在对所述端口状态表初始化时,为到达同一目的地址的每一条等价路由所述使用的出端口建立表项,并将每一表项中的端口状态设置为正常状态;
在对所述哈希映射表初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中。
3.根据权利要求1所述的方法,其特征在于,在按初始化时在所述哈希映射表中建立的该条恢复正常的等价路由对应的出端口与哈希值的对应关系完成对应哈希值的出端口替换后,该方法还包括:
判断所述端口状态表中是否还有处于故障状态的出端口表项,当存在时,针对每一个处于故障状态的出端口,执行如下动作:
按初始化时当前处于故障的出端口在所述哈希映射表中与哈希值的对应关系确定需要替换出端口的哈希映射表表项,依次循环用所述端口状态表中处于正常状态的出端口替换所确定的需要替换出端口的哈希映射表表项的出端口;
将所述哈希映射表中所有该当前处理的处于故障状态的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口。
4.根据权利要求1所述的方法,其特征在于,所述报文转发设备为交换设备或路由设备。
5.一种报文转发装置,应用于报文转发设备上,其特征在于,所述装置包括:
转发模块,用于在通过等价路由转发报文时,基于报文属性计算哈希值,通过哈希映射表确定哈希值对应的出端口,通过确定的出端口转发该报文;所述哈希映射表用于保存哈希值与等价路由对应的出端口之间的对应关系;
状态维护模块,用于当某条等价路由的链路故障时,将端口状态表中该条等价路由对应的端口状态置为故障状态;所述端口状态表用于保存多条到达同一目的地址的等价路由所使用的出端口的端口状态;
哈希映射模块,用于当某条等价路由的链路故障时,将所述哈希映射表中所有该条等价路由对应的出端口,按顺序依次循环替换为端口状态表中端口状态为正常状态的等价路由对应的出端口,并维持所述哈希映射表中正常状态的等价路由对应的出端口不变;
所述状态维护模块还用于,在产生链路故障的等价路由恢复正常时,将端口状态表中该条恢复正常的等价路由对应的出端口的端口状态置为正常状态;
所述哈希映射模块还用于,按初始化时该条恢复正常的等价路由对应的出端口在所述哈希映射表中与哈希值的对应关系确定出需要处理的哈希映射表表项,将所确定出的需要处理的哈希映射表表项的出端口替换为该条恢复正常的等价路由对应的出端口。
6.根据权利要求5所述的装置,其特征在于,
所述状态维护模块还用于对所述端口状态表进行初始化,在初始化时,为到达同一目的地址的每一条等价路由所述使用的出端口建立表项,并将每一表项中的端口状态设置为正常状态;
所述哈希映射模块还用于对所述哈希映射表进行初始化,在初始化时,为每一个哈希值建立表项,并依次循环将端口状态表中的出端口填充到哈希映射表中。
7.根据权利要求5所述的装置,其特征在于,
所述哈希映射模块还用于,在按初始化时在所述哈希映射表中建立的该条恢复正常的等价路由对应的出端口与哈希值的对应关系完成对应哈希值的出端口替换后,判断所述端口状态表中是否还有处于故障状态的出端口表项,当存在时,针对每一个处于故障状态的出端口,按初始化时当前处于故障的出端口在所述哈希映射表中与哈希值的对应关系确定需要替换的哈希映射表的表项,依次循环用所述端口状态表中处于正常状态的出端口替换所确定的需要替换的哈希映射表的表项中的出端口。
8.根据权利要求5所述的装置,其特征在于,应用所述装置的报文转发设备为交换设备或路由设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410244454.3A CN104022952B (zh) | 2014-06-03 | 2014-06-03 | 一种报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410244454.3A CN104022952B (zh) | 2014-06-03 | 2014-06-03 | 一种报文转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104022952A CN104022952A (zh) | 2014-09-03 |
CN104022952B true CN104022952B (zh) | 2017-12-08 |
Family
ID=51439528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410244454.3A Active CN104022952B (zh) | 2014-06-03 | 2014-06-03 | 一种报文转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104022952B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330748B (zh) * | 2015-06-30 | 2019-04-09 | 中兴通讯股份有限公司 | 一种流量控制方法及装置 |
CN109218179A (zh) * | 2017-07-07 | 2019-01-15 | 中兴通讯股份有限公司 | 负载分担方法及装置、交换机及计算机可读存储介质 |
CN109347623B (zh) * | 2018-10-18 | 2022-09-09 | 苏州盛科通信股份有限公司 | 一种链路负载均衡应用中进行会话保持的方法及装置 |
CN109450819B (zh) * | 2018-10-25 | 2021-08-17 | 锐捷网络股份有限公司 | 一种广播报文的转发方法及系统 |
CN109286686B (zh) * | 2018-11-23 | 2021-05-14 | 盛科网络(苏州)有限公司 | 基于轮询机制的负载均衡方法 |
CN110011919B (zh) * | 2019-03-27 | 2021-12-07 | 新华三技术有限公司 | 报文转发方法、装置、网络设备及存储介质 |
CN112737956A (zh) * | 2019-10-28 | 2021-04-30 | 华为技术有限公司 | 报文的发送方法和第一网络设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567846A (zh) * | 2009-05-27 | 2009-10-28 | 杭州华三通信技术有限公司 | 路由选择方法及其系统、业务处理单元和可编程接口板 |
CN102347885A (zh) * | 2010-07-29 | 2012-02-08 | 杭州华三通信技术有限公司 | 一种路由切换的方法和装置 |
CN102710507A (zh) * | 2012-05-17 | 2012-10-03 | 杭州华三通信技术有限公司 | 一种实现报文转发路径一致的方法和网络设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8619584B2 (en) * | 2010-04-30 | 2013-12-31 | Cisco Technology, Inc. | Load balancing over DCE multipath ECMP links for HPC and FCoE |
-
2014
- 2014-06-03 CN CN201410244454.3A patent/CN104022952B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567846A (zh) * | 2009-05-27 | 2009-10-28 | 杭州华三通信技术有限公司 | 路由选择方法及其系统、业务处理单元和可编程接口板 |
CN102347885A (zh) * | 2010-07-29 | 2012-02-08 | 杭州华三通信技术有限公司 | 一种路由切换的方法和装置 |
CN102710507A (zh) * | 2012-05-17 | 2012-10-03 | 杭州华三通信技术有限公司 | 一种实现报文转发路径一致的方法和网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104022952A (zh) | 2014-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104022952B (zh) | 一种报文转发方法及装置 | |
US11140076B2 (en) | Apparatus, system, and method for packet switching | |
US10033641B2 (en) | Deterministic and optimized bit index explicit replication (BIER) forwarding | |
US10158566B2 (en) | Shortest path bridge with MPLS labels | |
US9160666B2 (en) | Encoding a payload hash in the DA-MAC to facilitate elastic chaining of packet processing elements | |
US9438447B2 (en) | Flow distribution algorithm for aggregated links in an ethernet switch | |
CN104270298B (zh) | 一种vxlan网络中的报文转发方法及装置 | |
CN106559324A (zh) | 一种基于等价多路径转发报文的方法及网络设备 | |
CN107547370B (zh) | 流量转发方法、装置及系统 | |
US20160134518A1 (en) | Deterministic and optimized bit index explicit replication (bier) forwarding | |
CN104521200B (zh) | 用于在中间件机器环境中支持发现和路由退化胖树的系统和方法 | |
CN110098992A (zh) | 用于在交换机之间传送对等业务的专用虚拟局域网 | |
CN103763135B (zh) | 一种pe设备流量调度方法及装置 | |
CN105610709A (zh) | 基于sdn的大流负载均衡系统与方法 | |
CN106464589A (zh) | Ip网络中的部分软件定义网络交换机替换 | |
EP2995048A1 (en) | Configuring forwarding information | |
WO2015062487A1 (en) | Packet forwarding control | |
CN106130920A (zh) | 一种报文转发方法及装置 | |
CN107979848B (zh) | 一种备用路径的检测方法及装置 | |
EP3432513A1 (en) | Deterministic and optimized bit index explicit replication (bier) forwarding | |
US10686734B2 (en) | Network switch with interconnected member nodes | |
CN107770061A (zh) | 转发报文的方法及转发设备 | |
WO2015192496A1 (zh) | 一种mpls负荷分担的处理方法及装置 | |
CN110190996B (zh) | 一种基于sdn通信网络故障隧道修复方法 | |
CN107018072A (zh) | 一种数据帧发送方法和接入设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant before: Huasan Communication Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |