本技术涉及通信,具体而言,涉及一种napt表项管理方法、装置、电子设备和存储介质。
背景技术:
1、nat(network address translation,网络地址转换)的基本原理是仅在私网主机需要访问internet时才会分配到合法的公网地址,而在内部互联时则使用私网地址。当访问internet的报文经过nat网关时,nat网关会用一个合法的公网地址替换原报文中的源ip地址,并对这种转换进行记录。之后,当报文从internet侧返回时,nat网关查找原有的记录,将报文的目的地址再替换回原来的私网地址,并送回发出请求的主机。这样,在私网侧或公网侧设备看来,这个过程与普通的网络访问并没有任何的区别。
2、napt(network address port translation,网络地址端口转换)是基本地址转换的一种变形,它允许多个内部地址映射到同一个公有地址上,属于多对一的地址转换,它通过使用“ip地址+端口号”的形式进行转换,使多个私网用户可共用一个公网ip地址访问外网,因此是地址转换实现的主要形式。
3、现有技术使用三态内容寻址存储器(ternary content addressable memory,tcam)或随机存取存储器(static random-access memory,sram)存储napt表项,每一条napt都会占用一个tcam或sram的entry(信息条目)。每一个tcam或sram的entry均会索引一个nexthop(下一跳),用来获得报文的出口和编辑信息。由于napt中路由和端口号是一对多的关系,因此,对于多条ip相同但port(端口)不同的napt条目,会占用相同数量的完整的tcam或sram的entry。这种存储方式会造成大量的tcam或sram的资源浪费。
技术实现思路
1、本技术的目的包括,例如,提供了一种napt表项管理方法、装置、电子设备和存储介质,其能够有效降低路由地址所需的存储空间、增大存储芯片的规格,且实现报文的准确转发。
2、本技术的实施例可以这样实现:
3、第一方面,本技术提供一种napt表项管理方法,所述方法包括:
4、设置多级存储芯片以存储natp表的表项信息,所述表项信息为路由地址加端口号,所述表项信息被划分为三段连续且不重复的信息条目,该三段信息条目为第一级前缀、第二级前缀以及除所述第一级前缀和第二级前缀外剩余的第三部分,所述多级存储芯片从高到低依次为tcam和并列的基础sram组、辅助sram组,所述基础sram组包括两级基础sram,所述辅助sram组包括两级辅助sram;
5、通过所述两级基础sram存储所述第二级前缀和所述第三部分;
6、将所述第一级前缀存储至所述tcam中,其中,所述第一级前缀为所述第二级前缀的公共前缀,所述第二级前缀为所述第三部分的公共前缀;
7、针对所述基础sram,若所述基础sram中的第二级前缀被所述tcam中的第一级前缀所覆盖,将所述基础sram中的第二级前缀和所述tcam中的第一级前缀复制至与所述基础sram同一级的辅助sram中。
8、在可选的实施方式中,所述两级基础sram包括第一基础sram和第二基础sram;
9、所述通过所述两级基础sram存储所述第二级前缀和所述第三部分的步骤,包括:
10、通过所述第二基础sram的表项存储所述第三部分;
11、将所述第二级前缀存储至所述第一基础sram的表项中,并将所述第二级前缀的指针指向所述第二基础sram中存储所述第三部分的表项。
12、在可选的实施方式中,所述两级辅助sram包括第一辅助sram和第二辅助sram;
13、所述若基础sram中的第二级前缀被所述tcam中的第一级前缀所覆盖,将所述基础sram中的第二级前缀和所述tcam中的第一级前缀复制至与所述基础sram同一级的辅助sram中的步骤,包括:
14、在所述第一基础sram中的第二级前缀被所述tcam中的第一级前缀所覆盖时,将所述tcam中的第一级前缀和所述第一基础sram中的第二级前缀,并按所述第一级前缀在前、第二级前缀在后且两级前缀之间连续的方式,以复制至所述第一辅助sram的表项中;
15、将所述第一辅助sram的表项的索引信息赋值给所述tcam中的保存所述第一级前缀的表项的第二指针;
16、将所述第一基础sram中第二级前缀的指针所索引的保存在第二基础sram中的第三部分移动至所述第二辅助sram的表项中,并将所述第二辅助sram的表项的索引信息赋值给所述第一辅助sram的表项的指针。
17、在可选的实施方式中,所述方法还包括:
18、获取待转发报文,并获得所述待转发报文中的napt信息,所述napt信息为路由地址加端口号;
19、基于所述napt信息查找所述tcam,按照最长匹配原则查找到与所述napt信息具有最长匹配的第一级前缀;
20、基于所述第一级前缀的指向所述基础sram组的第一指针查找所述基础sram组,若所述基础sram组中具有与所述napt信息一致的信息条目,则基于所述基础sram组中的信息条目转发所述待转发报文,否则,基于所述第一级前缀的指向所述辅助sram组的第二指针查找所述辅助sram组,基于所述辅助sram组中的信息条目转发所述待转发报文。
21、在可选的实施方式中,所述基于所述第一级前缀的指向所述基础sram组的第一指针查找所述基础sram组,若所述基础sram组中具有与所述napt信息一致的信息条目,则基于所述基础sram组中的信息条目转发所述待转发报文的步骤,包括:
22、基于所述第一级前缀的指向所述第一基础sram的第一指针查找所述第一基础sram,利用所述napt信息的除去所述第一级前缀所覆盖而剩余的部分与所述第一基础sram中的第二级前缀进行匹配,确定最长匹配的第二级前缀,并获得该第二级前缀的指针;
23、基于所述第一基础sram的第二级前缀的指针查找所述第二基础sram,利用所述napt信息的除去所述第一级前缀、第二级前缀所覆盖而剩余的部分与所述第二基础sram中的第三部分进行匹配,确定最长匹配的第三部分,基于该第三部分的下一跳信息转发所述待转发报文。
24、在可选的实施方式中,所述基于所述第一级前缀的指向所述辅助sram组的第二指针查找所述辅助sram组,基于所述辅助sram组中的信息条目转发所述待转发报文的步骤,包括:
25、基于所述第一级前缀的指向所述第一辅助sram的第二指针查找所述第一辅助sram,利用所述napt信息与所述第一辅助sram中的信息条目进行匹配,确定最长匹配的信息条目,并获得该信息条目的指针;
26、基于所述第一辅助sram的信息条目的指针查找所述第二辅助sram,利用所述napt信息的除去所述第一辅助sram中的信息条目所覆盖而剩余的部分与所述第二辅助sram中的信息条目进行匹配,确定最长匹配的信息条目,基于该信息条目的下一跳信息转发所述待转发报文。
27、在可选的实施方式中,所述端口号为tcp或udp的协议端口号。
28、第二方面,本技术提供一种napt表项管理装置,所述装置包括:
29、设置模块,用于设置多级存储芯片以存储natp表的表项信息,所述表项信息为路由地址加端口号,所述表项信息被划分为三段连续且不重复的信息条目,该三段信息条目为第一级前缀、第二级前缀以及除所述第一级前缀和第二级前缀外剩余的第三部分,所述多级存储芯片从高到低依次为tcam和并列的基础sram组、辅助sram组,所述基础sram组包括两级基础sram,所述辅助sram组包括两级辅助sram;
30、第一存储模块,用于通过所述两级基础sram存储所述第二级前缀和所述第三部分;
31、第二存储模块,用于将所述第一级前缀存储至所述tcam中,其中,所述第一级前缀为所述第二级前缀的公共前缀,所述第二级前缀为所述第三部分的公共前缀;
32、第三存储模块,用于针对所述基础sram,若所述基础sram中的第二级前缀被所述tcam中的第一级前缀所覆盖,则将所述基础sram中的第二级前缀和所述tcam中的第一级前缀复制至与所述基础sram同一级的辅助sram中。
33、第三方面,本技术提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任意一项所述的方法。
34、第四方面,本技术提供一种计算机可读存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任意一项所述的方法。
35、本技术实施例的有益效果包括,例如:
36、本技术提供一种napt表项管理方法、装置、电子设备和存储介质,设置多级存储芯片以存储napt表的表项信息,包括tcam和并列的两级基础sram、两级辅助sram。tcam和两级基础sram按照从高到低的顺序依次存放表项信息的第一级前缀、第二级前缀和第三部分。如此,可以通过tcam及第一基础sram存储表项信息的第一级前缀和第二级前缀,而第二基础sram存放第三部分,从而有效降低表项信息所需的存储空间,在相同存储芯片资源的情况下,扩大napt的规格。此外,增设辅助sram,基于辅助sram中复制的表项信息以解决路由覆盖所造成的影响,避免存在表项信息被覆盖,而可能出现无法准确进行报文转发的情形。