免费注册 查看新帖 |

Chinaunix

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

netfilter修改报文和时间片及滑动窗口的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-19 13:50 |只看该作者 |倒序浏览
之前发过帖子询问这个问题:
大神牛人救救:LOCAL_IN截获数据重新构造数据包的问题
http://bbs.chinaunix.net/forum.p ... mp;fromuid=26790858

今天遇到一个高手,简单描述了我的现象和处理,他问我有没有考虑过时间片和滑动窗口,我说没有。
我再细问,他让我自己看看。我想了半天,也不知道需要从哪方面下手。

我说下我的程序简单的处理流程。
1.数据包在LOCAL_OUT节点截获数据,判断数据长度是否要分片,分片后的数据包或无需分片的数据包skb尾部扩充20字节的空间,然后将数据包扔进待加密数据队列,返回NF_STOLEN
2.数据包在LOCAL_IN节点截获数据skb,将数据包扔进待加密数据队列,返回NF_STOLEN
3. 一个线程将待加密数据队列代码写入加密卡
4.一个线程从加密卡读取加密后数据:
  a.如果是接收的数据包,将数据写入skb->data,skb_trim之前扩充的20字节,调用netif_rx_ni(skb)重新接收数据
  b.如果是发送的数据包,将数据写入skb->data+20的位置,重新构造写的IP头(包括地址和协议号),通过ip_local_out发送出去


我想问在我处理的过程中,需要考虑滑动窗口吗?因为我的操作都在IP层做的。如果考虑,在哪个点需要设置呢?

时间片我理解,因为我对skb进行了操作。怎么计算出这个合理的时间呢,怎么设置这个合理的时间呢?

希望高手指点

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
2 [报告]
发表于 2012-03-20 08:13 |只看该作者
滑动窗口用于流程控制,控制输出packet的速度,是不是? 如果要证实你的问题是否由于发送packet太快而引起的,能否在drop数据包之前,加一点延时, 如果delay能解决问题,再考虑sliding window

论坛徽章:
0
3 [报告]
发表于 2012-03-20 08:53 |只看该作者
回复 2# linuxfellow
DROP?关键我不DROP啊 我都是NF_STOLEN

   

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2012-03-20 09:16 |只看该作者
iPowerX 发表于 2012-03-20 08:53
回复 2# linuxfellow
DROP?关键我不DROP啊 我都是NF_STOLEN


不用drop,你本身就是stolen原包,重新构造新包。如果对传输速率没有什么影响,滑动窗口是tcp层的概念,我觉得没必要在IP层来做这些东西。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
5 [报告]
发表于 2012-03-20 09:34 |只看该作者
回复 3# iPowerX
就是你放回正常协议栈发送之前先延时一点,不要发送太快。


   

论坛徽章:
0
6 [报告]
发表于 2012-03-20 13:07 |只看该作者
dreamice 发表于 2012-03-20 09:16
不用drop,你本身就是stolen原包,重新构造新包。如果对传输速率没有什么影响,滑动窗口是tcp层的概念, ...

我也觉得应该与tcp层的滑动窗口无关的。
原因是:1,对于进来的包,我重新还原后是重新接收的 netif_rx_ni ,我认为它会顺着数据流把SKB的各个参数填充完整。(例如TCP需要的)
           不知道这么想对吗?
        2,对应出去的包,我是重新换了个协议,然后顺着数据流在LOCL_OUT节点出去的。应该也无关吧?

-------------------------------
对于时间片,好比整个接收报文的处理,有个时间上限,而由于我的原因,造成它接收到当中已经超时了,而造成异常。按照他的说法,内核设计很多东西,为什么就是10ms,是精确计算过的。为什么要有调整时间片的函数,就是为了适应其他的变化。
----------------------------------
我程序少了对我的待写入加密卡数据队列的长度限制,这个有影响吗?应该怎么解决呢

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2012-03-21 09:49 |只看该作者
iPowerX 发表于 2012-03-20 13:07
我也觉得应该与tcp层的滑动窗口无关的。
原因是:1,对于进来的包,我重新还原后是重新接收的 netif_rx_ ...

你原始包tcp层的东西都不改变,所以没必要去修改。在整个操作过程中,你改了什么,为了能顺利的接收或者转发,就要想办法达到你改变前的一些必须通过验证的要素就足够了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP