一种辨别报文源地址真伪的方法

文档序号:7961567阅读:223来源:国知局
专利名称:一种辨别报文源地址真伪的方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种辨别报文源地址真伪的方法。
背景技术
在目前的网络中,普遍存在使用大量源地址为伪造的报文向目标发起攻击的情况。为了对付报文的攻击,需要确定攻击报文的真实地址与其携带的源地址是否相符。现有技术普遍在路由器接收到报文时使用使用单播反向路径转发(uRPF)技术来检测该报文源地址的真实性。
但对于负载分担路由情况下,如何进行uRPF,尚无有效的算法。
如图1所示,当攻击点本身地址为204.69.207.0/24,但在发起攻击时,却使用随机产生的伪地址向互联网服务提供商(ISP)A发起报文流,如果不对该报文源地址进行识别,被攻击端无法识别出攻击报文的真实地址,无法对攻击端进行处理。
为对付这种攻击,现有技术确定了使用uRPF技术来检测攻击报文的技术。
在边缘路由器router2在收到报文时,使用目的IP地址(DIP)进行转发信息查询,确定报文去向;使用源地址(SIP)在路由表(FIB)中进行uRPF查询,确定报文的来源。
进行uRPF查询将有如下几种情况uRPF FIB查询失败,这说明源IP地址(SIP)无法路由,互联网服务提供商(ISP)的应答报文也无法到达发起者。
虽然uRPF FIB查询成功,但报文的源端口与转发信息表中的目的端口不符,这说明报文来源端口不正确。
如果查询到的是负载分担路由,需要进一步分析各个负载分担信息表,在这种情况下逐一查询负载分担中的各条转发信息,当查到有一个转发表项如果符合,则说明报文来源正确;如果查询到的负载分担信息表都不符合,说明报文源地址为伪造。
当遇到一个源地址为伪造的报文,现有技术对负载分担路由的情况进行严格的uRPF检查,需要对等价多路径(ECMP)的等价路由转发表项进行循环读取并检查,当其中一条转发路径与报文源端口一致,则认为uRPF成功;当对所有等价路径一一检查完毕后,发现所有等价路径都与报文源端口不一致,才能认定uRPF失败。
现有技术这种确认uRPF失败的操作大量耗费接口带宽和处理器处理时间,无法支持高速转发的性能要求。

发明内容
本发明的目的是提供一种辨别报文源地址真伪的方法,用于在路由器接收到一条报文后判断是否转发该报文。
本发明的目的是通过以下技术方案实现的一种辨别报文源地址真伪的方法,包括路由器为负载分担路由表设置用于识别路由地址真实性的信息,路由器接收报文后根据修改后的路由表对报文携带的源地址进行单播反向路径查询,确定报文的源地址的真实性。
所述为路由表设置用于识别路由地址真实性的信息并确定源地址真实性的方法包括
为单板的路由表项设置用于标识该路由表项与本单板相关关系的本板相关标志域,通过对该域的检测确定报文携带的源地址是否与本板相关,当源地址与本板无关,则确定该地址为伪造地址;在路由表项中设置用于标识本板各端口与报文携带的源地址关系的地址相关端口标识域以及单板端口有效性的有效端口域,在确定源地址与本板相关后,将报文进入路由器所经过的端口号与地址相关端口标识域和有效端口域的值进行比较,根据比较结果确定报文源地址真伪。
通过所述比较确定报文进入路由器所经过的端口是否为与报文携带的源地址相连的端口且为路由器的有效端口,如果是,则报文的源地址为真实地址,如果不是,则报文的源地址为伪地址。
所述比较通过报文进入路由器所经过的端口号与地址相关端口标识域的值以及有效端口域的值进行的与逻辑运算实现。
路由器可由包括多端口单板在内的多个单板组成或仅由多个单端口单板组成,对于由包括多端口单板在内的多个单板组成的路由器,通过为负载分担路由表设置用于识别路由地址真实性信息的方法确定报文源地址真实性,对于仅由多个单端口单板组成的路由器,通过根据负载分担路由表中的路由转发信息配置多个与本板相关的单跳路由表并反向查询该单跳路由表的方法确定报文源地址真实性。
一种辨别报文源地址真伪的方法,包括路由器根据单板上原有负载分担路由表中的路由转发信息设置仅与本板相关的单跳路由表,根据所述单跳路由表进行反向查询确定报文源地址真伪。
所述设置仅与本板相关的单跳路由表包括对于本板相关的单端口单板,该单板关于报文源地址的唯一路由转发信息与地址构成单跳路由表;本板相关的多端口单板,将该单板的每条路由转发信息与地址构成一个单跳路由表,得到多个单跳路由表。
由上述本发明提供的技术方案可以看出,本发明通过为负载分担路由表添加用于辨别地址真伪的信息项,或通过压缩路由表的方法简化了对负载分担路由表多跳信息的逐一比较和查询,提高辨别效率,减少对系统处理能力的消耗。


图1所示为使用分布式路由器的网络示意图;图2所示为使用由单端口单板组成的负载分担路由器的网络示意图;图3所示为使用包含多端口单板的负载分担路由器的网络示意图。
具体实施例方式
本发明的核心是在路由器中的单板接收报文时,根据所述报文的源地址信息查询配置有用于识别路由地址真实性的信息,再根据查找结果确定报文源地址的真伪。
对分布式路由器各单板的路由表进行修改,当有报文进入路由器时,根据修改后的路由表,将该报文的源地址作为反向查询的目的地址进行单播反向路径查询,辨别报文中携带的源地址信息是否为真实源地址。由于构成路由器的单板可能有单个或者多个端口,可以采用不同的方法对路由表进行修改对含有多端口单板的路由器,为负载分担路由表设置用于识别路由地址真实性的信息;对仅由单端口单板组成的路由器,将其负载分担的路由表压缩为单跳路由表。
具体一点讲,本发明在由单端口单板组成的负载分担路由器中,对于每个单板的本板相关负载分担路由表,根据负载分担路由表中的路由信息进行重新设置得到单跳路由表,单跳路由表中仅包含转发信息中与本板相关的端口,不包含其他端口。进行单播反向路径查询时,如果查到单一下一跳的路由表项,则进行端口比较,如果入端口与表项内的端口一致,则uRPF通过;如果查到多下一跳的负载分担路由表,则说明uRPF失败,不需要再进行逐一比较。
本发明还可以在负载分担路由器中为各单板的路由表添加新的信息域,根据报文进入路由器的端口以及新的信息项辨别报文中携带的源地址是否为真实源地址。
本发明添加的信息项包括本板相关标志域、地址相关端口标识域(本板端口bit域)以及有效端口域(本板端口bit mask域)。辨别源地址是否为真实地址时首先需要检测单板路由表中的本板相关标志域的值,若该值为无关,则报文携带的源地址为伪地址;若该项值为相关,则将报文进入路由器所经过的端口号与地址相关端口标识域和有效端口域的值进行比较,根据比较结果确定报文源地址真伪。
所述比较确定报文进入路由器所经过的端口是否为与报文携带的源地址相连的端口且为路由器的有效端口,如果是,则报文的源地址为真实地址,如果不是,则报文的源地址为伪地址。
下面将结合本发明具体实施例附图对本发明作详细说明。
图2所示为包含多端口单板的负载分担路由器示意图。
如图2所示,图中共有3个分布式路由器router1、router2、router3,其中router2包含单板1,单板2,单板3共三个单板,且单板2为多端口单板,共有8个端口,其中的两个端口port0,port1连接至地址204.69.207.0/24,其余端口连接至其他地址;单板2上有一个端口,也连接至地址204.69.207.0/24;单板3上有一个端口,与ISP相连。
这样,router2与地址204.69.207.0/24之间共有三条等价路由,分别为单板1、单板2的port0以及port1。
当有报文进入路由器,如果报文的SIP为204.69.207.0/24,路由器需要查询该报文是否确实由204.69.207.0/24发出。如果确实是从204.69.207.0/24发出,则该报文可转发;如果该报文是从其他地址发出,但报文地址信息中携带的SIP却为204.69.207.0/24,则该报文的SIP地址为伪造,不予转发。
本发明使用单播反向路径转发进行源地址查询时。由于是进行反向检查,报文信息中的源地址204.69.207.0/24在反向查询中成为查询的目的地址。
对于路由器中的各个单板,其维护的关于同一地址的路由表项均由主控协议模块下发,且在一般情况下,主控协议模块下发给各单板的路由表项是完全相同的。在本实施例中,主控协议模块下发给各单板的地址为204.69.207.0/24的路由表项为表1-1所示

表1-1可以看出,该路由表为负载分担路由表,且同一单板具有多个端口作为负载分担。在这种情况下,本发明实施例一对现有负载分担路由表进行修改,为各单板上指定目的地址的路由表设置用于识别路由地址真实性的信息,路由器接收报文后根据修改后的路由表对报文携带的源地址进行单播反向路径查询,确定报文的源地址的真实性。
所述添加的信息项包括本板相关标志域,该域的值为相关或无关,表示本板与报文携带的源地址是否相关;地址相关端口标识域(本板端口bit域),该域中每个本板端口对应一位二进制数,用每位二进制数的取值表示本板各端口与报文携带的源地址的连接关系;有效端口域(本板端口bit mask域),该域中用二进制数表示本板的有效端口数,每个端口对应一位二进制数。
在本发明实施例一中,所述本板相关标志域、地址相关端口标识域以及有效端口域的具体信息如下本板相关标志域,表示本板是否与路由表中的目的地址相关,1表示相关,0表示不相关。
地址相关端口标识域,表示路由表项中所涉及的本板端口,用一位二进制数表示本板上的一个端口是否在路由表项中被涉及,用1表示涉及,用0表示其余未涉及的端口。对于本实施例,单板1共有8个端口,分别为端口0~端口7,路由表项涉及单板1中的端口0和端口1,则单板1的端口bit域表示为11000000。
有效端口域,表示本板的端口总数,对于本实施例,单板1共有8个端口,则该域的值表示为11111111;对于只有1个端口的单板,该域的值表示为10000000。
本实施例中0和1所表示的信息并不是固定不变的,可以根据实际情况进行调整。
在本实施例中,为单板2增加本板相关信息后的路由表项如表1-2所示

表1-2根据该路由表项,对进入单板2的源地址为204.69.207.0/24报文进行单播反向路径转发查询,检查发送该报文的真实源地址是否真正为204.69.207.0/24,以便确定是否转发该报文,具体包括步骤11、本发明实施例一在进行单播反向路径转发时首先需要查询本板相关标志域,其中1表示相关,0表示无关。
当本板相关标志域的信息为0,则所有通过该板进入路由器且目的地址与路由表中目的地址相同的报文均不予转发,报文携带的源地址信息为伪信息;当本板相关标志域的信息为相关,则继续进行步骤22。
步骤12、将报文进入单板2的端口号与单板2的路由表中本板端口bit域和本端口bit mask域的值进行与逻辑运算,根据运算值判断报文地址的真实性。
实施例一中,单板2具有8个端口,其中端口0、端口1与目的地址204.69.207.0/24相连。
当一个目的地址为204.69.207.0/24的报文从端口1进入路由器,根据路由表项的内容,将报文进入路由器的端口与本板端口bit和本板端口bit mask进行与逻辑运算,根据所得的结果判断报文源地址是否为204.69.207.0/24。若不是真实的地址,则认为该地址为伪造,该报文为攻击报文,不转发该报文;若是真实的地址,则认为该报文为有效报文,对其进行正常的转发。
单板2中的8个端口为端口0-端口7,其中从端口1进入报文时,端口1表示为01000000;将端口1与路由表项中本板bit域和本端口bit mask域进行与操作(01000000)&(port bits)&(port bits mask),即(01000000)&(11000000)&(port11111111),其结果为1,说明路有表中端口1的单播反向路径转发查询成功,亦即可以断定从端口1进入的报文,若报文中携带的源地址信息为204.69.207.0/24,则该源地址是该报文的真实源地址,该报文为有效报文,路由器将按照该报文的目的地址转发该报文。
在本发明实施例一中,当一个源地址为204.69.207.0/24的报文从端口4进入路由器,根据路由表项的内容,将报文进入路由器的端口与本板端口bit和本板端口bit mask进行与操作,根据所得的结果判断该报文地址的真实性。
单板2中的端口4表示为00001000;将端口4与路由表项中本板bit域和本端口bit mask域进行与操作(00001000)&(port bits)&(port bits mask),(00001000)&(11000000)&(11111111),即(00001000)&(11000000)&(11111111),其结果为0,说明路由表中端口4的单播反向路径转发查询失败,亦即可以断定从端口4进入的报文,若报文中携带的源地址信息为204.69.207.0/24,则该报文的源地址为伪造,该报文无效,可能是某一个终端发出的攻击报文,路由器不转发该报文,并将其丢弃。
本发明实施例一中修改路由表,为路由表添加信息项的方法对于只有一个端口的单板1同样适用。使用该方法,单板1中目的地址为204.69.207.0/24的路由表项如表1-3所示

表1-3当单板1从其唯一端口接收到一条源地址为204.69.207.0/24的报文时,首先检查本板相关标志域,其值为1,表示相关,则继续进行与逻辑运算检查。接收报文的端口表示为10000000,将该端口与路由表项中本板bit域和本端口bit mask域进行与操作(00001000)&(port bits)&(port bits mask),即(10000000)&(10000000)&(10000000),其结果为1,说明从单板1的唯一端口进入路由器的报文,若其源地址为204.69.207.0/24,则该报文的地址为真实地址,路由器转发该报文。
对于只有一个端口的单板3,其保存的204.69.207.0/24表项如表1-4所示

表1-4由于单板3的端口不与204.69.207.0/24相连,因此在单板3中204.69.207.0/24的路由表项中本板相关项数值为0,即可得出如下结论从单板3端口输出的报文均无法到达204.69.207.0/24这个地址。
图3所示为单接口单板组成的负载分担路由器示意图。
如图3所示,在实施例二中router2与地址204.69.207.0/24之间有单板1和单板2两条等价路由,router2的单板3与互联网服务提供商(ISP)相连,所述的单板1和单板2均只有一个接口。
在根据本发明进行处理前,router2中各单板均维护同一张由主控协议模块下发的路由表。在图3所示的router2的各个单板中,目的地址为204.69.207.0/24路由表项如表2-1所示

表2-1当router2接收到源地址为204.69.207.0/24的报文后,在按照该报文的目的地址转发该报文前,需将报文的源地址作为反向查询的目的地址,对报文进行单播反向路径查询,检查该报文携带的源地址信息是否为真实地址。
本发明在进行单播反向查询前对路由器个单板上维护的路由表进行修改。
对于一个单板上的负载分担路由表,根据该路由表中的信息重新设置路由表,得到仅包含与本板相关的路由转发信息的路由表。由于各单板均只有一个端口,所以经本发明修改的各单板路由表从负载分担路由表压缩为仅含单跳转发信息的普通路由表。
在删除其它板转发信息后,单板1上保存的目的地址为204.69.207.0/24的路由表如表2-2所示

表2-2单板2上保存的204.69.207.0/24的路由表如表2-3所示

表2-3在路由器中,真正应该前往204.69.207.0/24的是从单板3的接口进入的报文,该报文在查询路由表后得到关于地址204.69.207.0/24的转发信息。因此,在接口板3上的路由表项需要完整的保存,不能进行删除,以便从接口板3进入的报文可以得到所有的路由转发信息。
不删除单板3上的转发信息,其目的地址为204.69.207.0/24的路由表依然为


在对单板1、单板2的路由表项进行处理后,当在单板1、单板2上进行反向路径检查时,由于每个接口板的路由表项中仅含有一个单跳信息,不再存在负载分担,无需对多条等价路径进行循环读取及检查,节省运算时间,提高路由效率。
在对单板的路由表进行压缩后,对路由器中的单板进行单播反向路径查询的过程如下步骤21、使用报文的源地址作为目的地址进行反向查询,如果路由表中没有维护该目的地址的路由表,则报文源地址超出路由器的控制范围,说明报文的源地址为伪地址。
步骤22、如果路由表中有该目的地址的路由表,则检测该路由表为负载分担路由表还是单跳路由表。
步骤23、当路由表项仍是负载分担的路由表,则说明对本板的反向查询失败;当路由表是单跳路由表,则检查入端口与出端口是否一致。
如果是一致的,则单播反向路径查询成功,报文携带的源地址为真实地址,如果不是同一单板,则说明uRPF失败,也不再对其它单板进行查询。
本发明实施例一、二对由不同单板组成的路由器采取不同的处理方法。由于在实际应用中全部由单端口单板组成的路由器和由包括多端口单板的路由器可能同时出现在同一系统中,本发明在同一系统中综合使用实施例一和实施例二的方法,对系统中包含多端口单板的路由器通过设置相关信息的方法进行查询,对仅包含单端口的路由器通过设置与本板相关的单跳路由表的方法进行查询。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种辨别报文源地址真伪的方法,其特征在于,包括路由器为负载分担路由表设置用于识别路由地址真实性的信息,路由器接收报文后根据修改后的路由表对报文携带的源地址进行单播反向路径查询,确定报文源地址的真实性。
2.根据权利要求1所述的一种辨别报文源地址真伪的方法,其特征在于,所述为路由表设置用于识别路由地址真实性的信息并确定源地址真实性的方法包括为单板的路由表项设置用于标识该路由表项与本单板相关关系的本板相关标志域,通过对该域的检测确定报文携带的源地址是否与本板相关,当源地址与本板无关,则确定该地址为伪造地址;在路由表项中设置用于标识本板各端口与报文携带的源地址关系的地址相关端口标识域以及单板端口有效性的有效端口域,在确定源地址与本板相关后,将报文进入路由器所经过的端口号与地址相关端口标识域和有效端口域的值进行比较,根据比较结果确定报文源地址真伪。
3.根据权利要求2所述的一种辨别报文源地址真伪的方法,其特征在于,通过所述比较确定报文进入路由器所经过的端口是否为与报文携带的源地址相连的端口且为路由器的有效端口,如果是,则报文的源地址为真实地址,如果不是,则报文的源地址为伪地址。
4.根据权利要求2所述的一种辨别报文源地址真伪的方法,其特征在于,所述比较通过报文进入路由器所经过的端口号与地址相关端口标识域的值以及有效端口域的值进行的与逻辑运算实现。
5.根据权利要求1所述的一种辨别报文源地址真伪的方法,路由器可由包括多端口单板在内的多个单板组成或仅由多个单端口单板组成,其特征在于,对于由包括多端口单板在内的多个单板组成的路由器,通过为负载分担路由表设置用于识别路由地址真实性信息的方法确定报文源地址真实性,对于仅由多个单端口单板组成的路由器,通过根据负载分担路由表中的路由转发信息配置多个与本板相关的单跳路由表并反向查询该单跳路由表的方法确定报文源地址真实性。
6.一种辨别报文源地址真伪的方法,其特征在于,包括路由器根据单板上原有负载分担路由表中的路由转发信息设置仅与本板相关的单跳路由表,根据所述单跳路由表进行反向查询确定报文源地址真伪。
7.根据权利要求6所述的一种辨别报文源地址真伪的方法,其特征在于,所述设置仅与本板相关的单跳路由表包括对于本板相关的单端口单板,该单板关于报文源地址的唯一路由转发信息与地址构成单跳路由表;本板相关的多端口单板,将该单板的每条路由转发信息与地址构成一个单跳路由表,得到多个单跳路由表。
全文摘要
本发明提供了一种辨别报文源地址真伪的方法,属于通信领域,包括路由器为负载分担路由表设置用于识别路由地址真实性的信息,路由器接收报文后根据修改后的路由表对报文携带的源地址进行单播反向路径查询,确定报文的源地址的真实性。由上述本发明提供的技术方案可以看出,本发明通过为负载分担路由表添加用于辨别地址真伪的信息项,或通过压缩路由表的方法简化了对负载分担路由表多跳信息的逐一比较和查询,提高辨别效率,减少对系统处理能力的消耗。
文档编号H04L9/00GK101051994SQ200610082960
公开日2007年10月10日 申请日期2006年6月21日 优先权日2006年6月21日
发明者李政, 肖斌 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1