專利名稱::一種融合通信系統中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日發明者吳天勇申請人:廣東佳和通信技術有限公司