[发明专利]用于多核转发网络地址端口转换的端口分配方法和装置有效
申请号: | 201510980638.0 | 申请日: | 2015-12-23 |
公开(公告)号: | CN105450792B | 公开(公告)日: | 2018-09-14 |
发明(设计)人: | 刘健男 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | H04L29/12 | 分类号: | H04L29/12 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 张大威 |
地址: | 110168 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 多核 转发 网络地址 端口 转换 分配 方法 装置 | ||
1.一种用于多核转发NAPT的端口分配方法,其特征在于,包括:
接收到报文后,在CPU独立占用的独立资源池中查找是否存在未分配的端口号;
如果所述独立资源池中存在未分配的端口号,则在所述未分配的端口号中确定匹配的端口号,并将所述匹配的端口号分配给所述报文;
如果所述独立资源池中不存在未分配的端口号,则在多核共有的共有资源池中查找是否存在未分配的端口号;
如果所述共有资源池中存在未分配的端口号,则在所述未分配的端口号中确定匹配的端口号,并将所述匹配的端口号分配给所述报文;
如果所述共有资源池中不存在未分配的端口号,选择可用CPU,并将所述报文转发给所述可用CPU进行处理;
所述在所述未分配的端口号中确定匹配的端口号,包括:
获取上次分配的端口号,确定与所述上次分配的端口号相邻的下一个端口号;
如果所述下一个端口号未被分配,则将所述下一个端口号确定为匹配的端口号;
如果所述下一个端口号已被分配,选择下一个局部域,判断是否在所述局部域中分配端口号,如果判断出在所述局部域中分配端口号,则在所述局部域中确定匹配的端口号。
2.根据权利要求1所述的方法,其特征在于,所述判断是否在所述局部域中分配端口号,包括:
获取所述局部域对应的位图,所述位图表示的状态包括:所述局部域内所有端口号处于待分配状态、所述局部域内所有端口号处于待释放状态、所述局部域内部分端口号处于待分配状态且部分端口号处于待释放状态;
如果所述位图表示的状态是所述局部域内所有端口号处于待分配状态,或者,所述局部域内部分端口号处于待分配状态且部分端口号处于待释放状态,则判断出在所述局部域中分配端口号。
3.根据权利要求1所述的方法,其特征在于,在将所述匹配的端口号分配给所述报文之后,所述方法还包括:
记录端口使用情况;
所述选择可用CPU,包括:
根据记录的端口使用情况计算每个CPU的权重值;
根据每个CPU的权重值,选择可用CPU。
4.根据权利要求1所述的方法,其特征在于,所述将所述报文转发给所述可用CPU进行处理,包括:
将所述报文放入所述可用CPU对应的核间队列中,以便所述可用CPU从所述核间队列中获取所述报文。
5.根据权利要求1-4任一项所述的方法,其特征在于,多核中每个CPU对应的独立资源池中包括的端口数是相同的。
6.根据权利要求1-4任一项所述的方法,其特征在于,在独立资源池中处理时,采用无锁方式,在共有资源池中处理时采用加锁方式。
7.一种用于多核转发NAPT的端口分配装置,其特征在于,包括:
第一查找模块,用于接收到报文后,在CPU独立占用的独立资源池中查找是否存在未分配的端口号;
第一分配模块,用于在所述独立资源池中存在未分配的端口号时,在所述未分配的端口号中确定匹配的端口号,并将所述匹配的端口号分配给所述报文;
第二查找模块,用于在所述独立资源池中不存在未分配的端口号时,在多核共有的共有资源池中查找是否存在未分配的端口号;
第二分配模块,用于在所述共有资源池中存在未分配的端口号时,在所述未分配的端口号中确定匹配的端口号,并将所述匹配的端口号分配给所述报文;
转发模块,用于在所述共有资源池中不存在未分配的端口号时,选择可用CPU,并将所述报文转发给所述可用CPU进行处理;
所述第一分配模块或所述第二分配模块用于在所述未分配的端口号中确定匹配的端口号,包括:
获取上次分配的端口号,确定与所述上次分配的端口号相邻的下一个端口号;
如果所述下一个端口号未被分配,则将所述下一个端口号确定为匹配的端口号;
如果所述下一个端口号已被分配,选择下一个局部域,判断是否在所述局部域中分配端口号,如果判断出在所述局部域中分配端口号,则在所述局部域中确定匹配的端口号。
8.根据权利要求7所述的装置,其特征在于,还包括:
记录模块,用于记录端口使用情况;
所述转发模块用于选择可用CPU,包括:
根据记录的端口使用情况计算每个CPU的权重值;以及,根据每个CPU的权重值,选择可用CPU。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510980638.0/1.html,转载请声明来源钻瓜专利网。