APP下载

基于SCTP多路径传输的网络监听还原技术研究

2010-05-08刘牧寅张思东

铁路计算机应用 2010年12期
关键词:多路径应用层监听

刘牧寅,刘 颖 ,张思东

(北京交通大学 下 一代互联网与互联设备国家工程实验室,北京 1 00044)

流控制传输协议SCTP(Stream Control Transport Protoco1)是IETF提出的一个新传输层协议[1]。SCTP结合了传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protold)的优点,它是面向连接的可靠的协议,提供差错控制和流量控制,但又保留了报文的边界;同时提供对多宿主机和多重流的支持。这些新特性使SCTP协议与TCP和UDP相比显现出较大优势,也使SCTP得到了越来越广泛的研究。

基于SCTP的多路径并行传输得到越来越多的关注。多路径建立在多宿主的基础上,即一台主机具有多个网络接口,可以通过多个 IP 地址被访问。在TCP中,连接是指两个端点之间的一个通道;而SCTP引入了联合的概念[2],也存在于两台主机之间,但可以使用每台主机上的多个接口进行协作,即主机可通过多个IP地址建立多条路径同时传输数据,极大地提高了传输速度和效率以及数据传输的健壮性。

目前的网络监控技术都是对单一路径上的数据进行分析[3],因而这种同一会话数据通过不同路径传输的方式使传统网络监控技术无法发挥作用。并且当前大部分网络分析系统均不支持SCTP[4],而协议分析软件Wireshark虽然能够对SCTP进行分析,但不支持SCTP数据流重组,无法像TCP和UDP一样还原应用层会话。同时,网络上传递的信息日益复杂,急需网络管理者对网络上的通信数据和会话内容进行监控。

本文提出一种基于SCTP多路径传输的网络数据监听还原技术,能够对通过多条路径并行传输的数据进行统一捕获并完整还原,便于网络管理者对网络进行监控,为网络安全提供了有效保障。

1 SCTP多路径传输网络监听还原技术

1.1 传统网络下的数据监听与还原技术

图1 系统结构示意图

传统网络下的数据传输是基于TCP或UDP的,通信双方均只有一个IP地址,一个连接是通过通信双方的源/目的地址和源/目的端口确定的[5]。

这种传输方式下的网络监听还原技术:(1)在路由设备上进行数据捕获,捕获经过该设备的所有数据包,这些数据包均属于同一网段。(2)对捕获的数据包依次进行协议分析,其中传输层仅支持TCP和UDP协议。在此基础上,根据数据包的IP地址和端口号等进行数据包分类,然后根据TCP序号和确认序号等进行数据包整理。(3)进行还原,将应用层会话完整地再现出来。

这种数据监听方式只能截获单一路径上的数据。对于多路径传输而言,一个应用层会话的数据被分成多个数据包通过多条路径同时进行传输,即在单一的路由设备上只能捕获到应用层会话的片段,而无法获取一个会话的完整过程。因此,需要一种新的网络监听还原技术提供对多路径传输的支持,并能对基于SCTP协议的会话进行还原。

1.2 SCTP多路径传输网络监听还原技术

1.2.1 整体设计

基于SCTP多路径传输机制的网络监听还原技术,主要分为数据捕获模块和分析还原模块;其中分析还原模块又分为协议分析、会话重聚和数据还原3个子模块。

与传统网络监听分析技术不同对于多路径的传输方式,需要采用一种分布式的数据捕获方式。即在多个路由设备上分别进行捕包,各捕获进程彼此独立,互不干扰,同时对多个路径上传输的数据进行抓捕,将捕获的数据包统一存在共享文件系统中。则共享文件系统中存储了完整的会话过程。在此基础上,分析还原模块从共享文件系统中读取捕获文件并进行进一步处理,如图1。

1.2.2 SCTP分析

分析还原模块读取的不再是单个捕获文件,而是需要将多个捕获文件读取并统一写入同一数据结构conv中,则该结构包含完整的通信数据。因此引入多线程技术,并行读取多个文件并对文件中每个包依次进行协议分析。算法描述如下:

file[ ]:捕获文件列表;

*conv:存放所有捕获数据包的关键信息及其数据;

*packet:包链表结构,存储所有捕获数据包;

int main() //主函数

{ 创建n个读包分析线程;

while(file!=NULL)

{ 将file分配给一个读包分析线程;

file=file->next;}

......}

int process_file_i() //读包分析线程

{ packet=read_from_file(); //从捕获的文件中读包

while(packet!=NULL)

{ dissect_packet(); //解析当前数据包

conv_add_packet(); //加入conv结构

packet=packet->next;}

......}

在这一过程中需要协调线程间的同步与互斥,每个线程在向conv写入数据时要加互斥锁保证缓冲区和全局变量的正确性,并通过信号实现线程间同步。

对于每个数据包的协议分析dissect_packet(),采用模拟协议栈的方式[6],从物理层开始依次向上逐层分析直至应用层。其中,关键是对传输层SCTP的解析。

根据SCTP报文格式,读取12 byte的公共首部,提取并存储其中的源端口和目的端口字段,根据端口号判定数据包传送方向和应用层协议类型。

与TCP和UDP传输不同的是,一个SCTP报文中可能绑定多个数据块,对于这种情况,则不能像传统分析方法将SCTP首部之后的数据默认为应用层数据。而应首先比较该数据包IP报文长度Lp和SCTP数据块长度Ls:(Lp-Lip=Ls+Lc) single:multi,其中Lip为20 byte的IP首部长度,Lc为12 byte的SCTP公共首部长度。运算结果为single则说明该SCTP报文中只有一个数据块,即SCTP首部解封后的数据就是应用层数据;否则说明该SCTP报文中包含多个数据块,需要分别处理。

依次读取每一个数据块,先提取类型和长度字段。通过对INIT、INIT ACK消息及其所包含参数的分析,分别提取出客户端和服务器的接口信息,得到源和目的IP地址列表。对于DATA数据块,根据SCTP规范中的DATA数据块结构,依次提取TSN、流标识和流序号并保存在相应数据结构中,以便后续进行分片重组和会话重聚;并将各DATA数据块中承载的用户数据提取聚合,存储在相应结构中。

1.2.3 SCTP会话重聚

会话重聚子模块对SCTP数据流进行重组,工作过程主要分为两个步骤:分类和整理。

分类建立在已经对每一个数据包进行协议分析的基础上。由于SCTP的多宿主特性,一个资源可通过不同路径在网络中传输,因此与传统技术不同,单一的IP地址不再作为确定会话的标志,而是通过四元组sign:来确定一个会话。其中,SIPList和DIPList为源和目的 IP地址列表,包含多个IP地址,根据SCTP主机使用的接口数量而定。Sport和Dport为源和目的端口号。由于服务器上的资源数据被分成多个包通过多条路径传送给客户端,因此捕获到的数据包顺序是完全混乱的。整理的作用是处理会话中的重传和乱序情况,并判断是否发生丢包。与利用TCP序号进行整理的传统方法不同,基于SCTP协议的数据包的整理根据数据包的流序号SSN进行排序。对于不分段的消息,SSN不同;而对于分段的消息,其每个分段有相同的SSN,则需要进一步利用传输顺序号TSN进行整理。其算法流程可以直观的用式(1)表示:

其中,Φ(aij)和ö(aij)可以分别表示为:

aij代表了数据文件中,属于第i个会话的第j个数据包;ö(aij)代表数据文件中,会话未分类整理之前数据包杂乱无章的排列;Φ(aij)代表会话分类整理后,数据包在数据结构链表中有规律的排列,其每一行表达了一个完整的会话;class(sing)表达以四元组为参数的分类运算;sort(ssn)表达以SSN为参数的排序运算。

最终经过分类整理后形成的数据结构如图2。

图2 数据结构示意图

1.2.4 数据还原

在此基础之上,还原子模块读取协议分析和会话重聚的结果,根据应用层协议类型提供不同方法对整理好的会话进行还原。

为了提高数据还原的效率,在应用数据还原阶段采用多线程并行处理的方式。每一个应用协议创建一个独立线程来完成其相应的分析与还原,如图3。

图3 多线程并发还原过程示意图

将会话的交互过程以及其中传递的具体数据内容部分,如访问网页资源、下载文件等,写入结果文件与数据库。从而对网络传输数据和用户行为进行监听,确定可疑对象身份及位置,及时发现并阻止非法数据的传播,还原结果可作为取证依据。

2 实验结果

2.1 实验环境

实验拓扑环境如图4,包括以下网络设备:Apache服务器(软件基于Apache2.0.55、系统为Linux 2.6)、客户端网页浏览器(软件基于Firefox1.6、系统为Linux 2.6)、网络监听还原设备(系统为Linux 2.6)和路由器。

服务器和客户端都配置两块网卡,各形成两个接口,提供两条路径传输,通过局域网连接。网络监听还原设备作为第3方监听设备,分别连接在两个路由器上,进行数据捕获和分析。

基于以上环境进行以下实验:

(1)启动数据捕获程序,分别在两个路由器上抓包。

(2)在客户端主机上通过网页浏览器访问服务器,下载文档、图片、音乐等文件。

(3)停止抓包,启动分析还原程序,并进行解析。

2.2 实验结果

经测试,该技术能够获取通过双路径传输的完整会话过程,并对其进行分析和还原,将结果予以显示和保存。其中,协议分析结果包括:数据包序号、时间、IP地址、端口、协议名称和摘要等关键信息。数据还原结果为客户端从服务器上访问获取的文件,保存在监听还原设备的本地目录下。

为了测试本监听还原技术的执行效率,设计一种不引入多线程技术,仅采用单线程顺序读包分析和单线程顺序还原的监听还原技术。两者进行执行效率的比较,测试结果如图5。其中,文件大小(Size)为通过两条路径捕获文件大小之和。

由于捕获会话数量和每条路径传输数据量等因素的影响,实际测量结果不完全符合线性增长,但不影响结果验证和性能分析。由图可知,在数据包文件比较小的情况下,两者执行效率相差不大;而在数据包文件比较大的情况下,本监听还原技术的还原时间明显少于未引入多线程技术的监听还原技术的执行时间,分析效率和性能相对较高。

3 结束语

本文提出的网络监听与还原技术支持多宿主机制和多路径传输方式,并且支持对SCTP的分析以及SCTP数据流重聚,能够捕获完整的应用层会话过程并还原出具体的传输数据。从而实现对网络通信内容的监测,进而实现对网络用户的可控可管,为网络安全提供有效保证。

[1] Morneault K. Sharp C. Schwarzbauer H. etc. Stream Control Transmission Protocol[S]. RFC2960. Oct 2000.

[2]王雪琛,周建林,季新生. SCTP协议的研究与分析[J]. 网络技术. 2004,34(2):18-20,23.

[3]史永丰,赵燕平,许榕生. 高速网络内容监控系统的设计与实现[J]. 计算机科学,2004,31(B09):87-89.

[4]万国根. 面向内容的网络安全监控模型及关键技术研究[D].成都:电子科技大学,2005.

[5] 刘文昭. 网络信息内容监测系统研究与实现[D]. 北京:北京交通大学电子信息工程学院,2008.

[6] W.Richard Stevens. TCP/IP详解 卷1:协议[M]. 范建华. 北京:机械工业出版社, 2004.

猜你喜欢

多路径应用层监听
多路径效应对GPS多普勒测速的影响
多路径助推肉牛产业稳定发展
英国风真无线监听耳机新贵 Cambridge Audio(剑桥)Melomania Touch
千元监听风格Hi-Fi箱新选择 Summer audio A-401
基于5.8G射频的多路径识别技术应用探讨
网络监听的防范措施
基于分级保护的OA系统应用层访问控制研究
新一代双向互动电力线通信技术的应用层协议研究
应召反潜时无人机监听航路的规划
物联网技术在信息机房制冷系统中的应用