基于Netfilter架构的流媒体集群服务内容调度方法

文档序号:7549115阅读:154来源:国知局
专利名称:基于Netfilter架构的流媒体集群服务内容调度方法
技术领域
本发明涉及计算机网络多媒体技术,具体是一种基于Netfilter架构的流媒体集群服务内容调度方法。
背景技术
流媒体技术是近年来兴起的一种在线播放技术。在线播放,顾名思义就是边下载边播放,播放器并不用等到多媒体文件全部下载到本地硬盘以后再播放,而是在下载的同时进行播放。播放器在用户端的内存中开辟出一个缓冲区,通常是几兆字节的空间,播放器等到缓冲区中有足够的数据后开始解码播放,这个过程通常需要几秒钟的时间,同下载完后再播放相比大大节省了等待时间,而且将数据直接存储在内存中,播放完后即被播放器删除,因此对数字版权起到保护作用。流媒体技术广泛应用在互联网多媒体新闻发布、在线直播、网络广告、电子商务、视频点播、远程教育、网络电台、视频会议等互联网的信息服务领域。目前,RealNetwork公司的RM格式、Apple公司的Quicktime的MOV格式和微软公司ASF是互联网上使用较多的流式格式。
随着各种系统应用的不断发展,对计算机性能和网络带宽的要求越来越高,集群技术就应运而生。所谓集群就是通过网络将一组相互独立的计算机构成一个松耦合的多处理器系统,以单机系统的模式加以管理。负载均衡集群一般由前台调度器和后台服务器组成,调度器负责任务分发,服务器负责响应用户请求。整个集群系统对外提供一个虚拟IP地址,用户不必了解集群内服务器物理分布和连接情况,只要知道这个虚拟IP地址就可以向服务集群提出服务请求,整个集群系统对用户来讲是透明的,就如同一台高性能计算机。这种架构的最大特点就是可以实现负载均衡,任务调度服务器会根据各后台服务器当前的负载状况,将服务请求分发给适当的服务器,这样,集群的整体性能可随着后台服务器数目的增加而接近线性增长,同时还提高了服务质量。
通过集群模式来提供流媒体服务,很大程度上提高了系统的整体性能,但由于负载均衡集群是一个分布式的系统,各服务节点的功能相对独立,不同的流媒体服务器上存储的片源可能并不一致,这就要求调度器了解各服务器上的片源分布,根据片源数据库记录的内容分布情况将请求分发给合适的服务器。
目前,计算机网络采用的内容调度方案有两种一种方案是通过多台服务器共享一个大型存储设备,这样各台服务器存储的片源完全一致,调度服务请求时只需根据服务器当前负载进行,但这样做有很大的局限性,首先,各服务器和存储设备要在同一个网段中,这就限制了集群分布的灵活性。其次,共享的存储设备本身可能会成为整个系统的瓶颈。
另一种方案是内容发布服务器将当前节目分布信息和负载状况返回给用户端,再由用户端选择服务节点,这种实现是基于用户端的选择,调度时缺乏统一协调的机制,系统灵活性不高,而且可能存在许多的安全隐患。
Netfilter(网络滤波器)框架是Linux2.4内核的网络安全功能框架,位于Linux操作系统的核心层,它在网络流程中放置有若干检查点(HOOK),在每个HOOK点上登记有不同的处理函数,可实现数据包过滤、数据包处理、网络地址转换,以及抗攻击等多种网络安全功能。
图2为Netfilter框架示意图。在网络协议IPv4(Internet Protocol Version4)中,定义了Netfilter框架的五个检查点(HOOK),其名称和功能如下[1]NF_IP_PRE_ROUTING刚刚进入网络层的数据包通过此HOOK,可在此进行版本号检查,地址过滤等; 、NF_IP_LOCAL_IN经路由查找后送往本机的通过此HOOK,然后数据包就进入了用户空间;[3]、NF_IP_FORWARD要转发的包通过此HOOK,这样数据包不经过用户空间就可被直接转发出去;[4]、NF_IP_LOCAL_OUT本机进程发出的数据包通过此HOOK,数据包由此从用户空间转入操作系统核心空间;[5]、NF_IP_POST_ROUTING所有马上要通过网络设备发送出去的包通过此HOOK,内置目的地址转换功能(包括地址伪装)。
这五个检查点构成了数据流的三条链路输入链[1]→[2]、输出链[4]→[5]和转发链[1]→[3]→[5]。经输入链,数据包由网卡进入用户空间的包处理进程;经输出链,数据包由本机进程发送至外部网络;经转发链,数据包直接被转发到指定的网络接口。
通常,Netfilter对收到的网络数据包进行如下处理数据包从左边进入系统,进行IP校验以后,数据包经过第一个检查点NF_IP_PRE_ROUTING进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过检查点NF_P_LOCAL_IN处理以后然后传递给上层协议;若该数据包应该被转发则由检查点NF_IP_FORWARD处理;经过转发的数据包经过最后检查点NF_IP_POST_ROUTING处理以后,再传输到网络上。本地产生的数据经过检查点NF_IP_LOCAL_OUT处理可后,进行路由选择处理,然后经过NF_IP_OST_ROUTING发送到网络上。
Netfilter框架有很好的扩展性,内核模块可以对一个或多个检查点进行挂接注册,并在数据包经过这些检查点时被调用,从而可以在内核空间对数据包进行操作。目前基于Netfilter架构的流媒体集群服务内容调度方案未见有关文献披露。

发明内容
本发明的目的是为了克服现有技术的上述不足,提供一种基于Netfilter架构的流媒体集群服务内容调度方法。采用本方法调度器可对服务集群进行统一管理,根据服务器的片源分布和负载状况调度收到的服务请求,实现了流媒体服务集群的智能调度。
本发明基于Netfilter架构的流媒体集群服务内容调度方法,包括如下步骤a、用户端通过网络向负载均衡集群的虚拟地址发送服务请求;b、调度器收到用户端的服务请求数据包后,根据其操作系统内核空间中Netfilter架构NF_IP_PRE_ROUTING检查点的调度表中是否有所述服务请求连接的活动记录,若有,将所述数据包通过Netfilter架构的NF_IP_FORWARD检查点直接转发到相应的目标服务器Vy;否则,将所述数据包的TCP包头和IP包头存于临时表中,并将所述数据包通过Netfilter架构的NF_IP_LOCAL_IN检查点送入调度器操作系统的用户空间;c、在所述用户空间,调度器根据所述数据包的内容,在节目数据库中找出存储有所需节目的服务器,综合考虑所有服务器的地域分布和负载情况后,选定响应本次请求的目标服务器,然后将所述数据包通过Netfilter架构的NF_IP_LOCAL_OUT检查点送回操作系统的核心空间,并在所述调度表中添加本次调度记录;d、在所述核心空间,调度器采用IP伪装技术和IP隧道技术建立用户端到目标服务器的TCP连接,转发所述数据包至目标服务器;e、目标服务器收到调度器转发的数据包后,根据所述调度器转发的数据包的内容建立目标服务器至用户端的TCP响应连接,发送所需节目至用户端。
其中,在步骤d中调度器为了帮助客户端和目标服务器之间建立TCP连接需要依次完成以下四个步骤①、调度器操作系统的内核空间根据解析到的用户端的地址和端口信息在临时表中搜索,找到原始请求包的TCP包头和IP包头,将请求内容用原来的TCP包头和IP包头重新进行封装,得到IP包P1;②、所述内核空间将IP包P1中的目的地址更换为目标服务器的地址,并重新调整IP包P1的报头校验和字段,得到IP包P2;③、所述内核空间将IP包P2通过IP隧道发送到目的服务器,即以调度器地址为源地址,目标服务器地址为目的地址对IP包P2再次进行封装,得到IP包P3,并将P3通过指定的网络接口发送到网上;④、目标服务器收到IP包P3后,经一次解析(去掉IP隧道封装头)取得源地址(调度器地址),客户端和目标服务器通过调度器进行三次握手后,建立客户端到目标服务器的TCP连接。
其中,在步骤e中所述的目标服务器在与用户端建立TCP连接时需要进行以下几步操作(1)、目标服务器收到调度器转发的数据包后,进行两次解析,得到用户端发出的原始TCP包的内容;(2)、目标服务器从原始TCP包的包头中取得用户端的地址和端口信息;(3)、目标服务器根据用户端的地址和端口信息与对应的用户端进行三次握手后,建立目标服务器到该用户端的TCP连接。
本发明是一种基于Netfilter架构的流媒体集群服务内容调度的方法,利用调度器对服务集群进行统一管理,其调度器可以综合考虑片源分布、服务器的地域分布和负载情况,对请求进行智能调度;在为用户端和后台视频服务器建立连接的时候要由操作系统应用层进行处理,连接一旦建立之后,后续控制命令可直接在操作系统的核心层进行转发,无需通过应用层,系统效率高。
用IP伪装和IP隧道技术对用户请求进行转发,系统透明性较高,架设集群服务系统时,用户端和服务器程序无需修改。


图1为本发明负载均衡集群系统的典型结构图;图2为Netfilter框架示意图;图3为本发明用户端和服务器之间网络数据包的传输途径示意图;图4为本发明的总体流程图;图5TCP包的报文格式;图6IP包报文格式。
具体实施例方式
下面结合附图对本发明进一步说明。
实现本发明调度方法的负载均衡集群系统典型结构如图1所示,该集群系统包括1台调度器、若干台服务器以及若干用户端,所述的调度器、服务器以及用户终端均连接于Internet网络,调度器和若干台服务器采用星型拓朴结构,实际应用中还可使用总线型、环型等其它类型的网络拓朴结构。
如图3所示,本发明利用地址伪装技术在用户和服务器之间建立一个透明的传输通道,调度器了解所有用户端和服务器的对应关系,用户端向集群的虚拟地址发送服务请求,集群前端的调度器收到后根据调度表将其转发给后台服务器,后台服务器将响应数据包直接下发给用户端。整个过程用户端和服务器都感知不到调度器的存在,处理流程和两者直接进行通讯时是一样的。
本发明的网络通讯执行TCP/IP协议,应用层的数据单元封装在传输层的TCP报文中,TCP报文在经过网络层封装成IP包通过网络传输到目的主机。
TCP是一种面向连接的可靠的传输协议,它定义了一些校验、重传等控制机制,以保证报文能正确到达目的主机,其报文结构如图5所示。为了在源主机端和目的主机之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,TCP连接建立过程如下首先,请求端(源主机)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明源主机使用的端口以及TCP连接的初始序号;第二步,目的主机在收到用户端的SYN报文后,将返回一个SYN+ACK的报文,表示源主机的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。
第三步,源主机也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。以上的连接过程在TCP协议中被称为三次握手。
在传输过程中,协议中也存在类似的数据包的确认机制,现在在源主机和目的主机之间加上一个转发请求的调度器,在保证不影响原有的TCP应答机制的前提下,还要尽可能的不改变用户端和服务器的配置,这就需要保证目的主机收到的经调度器转发的TCP报文和原来没有调度器中转时的TCP报文是一样的,就是说在转发时调度器还要使用原来用户端发来的TCP包的包头。这样,服务器就会依据原TCP包头中的序号和控制信息进行应答,从而保证用户端和服务器之间TCP连接的可靠性。
如图6所示,IP包则包含源、目的主机地址,以及IP包头的校验信息等。因为服务器是根据收到数据包的IP地址做出响应的,要想服务器直接对用户端响应,调度器在转发数据包时用自己的IP对数据包进行二次封装,也就是采用IP隧道技术,用调度器的地址作为源地址将原来的IP包再次封装,这样目标服务器收到请求包后对IP包进行两次解析之后就可以得到用户端发来的原始TCP包内容了,根据该TCP包的参数和数据即可建立一条服务器到用户端的TCP响应连接。
本发明一典型实施例的配置如下用户端(1台,记为C)CPUIntel PIII 800MHz内存128M操作系统Windows 2000 Professional播放器LSMP Media Player调度服务器(1台,记为D)CPUIntel Xeon 2.4GHz内存512M操作系统RedHat8.0 Linux Server调度服务器LSMP Director点播服务器(3台,分别记为V1、V2、V3,处于同一网段之内)CPUIntel Xeon 2.4GHz内存1G操作系统RedHat8.0 Linux Server流媒体服务器LSMP Streaming Server节目S的片源仅存于点播服务器V1、V2中。
参照图4,说明具体调度过程1、调度器D接收用户端C发来的数据包后,在Netfilter架构的NF_IP_PRE_ROUTING检查点进行协议和端口判断,如果传输协议为TCP(传输控制协议)且目的端口是VOD(Video on Demand)的服务端口,则进入本发明的调度流程;否则跳出调度模块,进入操作系统原来的常规网络包的处理流程。对于进入本发明调度流程的数据包,采用如下步骤进行服务请求的调度
2、调度器D在内核空间的调度表T中查找,看是否有本请求所需连接的历史记录,如果有,将该数据包通过Netfilter架构的NF_IP_FORWARD检查点直接转发到相应的服务器,完成本次请求调度;若调度表中没有本请求所需连接的历史记录,将该数据包通过Netfilter架构的NF_IP_LOCAL_IN检查点送入调度器操作系统的用户空间,并将该数据包的TCP包头和IP包头存于临时表中;3、在用户空间,调度器D对收到的数据包进行解析,知道用户希望点播节目S,搜索数据库发现服务器V1和V2中有该节目的片源,由于V1、V2都处于同一网段之内,所以在调度时只需比较两者的负载大小,根据调度器统计到的负载信息得知,现在V1的负载要高于V2的负载,故确定由服务器V2响应本次服务请求;调度器D将该连接的源、目的端的对应关系加入到内核空间的调度表T中;4、在所述核心空间,调度器D利用IP伪装技术和IP隧道技术,在用户端C和目标服务器V2之间建立TCP连接,转发所述数据包至目标服务器。
调度器D协助客户端和目标服务器V2之间建立TCP连接具体步骤包括在应用层确定响应本次服务请求的目标服务器V2之后,将原始请求包的源地址、端口、数据内容和目标服务器地址一同送入内核空间,内核空间根据源地址和端口在临时表中搜索,找到原始请求包的TCP包头和IP包头,将请求包的数据内容用原来的TCP包头和IP包头重新进行封装,这样得到IP包P1;然后将P1的目的地址字段更换为目标服务器V2的地址,再重新调整IP包的报头校验和字段,这样得到新的IP包P2;
再以调度器D地址为源地址,目标服务器V2地址为目的地址对IP包P2再次进行封装得到IP包P3,通过指定的网络接口发送到网上;目标服务器V2收到请求包先去掉最外层IP隧道的封装头,得到请求包P2,服务器根据P2中的内容直接对客户端进行响应。
5、目标服务器V2收到请求数据包后,根据IP包的内容建立目标服务器V2到用户端C的TCP响应连接,用户端C和目标服务器V2通过该TCP连接传输控制信令,此外,双方通过该TCP连接还要协商创建一个流媒体协议规定的数据下发通道M,目标服务器V2通过所述通道M将音视频流下发给用户。
目标服务器V2在与用户端C建立TCP连接时需要进行以下几步操作目标服务器V2收到调度器D发来的IP包P3后,进行两次解析,得到用户端C发出的原始TCP包的内容;目标服务器V2从原始TCP包的包头中取得用户端C的信息;目标服务器V2根据取得的用户信息与对应的用户端C进行三次握手后,建立目标服务器V2到用户端C的TCP连接。
播放结束或者用户端C发出终止请求的时候,目标服务器V2关闭该用户线程,停止下发数据流,同时,调度器D将该连接从NF_IP_PRE_ROUTING处的调度表T中去除。
权利要求
1.一种基于Netfilter架构的流媒体集群服务内容调度方法,其特征在于包括如下步骤a、用户端通过网络向负载均衡集群的虚拟地址发送服务请求;b、调度器收到用户端的服务请求数据包后,根据其操作系统内核空间中Netfilter架构NF_IP_PRE_ROUTING检查点的调度表中是否有所述服务请求连接的活动记录,若有,将所述数据包通过Netfilter架构的NF_IP_FORWARD检查点直接转发到相应的目标服务器Vy;否则,将所述数据包的TCP包头和IP包头存于临时表中,并将所述数据包通过Netfilter架构的NF_IP_LOCAL_IN检查点送入调度器操作系统的用户空间;c、在所述用户空间,调度器根据所述数据包的内容,在节目数据库中找出存储有所需节目的服务器,综合考虑所有服务器的地域分布和负载情况后,选定响应本次请求的目标服务器,然后将所述数据包通过Netfilter架构的NF_IP_LOCAL_OUT检查点送回操作系统的核心空间,并在所述调度表中添加本次调度记录;d、在所述核心空间,调度器采用IP伪装技术和IP隧道技术建立用户端到目标服务器的TCP连接,转发所述数据包至目标服务器;e、目标服务器收到调度器转发的数据包后,根据所述调度器转发的数据包的内容建立目标服务器至用户端的TCP响应连接,发送所需节目至用户端。
2.根据权利要求1所述基于Netfilter架构的流媒体集群服务内容调度方法,其特征在于在步骤d中所述调度器建立用户端到目标服务器的TCP连接步骤是(1)、调度器操作系统的内核空间根据解析到的用户端的地址和端口信息在临时表中搜索,找到原始请求包的TCP包头和IP包头,将请求内容用原来的TCP包头和IP包头重新进行封装,得到IP包P1;(2)、所述内核空间将IP包P1中的目的地址更换为目标服务器的地址,并重新调整IP包P1的报头校验和字段,得到IP包P2;(3)、所述内核空间将IP包P2通过IP隧道发送到目的服务器,即以调度器地址为源地址,目标服务器地址为目的地址对IP包P2再次进行封装,得到IP包P3,并将P3通过指定的网络接口发送到网上;(4)、目标服务器收到IP包P3后,经一次解析取得调度器地址,用户端和目标服务器通过调度器进行三次握手后,建立客户端到目标服务器的TCP连接。
3.根据权利要求1所述基于Netfilter架构的流媒体集群服务内容调度方法,其特征在于在步骤e中建立目标服务器到用户端的TCP响应连接的步骤是(1)、目标服务器收到调度器转发的数据包后,进行两次解析,得到用户端发出的原始TCP包的内容;(2)、目标服务器从原始TCP包的包头中取得用户端的地址和端口信息;(3)、目标服务器根据用户端的地址和端口信息与对应的用户端进行三次握手后,建立目标服务器到该用户端的TCP连接。
4.根据权利要求1所述基于Netfilter架构的流媒体集群服务内容调度方法,其特征在于所述调度表中记录有请求的源地址、端口,以及目的地址、端口之间的对应关系。
全文摘要
一种基于Netfilter架构的流媒体集群服务内容调度方法,包括a、用户端向集群发送服务请求;b、调度器收到所述服务请求数据包后,根据其调度表中是否有所述服务请求连接的活动记录,转发所述数据包至相应的服务器或送入其用户空间;c、在用户空间根据所述数据包内容,在节目数据库中找出存储有所需节目的服务器,考虑服务器的地域分布和负载情况选定目标服务器,并在所述调度表中添加本次调度记录;d、调度器建立用户端到目标服务器的TCP连接,转发所述数据包;e、目标服务器收到转发的数据包后,建立目标服务器至用户端的TCP响应连接,发送所需节目至用户端。其利用调度器对服务集群进行统一管理,实现了用户请求的智能调度,系统效率高。
文档编号H04L12/56GK1545275SQ20031011230
公开日2004年11月10日 申请日期2003年11月21日 优先权日2003年11月21日
发明者戴琼海, 林光国, 刘晓冬 申请人:清华大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1