发明内容
为解决上述技术问题,本发明提供一种基于设备标识计算的报文发送方法及装置以及一种基于设备标识计算的报文路径溯源方法及装置,能够在数据平面上完成对报文的准确追踪,同时降低报文中存储路径信息对存储空间和传输带宽的需求。
本发明第一方面提供一种基于设备标识计算的报文发送方法,应用于第一设备,所述方法包括:
接收上一跳设备发送的待转发报文;
从所述待转发报文中,获取所述上一跳设备对应的散列值标识;
将所述第一设备的设备标识与所述上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到所述第一设备对应的散列值标识;
在所述待转发报文中,以所述第一设备对应的散列值标识替换所述上一跳设备对应的散列值标识;
发送所述待转发报文。
优选地,所述将所述第一设备的设备标识与所述上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到所述第一设备对应的散列值标识,包括:
当所述上一跳设备对应的散列值标识为空时,将所述第一设备的设备标识进行哈希运算,得到所述第一设备对应的散列值标识;
当所述上一跳设备对应的散列值标识不为空时,将所述第一设备的设备标识与所述上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,得到所述第一设备对应的散列值标识。
本发明第二方面提供一种基于设备标识计算的报文路径溯源方法,应用于第二设备,所述方法包括:
获取待溯源报文中的散列值标识;
查找所述待溯源报文的源IP地址与目的IP地址之间的所有路径;
分别将每条所述路径中的第一跳设备的设备标识进行哈希运算,得到每条所述路径中的第一跳设备对应的散列值标识;
分别将每条所述路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条所述路径中的所有设备,直至运算得到每条所述路径中的最后一跳设备对应的散列值标识;
将所述待溯源报文的散列值标识分别与每条所述路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
优选地,所述查找所述待溯源报文的源IP地址与目的IP地址之间的所有路径,包括:
获取全网拓扑结构图;
根据所述全网拓扑结构图,查找所述待溯源报文的源IP地址与目的IP地址之间的所有路径。
优选地,所述获取全网拓扑结构图之后,所述根据所述全网拓扑结构图,查找所述待溯源报文的源IP地址与目的IP地址之间的所有路径之前,所述方法还包括:
在全网拓扑结构发生变化时,更新所述全网拓扑结构图。
本发明第三方面提供一种基于设备标识计算的报文发送装置,应用于第一设备,所述装置包括:
第一接收模块,用于接收上一跳设备发送的待转发报文;
第一获取模块,用于从所述待转发报文中,获取所述上一跳设备对应的散列值标识;
第一运算模块,用于将所述第一设备的设备标识与所述上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到所述第一设备对应的散列值标识;
替换模块,用于在所述待转发报文中,以所述第一设备对应的散列值标识替换所述上一跳设备对应的散列值标识;
发送模块,用于发送所述待转发报文。
优选地,所述第一运算模块包括:
第一运算单元,用于当所述上一跳设备对应的散列值标识为空时,将所述第一设备的设备标识进行哈希运算,得到所述第一设备对应的散列值标识;
第二运算单元,用于当所述上一跳设备对应的散列值标识不为空时,将所述第一设备的设备标识与所述上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,得到所述第一设备对应的散列值标识。
本发明第四方面提供一种基于设备标识计算的报文路径溯源装置,应用于第二设备,所述装置包括:
第二获取模块,用于获取待溯源报文中的散列值标识;
查找模块,用于查找所述待溯源报文的源IP地址与目的IP地址之间的所有路径;
第二运算模块,用于分别将每条所述路径中的第一跳设备的设备标识进行哈希运算,得到每条所述路径中的第一跳设备对应的散列值标识;
第三运算模块,用于分别将每条所述路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条所述路径中的所有设备,直至运算得到每条所述路径中的最后一跳设备对应的散列值标识;
匹配模块,用于将所述待溯源报文的散列值标识分别与每条所述路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
优选地,所述查找模块包括:
获取单元,用于获取全网拓扑结构图;
查找单元,用于根据所述全网拓扑结构图,查找所述待溯源报文的源IP地址与目的IP地址之间的所有路径。
优选地,所述查找模块还包括:
更新单元,用于在全网拓扑结构发生变化时,更新所述全网拓扑结构图。
应用本发明实施例,在转发报文时,对于每个接收到上一跳设备发送的待转发报文的报文转发设备(第一设备)来说,第一设备从待转发报文中获取上一跳设备对应的散列值标识;将第一设备的设备标识与上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识;在待转发报文中以第一设备对应的散列值标识替换上一跳设备对应的散列值标识;发送待转发报文。
这样,当报文接收设备(第二设备)需要对报文进行溯源时,第二设备获取待溯源报文中的散列值标识;查找待溯源报文的源IP地址与目的IP地址之间的所有路径;分别将每条路径中的第一跳设备的设备标识进行哈希运算,得到每条路径中的第一跳设备对应的散列值标识;分别将每条路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条路径中的所有设备,直至运算得到每条路径中的最后一跳设备对应的散列值标识;将待溯源报文的散列值标识分别与每条路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
由此可知,本发明实施例中,通过报文转发设备在报文中附加设备标识,可以保证在数据平面上完成对报文的准确追踪;同时,通过报文接收设备在本地利用散列算法进行标识计算完成报文路径溯源,可以降低报文中存储路径信息对存储空间和传输带宽的需求。
具体实施方式
本发明的核心是提供一种基于设备标识计算的报文发送方法及装置以及一种基于设备标识计算的报文路径溯源方法及装置,通过报文转发设备在报文中附加设备标识,可以保证在数据平面上完成对报文的准确追踪;同时,通过报文接收设备在本地利用散列算法进行标识计算完成报文路径溯源,可以降低报文中存储路径信息对存储空间和传输带宽的需求。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一方面提供一种基于设备标识计算的报文发送方法,应用于第一设备。其中,第一设备可以为基于路由协议的网络中的任意一台设备,如路由器、交换机、网关等,本实施例中以路由器为例进行说明。请参阅图1,该方法包括:
S110、接收上一跳设备发送的待转发报文。
如图2所示的网络结构中,假设设备R(报文发送方)生成了一个待转发报文,依次通过路由器A-路由器B-路由器C或路由器A-路由器D-路由器E-路由器C转发,最后由设备S(报文接收方)收到该报文,则第一设备可以是路由器A、路由器B、路由器C、路由器D、路由器E中的任意一台设备。当路由器A作为第一设备时,上一跳设备为报文发送方;当路由器B、路由器C、路由器D、路由器E中的任意一台设备作为第一设备时,上一跳设备为路由器。
S120、从待转发报文中,获取上一跳设备对应的散列值标识。
本发明实施例中,当基于路由协议的网络中的任意一台路由器设备接收到待转发报文时,均会在待转发报文中附加与设备标识相关联的散列值标识,由此,第一设备可以从待转发报文中获取到上一跳设备对应的散列值标识。
S130、将第一设备的设备标识与上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识。
本发明实施例中,第一设备运用散列算法对自身的设备标识与待转发报文中已有的散列值标识进行处理,得到一个新的散列值标识,由此可以保证设备标识信息的防伪造性。具体实施时,第一设备的设备标识可以是第一设备的IP地址。
S140、在待转发报文中,以第一设备对应的散列值标识替换上一跳设备对应的散列值标识。
本发明实施例中,由于IP报文的报文头的选项字段一般用来定义一些任选项,通常很少被使用,因此,路由器设备可以将自身对应的散列值标识附加到待转发报文的报文头的选项字段中。第一设备通过运算得到与自身对应的散列值标识后,将其附加到待转发报文的报文头的选项字段中,以替换已有的散列值标识。
S150、发送待转发报文。
本发明实施例中,第一设备将与自身对应的散列值标识附加到待转发报文中后,将其发送出去,下一跳路由设备接收到该报文后同样将与自身对应的散列值标识附加到待转发报文中,直至由报文接收方收到附加了最后一跳路由设备对应的散列值标识的报文。
在上述方案中,当第一设备是待转发报文的第一跳路由器设备时,其上一跳设备是报文发送方,待转发报文中的上一跳设备对应的散列值标识为空;而当第一设备不是待转发报文的第一跳路由器设备时,其上一跳设备是路由器设备,待转发报文中已存在上一跳设备对应的散列值标识。两种情况下,步骤S130执行时有所不同。下面,通过实施例进行具体说明。
步骤S130包括:
S1301、当上一跳设备对应的散列值标识为空时,将第一设备的设备标识进行哈希运算,得到第一设备对应的散列值标识。
如图2所示的网络结构中,当路由器A作为第一设备时,上一跳设备为报文发送方,待转发报文中的上一跳设备对应的散列值标识为空,此时,路由器A直接将自身的IP地址进行哈希运算,得到路由器A对应的散列值标识,并将其附加到待转发报文的报文头的选项字段中。具体实施时,可以使用MD5散列函数计算路由器A自身的IP地址,得到一个128比特的散列值,此时,需要先将待转发报文的报文头的首部长度字段改为36字节,然后将得到的128比特的散列值附加到待转发报文的报文头的选项字段中。
S1302、当上一跳设备对应的散列值标识不为空时,将第一设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识。
如图2所示的网络结构中,当路由器B、路由器C、路由器D、路由器E中的任意一台设备作为第一设备时,上一跳设备为路由器设备,待转发报文中已存在上一跳设备对应的散列值标识。假设路由器B作为第一设备,则路由器B将自身的IP地址与设备A对应的散列值标识进行异或运算,然后使用MD5散列函数计算异或运算后的值,得到一个128比特的散列值,将其附加到待转发报文的报文头的选项字段中,以替换设备A对应的散列值标识。
具体实施时,第一设备接收到待转发报文后,可以查看待转发报文的报文头的选项字段是否为空,若为空,则证明自身是该报文的第一跳路由器;若不为空,则证明自身不是该报文的第一跳路由器。
应用本发明以上实施例,在转发报文时,对于每个接收到上一跳设备发送的待转发报文的报文转发设备(第一设备)来说,第一设备从待转发报文中获取上一跳设备对应的散列值标识;将第一设备的设备标识与上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识;在待转发报文中以第一设备对应的散列值标识替换上一跳设备对应的散列值标识;发送待转发报文。
这样,当报文接收设备(第二设备)需要对报文进行溯源时,第二设备获取待溯源报文中的散列值标识;查找待溯源报文的源IP地址与目的IP地址之间的所有路径;分别将每条路径中的第一跳设备的设备标识进行哈希运算,得到每条路径中的第一跳设备对应的散列值标识;分别将每条路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条路径中的所有设备,直至运算得到每条路径中的最后一跳设备对应的散列值标识;将待溯源报文的散列值标识分别与每条路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
由此可知,本发明实施例中,通过报文转发设备在报文中附加设备标识,可以保证在数据平面上完成对报文的准确追踪;同时,通过报文接收设备在本地利用散列算法进行标识计算完成报文路径溯源,可以降低报文中存储路径信息对存储空间和传输带宽的需求。
本发明实施例还提供一种基于设备标识计算的报文路径溯源方法,应用于第二设备,其中,第二设备为报文接收方设备。请参阅图3,该方法包括:
S210、获取待溯源报文中的散列值标识。
如上所述,待溯源报文中已存在最后一跳路由设备对应的散列值标识,报文接收方设备接收到报文后,如需要对报文进行溯源时,则可以从该报文的报文头的选项字段中获取散列值标识。
S220、查找待溯源报文的源IP地址与目的IP地址之间的所有路径。
如图2所示的网络结构中,待溯源报文的报文头中包含源IP地址和目的IP地址,假设待溯源报文由设备R(报文发送方)生成,并由设备S(报文接收方)收到该报文,则待溯源报文的源IP地址与目的IP地址之间的所有路径包括:路径1“路由器A-路由器B-路由器C”和路径2“路由器A-路由器D-路由器E-路由器C”,其中,每条路径均包括所有路由器设备的IP地址和各个路由器设备经过的顺序。
S230、分别将每条路径中的第一跳设备的设备标识进行哈希运算,得到每条路径中的第一跳设备对应的散列值标识。
如图2所示的网络结构中,设备S使用MD5散列函数计算路由器A的IP地址,得到路由器A对应的散列值a。
S240、分别将每条路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条路径中的所有设备,直至运算得到每条路径中的最后一跳设备对应的散列值标识。
可以理解的是,上述步骤S240实际可以包括:
S2401、分别将每条路径中的第一跳设备的下一跳设备的设备标识与每条路径中的第一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,得到每条路径中第一跳设备的下一跳设备对应的散列值标识。
S2402、分别将每条路径中下一跳设备的再下一跳设备的设备标识与每条路径中的下一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,得到每条路径中下一跳设备的再下一跳设备对应的散列值标识。
S2403、不断重复上一步,直至运算得到每条路径中的最后一跳设备对应的散列值标识。
如图2所示的网络结构中,针对路径1“路由器A-路由器B-路由器C”,设备S将路由器B的IP地址与散列值a进行异或运算,然后使用MD5散列函数计算异或运算后的值,得到路由器B对应的散列值b;再将路由器C的IP地址与散列值b进行异或运算,然后使用MD5散列函数计算异或运算后的值,得到路径1中路由器C对应的散列值c1。针对路径2“路由器A-路由器D-路由器E-路由器C”,设备S将路由器D的IP地址与散列值a进行异或运算,然后使用MD5散列函数计算异或运算后的值,得到路由器D对应的散列值d;再将路由器E的IP地址与散列值d进行异或运算,然后使用MD5散列函数计算异或运算后的值,得到路由器E对应的散列值e,最后将路由器C的IP地址与散列值e进行异或运算,然后使用MD5散列函数计算异或运算后的值,得到路径2中路由器C对应的散列值c2。
可以理解的是,上述运算均是在设备S中完成,即由本地完成标识计算,无需占用网络带宽,由此可以减轻路由器的性能负担。
S250、将待溯源报文的散列值标识分别与每条路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
需要说明的是,当待溯源报文的散列值标识与某条路径中的最后一跳设备对应的散列值标识匹配成功时,表示该条路径即为该待溯源报文的实际路径,实际路径的源头即为该待溯源报文的第一跳路由器。
如图2所示的网络结构中,若待溯源报文的散列值标识与路径1中路由器C对应的散列值c1匹配成功,则表示路径1为该待溯源报文的实际路径;若待溯源报文的散列值标识与路径2中路由器C对应的散列值c2匹配成功,则表示路径2为该待溯源报文的实际路径。
作为本发明一种具体的实施方式,上述实施例中,步骤S220包括:
获取全网拓扑结构图;
根据全网拓扑结构图,查找待溯源报文的源IP地址与目的IP地址之间的所有路径。
如图2所示的网络结构中,网络管理员维持全网拓扑结构图,包括网络中所有路由器和终端的信息(包括IP地址等)和状态,设备S可以从网络管理员处获取全网拓扑结构图,并查询待溯源报文的源IP地址与目的IP地址之间的所有可能的路径,其中,每条路径均包括所有路由器设备的IP地址和各个路由器设备经过的顺序。
可以理解的是,由于上述用于匹配的标识根据全网拓扑结构图而来,而全网拓扑结构图来源于网络管理员,若网络攻击者想要篡改报文的路径信息,需要了解全网的路由拓扑图,这将花费极大的代价,因此本发明实施例在一定程度上具备防止报文路径伪造的能力。
进一步地,上述实施例中,步骤S220还包括:
在全网拓扑结构发生变化时,更新全网拓扑结构图。
本发明实施例中,每当有路由链接的建立或删除、终端的加入或退出时,网络管理员处的全网拓扑结构图可以在控制平面上动态更新,设备S可以从网络管理员处获取更新后的全网拓扑结构图。
应用本发明以上实施例,在转发报文时,对于每个接收到上一跳设备发送的待转发报文的报文转发设备(第一设备)来说,第一设备从待转发报文中获取上一跳设备对应的散列值标识;将第一设备的设备标识与上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识;在待转发报文中以第一设备对应的散列值标识替换上一跳设备对应的散列值标识;发送待转发报文。
这样,当报文接收设备(第二设备)需要对报文进行溯源时,第二设备获取待溯源报文中的散列值标识;查找待溯源报文的源IP地址与目的IP地址之间的所有路径;分别将每条路径中的第一跳设备的设备标识进行哈希运算,得到每条路径中的第一跳设备对应的散列值标识;分别将每条路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条路径中的所有设备,直至运算得到每条路径中的最后一跳设备对应的散列值标识;将待溯源报文的散列值标识分别与每条路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
由此可知,本发明实施例中,通过报文转发设备在报文中附加设备标识,可以保证在数据平面上完成对报文的准确追踪;同时,通过报文接收设备在本地利用散列算法进行标识计算完成报文路径溯源,可以降低报文中存储路径信息对存储空间和传输带宽的需求。
上述实施例介绍了基于设备标识计算的报文发送方法及基于设备标识计算的报文路径溯源方法的流程,下面对分别用于实现上述方法的基于设备标识计算的报文发送装置及基于设备标识计算的报文路径溯源装置进行说明。
本发明第三方面提供一种基于设备标识计算的报文发送装置,应用于第一设备,请参阅图4,该装置包括:
第一接收模块310,用于接收上一跳设备发送的待转发报文;
第一获取模块320,用于从待转发报文中,获取上一跳设备对应的散列值标识;
第一运算模块330,用于将第一设备的设备标识与上一跳设备对应的散列值标识进行逻辑运算,并对逻辑运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识;
替换模块340,用于在待转发报文中,以第一设备对应的散列值标识替换上一跳设备对应的散列值标识;
发送模块350,用于发送待转发报文。
可选的,上述实施例中,第一运算模块330包括:
第一运算单元,用于当上一跳设备对应的散列值标识为空时,将第一设备的设备标识进行哈希运算,得到第一设备对应的散列值标识;
第二运算单元,用于当上一跳设备对应的散列值标识不为空时,将第一设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,得到第一设备对应的散列值标识。
本发明第四方面提供一种基于设备标识计算的报文路径溯源装置,应用于第二设备,请参阅图5,该装置包括:
第二获取模块410,用于获取待溯源报文中的散列值标识;
查找模块420,用于查找待溯源报文的源IP地址与目的IP地址之间的所有路径;
第二运算模块430,用于分别将每条路径中的第一跳设备的设备标识进行哈希运算,得到每条路径中的第一跳设备对应的散列值标识;
第三运算模块440,用于分别将每条路径中除第一跳设备以外的其他设备的设备标识与上一跳设备对应的散列值标识进行异或运算,并对异或运算后的运算结果进行哈希运算,依次遍历每条路径中的所有设备,直至运算得到每条路径中的最后一跳设备对应的散列值标识;
匹配模块450,用于将待溯源报文的散列值标识分别与每条路径中的最后一跳设备对应的散列值标识进行匹配,得到匹配结果。
可选的,上述实施例中,查找模块420包括:
获取单元,用于获取全网拓扑结构图;
查找单元,用于根据全网拓扑结构图,查找待溯源报文的源IP地址与目的IP地址之间的所有路径。
可选的,上述实施例中,查找模块420还包括:
更新单元,用于在全网拓扑结构发生变化时,更新全网拓扑结构图。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。