免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3691 | 回复: 11
打印 上一主题 下一主题

[内核模块] linux kernel实现http proxy功能 [复制链接]

论坛徽章:
7
IT运维版块每日发帖之星
日期:2016-05-27 06:20:00IT运维版块每日发帖之星
日期:2016-06-09 06:20:00操作系统版块每日发帖之星
日期:2016-06-12 06:20:00程序设计版块每日发帖之星
日期:2016-06-12 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00IT运维版块每日发帖之星
日期:2016-06-17 06:20:002015-2016NBA季后赛纪念章
日期:2016-06-28 17:42:27
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-15 11:11 |只看该作者 |倒序浏览
最近在想办法提升http proxy到性能, 发现在路由器设备上, 每秒平均请求经过代理相较于不经过代理会下降70%。测试过tinyproxy, privoxy, squid, 结果类似。
也找过相关论文看, 说是在kernel-level拷贝数据到application-level这样要经过4次,会导致性能下降,还有说select调用过多system call会导致CPU消耗过高。


所以我想是否可以在内核曾实现http proxy功能, 将需要处理到数据共享内存给应用层程序? 应用层对内容进行修改再由内核曾发送出去, 不知道这种思路是否可行?
小弟对tcp/ip协议栈没有那么熟悉, 还是烦请各位帮忙看看,有相关经验到分享下, 谢谢。

招聘 : c/c++研发
论坛徽章:
0
2 [报告]
发表于 2016-03-15 17:31 |只看该作者

回帖奖励 +1

提供两个思路
1、纯用户态,使用DPDK等技术,利用零拷贝直接在应用层处理proxy功能;缺点是需要自己实现或者移植用户态协议栈
2、纯内核态,利用netfilter hook截获数据包进行处理,缺点,降低内核的稳定性,容易把系统搞崩溃。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2016-03-15 17:38 |只看该作者

回帖奖励 +1

回复 1# qianguozheng

在标准 kernel 里面实现 http proxy 就是纯属折腾。作为一个 demo 演示可以,生产环境用起来各种问题。


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2016-03-15 17:39 |只看该作者

回帖奖励 +1

回复 1# qianguozheng

二楼介绍的 DPDK 应该是一个不错的解决方案。


   

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
5 [报告]
发表于 2016-03-16 11:59 |只看该作者

回帖奖励 +1

dpdk的user space stack目前有哪些开源的方案可供参考?

lwip?

论坛徽章:
7
IT运维版块每日发帖之星
日期:2016-05-27 06:20:00IT运维版块每日发帖之星
日期:2016-06-09 06:20:00操作系统版块每日发帖之星
日期:2016-06-12 06:20:00程序设计版块每日发帖之星
日期:2016-06-12 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00IT运维版块每日发帖之星
日期:2016-06-17 06:20:002015-2016NBA季后赛纪念章
日期:2016-06-28 17:42:27
6 [报告]
发表于 2016-03-31 11:28 |只看该作者
回复 2# jerryhua_cu


    感谢回复, 经过测试发现问题在防火墙上有syn_flood限制, 导致我们到请求进入路由应用层到数据限制在平局25个请求。

    至于大神介绍到DPDK我得仔细学习下,看看性能如何

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
7 [报告]
发表于 2016-03-31 19:45 |只看该作者

回帖奖励 +1

回复 6# qianguozheng

DPDK 是纯收发报文的,性能肯定没问题。

但是最大的问题是,他没有 TCP/IP 协议栈。你要用 DPDK,就要自己实现这一套逻辑。而且当前,应该没有开源出来比较好用的基于 DPDK 的协议栈。


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2016-03-31 19:58 |只看该作者
回复 1# qianguozheng

所以呢,当前要是搞个 DPI 之类的,简单的报文分析,DPDK 还是不错的。如果你要玩 TCP,甚至 HTTP,那么用 DPDK 难度还是很大的。


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
9 [报告]
发表于 2016-04-02 14:50 |只看该作者
Godbach 发表于 2016-03-31 19:58
回复 1# qianguozheng

所以呢,当前要是搞个 DPI 之类的,简单的报文分析,DPDK 还是不错的。如果你要玩 ...


没有配套的协议栈的话,这玩意儿只能用来做个control plane了?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2016-04-04 16:29 |只看该作者
回复 9# 帅绝人寰

应该是 data plane 吧。

要不要配套协议栈,关键看你要用它做什么。一些简单 DPI 的功能,应该用不上复杂的协议栈,只要自己能够维持一个 session table 就行了。snort 就是这样的例子。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP