基于会话的应用分类:
标准的协议头部(Header)字段如TCP/UDP的端口号字段在每一个数据包中都存在,而第7层的协议代码样本通常只能在一次协议会话的前几个数据包中存在,并进行会话标记的请求以标识本次会话中所有的数据包。当网络中产生了一个新的会话,如P2P应用会话,那么一个唯一的协议签名(Signature)就必须被找到并能够与已知的协议代码样本相匹配,如当使用第7层的分类方法对一个P2P应用进行了正确的识别,那么该会话中的后续数据包就能够被正确的判别为该P2P应用会话的数据流量。
有些情况下,一个P2P应用使用不止一个会话,这就需要流量管理系统能够从两个或多个会话中提取信息并进行关联以找到能够匹配的代码样本。
并非基于端口的分类:
P2P应用通常使用随机的端口号或者借助一些常用的端口号来进行传输,因此在进行P2P应用样本搜寻时,就不能做任何的假设,需要对网络中所有数据流进行第7层协议的探测,而不管它们是否使用了某个端口号。
每秒连接数:
不寻常的连接数量可能是在暗示着网络中P2P应用的使用,也可暗示着异常流量的存在,如病毒、蠕虫、有害程序等等。P2P是具有侵略性的应用,它可以在短时间内建立超负荷的连接,异常的连接数量在流量管理设备中可以设定告警机制,帮助网络管理员及时解决问题。
5、技术解决方案
针对P2P应用的流量管理特点,检测、性能和系统稳定性这三个因素是至关重要。不能正确检测区别P2P流量,就不能进行管理控制。性能不能满足要求,没有足够的处理能力,造成网络延迟的增大,同样也是无效。
下面简要介绍一下Panabit检测与控制P2P系统所使用的独特的应用层识别技术,在此之前,我们先介绍一下目前在其它产品中常用的技术:
(1)基于数据包的无状态识别技术。这种技术一般是采取模式匹配的方式,对每个数据包进行模式匹配,并且不考虑数据包之间的逻辑关系,采取这种方式的系统的好处是实现简单,但是它的缺点也是很明显的,就是性能低下,易成为网络的瓶颈。
(2)基于连接的有状态识别技术。这种技术是一般的传统防火墙所采取的技术。在防火墙现有的状态表的基础之上,将连接所产生的所有数据包看作一个整体,如果其中某个或某些数据包符合指定的特征,那么认为这条连接就是符合该特征的连接。所以,如果该特征是BT通信,那么这条连接就是两个BT客户端或一个BT客户端和一个BT服务端在通信。
在运营商的网络环境里,由于节点一般都是网络交换节点,因此许许多多的P2P节点的通信都会通过运营商的交换网络,这些节点以十万,甚至百万计。如果采取基于连接的有状态识别技术,所能控制的P2P通信非常有限,这种技术只适合于小规模的网络,如中小企业网络。
Panabit采用“基于节点的有状态识别技术”可以避免上述问题。
一个典型的P2P是由许多节点构成的,每个节点都是一个服务器,这个节点可以同时为其它节点提供服务。基于节点的有状态识别技术的基本思想是从节点双方的通信过程中寻找特征数据,这些特征数据不限于某条特定的连接,如果特征匹配,那么系统将记录该节点,而不是某条连接。一旦该接点被识别出来,那么后续同该节点通信的数据无须重新验证,因此极大的提高了系统的性能。P2P应用中,客户端既是客户,又是服务器,在某端口上监听为其他客户提供服务,根据这一特性,将IP+服务端口在内存中定义一个二元组,称之为节点。
Panabit在基于节点的有状态识别技术的基础上向智能方面进一步发展,该技术可以从多条连接中自动根据某种统计规律来识别某些特征不明显或者被加密了的通信协议(如SkyPe),在保证性能的同时,提高了系统识别的准确性。这种技术针对P2P应用尤其有效。
此外,Panabit针对第4代P2P应用软件的变化,采用独有主动探测和服务伪装技术保证对P2P识别的准确性。Panabit采用独有的服务探测引擎可以识别第四代P2P应用,如emule 0.47c。服务伪装, 对于迅雷这样综合了P2P和HTTP,FTP等传输协议的应用,Panabit开发了独有的服务伪装引擎。
从技术角度看,P2P应用有如下几个特点:
(1)一个P2P节点(客户端程序,比如BitComet)通常与成百上千个客户端连接,因此节点之间的连接数目巨大。假如一个节点有200条连接,那么10000个节点就有可能达到200万条连接,保守估计也会有100万条连接,如此大的连接数将使设备不堪负担。
(2)不像Web浏览这样的HTTP协议,HTTP连接一般持续的时间比较短,而P2P主要目的是用来共享大的文件,需要传送大量的数据,因此P2P客户端之间的连接一般持续的时间比较长,这就意味着系统的资源很长时间不能得到释放,因此大大增加系统被DOS(Deny Of Service,拒绝攻击)的机会。
针对上述特点,Panabit通过学习的方式,采用连接识别和节点识别相结合的方式,大大减少了连接数,这样可以用较少的资源监控更大的P2P应用网络,同时提高了系统的效率。
6、系统架构
Panabit核心是PanaOS(Panabit Operating System),PanaOS基于FreeBSD(目前最稳定的操作系统),但是在原有FreeBSD基础上做了如下修改和增强:
(1)对网络协议栈作了大量的修改和优化,使得数据平面(Data Plane,见下图)能够以最快速度执行。
(2)去掉内核部分代码,使得核心更小。
(3)针对特定的硬件进行优化,使得在特定的硬件上更快运行。
(4)修改部分中断处理函数和网卡驱动,使得数据平面(Data Plane)以较高优先级运行。
PanaOS分为数据平面(Data Plane)和控制平面(Control Plane)两个部分:
(1)数据平面(Data Plane):负责数据包处理,同时提供同控制平面的接口。数据层面直接由硬件驱动,这样避免了传统OS(包括FreeBSD)的网络协议栈带来的开销,使得PanaOS能够充分利用硬件的性能而更快处理数据包。数据平面在PanaOS内核内运行。
(2)控制平面(Control Plane):负责系统管理,包括数据平面的维护、Web管理和命令行管理接口。控制平面运行在PanaOS的应用层。
数据平面的运行优先级高于控制层面,这样确保数据包即时处理。
控制平面(CP,Control Plane)

其中:
(1)MiniWeb:一个轻量级的Web服务器,并提供Web管理接口。
(2)CLI:命令行接口进程。
(3)DataStat:负责数据的收集和统计分析。
数据平面(DP,Data Plane)

其中:
(1)PAE(Packet Analysis Engine):数据包分析引擎,负责应用层识别。
(2)ACE(Access Control Engine):访问控制引擎,负责访问控制。
(3)BME(Bandwidth Management Engine):带宽管理引擎,负责带宽限制和分配。
(4)DPI(Data Plane Interface):数据平面接口为CP提供访问数据平面的数据和相关状态信息的接口。
[1] [2] [3] [4]
|