恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14424|回复: 8

如何实现硬件nat,望有经验的坛友指教指教

[复制链接]
发表于 2016-10-31 11:34 | 显示全部楼层 |阅读模式
先介绍下情况:
一、
trunk 版本

板子:ar9334+qca8337交换芯片

编译的固件时以tp-wdr4300为模板
一切都调通后,lan口以及无线可用
想做硬件nat,不知如何下手,求有经验的老坛友帮助一二,不胜感激
我的恩山、我的无线 The best wifi forum is right here.
发表于 2016-10-31 12:03 来自手机 | 显示全部楼层
首先你要硬件支持
我的恩山、我的无线 The best wifi forum is right here.
发表于 2016-10-31 12:16 | 显示全部楼层
貌似8337n才支持……你可以洗洗睡了
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2016-10-31 13:57 | 显示全部楼层
我的就是8337N
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-1-24 17:13 | 显示全部楼层
硬件nat实现的原理是,控制软件与交换芯片IO交互,发命令让芯片在内部建立一个转发表项。然后软件上就可以撒手不管了。
openwrt无法实现,是为什么呢?
因为iptables本身就要实现很多功能,很多过滤功能都是基于包的,如果你为一个转发连接建立一个HWNAT表项,那么所有包都变得不可控。很多规则就都失效了。

另外,每种支持HWNAT交换芯片的通信接口定义可能都不一样。而且硬件上建立表项的个数都是有限的,通常都只有512个或者1024个。
因为资源有限,在当今P2P下载上传的今天,就不可能让所有连接都默认享受这种硬件加速待遇,因此一定是有一个衡量的算法来决定哪些连接投递到HWNAT表项里面。

其实我觉得如果完全抛弃iptable不用,实现起来还是比较简单的。但是如果没有了iptable,很多功能都将无法实现。或者你需要重写很多功能模块,就变得得不偿失了

为什么tplink等厂家不开源支持HWNAT的iptables呢?
我觉得可能是:
1代码技术含量高。
2代码兼容性渣,很难扩充功能,开源会被鄙视。

点评

感谢分享这么有技术含量的内容。 好像现在openwrt可以支持mtk系列cpu的HWNAT功能了? 另外想问一下,HWNAT纯粹是向cpu能力不足的妥协?有其他优点吗? 假设cpu能力足够,是否HWNAT可以取消? 我这么提问,是  详情 回复 发表于 2017-1-24 20:00
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-1-24 20:00 | 显示全部楼层
mengxp 发表于 2017-1-24 17:13
硬件nat实现的原理是,控制软件与交换芯片IO交互,发命令让芯片在内部建立一个转发表项。然后软件上就可以 ...

感谢分享这么有技术含量的内容。

好像现在openwrt可以支持mtk系列cpu的HWNAT功能了?

另外想问一下,HWNAT纯粹是向cpu能力不足的妥协?有其他优点吗?
假设cpu能力足够,是否HWNAT可以取消?
我这么提问,是想类比显卡硬解视频播放,即使现在cpu软解能力充足,还是喜欢硬解带来的画质体验。

谢谢!

点评

ar硬件nat没开源代码  详情 回复 发表于 2017-7-9 11:41
HWNAT建立转发表项之后,数据包就不经过cpu处理了所以速度非常快,开销就是重算checksum,也许还需要加一个ppp头。也就是比2层交换稍微慢一些。 他的优点就是快,转发不需要cpu干预。缺点就是我上面说的,没法增  详情 回复 发表于 2017-1-24 21:30
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-1-24 21:30 | 显示全部楼层
本帖最后由 mengxp 于 2017-1-24 21:31 编辑
ramboee 发表于 2017-1-24 20:00
感谢分享这么有技术含量的内容。

好像现在openwrt可以支持mtk系列cpu的HWNAT功能了?

HWNAT建立转发表项之后,数据包就不经过cpu处理了所以速度非常快,开销就是重算checksum,也许还需要加一个ppp头。也就是比2层交换稍微慢一些。

他的优点就是快,转发不需要cpu干预。缺点就是我上面说的,没法增加过滤条件。所有动作由交换芯片完成。

openwrt支不支持不知道。。没玩过mtk系列,如果支持肯定也是从mtk sdk里面抠出来的。。
cpu能力绝对是够的。现在什么百兆宽带 带起来也是绰绰有余。除非你是好几条百兆叠加啊,那就不一定了。估计得上双核cpu了。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-1-25 00:02 来自手机 | 显示全部楼层
马克。。。。。。。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-7-9 11:41 | 显示全部楼层
ramboee 发表于 2017-1-24 20:00
感谢分享这么有技术含量的内容。

好像现在openwrt可以支持mtk系列cpu的HWNAT功能了?

ar硬件nat没开源代码
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2019-12-11 09:25

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表