互联网域内源地址验证表的分布式生成方法和装置
文献发布时间:2023-06-19 11:17:41
技术领域
本发明涉及网络安全技术领域,尤其涉及一种互联网域内源地址验证表的分布式生成方法和装置。
背景技术
域内源地址验证表包含域内源地址和分组入接口的映射关系。通过查询本地源地址验证表,域内路由器可以根据分组源地址来验证分组入接口的有效性。因此,域内源地址验证表可以用于检测域内源地址伪造,创建组播生成树和验证网络正确性等方面。
目前最常用的源地址验证方法uRPF,是通过反向查找本地转发表代替创建独立的源地址验证表。但由于域内路由策略的复杂性,域内路由不对称会导致验证状态和实际路由状态不一致,这将带来严重的错误判断。SAVE虽然保证了源地址验证的正确性,但是存在高昂的通信开销,给域内网络带来极大的压力。本发明的目的在于通过域内邻居路由器之间传播探测报文的形式,在路由器上分布式地生成源地址验证表,在任意域内路由架构下实现验证的正确性和协议通信的低开销。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种互联网域内源地址验证表的分布式生成方法,以实现通过邻居路由器之间传播DPP报文的形式,在路由器上分布式地生成源地址验证表,在任意域内路由架构下实现验证的正确性和协议通信的低开销。
本发明的第二个目的在于提出一种互联网域内源地址验证表的分布式生成装置。
本发明的第三个目的在于提出一种计算机设备。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种互联网域内源地址验证表的分布式生成方法,包括:域内路由器根据本地转发表,生成原始DPP报文;
所述域内路由器将所述原始DPP报文发送给邻居路由器;
所述邻居路由器根据接收到的所述原始DPP报文生成源地址验证表,并接力发送DPP报文。
为达上述目的,本发明第二方面实施例提出了一种互联网域内源地址验证表的分布式生成装置,包括:生成模块,用于域内路由器根据本地转发表,生成原始DPP报文;
发送模块,用于所述域内路由器将所述原始DPP报文发送给邻居路由器;
转发模块,用于所述邻居路由器根据接收到的所述DPP报文生成源地址验证表,并接力发送DPP报文。
在本发明的一个实施例中,还包括:
所述域内路由器生成并在自治域内广播SPA报文,其中,所述SPA报文中携带本地的源前缀和源路由器ID;
接收到所述SPA报文的路由器收到所述SPA报文后,在本地保存所述源前缀和源路由器ID的对应关系;
当所述源前缀发生变化时,触发广播新一轮的SPA报文的发送。
在本发明的一个实施例中,还包括:
每个接收到所述DPP报文的路由器,提取报文有效载荷中的源路由器ID字段;
所述路由器根据所述本地保存所述源前缀和源路由器ID的对应关系,确定与所述源路由器ID字段对应的源前缀;
如果所述DPP报文的序列号大于本地序列号,则所述路由器删除与所述源前缀相关的旧源地址验证表,以生成与所述DPP报文对应的源地址验证表。
在本发明的一个实施例中,还包括:
当所述路由器接收到分组时,所述路由器根据本地的所述源地址验证表,对分组的源地址进行匹配;
如果分组的入接口和其源地址在源地址验证表中匹配的接口一致,所述路由器对分组进行正常转发。
在本发明的一个实施例中,还包括:
如果分组的入接口和其源地址在源地址验证表中匹配的接口不一致,确定所述分组进行了源地址伪造,丢弃分组。
在本发明的一个实施例中,所述原始DPP报文的源地址为所述域内路由器的单播地址,目的地址为所述邻居路由器的单播地址。
在本发明的一个实施例中,所述接力发送DPP报文,包括:
所述路由器提取收到的DPP报文有效载荷中的目的前缀内容;
所述路由器对所述目的前缀内容中所有IP前缀,查找本地转发表,若获知转发接口为域内接口,则生成新的DPP报文,并通告给所述路由器的转发接口对应的邻居路由器。
为达上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述第一方面实施例所述的互联网域内源地址验证表的分布式生成方法。
为了实现上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面实施例所述的互联网域内源地址验证表的分布式生成方法。
本发明的实施例,至少具有如下的技术效果:
通过邻居路由器之间传播DPP报文的形式,在路由器上分布式地生成源地址验证表,在任意域内路由架构下实现验证的正确性和协议通信的低开销。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种互联网域内源地址验证表的分布式生成方法的流程示意图;
图2为本发明实施例所提供的一种源地址验证表格式示意图;
图3为本发明实施例所提供的一种DPP报文格式示意图;
图4(a)为本发明实施例所提供的一种路由器A生成并发送原始DPP报文的场景示意图;
图4(b)为本发明实施例所提供的一种路由器B处理来自A的DPP报文的场景示意图;
图4(c)为本发明实施例所提供的一种路由器D处理来自B的DPP报文的场景示意图;以及
图5为本发明实施例所提供的一种互联网域内源地址验证表的分布式生成装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明的目的在于设计一种互联网域内源地址验证表的分布式生成协议,通过域内邻居路由器之间传播探测报文的形式,在路由器上分布式地生成源地址验证表,在任意域内路由架构下实现验证的正确性和协议通信的低开销。
本发明所提出的方法的思路在于:考虑到在路由不对称场景下,仅根据路由器本地转发表信息生成的验证信息存在错误判断的问题。不同于传统的源地址验证方法,我们提出一种互联网域内源地址验证表的分布式生成协议,每台路由器通过向邻居路由器发送探测报文的方式,主动探测源前缀的合法路径,沿途路由器根据收到探测报文的入接口自动生成源地址验证表。我们称这种源地址验证表生成方案为互联网域内源地址验证表的分布式生成协议。
下面参考附图描述本发明实施例的互联网域内源地址验证表的分布式生成方法和装置。
图1为本发明实施例所提供的一种互联网域内源地址验证表的分布式生成方法的流程示意图。
如图1所示,该互联网域内源地址验证表的分布式生成方法包括以下步骤:
步骤101,域内路由器根据本地转发表,生成原始DPP报文。
本实施例中,
域内路由器通过向邻居路由器发送DPP报文的方式,主动探测源前缀合法路径,邻居路由器根据收到DPP报文的入接口自动生成或更新源地址验证表,并对DPP报文进行接力传递。如图2所示,源地址验证表的表项由三部分组成:源前缀、入接口和序列号。
在本实施例中,域内路由器根据本地转发表,生成原始DPP报文,发送给邻居路由器。原始DPP报文的源地址为该路由器的单播地址,目的地址为邻居路由器的单播地址。原始DPP报文的有效载荷包含源路由器ID、目的前缀、序列号和路径信息四部分。源路由器ID字段为源路由器的IP地址,目的前缀字段为源路由器转发表中下一跳为该邻居路由器的所有IP前缀,序列号字段为源路由器的本地更新序列号,路径信息字段中添加本地路由器ID。
步骤102,域内路由器将原始DPP报文发送给邻居路由器。
步骤103,邻居路由器根据接收到的原始DPP报文生成源地址验证表,并接力发送DPP报文。
在本实施例中,路由器处理DPP报文
第一步,生成源地址验证表。路由器提取报文有效载荷中的源路由器ID字段,根据之前收到的SPA报文确定对应的源前缀。如果DPP报文的序列号大于本地序列号,路由器需要先删除与源前缀相关的旧源地址验证表项。路由器根据收到的DPP报文生成源地址验证表项,源地址验证表的表项中源前缀即源路由器ID对应的源前缀,入接口即接收到该DPP报文的路由器接口,序列号即该DPP报文的序列号。
第二步,接力发送DPP报文。路由器提取DPP报文有效载荷中的目的前缀内容,对其中所有IP前缀,查找本地转发表,若转发接口为域内接口,则生成新的DPP报文,通告给邻居路由器。接力发送的DPP报文的源地址为该路由器单播地址,目的地址为该域内转发接口对应的邻居路由器的单播地址。接力发送的DPP报文的有效载荷同样包含源路由器ID、目的前缀、序列号和路径信息四部分。源路由器ID为收到的DPP报文中的源路由器ID,目的前缀为收到的DPP报文的目的前缀字段中,转发接口为该域内接口的所有IP前缀,序列号为收到的DPP报文中的序列号,路径信息在收到的DPP报文的路径信息基础上添加本地路由器ID。
在本发明的一个实施例中,互联网域内源地址验证表的分布式生成协议包含两类协议报文:SPA(source prefix advertisement)报文和DPP(destination prefixprobing)报文。SPA报文用于广播路由器源前缀和路由器ID,DPP报文用于生成和更新源地址验证表。
SPA报文的生成和处理:
(a)路由器生成并发送原始的SPA报文
路由器将本地源前缀和本地路由器ID广播到自治域内
(b)路由器处理收到的SPA报文
路由器收到SPA报文后,本地保存源前缀和源路由器ID的对应关系。
因而,进一步的,在本发明的实施例中,互联网域内源地址验证表的分布式生成协议既支持周期性更新也支持触发更新。路由器周期性的广播新一轮的SPA报文和生成新一轮的DPP报文,新一轮DPP报文的序列号相应增加。当路由器源前缀发生变化时,触发广播新一轮的SPA报文。当路由器的转发表发生变化时,触发生成新一轮的DPP报文,序列号相应增加。当路由器收到序列号大于本地序列号的DPP报文时,路由器也会触发生成新一轮的DPP报文,并将本地序列号与收到的DPP报文的序列号保持一致。
DPP报文的路径信息字段用于检测路由环路,即当路由器收到一个DPP报文,如果本地路由器ID已经被包含在路径信息字段内,表示存在路由环路。
最终域内每台路由器都可以学习到所有前缀的正确入接口信息,并在本地生成一个源地址验证表。当路由器接收到分组时,路由器根据本地的源地址验证表,对分组的源地址进行匹配。如果分组的入接口和其源地址在源地址验证表中匹配的接口一致,就对分组进行正常转发,否则认为该分组进行了源地址伪造。
互联网域内源地址验证表的分布式生成协议用于在域内每台路由器上分布式生成源地址验证表,路由器利用源地址验证表可以准确的判断分组来源是否可靠,对分组的源地址进行真实性验证,保证了域内的源地址安全互访。除此之外,源地址验证表还可以用于生成高效率的组播转发树,验证网络正确性等方面。互联网域内源地址验证表的分布式生成协议具有协议通信开销低,不存在假阳性判断,支持任意路由架构的优点。
举例而言,参照图4(a),示出了路由器A生成并发送原始DPP报文的过程,参照图4(b),示出了路由器B处理来自A的DPP报文的过程,参照图4(c),示出了路由器D处理来自B的DPP报文的过程。
综上,本发明实施例的互联网域内源地址验证表的分布式生成方法,具有协议通信开销低,不存在假阳性判断,支持任意路由架构的优点。考虑到在路由不对称场景下,仅根据路由器本地转发表信息生成的验证信息存在错误判断的问题。不同于传统的源地址验证方法,提出一种互联网域内源地址验证表的分布式生成协议,协议框架主要包含两部分,路由器生成并发送原始的探测报文和路由器处理探测报文。每台路由器通过向邻居路由器发送探测报文的方式,主动探测源前缀的合法路径,沿途路由器根据收到探测报文的入接口自动生成源地址验证表。域内源地址验证表可以用于检测域内源地址伪造,创建组播生成树和验证网络正确性等方面。
为了实现上述实施例,本发明还提出一种互联网域内源地址验证表的分布式生成装置。
图5为本发明实施例提供的一种互联网域内源地址验证表的分布式生成装置的结构示意图。
如图5所示,该互联网域内源地址验证表的分布式生成装置包括:生成模块510、发送模块520、转发模块530。
其中,生成模块510,用于域内路由器根据本地转发表,生成原始DPP报文;
发送模块520,用于所述域内路由器将所述原始DPP报文发送给邻居路由器;
转发模块530,用于邻居路由器根据接收到的所述原始DPP报文生成源地址验证表,并接力发送DPP报文。
需要说明的是,前述对互联网域内源地址验证表的分布式生成方法实施例的解释说明也适用于该实施例的互联网域内源地址验证表的分布式生成装置,此处不再赘述。
为了实现上述实施例,本发明还提出一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述实施例所描述的互联网域内源地址验证表的分布式生成方法。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例所描述的互联网域内源地址验证表的分布式生成方法。
为了实现上述实施例,本发明还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,实现如上述实施例所描述的互联网域内源地址验证表的分布式生成方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
- 互联网域内源地址验证表的分布式生成方法和装置
- 互联网域间源地址验证表的分布式生成方法和装置