一种融合通信系统中rtp媒体流的代理方法

文档序号:7886968阅读:277来源:国知局

专利名称::一种融合通信系统中rtp媒体流的代理方法
技术领域
:本发明涉及数据处理领域,特别是涉及一种融合通信系统中,高效代理RTP媒体流的方法。
背景技术
:融合通信,UnifiedCommunication,简称UC,也常翻译为统一通信。融合通信是指,把计算机技术与传统通信技术融合一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务。融合通信中,媒体流(语音、视频流)采用RTP协议(实时传送协议)进行传送。RTP基于UDP传输协议实现。一般情况下,融合通信的终端间可以让媒体流直通,如图1所7J\ο当需要对通话进行录音或穿透防火墙时,需要对RTP媒体流进行代理,如图2所7J\οRTP代理服务器是NTX系统中提供呼叫媒体流代理的服务器软件。当NTX呼叫控制服务器接收到呼叫,并确定主被叫终端所处的网络位置不能满足媒体流点点互通时,呼叫控制服务器就会通过RTP代理服务器的服务接口创建一个媒体代理实体,该媒体代理实体的作用是接收主被叫终端的媒体数据(语音包),并将其转发到主被叫终端中的另一方。一般的RTP代理服务器的实现方法是在应用层读取网络层的UDP数据包,然后在应用层按照指定的目的进行转发,实现逻辑如图3所示,应用层没有修改RTP数据包即媒体数据包中的任何内容,仅仅是对RTP包进行了一个重定向(转发),但是RTP数据包却需要经过链路层一系统网络层一应用层一系统网络层一链路层的多次拷贝操作,这对RTP代理服务器的性能提出了较高的要求。
发明内容本发明所要解决的问题是提供一种RTP媒体流的代理方法,以减少在应用层代理RTP数据包造成的性能开销,提高RTP数据包转发的效率。为解决上述问题,本发明提供了融合通信系统中一种RTP媒体流的代理方法,该方法利用操作系统的网络层直接转发RTP媒体流(UDP数据包),以达到提高转发效率的目的。本发明是通过以下技术方案实现的一种融合通信系统中RTP媒体流的代理方法,其包括以下步骤主叫终端的媒体流进入RTP代理服务器的链路层,再从链路层进入系统网络层;应用层通过对系统网络层的控制命令,直接控制系统网络层将RTP媒体流数据的目的地修改后,返还给链路层,最终发送到被叫终端。作为优化,所述应用层对所述系统网络层的控制是通过对IPTABLES的控制完成的,所述IPTABLES用于对Linux内核网络栈收到的数据包进行相关处理。3如上所述,本发明使用系统的网络层实现收发器的功能,而控制网络层去转发媒体数据包,是通过控制IPTABLES来实现的。IPTABLES用于对Linux内核网络栈收到的媒体数据包进行相关处理,其中包括NAT。这些处理逻辑由一些IPTABLES规则来描述,而这些规则是可以由应用层软件(譬如媒体代理实体)通过IPTABLES命令来定义的。本发明提供一种使用IPTABLES配置NAT功能中的PRER0UTING表的方法,包括以下步骤Si、提供收发器A和收发器B,收发器A用于接收主叫终端的媒体数据,并将自收发器B接收到的发自被叫终端的媒体数据发送到主叫终端;收发器B用于接收被叫终端的媒体数据,并将自收发器A接收到的发自主叫终端的媒体数据发送到被叫终端;收发器A和B分别打开一个UDP网络套接字,并将各自的网络地址绑定到各自打开的套接字,收发器A和收发器B使用各自打开的UDP套接字进行收与发的操作;S2、收发器A和B开始侦听各自的UDP套接字,当一个收发器接收到其套接字的第一个RTP数据包时,该收发器提取并记录该数据包的源地址,此时该收发器与该终端网络地址建立了关联;当两个收发器都收到一个媒体数据包,并建立了到终端的网络地址关联后,执行下一步;S3、通过iptables命令设置来自主叫终端的媒体数据包的NAT规则对经过PRER0UTING链源地址为主叫终端收发器网络地址的媒体数据包进行DNAT操作,将该数据包的目的地址转换为被叫终端收发器的网络地址;对经过P0STR0UTING链目的源地址为主叫终端收发器网络地址的媒体进行SNAT操作,将该数据包的源地址转换为媒体代理实体收发器B的网络地址;S4、媒体代理实体通过iptables命令自动设置来自被叫终端的媒体数据包的NAT规则通过iptables命令设置来自被叫终端的媒体数据包的NAT规则对经过PRER0UTING链源地址为被叫终端收发器网络地址的媒体数据包进行DNAT操作,将该数据包的目的地址转换为主叫终端收发器的网络地址对经过P0STR0UTING链目的源地址为主叫终端收发器网络地址的媒体数据包进行SNAT操作,将该数据包的源地址转换为媒体代理实体收发器A的网络地址S5、呼叫结束,通过iptables命令删除S4和S5设置的NAT规则。所述PRER0UTING链是预路由链,其为IPTABLES内建链之一;默认情况下,IPTABLES将IP包的处理过程分为5个阶段,每个阶段称为一个链,每个链可设置不同的包处理规则,PRER0UTING是IPTABLES处理IP包的第一个链,在该链中对IP包进行IP地址变换操作,从而设置NAT规则。与现有技术相比,本发明具备如下优点由于RTP代理服务器对RTP数据进行的拷贝行为减少了,RTP数据包仅需要经过链路层一系统网络层一链路层,大大提高了RTP数据包的转发效率,减低了对代理服务器硬件的要求。在X86800MHZCPU的处理能力下,采用旧方法最多能进行30路的RTP媒体流代理,采用新的方法则可提高到100路。图1是现有技术的两台多媒体话机间端到端的媒体流流向4图2是现有技术的使用了“RTP代理服务器”时的两台多媒体话机间的媒体流流向图;图3是现有技术的一般的“RTP代理服务器”实现方法下的两台多媒体话机间的媒体流流向图;图4是采用本发明的“RTP代理服务器”实现方法下的两台多媒体话机间的媒体流流向图;图5是本发明媒体代理实体与主、被叫终端的信息连通关系示意图;图6本发明使用IPTABLES配置NAT功能中的PRER0UTING表的方法一个具体实施例的流程图。具体实施例方式如图4所示,假设话机A的媒体流需要经过RTP媒体代理发送到话机B,本发明实施例之融合通信系统中RTP媒体流的代理方法为话机A的媒体流首先进入RTP代理服务器的链路层,再从链路层进入系统网络层;此时应用层并不会把RTP数据从系统网络层复制到应用层,而是通过对系统网络层的控制命令,直接控制系统网络层将RTP媒体流数据的目的地修改后,返还给链路层,最终发送到话机B。以上方法中,使用系统的网络层实现收发器的功能,而控制网络层去转发媒体数据包,是通过控制IPTABLES(IP信息包过滤系统)来实现的。IPTABLES用于对Linux内核网络栈收到的媒体数据包进行相关处理,其中包括NAT。这些处理逻辑由一些IPTABLES规则来描述,而这些规则是可以由应用层软件(譬如媒体代理实体)通过IPTABLES命令来定义的。本发明主要使用了IPTABLES来配置NAT功能中的ROUTING表,以此达到转发媒体数据包的功能,具体步骤如下Si、提供一媒体代理实体,其包括收发器A和收发器B,收发器A用于接收主叫终端的媒体数据,并将自收发器B接收到的发自被叫终端的媒体数据发送到主叫终端;收发器B用于接收被叫终端的媒体数据,并将自收发器A接收到的发自主叫终端的媒体数据发送到被叫终端;收发器A和B分别打开一个UDP网络套接字,并将各自的网络地址绑定到各自打开的UDP网络套接字,收发器A和收发器B使用各自打开的UDP套接字进行收与发的操作;S2、收发器A和B开始侦听各自的UDP套接字,当一个收发器接收到其套接字的第一个RTP数据包时,该收发器提取并记录数据包的源地址,此时该收发器与该终端网络地址建立了关联;当两个收发器都收到一个媒体数据包,并建立了到终端的网络地址关联后,执行下一步;S3、媒体代理实体通过IPTABLES命令自动设置来自主叫终端的媒体数据包的NAT规则对经过PRER0UTING链源地址为主叫终端收发器网络地址的媒体数据包进行DNAT操作(DNAT操作是设置IP包的目的网络地址变换规则),将媒体数据包的目的地址(转换前的目的地址为媒体代理实体的地址)转换为被叫终端收发器的网络地址,所述PRER0UTING链是预路由链,其为IPTABLES内建链之一;默认情况下,IPTABLES将IP包的处理过程分为5个阶段,每个阶段称为一个链,每个链可设置不同的包处理规则,PRER0UTING是IPTABLES处理IP包的第一个链,在该链中可以设置NAT规则(即对包进行IP地址变换操作);对经过P0STR0UTING链目的源地址为主叫终端收发器网络地址的媒体数据包进行SNAT操作(SNAT操作是设置IP包的源网络地址变换规则),将媒体数据包的源地址(转换前为主叫终端的网络地址)转换为媒体代理实体收发器B的网络地址;S4、媒体代理实体通过IPTABLES命令自动设置来自被叫终端的媒体数据包的NAT规则对经过PRER0UTING链源地址为被叫终端收发器网络地址的媒体数据包进行DNAT操作,将媒体数据包的目的地址(转换前为媒体代理实体的网络地址)转换为主叫终端收发器的网络地址;对经过P0STR0UTING链目的源地址为主叫终端收发器网络地址的媒体数据包进行SNAT操作,将媒体数据包的源地址(转换前为被叫终端的网络地址)转换为媒体代理实体收发器A的网络地址;S5、呼叫结束,通过IPTABLES命令删除S3和S4设置的NAT规则。如图5所示,其为本发明的RTP媒体流的代理转发过程的一个具体应用实施例的流程图,包括以下步骤媒体代理实体的收发器A与收发器B分别打开一个UDP套接字用于接收与发送;主叫终端发送RTP数据,源地址为主叫终端网络地址,目的地址为媒体代理实体;收发器A的接收器收到了第一个RTP数据,源地址为主叫终端网络地址,目的地址为媒体代理实体网络地址,此时媒体代理实体知道了主叫终端的网络地址;被叫终端发送RTP数据,源地址为被叫终端网络地址,目的地址为媒体代理实体;收发器B的接收器收到了第一个RTP数据,源地址为被叫终端网络地址,目的地址为媒体代理实体网络地址。此时媒体代理实体知道了被叫终端的网络地址;媒体代理实体通过IPTABLES对主叫终端发来的媒体数据包进行了两项操作进行DNAT操作将媒体数据包的目的地址转换为被叫终端,进行SNAT操作将媒体数据包的源地址转换为媒体代理实体,然后通过收发器B的发送器发送出去;媒体代理实体通过IPTABLES对被叫终端发来的媒体数据包进行了两项操作进行DNAT操作将媒体数据包的目的地址转换为主叫终端,进行SNAT操作将媒体数据包的源地址转换为媒体代理实体,然后通过收发器A的发送器发送出去。权利要求1.一种融合通信系统中RTP媒体流的代理方法,其特征在于,其包括以下步骤主叫终端的媒体流进入RTP代理服务器的链路层,再从链路层进入系统网络层;应用层通过对系统网络层的控制命令,直接控制系统网络层将RTP媒体流数据的目的地修改后,返还给链路层,最终发送到被叫终端。2.一种使用IPTABLES配置NAT功能中的PRER0UTING表的方法,其特征在于,包括以下步骤.51、提供收发器A和收发器B,收发器A用于接收主叫终端的媒体数据,并将自收发器B接收到的发自被叫终端的媒体数据发送到主叫终端;收发器B用于接收被叫终端的媒体数据,并将自收发器A接收到的发自主叫终端的媒体数据发送到被叫终端;收发器A和B分别打开一个UDP网络套接字,并将各自的网络地址绑定到各自打开的套接字,收发器A和收发器B使用各自打开的UDP套接字进行收与发的操作;.52、收发器A和B开始侦听各自的UDP套接字,当一个收发器接收到其套接字的第一个媒体数据包时,该收发器提取并记录该数据包的源地址,此时该收发器与该终端网络地址建立了关联;当两个收发器都收到一个媒体数据包,并建立了到终端的网络地址关联后,执行下一步;.53、通过iptables命令设置来自主叫终端的媒体数据包的NAT规则对经过PRER0UTING链源地址为主叫终端收发器网络地址的媒体数据包进行DNAT操作,将该媒体数据包的目的地址转换为被叫终端收发器的网络地址;对经过P0STR0UTING链目的源地址为主叫终端收发器网络地址的媒体数据包进行SNAT操作,将该媒体数据包的源地址转换为媒体代理实体收发器B的网络地址;.54、媒体代理实体通过iptables命令自动设置来自被叫终端的媒体数据包的NAT规则通过iptables命令设置来自被叫终端的媒体数据包的NAT规则对经过PRER0UTING链源地址为被叫终端收发器网络地址的媒体数据包进行DNAT操作,将媒体数据包的目的地址转换为主叫终端收发器的网络地址;对经过P0STR0UTING链目的源地址为主叫终端收发器网络地址的媒体数据包进行SNAT操作,将媒体数据包的源地址转换为媒体代理实体收发器A的网络地址;.55、呼叫结束,通过iptables命令删除S4和S5设置的NAT规则。全文摘要本发明提供一种融合通信系统中RTP媒体流的代理方法,其特征在于,其包括以下步骤主叫终端的媒体流进入RTP代理服务器的链路层,再从链路层进入系统网络层;应用层通过对系统网络层的控制命令,直接控制系统网络层将RTP媒体流数据的目的地修改后,返还给链路层,最终发送到被叫终端。本发明还提供一种使用IPTABLES配置NAT功能中的PREROUTING表的方法。本发明大大提高了RTP数据包的转发效率,减低了对代理服务器硬件的要求。在X86800MHzCPU的处理能力下,采用旧方法最多能进行30路的RTP媒体流代理。采用新的方法则可提高到100路。文档编号H04L12/56GK102420835SQ20121000667公开日2012年4月18日申请日期2012年1月10日优先权日2012年1月10日发明者吴天勇申请人:广东佳和通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1