專利名稱:一種在rtp中實時檢測網絡傳輸時延的方法
技術領域:
本發(fā)明屬于VOIP技術領域,具體涉及一種在RTP(A Transport Protocol for Real-TimeApplications)中實現實時檢測網絡傳輸時延的方法,供業(yè)務根據網絡質量動態(tài)進行語音編解碼的選擇。
背景技術:
RTP為實時數據提供端到端的傳輸功能,如交互的音頻視頻數據。功能包括載荷類型辨別,序列號編碼,時戳,傳輸監(jiān)控。RTP在UDP協議之上,利用UDP復用,包校驗功能協作共同完成傳輸層功能。
RTP協議包括兩部分RTP(用于傳輸實時數據)和RTCP(用于RTP業(yè)務質量監(jiān)控)會話信息交互。RTP部分主要完成載荷封裝,序列號管理,時戳編碼功能。RTCP周期地向RTP會話的各方發(fā)送控制報文。RTCP底層協議必須能夠提供多路分發(fā)的能力(如使用UDP的不同端口)。RTCP實現的主要功能有提供數據傳輸質量的反饋,這也就是RTP作為傳輸層協議提供流控、擁塞控制的一個部分,這個反饋可用于自適應編碼的控制,用于監(jiān)控本地或遠端錯誤,對于IP組播可提供給第三方作網絡監(jiān)控用。RTCP報文分為SR(發(fā)送者報告)、RR(接收者報告)、SDES(信源說明)、BYE(會話結束)、APP(特定應用報文)五種類型。SR和RR是最重要的兩種,SR報文攜帶了來自語音發(fā)送者的統(tǒng)計信息,即RTP報文在發(fā)送者發(fā)送完RTP報文后發(fā)送SR報文,報文格式如圖1;RR報文攜帶了來自會話參與者但非語音發(fā)送者的統(tǒng)計信息,報文格式如圖2。兩者除了報文類型PT值不同外,RR報文只比SR報文少20字節(jié)的發(fā)送者信息字段NTP(網絡時間協議)時間戳,RTP報文時間戳,發(fā)送的報文數,發(fā)送的字節(jié)數。
SR與RR報文中可以包含0或多個報告塊,用于攜帶自本端發(fā)送/接收最后一個RTP報文以來,接收到其他參與者的RTP報文情況的統(tǒng)計信息如丟包率,抖動,LSR(最近接收到的SR報文中64位NTP時間戳的中間32位),DLSR(自接收到上一個SR以來到發(fā)送當前這個RR報文的延遲)。其他參與者根據這些反饋信息可以檢測到當時的網絡情況。
其中一個重要參數是網絡傳輸時延,計算過程如圖3所示A端發(fā)送SR報文時,將發(fā)送時刻的NTP時間戳記錄在SR報文的NTP timestamp字段中,B端接收到這個SR報文后發(fā)送的RR報文中將攜帶LSR(A端發(fā)送SR報文時刻的NTP時間戳的中間32位)和DLSR(B端自接收到上一個SR到發(fā)送當前這個RR報文的延遲),A端收到B端這個RR報文后,記錄當前時間C,取出RR報文中攜帶的LSR和DLSR字段,計算回環(huán)網絡傳輸時延Delay=C-LSR-DLSR。
網絡傳輸時延在實際應用中非常重要,當網絡傳輸時延過大(通訊行業(yè)標準中認為>400毫秒)時,會話質量極差,交流困難,因此發(fā)送者需要實時檢測網絡傳輸時延,一旦發(fā)現網絡傳輸時延過大,就可以通過調整語音編解碼來減小時延,保證語音質量。而現在的計算網絡傳輸時延的方法只有在啟用NTP時間協議的系統(tǒng)中,且必須發(fā)送過SR報文后才能計算,因為A端只有發(fā)送SR報文時才會記錄NTP時間戳,而后才能從B端收到非0的有效DLSR和LSR信息,用于正確計算網絡傳輸時延。這樣的計算方法存在三個弊端1.必須啟用NTP時間協議為各發(fā)送方提供準確時鐘首先RTP協議(RFC3550)指出NTP是可以不啟用的;其次啟用NTP,要有準確的時間來源,這一時間應是國際標準時間UTC,時間依靠NTP服務器傳播,每個發(fā)送方要與多臺NTP服務器相連,防止發(fā)送方無法與其中一臺NTP服務器聯系時仍能從其他服務器獲取準確時間,保證各發(fā)送方的時鐘同步,因此啟用NTP將增加系統(tǒng)成本和復雜度;另外一旦NTP服務器被攻擊,或時間同步失敗,將影響網絡傳輸時延的計算結果,無法保證對語音質量的要求。
2.若沒有發(fā)送過SR報文,就無法檢測當前網絡傳輸時延因為只有SR報文攜帶NTP時間戳,對端收到SR報文后才能得到計算時延所需的有效的LSR和DLSR。不發(fā)送SR報文,說明會話建立了,只是不發(fā)送語音報文,這種情況是存在的,此時如果能計算網絡傳輸時延,就可以參考當前網絡狀況采用合適的語音編解碼,避免采用不恰當的編解碼導致語音質量差后再切換,提高了會話質量。
3.只能檢測當前收到的報文和前一個發(fā)送的SR報文之間的回環(huán)網絡傳輸時延若發(fā)送方發(fā)送了SR報文后不再發(fā)送SR報文了,也就是在會話過程中一方發(fā)送了一段時間的語音報文后就開始接收他人的語音,自己不再發(fā)言,這樣的情況是普遍存在的,此時只能計算當前接收到的報文和最后一個SR報文之間的回環(huán)網絡傳輸時延,若最后一個SR報文的網絡傳輸時延較大(網絡狀況差),則即使當前網絡狀況已經好轉,但計算的回環(huán)網絡傳輸時延(主要是最后一個SR報文的網絡傳輸時延影響)仍然很大,表示網絡狀況仍不理想,因此不能實時正確地體現當前網絡狀況,可能誤導采用不合適的語音編解碼格式,影響語音質量。
發(fā)明內容
本發(fā)明的目的在于提供一種在RTP中實現實時檢測網絡傳輸時延的方法。本發(fā)明所要解決的技術問題是對于無論是否啟用NTP時間協議的系統(tǒng),且無論是否發(fā)送SR報文都能準確實時地計算當前網絡傳輸時延,供應用參考以采取最恰當的語音編解碼格式,最大程度地提高語音會話質量。
本發(fā)明具體是這樣實現的一種在RTP中實時檢測網絡傳輸時延的方法,包括以下步驟步驟一,本端記錄向對端發(fā)送SR/RR報文的系統(tǒng)時間,本端向對端發(fā)送SR/RR報文;步驟二,對端記錄接收本端發(fā)送SR/RR報文的系統(tǒng)時間若對端接收到的為SR報文,記錄為接收SR報文的系統(tǒng)時間,若對端接收到的為RR報文,記錄為接收RR報文的系統(tǒng)時間;步驟三,當對端向本端發(fā)送SR/RR報文時,利用對端記錄的當前系統(tǒng)時間分別與記錄為接收SR/RR報文的系統(tǒng)時間的時間差,得到對端從接收SR報文到發(fā)送當前SR/RR報文的延時DLSR,或對端從接收SR/RR報文到發(fā)送當前SR/RR報文的延時DLRTCP;;步驟四,本端接到對端發(fā)送的SR/RR報文,本端記錄接收SR/RR報文的系統(tǒng)時間,利用本端記錄接收SR/RR報文的系統(tǒng)時間與本端記錄發(fā)送SR/RR報文的系統(tǒng)時間的時間差再減去對端發(fā)送的SR/RR報文中攜帶的DLRTCP計算網絡傳輸時延。
所述對端接收SR/RR報文到發(fā)送當前SR/RR報文的延遲,使用SR/RR報文的擴展字段profile-specific extensions,單位采用1/65536秒。
本端每發(fā)送一個SR/RR報文,所述本端記錄發(fā)送SR/RR報文的系統(tǒng)時間更新為當前系統(tǒng)時間值;本端每收到一個SR/RR報文,所述本端記錄接收SR/RR報文的系統(tǒng)時間更新為當前系統(tǒng)時間值。
所述計算的網絡時延在無論雙方是否均發(fā)送SR報文的情況下都是最近兩個SR/RR報文的回環(huán)時延。
本發(fā)明的技術效果在于在分析RTP協議和SR/RR報文結構的基礎上,確定用系統(tǒng)時間代替NTP時間,這樣無論系統(tǒng)是否啟用NTP協議都可以實時檢測網絡傳輸時延,且檢測不受必須發(fā)送SR報文的限制,計算的網絡時延是在無論雙方是否均發(fā)送SR報文的情況下都是最近兩個SR/RR報文的回環(huán)時延,不一定是當前報文與上一個SR報文的回環(huán)時延,提高了檢測的實時性。在計算過程中采用兩端分別計算各自時間差的方式屏蔽了兩端系統(tǒng)時間不同步可能引入的誤差,保證了網絡時延的精確性。這個實時的網絡傳輸時延可以準確反映網絡當時狀況,業(yè)務據此來動態(tài)調整語音編解碼格式,使會話語音質量得到保證。
圖1是SR報文格式;圖2是RR報文格式;圖3是根據NTP時間計算網絡傳輸時延;圖4a、4b、4c、4d是根據本發(fā)明所述方法計算網絡傳輸時延。
具體實施例方式
為達到上述目的,本發(fā)明采用的方法是在本端記錄上一次發(fā)送SR/RR的系統(tǒng)時間(LASTTIME)和接收到SR/RR的當前系統(tǒng)時間(CURRTIME),用對端系統(tǒng)時間計算DLSR(自接收到上一個SR到發(fā)送當前這個RR報文的延遲)和DLRTCP(自接收到上一個SR/RR到發(fā)送當前這個SR/RR報文的延遲,該項為自定義字段,使用SR/RR報文的擴展字段profile-specific extensions,為與DLSR保持一致性,單位采用與DLSR一樣的1/65536秒),網絡傳輸時延=CURRTIME-LASTTIME-DLRTCP,包括以下步驟步驟一,A端設置LASTTIME和CURRTIME兩個全局變量,分別記錄本端發(fā)送SR/RR和收到SR/RR的系統(tǒng)時間;步驟二,A端發(fā)送SR/RR報文;步驟三,B端記錄其接收到A端發(fā)送的SR/RR報文的系統(tǒng)時間若B端接收到的為SR報文,則將系統(tǒng)時間記錄在STIME中,若B端接收到的為RR報文,則將系統(tǒng)時間記錄在TTIME中。
隨后當B端發(fā)送SR/RR報文時,利用B端當前系統(tǒng)時間TIME2與STIME/TTIME的時間差計算DLSR/DLRTCP。
DLRTCP為TIME2與TTIME的時間差,DLSR為TIME2與STIME的時間差。
步驟四,A端收到B端的SR/RR報文后記錄當前系統(tǒng)時間CURRTIME,并利用CURRTIME和收到的SR/RR報文中攜帶的DLSR或DLRTCP來計算網絡傳輸時延。
下面結合附圖進一步詳細說明本發(fā)明的具體實施方式
,以簡單的A、B雙方會話為例來詳細說明本發(fā)明的實時網絡傳輸時延計算,為說明本發(fā)明適用于無論是否啟用NTP時間協議,無論是否發(fā)送過SR報文。
假設系統(tǒng)不啟用NTP時間協議,某一時刻A端發(fā)送RR報文,B端收到后發(fā)送RR報文,A端收到B端的這個RR報文后計算網絡傳輸時延,也就是雙方都發(fā)送RR報文。B端的計算與其類似。若系統(tǒng)啟用NTP時間協議,或發(fā)送過SR報文,計算過程類似,也可以使用現有的計算方式,只需在發(fā)送SR報文時,將發(fā)送者信息填入SR報文相應字段中。
本發(fā)明的方法包括以下步驟步驟1,開始,在A端設置兩個全局變量LASTTIME和CURRTIME,分別用來記錄發(fā)送SR/RR和收到SR/RR的系統(tǒng)時間,每發(fā)送一個SR/RR報文,LASTTIME就更新為當前系統(tǒng)時間值;每收到一個SR/RR報文,CURRTIME更新為當前系統(tǒng)時間值。
步驟21,按照附圖2,根據協議要求填寫RR報文各字段。其中與本發(fā)明相關的重要字段為LSR字段按照協議取64位NTP時間戳的中間32位。若不啟用NTP時間,或A端未收到過來自B端的SR報文,則LSR為0;取當前系統(tǒng)時間保存在LASTTIME中,DLSR=(LASTTIME一收到上一個SR報文的系統(tǒng)時間)/65536,根據協議要求DLSR以1/65536秒為單位,如果A端沒有收到過SR,則DLSR=0;profile-specific extensions字段填寫DLRTCP值,DLRTCP=(LASTTIME-收到上一個SR/RR報文的系統(tǒng)時間)/65536,為與DLSR保持一致,DLRTCP也以1/65536秒為單位,若之前沒有收到過RTCP報文,填0,這一情況可能在會話剛建立時出現,此時對端收到這個報文后無法計算網絡傳輸時延,但這段時間非常短,且是在會話還未穩(wěn)定時刻,隨后收到對方的RTCP報文后就能計算,因此可以忽略。
步驟22,發(fā)送RR報文。
步驟31,B端接收到A端的RR報文,記錄當前系統(tǒng)時間TTIME;步驟32,B端發(fā)送RR報文按照附圖2填寫要發(fā)送的RR報文各字段,LSR字段按照協議取64位NTP時間戳的中間32位,若不啟用NTP時間,或A端未收到過來自B端的SR報文,則LSR為0;取當前系統(tǒng)時間TIME2,計算DLSR=(TIME2-STIME)/65536,根據協議要求DLSR以1/65536秒為單位,如果A端沒有收到過SR,則DLSR=0;profile-specificextensions字段填寫DLRTCP值,DLRTCP=(TIME2-TTIME)/65536,為與DLSR保持一致,DLRTCP也以1/65536秒為單位。將RR發(fā)送給A端。
步驟4,A端收到B端的RR報文,記錄當前系統(tǒng)時間為CURRTIME,取出RR報文中的DLRTCP字段,將CURRTIME、LASTTIME和DLRTCP轉換為需要的統(tǒng)一單位,按照附圖4a、4b、4c、4d,計算網絡傳輸時延Delay=CURRTIME-LASTTIME-DLRTCP。這樣計算得到的Delay是一個回環(huán)的網絡傳輸時延,若需要單程網絡傳輸時延,可以將Delay/2估算。
權利要求
1.一種在RTP中實時檢測網絡傳輸時延的方法,其特征在于,包括以下步驟步驟一,本端記錄向對端發(fā)送SR/RR報文的系統(tǒng)時間,本端向對端發(fā)送SR/RR報文;步驟二,對端記錄接收本端發(fā)送SR/RR報文的系統(tǒng)時間若對端接收到的為SR報文,記錄為接收SR報文的系統(tǒng)時間,若對端接收到的為RR報文,記錄為接收RR報文的系統(tǒng)時間;步驟三,當對端向本端發(fā)送SR/RR報文時,利用對端記錄的當前系統(tǒng)時間分別與記錄為接收SR/RR報文的系統(tǒng)時間的時間差,得到對端從接收SR報文到發(fā)送當前SR/RR報文的延時DLSR,或對端從接收SR/RR報文到發(fā)送當前SR/RR報文的延時DLRTCP;;步驟四,本端接到對端發(fā)送的SR/RR報文,本端記錄接收SR/RR報文的系統(tǒng)時間,利用本端記錄接收SR/RR報文的系統(tǒng)時間與本端記錄發(fā)送SR/RR報文的系統(tǒng)時間的時間差再減去對端發(fā)送的SR/RR報文中攜帶的DLRTCP計算網絡傳輸時延。
2.如權利要求1所述的在RTP中實時檢測網絡傳輸時延的方法,其特征在于所述對端接收SR/RR報文到發(fā)送當前SR/RR報文的延遲,使用SR/RR報文的擴展字段profile-specific extensions,單位采用1/65536秒。
3.如權利要求1或2所述的在RTP中實時檢測網絡傳輸時延的方法,其特征在于本端每發(fā)送一個SR/RR報文,所述本端記錄發(fā)送SR/RR報文的系統(tǒng)時間更新為當前系統(tǒng)時間值;本端每收到一個SR/RR報文,所述本端記錄接收SR/RR報文的系統(tǒng)時間更新為當前系統(tǒng)時間值。
4.如權利要求1或2所述的在RTP中實時檢測網絡傳輸時延的方法,其特征在于所述計算的網絡時延在無論雙方是否均發(fā)送SR報文的情況下都是最近兩個SR/RR報文的回環(huán)時延。
全文摘要
本發(fā)明涉及一種在RTP中實現實時檢測網絡傳輸時延的方法。在本端記錄上一次發(fā)送SR/RR的系統(tǒng)時間和接收到SR/RR的當前系統(tǒng)時間;用對端系統(tǒng)時間計算得到的DLSR和DLRTCP來計算網絡傳輸時延。本發(fā)明確定用系統(tǒng)時間代替NTP時間,無論系統(tǒng)是否啟用NTP協議都可以實時檢測網絡傳輸時延,且檢測不受必須發(fā)送SR報文的限制,計算的網絡時延是最近兩個SR/RR報文的回環(huán)時延,提高了檢測的實時性。在計算過程中采用兩端分別計算各自時間差的方式屏蔽了兩端系統(tǒng)時間不同步可能引入的誤差,保證了網絡時延的精確性??蓽蚀_反映網絡當時狀況,業(yè)務據此來動態(tài)調整語音編解碼格式,使會話語音質量得到保證。
文檔編號H04L29/06GK1996897SQ200510132658
公開日2007年7月11日 申請日期2005年12月28日 優(yōu)先權日2005年12月28日
發(fā)明者柳海寧, 張聯峰, 周蕙菁 申請人:中興通訊股份有限公司