本发明涉及网络通信,尤其涉及一种报文转发方法及实现该报文转发方法的装置和存储介质。
背景技术:
1、现有交换芯片中,数据链路层的转发信息是通过查找mac地址表获得的。其中,对于链路聚合端口,mac地址表中存储的是链路聚合组信息。而对于非链路聚合端口,mac地址表中存放的是真实的出端口信息。当通过查找mac地址表获得转发信息对应链路聚合组信息时,需进一步根据报文携带的信息计算哈希值并依据计算获得的哈希值从链路聚合组中选取一出端口进行转发报文。而当通过查找mac地址表获得信息为非链路聚合组信息时,则直接获得的出端口转发报文。
2、当出端口出现链路中断时,采用中断的方式通知cpu,cpu进一步采取删除所有该出端口相关的mac地址表的动作。然而,从出端口出现链路故障到mac地址表的删除存在一定的时间间隔,在此期间内经过交换芯片的报文会出现丢包的情况。
技术实现思路
1、本发明的目的在于提供一种报文转发方法,能够有效解决出端口出现链路中断时丢包的问题,同时,还提供一种实现该报文转发方法的装置和存储介质。
2、为实现上述目的,本发明提出一种报文转发方法,所述报文转发方法包括如下步骤:
3、接收报文并根据所述报文携带的信息查找mac地址表,获得报文的出端口信息;
4、根据所述出端口信息判断其是否为链路聚合组;
5、响应于根据所述出端口信息判断其为链路聚合组,进一步判断链路聚合组中成员端口的数量是否大于零;
6、响应于判断结果,根据报文携带的信息计算哈希值并根据哈希值选择相应成员端口转发报文,或者在相应转发域中进行泛洪。
7、优选地,报文转发方法还包括:
8、响应于根据所述出端口信息判断其为非链路聚合组,进一步根据出端口信息查找端口链路状态表;
9、响应于查找结果,在相应转发域中进行泛洪或者将报文转发至出端口。
10、优选地,当查找到出端口链路状态为中断时,在相应转发域中进行泛洪;当查找到端口链路状态为非中断时,将报文转发至出端口。
11、优选地,当判断链路聚合组中成员端口的数量大于零时,根据报文携带的信息计算哈希值并利用哈希值和成员端口数量选择转发报文的成员端口;当判断链路聚合组中成员端口的数量等于零时,在相应转发域中进行泛洪。
12、优选地,所述链路聚合组中成员端口的数量通过如下步骤进行更新:
13、获取端口链路状态出现变化的出端口;
14、判断所述出端口是否为链路聚合组中的成员端口;
15、响应于判断出端口为链路聚合组中的成员端口,根据出端口的链路状态将该出端口添加至链路聚合组中或者从链路聚合组中删除该出端口,同时更新端口链路状态表。
16、优选地,当出端口的链路状态为中断时,将该出端口从链路聚合组中删除,并将端口链路状态表中该出端口对应的值配置为第一预设值;当出端口的链路状态为非中断时,将该出端口添加至链路聚合组中,并将端口链路状态表中该出端口对应的值配置为第二预设值。
17、优选地,还包括:
18、响应于判断出端口为链路组中的非成员端口,根据出端口的链路状态更新端口链路状态表。
19、优选地,其特征在于,所述报文转发装置包括:
20、出端口获取模块,用于接收报文并根据所述报文携带的信息查找mac地址表,获得报文的出端口信息;
21、第一判断模块,用于根据所述出端口信息判断其是否为链路聚合组;
22、第二判断模块,用于在第一判断模块判断出端口信息为链路聚合组时,进一步判断链路聚合组中成员端口的数量是否大于零;
23、报文处理模块,用于响应于第二判断模块的判断结果,根据报文携带的信息计算哈希值并根据哈希值选择相应成员端口转发报文,或者在相应转发域中进行泛洪。
24、本发明还揭示了一种报文转发装置,所述报文转发装置包括:
25、至少一个处理器;
26、以及至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理器并且存储用于由所述至少一个处理器执行的计算机程序,所述计算机程序由所述至少一个处理器执行时,使得所述装置执行上述任一项所述的方法。
27、本发明还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现上述任一项所述的方法。
28、本发明的有益效果是:
29、本发明通过端口链路状态表来记录出端口的链路状态,在出端口的链路状态为中断,或者链路聚合组中成员端口的数量为零时,通过泛洪处理,可解决由于出端口出现链路中断时出现的丢包问题。
1.一种报文转发方法,其特征在于,所述报文转发方法包括:
2.根据权利要求1所述的报文转发方法,报文转发方法还包括:
3.根据权利要求2所述的报文转发方法,当查找到出端口链路状态为中断时,在相应转发域中进行泛洪;当查找到端口链路状态为非中断时,将报文转发至出端口。
4.根据权利要求1所述的报文转发方法,当判断链路聚合组中成员端口的数量大于零时,根据报文携带的信息计算哈希值并利用哈希值和成员端口数量选择转发报文的成员端口;当判断链路聚合组中成员端口的数量等于零时,在相应转发域中进行泛洪。
5.根据权利要求1所述的报文转发方法,所述链路聚合组中成员端口的数量通过如下步骤进行更新:
6.根据权利要求5所述的报文转发方法,当出端口的链路状态为中断时,将该出端口从链路聚合组中删除,并将端口链路状态表中该出端口对应的值配置为第一预设值;当出端口的链路状态为非中断时,将该出端口添加至链路聚合组中,并将端口链路状态表中该出端口对应的值配置为第二预设值。
7.根据权利要求5所述的报文转发方法,还包括:
8.一种报文转发装置,其特征在于,所述报文转发装置包括:
9.一种报文转发装置,其特征在于,所述报文转发装置包括:
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被机器执行时实现根据权利要求1至7中任一项所述的方法。