发明内容
本发明需要解决的技术问题是提供一种实现单播反向路径转发URPF检查的方法及装置,有效地防范网络中通过修改源地址而进行的恶意攻击行为的发生。
为了解决上述技术问题,本发明提供了一种实现单播反向路径转发URPF检查的方法,包括:
获取报文的源IP地址及入端口;
根据所述源IP地址在路由转发表中查找到匹配路由后进行URPF检查时,在所述路由转发表中查询IP地址对应的索引标识及索引,如所述源IP地址对应的索引标识为等价多路径ECMP组索引标识,则根据查询到的ECMP组索引到配置的ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
进一步地,所述IP地址对应的索引标识包括:下一跳索引标识和ECMP组索引标识;所述方法还包括:
如具有某一IP地址的节点与本节点之间通过ECMP连接,则在所述路由转发表中配置所述IP地址对应的ECMP组索引,并将所述IP地址对应的索引标识置为ECMP组索引标识;
否则,在所述路由转发表中配置所述IP地址对应的下一跳索引,并将所述IP地址对应的索引标识置为下一跳索引标识。
进一步地,所述配置的ECMP组索引与端口的映射信息中,一个ECMP组索引对应多个等价路由出端口;
判断查询到的所述出端口是否与所述入端口匹配,包括:在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的多个等价路由出端口中,只要有一个等价路由出端口与所述入端口匹配,则通过URPF检查。
进一步地,所述获取报文的入端口包括:如接收到所述报文的物理端口为链路聚合组物理端口,则将所述链路聚合组物理端口对应的链路聚合组逻辑端口作为所述报文的入端口。
进一步地,所述方法还包括:
如具有某一IP地址的节点与本节点之间通过链路聚合组连接,则在路由转发表中配置所述IP地址对应的下一跳索引,并在下一跳索引与端口的映射信息中,将该链路聚合组的逻辑端口作为该下一跳索引对应的出端口;
根据所述源IP地址在路由转发表中查找到匹配路由后进行URPF检查时,在所述路由转发表中查询IP地址对应的索引标识及索引,如所述源IP地址对应的索引标识为下一跳索引标识,则根据查询到的下一跳索引到配置的下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
为了解决上述技术问题,本发明还提供了一种实现单播反向路径转发URPF检查的装置,包括:
端口处理模块,用于获取报文的源IP地址及入端口;
路由处理模块,用于根据所述源IP地址在路由转发表中查找到匹配路由后进行URPF检查时,在所述路由转发表中查询IP地址对应的索引标识及索引,并将查询结果发送至端口查询模块;
端口查询模块,用于接收所述查询结果,如果所述查询结果为所述源IP地址对应的索引标识为等价多路径ECMP组索引标识,则根据查询到的ECMP组索引到配置的ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
进一步地,所述IP地址对应的索引标识包括:下一跳索引标识和ECMP组索引标识;
所述路由处理模块,还用于如具有某一IP地址的节点与本节点之间通过ECMP连接,则在所述路由转发表中配置所述IP地址对应的ECMP组索引,并将所述IP地址对应的索引标识置为ECMP组索引标识;否则,在所述路由转发表中配置所述IP地址对应的下一跳索引,并将所述IP地址对应的索引标识置为下一跳索引标识。
进一步地,所述端口查询模块中配置的ECMP组索引与端口的映射信息中,一个ECMP组索引对应多个等价路由出端口;
所述端口查询模块,用于判断查询到的所述出端口是否与所述入端口匹配,包括:
所述端口查询模块在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的多个等价路由出端口中,只要有一个等价路由出端口与所述入端口匹配,则通过URPF检查。
进一步地,所述端口处理模块,用于获取报文的入端口,包括:
所述端口处理模块如接收到所述报文的物理端口为链路聚合组物理端口,则将所述链路聚合组物理端口对应的链路聚合组逻辑端口作为所述报文的入端口。
所述端口查询模块,还用于如具有某一IP地址的节点与本节点之间通过链路聚合组连接,则在配置的下一跳索引与端口的映射信息中,将该链路聚合组的逻辑端口作为该下一跳索引对应的出端口;
进一步地,所述端口查询模块,还用于如果接收到的所述查询结果为所述源IP地址对应的索引标识为下一跳索引标识,则根据查询到的下一跳索引到配置的下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
与现有技术相比,本发明提供的实现单播反向路径转发URPF检查的方法及装置,特别针对报文来源端口为“ECMP组”和/或“链路聚合组端口”的情况,能有效地防范网络中通过修改源地址而进行的恶意攻击行为的发生,拓展了传统URPF检查的适用场景。
实施例:
如图2所示,本实施例提供了一种实现单播反向路径转发URPF检查的方法,包括以下步骤:
S101:获取报文的源IP地址及入端口;
在本步骤中,还会获取报文URPF检查的URPF模式;以便后续根据该URPF模式查询。
URPF模式包括:严格URPF、松散URPF、允许缺省路由;其中:
严格URPF指:用源IP地址进行路由查找,判断返回路径的出端口是否与该数据包达到的入端口是一致的。
松散URPF指:检查路由转发表中是否存在此路由条目,而不检查路由出端口是否和报文来源端口一致。
允许缺省路由指:用源IP地址查找路由转发表的时候不包括缺省路由。
S102:根据所述源IP地址在路由转发表中查找到匹配路由后进行URPF检查时,在所述路由转发表中查询IP地址对应的索引标识及索引,如所述源IP地址对应的索引标识为等价多路径ECMP组索引标识,则执行步骤S103;
其中,所述IP地址对应的索引标识包括:下一跳索引标识和ECMP组索引标识;
在具体实施时,如具有某一IP地址的节点与本节点之间通过ECMP连接,则在所述路由转发表中配置所述IP地址对应的ECMP组索引,并将所述IP地址对应的索引标识置为ECMP组索引标识;
否则,在所述路由转发表中配置所述IP地址对应的下一跳索引,并将所述IP地址对应的索引标识置为下一跳索引标识。
根据索引标识就可以知道要到哪一个索引与端口的映射信息(ECMP组索引与端口的映射信息或下一跳索引与端口的映射信息)中查找源IP地址对应的出端口。
S103:根据查询到的ECMP组索引到配置的ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
其中,在配置的ECMP组索引与端口的映射信息中,一个ECMP组索引对应多个等价路由出端口;
判断查询到的所述出端口是否与所述入端口匹配,包括:在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的多个等价路由出端口中,只要有一个等价路由出端口与所述入端口匹配,则通过URPF检查。
另外,在一个应用示例中,报文的物理端口为链路聚合组物理端口,在链路聚合组中,一个链路聚合组内可以有多个物理端口,通过预先建立物理端口号和链路聚合组逻辑端口号的映射关系,就可以根据物理端口号查表找到链路聚合组逻辑端口号。例如,配置如下表项1,物理端口1、2、3属于链路聚合组A,物理端口4、5、6属于链路聚合组B。通过输入物理端口号,就可以得到此物理端口属于的链路聚合逻辑端口号,所以,在这种情况下,将所述链路聚合组物理端口对应的链路聚合组逻辑端口作为所述报文的入端口,如具有某一IP地址的节点与本节点之间通过链路聚合组连接,则在路由转发表中配置所述IP地址对应的下一跳索引,并在下一跳索引与端口的映射信息中,将该链路聚合组的逻辑端口作为该下一跳索引对应的出端口。
表项输入 |
表项输出 |
物理端口1 |
逻辑端口A |
物理端口2 |
逻辑端口A |
物理端口3 |
逻辑端口A |
物理端口4 |
逻辑端口B |
物理端口5 |
逻辑端口B |
物理端口6 |
逻辑端口B |
表1:链路聚合组物理端口号和链路聚合组逻辑端口号的映射关系表
作为一种实现方式,在步骤S103中在所述路由转发表中查询IP地址对应的索引标识及索引时,如所述源IP地址对应的索引标识为下一跳索引标识,则根据查询到的下一跳索引到配置的下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
在上述步骤中,作为URPF检查的两种实现方式:可以先判断出URPF模式,然后按照URPF模式在所述路由转发表中查询IP地址对应的索引标识及索引,根据查询到的索引到相应的索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配,如果匹配,则通过检查;否则丢弃报文;
或者,也可以先在所述路由转发表中查询IP地址对应的索引标识及索引,根据查询到的索引到相应的索引与端口的映射信息中根据URPF模式查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
如图2所示,本实施例提供了一种实现单播反向路径转发URPF检查的装置,包括:
端口处理模块,用于获取报文的源IP地址及入端口;
其中,所述端口处理模块,还用于获取报文URPF检查的URPF模式;以便后续根据该URPF模式查询。
其次,如所述端口处理模块接收到所述报文的物理端口为链路聚合组物理端口,则所述端口处理模块,还用于将所述链路聚合组物理端口对应的链路聚合组逻辑端口作为所述报文的入端口。
路由处理模块,用于根据所述源IP地址在路由转发表中查找到匹配路由后进行URPF检查时,在所述路由转发表中查询IP地址对应的索引标识及索引,并将查询结果发送至端口查询模块;
其中,所述IP地址对应的索引标识包括:下一跳索引标识和ECMP组索引标识;
所述路由处理模块,还用于如具有某一IP地址的节点与本节点之间通过ECMP连接,则在所述路由转发表中配置所述IP地址对应的ECMP组索引,并将所述IP地址对应的索引标识置为ECMP组索引标识;否则,在所述路由转发表中配置所述IP地址对应的下一跳索引,并将所述IP地址对应的索引标识置为下一跳索引标识。
端口查询模块,用于接收所述查询结果,如果所述查询结果为所述源IP地址对应的索引标识为等价多路径ECMP组索引标识,则根据查询到的ECMP组索引到配置的ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
其中,所述端口查询模块中配置的ECMP组索引与端口的映射信息中,一个ECMP组索引对应多个等价路由出端口;
所述端口查询模块,用于判断查询到的所述出端口是否与所述入端口匹配,包括:
所述端口查询模块在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的多个等价路由出端口中,只要有一个等价路由出端口与所述入端口匹配,则通过URPF检查。
另外,在本实施中,报文的入端口还可能是链路聚合组逻辑端口;如具有某一IP地址的节点与本节点之间通过链路聚合组连接,所述端口查询模块,还用于在配置的下一跳索引与端口的映射信息中,将该链路聚合组的逻辑端口作为该下一跳索引对应的出端口;
所述端口查询模块,还用于接收所述判断结果,如果接收到的所述查询结果为所述源IP地址对应的索引标识为下一跳索引标识,则根据查询到的下一跳索引到配置的下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
在本实施例中,所述端口处理模块获取所述报文URPF检查的URPF模式包括:严格URPF、松散URPF、允许缺省路由。
所述路由处理模块,还用于按照URPF模式在所述路由转发表中查询IP地址对应的索引标识及索引,所述端口查询模块,还用于根据查询到的索引到相应的索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配,如果匹配,则通过检查;否则丢弃报文;或者,
所述路由处理模块,还用于在所述路由转发表中查询IP地址对应的索引标识及索引,所述端口查询模块,还用于根据查询到的索引到相应的索引与端口的映射信息中根据URPF模式查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
在一个应用示例中,如图3所示,描述了本实施例中实现单播反向路径转发URPF检查的具体流程,包括以下步骤:
S201:设备接收到报文后,端口处理模块获取该报文的源IP地址及入端口;
其中,如接收到所述报文的物理端口为链路聚合组物理端口,则将所述链路聚合组物理端口对应的链路聚合组逻辑端口作为所述报文的入端口。
同时得到URPF开启关闭标识;若URPF开启,还需要得到URPF模式,将该入端口和URPF模式发送至路由处理模块处理。
S202:检查该报文源IP地址的合法性;
对于广播地址,直接予以丢弃,即,检查该报文源IP地址是否为广播地址255.255.255.255,若是,则丢弃报文;
对于源IP地址为0.0.0.0,目的地址为255.255.255.255的报文,该报文可能是DHCP或者BOOTP报文,这种报文是合法的,可以认为URPF检测通过,报文正常转发。
对于源IP地址不为全零的报文,这个源IP肯定是合法的,需要进行URPF检测,执行步骤S203。
S203:在该报文的合法性检查通过后,提取报文中的源IP地址,送路由处理模块处理;
S204:路由处理模块判断所述源IP地址在路由转发表中是否有匹配路由,若有,执行步骤S205;若无,则丢弃报文,同时进行丢弃报文计数;
S205:路由处理模块判断报文的目的IP地址是否为本点,若是,则报文丢弃,同时进行丢弃报文计数;若否,执行步骤S206。
如果报文的目的IP地址是本点,则认为报文是发给本点的;如果报文的源IP地址是本点,则这个源IP地址是非法的,因为报文不可能是本点发给本点。
S206:路由处理模块在路由转发表中查询IP地址对应的索引标识及索引;如果源IP地址对应的索引标识为等价多路径ECMP组索引标识,则执行步骤S207;否则,执行步骤S209;
其中,IP地址对应的索引标识包括:下一跳索引标识和ECMP组索引标识。
S207:端口查询模块根据URPF模式利用查询到的ECMP组索引到配置的ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配,如果匹配,执行步骤S208;否则丢弃报文;
ECMP组索引与端口的映射信息中,一个ECMP组索引对应多个等价路由端口,在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的多个等价路由出端口中,只要有一个等价路由出端口与所述入端口匹配,则认为URPF检测通过。
在本步骤中,如图4所示,端口查询模块根据URPF模式利用ECMP组索引在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的出端口与入端口是否匹配,包括以下步骤:
S301:端口查询模块判断URPF模式,如果为严格URPF,则执行步骤S302;如果为松散URPF,则执行步骤S305;
S302:判断匹配路由是否为缺省路由,若是,执行步骤S303;否则,执行步骤S304。
S303:判断是否配置了允许缺省路由,如果没有配置,则报文丢弃,同时进行丢弃报文计数;如果配置了,则执行步骤S304;
S304:根据查询到的ECMP组索引到配置的ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
S305:判断匹配路由是否为缺省路由,若是,执行步骤S306;若否,执行步骤S307。
S306:判断是否配置了允许缺省路由,如果没有配置,则报文丢弃,同时进行丢弃报文计数;如果配置了,则执行步骤S307。
S307:通过URPF检查。
至此,完成了根据URPF模式利用ECMP组索引在ECMP组索引与端口的映射信息中查找到所述源IP地址对应的出端口与所述入端口是否相符的流程。
S208:通过检查,报文正常路由转发。
S209:端口查询模块根据URPF模式利用查询到的下一跳索引到配置的下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配,如果匹配,执行步骤S210;否则丢弃报文。
在本步骤中,根据URPF模式到下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口与所述入端口是否相符的步骤与上述根据URPF模式到ECMP组索引与端口的映射信息中查询所述源IP地址对应的出端口与所述入端口是否相符的步骤是相同的,只是在步骤S304中,需根据查询到的下一跳索引到配置的下一跳索引与端口的映射信息中查询所述源IP地址对应的出端口与所述入端口是否相符。
S210:通过检查,报文正常路由转发。
至此,本实施例中的URPF检查的流程结束。
在上述实施例中,步骤S206中路由处理模块先在路由转发表中查询IP地址对应的索引标识及索引为ECMP组索引标识及索引还是下一跳索引标识及索引,然后在后面的步骤S207~S208以及步骤S209~S210中,根据URPF模式再到相应的索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配。
在另一个应用示例中,还可以在步骤S205之后先判断URPF模式,如果为严格URPF,则判断匹配路由是否为缺省路由,是否配置了允许缺省路由,如果是,在路由转发表中查询IP地址对应的索引标识及索引为ECMP组索引标识及索引还是下一跳索引标识及索引,在相应的索引与端口的映射信息中查询所述源IP地址对应的出端口,并判断查询到的所述出端口是否与所述入端口匹配;如果为松散URPF,则无需在路由转发表中查询IP地址对应的索引标识及索引,直接执行步骤S305~S307。
从上述实施例可以看出,相对于现有技术,上述实施例中提供的实现单播反向路径转发URPF检查的方法及装置,特别针对报文来源端口为“ECMP组”和/或“链路聚合组端口”的情况,能有效地防范网络中通过修改源地址而进行的恶意攻击行为的发生,拓展了传统URPF检查的适用场景。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的发明内容,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。