- 积分
- 267
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 注册时间
- 2014-2-28
- 最后登录
- 1970-1-1
- 阅读权限
- 30
- 听众
- 收听
初级工程师
![Rank: 3](https://cdn.hh010.com/static/image/common/star_level1.gif) ![Rank: 3](https://cdn.hh010.com/static/image/common/star_level1.gif) ![Rank: 3](https://cdn.hh010.com/static/image/common/star_level1.gif)
|
提到多对多、多对一的NAT(多个私网地址转换为多个或一个公网地址),就不能回避公网地址利用率的问题。 “华为防火墙一个公网IP突破了65535端口限制,理论上能够无限制进行NAT转换”这个结论在江湖上已经广为流传,接触过华为防火墙的兄弟可能早有耳闻,几天前提起源NAT也有兄弟跳起来指出。这正是华为防火墙十年前申请的一项专利技术的应用。
至此处,原谅强叔回忆下此专利发明人的大牛风采。几前路遇隐居的大牛下山,强叔敬仰地双手抱拳:“哥你已不在江湖多年,江湖中仍然流传着哥的传说。”——强叔还被称为小强之时,大牛已经名满防火墙。此时大牛仍然腼腆一笑,道声旧日小事飘然去也,唯强叔口水流了一地。之后,强叔又马不停蹄至襄阳,请教如今的NAT传人后,才算对此专利解读稍有眉目。围观兄弟且看,强叔接下来揭密华为防火墙NAT地址复用技术。
在《源NAT》一节,强叔提到:“防火墙在应用源NAT功能时就是从地址池中挑选出一个公网IP,然后对私网IP进行转换。挑选哪个公网IP是随机的,和配置时的顺序、IP大小等因素都没有关系。”这其实就是我们看到的外部招式,所谓内功心法不外露的。
那么在进行源NAT时,究竟是怎样从地址池中挑选出公网IP地址资源进行分配的呢?
请允许强叔引入Hash算法的概念,这应该是大家常听说的一种广泛应用于程序编写的方法。一句话解释,就是把一种任意长度的信息进行压缩映射,成为某一固定长度的信息。例如,把3000个私网IP映射成100个公网IP,也就是从地址池挑选出公网IP地址资源进行分配的过程,资料中也偶尔会提到的“基于源地址Hash”。
Hash的具体规则或者说算法是什么呢?很灵活,自行设定,但是根据要达成的目标和计算结果,可以优选。在这里,我们使用的算法也比较简单取模运算。
估计很多不写代码兄弟的数学都已经还给老师了,但是提起求余运算应该都知道,思路如下:
(本文转自华为技术论坛)
|
|