+ -
当前位置:首页 → 问答吧 → P2P的流控问题

P2P的流控问题

时间:2010-07-12

来源:互联网

有没有做过或者分析过p2p流控的大虾?
一起研究一下

作者: 瀚海书香   发布时间: 2010-07-12

来吧

作者: Godbach   发布时间: 2010-07-12

有什么问题与大家分享的

作者: Godbach   发布时间: 2010-07-12

回复 Godbach
还没开始做呢?呵呵
我现在的思路想通过分析数据包的特点然后打mark实现,但是很多p2p的数据流只在连接建立的时候有特点,之后就没特点了,那这些数据包就不能正确的打上mark,导致流控失效。所以先出来看看大虾们都是怎么做的?

作者: 瀚海书香   发布时间: 2010-07-12

如果在建连接的时候,你可以识别出来,那么就利用连接跟踪吗。属于同一连接的,都打上相同的mark。

作者: Godbach   发布时间: 2010-07-12



QUOTE:
回复  Godbach
还没开始做呢?呵呵
我现在的思路想通过分析数据包的特点然后打mark实现,但是很多p2p的数 ...
瀚海书香 发表于 2010-07-12 10:50

  1. if (mark = p2p_match(skb))
  2.     ct->mark = mark;
复制代码

作者: platinum   发布时间: 2010-07-12



QUOTE:
如果在建连接的时候,你可以识别出来,那么就利用连接跟踪吗。属于同一连接的,都打上相同的mark。
Godbach 发表于 2010-07-12 11:15




好像没有这么简单吧??一般来讲p2p传输的协商和数据是分开的,同服务器和超级点之间的也是分开的。

作者: 独孤九贱   发布时间: 2010-07-12



QUOTE:
好像没有这么简单吧??一般来讲p2p传输的协商和数据是分开的,同服务器和超级点之间的也是分开的。
独孤九贱 发表于 2010-07-12 14:12



九贱兄是不是分析出了 command channel 和 data channel,并自己编写了 helper 来辅助 conntrack?

作者: platinum   发布时间: 2010-07-12

难点就在于如何准确识别。

作者: Godbach   发布时间: 2010-07-12

打标记的话可以利用CONNMARK

作者: Godbach   发布时间: 2010-07-12

回复 Godbach
有很多链接好像是只能通过helper来实现的,但是这些helper的特点有不像ftp那样的有规律。

作者: 瀚海书香   发布时间: 2010-07-12

是的。如果要做p2p识别的话,建议先了解一下ipp2p和l7-filter的实现。

作者: Godbach   发布时间: 2010-07-12

回复 Godbach
这两个都已经看过了,但还是没事思路
以前看到过一个基于freebsd的p2p流控,但是没找到源码。。。

作者: 瀚海书香   发布时间: 2010-07-12

其实前面白金兄和九贱兄也都提到了。关键还是在于如何准确识别出p2p下载流。

作者: Godbach   发布时间: 2010-07-12



QUOTE:
九贱兄是不是分析出了 command channel 和 data channel,并自己编写了 helper 来辅助 conntrack?
platinum 发表于 2010-07-12 14:13



没有呀,一个p2p应用一个helper,好像会使Netfilter变得更加肥大喔!!哈哈!P2P识别一个难题,可能基于会话的特征识别还是王道,像panabit就做得很好,可惜开放出来的文档太少。

作者: 独孤九贱   发布时间: 2010-07-14



QUOTE:
没有呀,一个p2p应用一个helper,好像会使Netfilter变得更加肥大喔!!哈哈!P2P识别一个难题,可能基于 ...
独孤九贱 发表于 2010-07-14 10:17


我觉得 panabit 最牛的地方不是协议识别率,而是性能
去年我和同事一起做了一个实验
在纯 Linux 网桥(不开 conntrack)、纯 FreeBSD 网桥,以及 panabit 上做 64 字节小包单向千兆线速转发测试
硬件都是一样的,intel 的 82571 网卡,PCI-E 接口
Linux 38%
FreeBSD 42%
panabit 99.98%

不知道是怎么做到的……

作者: platinum   发布时间: 2010-07-14

本帖最后由 独孤九贱 于 2010-07-14 10:56 编辑

绕过协议栈,只做自己想做的事,然后直接转发。不知是不是这样,另外,FB的dev polling方式性能本身就要大大高于Linux,在处理小包时。

作者: 独孤九贱   发布时间: 2010-07-14



QUOTE:
绕过协议栈,只做自己想做的事,然后直接转发。不知是不是这样。
独孤九贱 发表于 2010-07-14 10:38



应该不仅是这样,panabit 使用了自己的 em.ko 网卡驱动,可能实现了零拷贝
另外,我在 Linux 里也做国实验,在 dev.c 里直接把从 A 网卡收到的数据从 B 网卡 xmit 出去,然后 kfree_skb,结果吞吐量有上升,却也没达到 50%

作者: platinum   发布时间: 2010-07-14



QUOTE:
应该不仅是这样,panabit 使用了自己的 em.ko 网卡驱动,可能实现了零拷贝
另外,我在 Linux 里也做国 ...
platinum 发表于 2010-07-14 10:56




1、首先,我讨论是转发情况,不是服务器本身收包那种。

像常用的e1000e,本身就是“零拷贝”吧??我觉得像PCI-E解决了总线性能瓶颈后,Linux想要在小包上性能有所突破,估计还是要改善NAPI机制,进一步降低中断频率,另外,发送的中断性能消耗也不容小视!

作者: 独孤九贱   发布时间: 2010-07-14



QUOTE:
P2P识别一个难题,可能基于会话的特征识别还是王道,像panabit就做得很好,可惜开放出来的文档太少。


嗯,p2p识别中panabit做的确实挺好

作者: Godbach   发布时间: 2010-07-14

本帖最后由 platinum 于 2010-07-14 12:06 编辑


QUOTE:
嗯,p2p识别中panabit做的确实挺好
Godbach 发表于 2010-07-14 12:00


我们的协议识别率也非常高,不低于 panabit,也是通过分析会话的特征来实现的
不仅如此,为了提高效率,我们还使用了一个特有的 match cache 机制,实现快速匹配已匹配会话的其他同类特征会话流,呵呵

但美中不足就是 panabit 的性能非常好,千兆单向线速,这个不佩服不行

作者: platinum   发布时间: 2010-07-14

本帖最后由 ShadowStar 于 2010-07-14 13:07 编辑


QUOTE:
我觉得 panabit 最牛的地方不是协议识别率,而是性能
去年我和同事一起做了一个实验
在纯 Linux 网桥( ...
platinum 发表于 2010-07-14 10:35



Linux的网桥性能超烂的,比路由还烂。FreeBSD没测试过。OpenBSD测试过,性能超烂。

PanaBit是采用透明方式,类似于网桥,但是据我所知,仅支持两个口,也就是说,其实不是网桥方式,而是口对口直发。

PanaBit的性能确实不错,但是他们建议采用的平台也比较特殊,应该是新汉的工控平台,这个平台和普通的差别貌似是:网卡的PCI-E接口是从北桥直接抛出来的;而普通的平台都是从南桥走的。

作者: ShadowStar   发布时间: 2010-07-14



QUOTE:
PanaBit是采用透明方式,类似于网桥,但是据我所知,仅支持两个口,也就是说,其实不是网桥方式,而是口对口直发。


哦,端口到端口啊。那确实速度发挥到最大了吧。

作者: Godbach   发布时间: 2010-07-14

如果就是专门的p2p控制,其他功能全部要,确实可以采用p2p数据处理完毕了,直接发出去就行。

作者: Godbach   发布时间: 2010-07-14



QUOTE:
如果就是专门的p2p控制,其他功能全部要,确实可以采用p2p数据处理完毕了,直接发出去就行。
Godbach 发表于 2010-07-14 13:45



目前很多流控产品都是这个样子的,透明模式,甚至面板上只有2个接口,更甚者连IN/OUT都标注好的。

作者: ShadowStar   发布时间: 2010-07-14

回复 ShadowStar
ShadowStar兄对流控产品很熟悉啊。

作者: Godbach   发布时间: 2010-07-14



QUOTE:
回复  ShadowStar
ShadowStar兄对流控产品很熟悉啊。
Godbach 发表于 2010-07-14 13:55



虽然不是做流控的,但是,其实网络产品都是差不多的。

看看就知道大概了。

作者: ShadowStar   发布时间: 2010-07-14



QUOTE:
我们的协议识别率也非常高,不低于 panabit,也是通过分析会话的特征来实现的
不仅如此,为了提高效率, ...
platinum 发表于 2010-07-14 12:04




    请教一下,加密的P2P协议如何进行识别呢? 通过会话流的特征一般是指他们的协商以及数据的传输的方式这种吗?
谢谢!

作者: szh1105   发布时间: 2010-07-14



QUOTE:
请教一下,加密的P2P协议如何进行识别呢? 通过会话流的特征一般是指他们的协商以及数据的传输的 ...
skyjump 发表于 2010-07-15 10:03


加密数据通过传统的 DPI 是无法识别的,因为内容完全随机(知道加密算法除外)
那么就需要通过 DFI 的方式来识别,也就是针对 FLOW 进行规律性分析
每一种协议都有其自身的流特征,就好比两个人打电话,你虽然不知道他们的暗语是什么意思,但你却深知他们的嗓音、口音及说话特点,你还是可以知道他们是谁的
这就有点像电视剧《暗算》里面王宝强演的那个听风者

作者: skyjump   发布时间: 2010-07-15

热门下载

更多