LinuxDev 板


LINE

各位好, 我想请教一个kernel module发送封包的问题 情境如下: 1. 一台linux主机有2张分属2个ip domain的网卡 2. 若从网卡1收到的封包, 在ip header後插上自订protocol header, 然後从网卡2送出 3. 若从网卡2收到的封包, 在ip header後移除自订protocol header, 然後从网卡1送出 我一开始把此机制实作在user space, 也就是开2个raw socket, 收到网卡1来的封包 就加上自订protocol header, 然後从网卡2 raw socket送出; 收到网卡2来的封包, 就移除自订protocol header, 然後从网卡1 raw socket送出 後来我认为把机制实作在kernel space, 应该可以加快处理速度, 所以写了1个 net filter module, 并hook在pre_routing的位置;当module收到ip封包(sk_buff), 检查 ip的protocol栏位, 如果是UDP/TCP, 就用alloc_skb创出一个新的sk_buff, memcpy原有 封包资料并在适当位置插上自订protocol header, 最後呼叫 NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, mskb, NULL, mskb->dst->dev, dst_output) 自网卡2送出 反之, 若module收到ip封包(sk_buff), 检查ip的protocol栏位发现其为自订protocol 的代表号, 就用alloc_skb创出一个新的sk_buff, 并将原有的sk_buff除了自订header 以外的所有资料作memcpy, 最後呼叫 NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, mskb, NULL, mskb->dst->dev, dst_output) 自网卡1送出, 而hook到的所有sk_buff, 因为被新的sk_buff替代, 所以我都用 NF_DROP处理 令我大失所望的是, kernel space传输机制不但没有加快处理速度, 反而还可能较 user space的机制稍慢, 请问各位高手可能问提出在哪呢?是因为我每hook到一个 封包就呼叫一次alloc_skb太花时间吗? 还是 NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, mskb, NULL, mskb->dst->dev, dst_output) 的效率不好呢? 我的环境CentOS 5.5, kernel version 2.6.18 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.96.101.33
1F:→ chucklee:通常skb->data到skb->head之间会预留一小块空间 09/24 14:25
2F:→ chucklee:如果自订的protocol header不大 可以直接把ip header 09/24 14:26
3F:→ chucklee:往前移 直接把你的protocol写进原本的skb里 09/24 14:26
4F:→ chucklee:为了安全起见 可以再去改skb的底层 把需要空间留下来 09/24 14:29
※ 编辑: Andyleee 来自: 220.135.253.175 (09/25 23:24)
5F:→ Andyleee:恩我也也有想到这方法, 但header有点大似乎塞不下XD 09/25 23:25
6F:→ Andyleee:但用netfilter加速的方式请问chuck大认为理论上ok吗? 09/25 23:26
7F:→ Andyleee:如果理论上会比较快, 我再设法寻找其变慢的原因 09/25 23:27
8F:→ chucklee:改一个参数可以把保留空间变大 SKB_PAD的样子 09/27 11:56
9F:→ chucklee:我没有弄netfilter的经验 不知道速度的影响大不大 09/27 11:59
10F:→ chucklee:之前做过类似的事 是在ip_input处理完直接丢去ip_output 09/27 12:03
11F:推 hn12303158:chucklee感谢你的经验~ 我再试试 09/27 14:25







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP